ORACLE 数据库管理员的职责

ORACLE 数据库管理员应按如下方式对 ORACLE 数据库系统做定期 监控: **博客首页2}n{z@
(1). 每天对 ORACLE 数据库的运行状态 , 日志文件 , 备份情况 , 数据
'W;p3i9j2V0库的空间使用情况 , 系统资源的使用情况进行检查 , 发现并解决 **博客首页AJ*Hi/th'u!K
问题。 **博客首页dacb [1Ili V
(2). 每周对数据库对象的空间扩展情况 , 数据的增长情况进行监控 , 对数据库做健康检查 , 对数据库对象的状态做检查。
#}#B&H*^6^I0(3). 每月对表和索引等进行 Analyze, 检查表空间碎片 , 寻找数据库
!o gA2U#Ja Kc0性能调整的机会 , 进行数据库性能调整 , 提出下一步空间管理 **博客首页D_FX&z$V;jB
计划。对 ORACLE 数据库状态进行一次全面检查。 **博客首页$R @l)a_j [
每天的工作 **博客首页CAu)R B(}2K
(1). 确认所有的 INSTANCE 状态正常 **博客首页cDR5zdr
登陆到所有数据库或例程 , 检测 ORACLE 后台进程 : **博客首页]#Cb3xb+z
$ps –ef|grep ora
5n9~*L v/@0(2). 检查文件系统的使用(剩余空间)。如果文件系统的剩余空间小于 20% ,需删除不用的文件以释放空间。
V!crQ GI!fEN1c0$df –k
5U.OwJ4W+GvLr0(3). 检查日志文件和 trace 文件记录 alert 和 trace 文件中的错误。 **博客首页5T7N Mr-u^$e$Z WD
连接到每个需管理的系统
,E | `3v^U/\0? 使用' telnet '
TT&o3r%vYZ0? 对每个数据库 ,cd 到 bdump 目录 , 通常是 $ORACLE_BASE//bdump **博客首页&vDQLP7`vw
? 使用 Unix ‘tail' 命令来查看 alert_.log 文件
j|0X0_EpRx2d0? 如果发现任何新的 ORA- 错误 , 记录并解决
;t[g |)NyK(h0(4). 检查数据库当日备份的有效性。
dbz0BZ\z*Z|0对 RMAN 备份方式 :
i*MJ i#F)aKM0检查第三方备份工具的备份日志以确定备份是否成功
(LT m1C5r#U0对 EXPORT 备份方式 : **博客首页;Q8G7zA/Q
检查 exp 日志文件以确定备份是否成功
fQ,eJ*`9o*cuC,z0对 其他备份方式 : **博客首页4} CkcLG#pr-_%I `j
检查相应的日志文件
'w9L|NZ;Q9|c-C0(5). 检查数据文件的状态记录状态不是“ online” 的数据文件,并做恢复。 **博客首页Z @%]M!V@tO_
Select file_name from dba_data_files where status='OFFLINE' **博客首页&{SJm w:~'m2pC[
(6). 检查表空间的使用情况
/_E6pX+J7ih"Y0SELECT tablespace_name, max_m, count_blocks free_blk_cnt, sum_free_m,to_char(100*sum_free_m/sum_m, '99.99') || '%' AS pct_free **博客首页n4l7s8HHZ#?]r6e
FROM ( SELECT tablespace_name,sum(bytes)/1024/1024 AS sum_m FROM dba_data_files GROUP BY tablespace_name),
%TY@@!h \ QNs/V6f0( SELECT tablespace_name AS fs_ts_name, max(bytes)/1024/1024 AS max_m, count(blocks) AS count_blocks, sum(bytes/1024/1024) AS sum_free_m FROM dba_free_space GROUP BY tablespace_name )
$c,K)k3J.U+qO0WHERE tablespace_name = fs_ts_name **博客首页)K bN6AB+g#`
(7). 检查剩余表空间 **博客首页aw0wN+@Q0\n
SELECT tablespace_name, sum ( blocks ) as free_blk , **博客首页)VV7E-L5LZ.q[ kN
trunc ( sum ( bytes ) /(1024*1024) ) as free_m, **博客首页2n[6L Y8G@1Pb&J^q
max ( bytes ) / (1024) as big_chunk_k, count (*) as num_chunks
4v%Ds F0?%Z0AP0_5V l0FROM dba_free_space GROUP BY tablespace_name; **博客首页B L,P/o*^\5}l
(8). 监控数据库性能
cE7q8g'`c0运行 bstat/estat 生成系统报告
't8F-t'e7w5akm,[hX0或者使用 statspack 收集统计数据
M'P}2QuCo {0(9). 检查数据库性能,记录数据库的 cpu 使用、 IO 、 buffer 命中率等等
8@ry&GIe0使用 vmstat,iostat,glance,top 等命令
fwDV6d6qQ0(10). 日常出现问题的处理。
7Xy4QAg2NS0q0每周的工作
-Qg0V+P _n `.x FD0(1). 控数据库对象的空间扩展情况 **博客首页|b!V;@(S#V Wh*\n
根据本周每天的检查情况找到空间扩展很快的数据库对象 , 并采取相 **博客首页r([Y/t?-fZ
应的措施 **博客首页:i7KR P{*b
-- 删除历史数据 **博客首页*^&KR:k/wE^0Y
--- 扩表空间 **博客首页 @)J7S%Or!U"iL&y
alter tablespace add datafile ‘' size **博客首页}/Og0Q)D%_9q m v
--- 调整数据对象的存储参数
@G,P(l0J1H0next extent
h*h$R vK;p0pct_increase
0z?V`%m5]6A-xlf0(2). 监控数据量的增长情况
!OE})Dc)Ap-b'h0根据本周每天的检查情况找到记录数量增长很快的数据库对象 , 并采 **博客首页$G s@.{0k:|6nCsd!D
取相应的措施
y [KE]x5zRX0-- 删除历史数据
+C7M]k%PQ0--- 扩表空间 **博客首页5O0sYP0Y/@9b
alter tablespace add datafile ‘' size **博客首页ROo(`k6O'[in'S.r#~{
(3). 系统健康检查
4uY/Gm!C dm5U/`&s0检查以下内容 : **博客首页-uH$rts
init.ora
O3h9k.RG#]7[8?0controlfile **博客首页.@.J/n2B%WX
redo log file **博客首页Y k7\#?0Ph
archiving
$@'BOA ^3~0sort area size
vv @6p0^ }1~ O)H0tablespace(system,temporary,tablespace fragment) **博客首页} n[&e1A
datafiles(autoextend,location)
+J$Vu |i*e$g P0object(number of extent,next extent,index) **博客首页2z)h;La)Q
rollback segment **博客首页(l|0]y9b/Q+{u
logging &tracing(alert.log,max_dump_file_size,sqlnet)
[\%?X7QO Rue0(4). 检查无效的数据库对象 **博客首页9Z `$z#];P
SELECT owner, object_name, object_type FROM dba_objects
`oSzh#^3zD-^Cc0WHERE status= ' INVALID '。 **博客首页w{~1qy t${
(5). 检查不起作用的约束
5ffS+X-Xq0SELECT owner, constraint_name, table_name,
.nmL(\ R3X-q0constraint_type, status **博客首页q*a J/~J h1m6q
FROM dba_constraints
-[6B:{ yq1Y0WHERE status = 'DISABLED' AND constraint_type = 'P'
(u xURb&G#A\,Ua ]0(6). 检查无效的 trigger **博客首页,MlH9htH
SELECT owner, trigger_name, table_name, status **博客首页iLvrr
FROM dba_triggers **博客首页z-u L,Pn:i)g\
WHERE status = 'DISABLED' **博客首页ge6e;`%i ?6Jw
每月的工作 **博客首页M DR&dHp(\$aEZ
(1). Analyze Tables/Indexes/Cluster
)h F#x)^/x"B0analyze table estimate statistics sample 50 percent;
0Kp i_bGam0(2). 检查表空间碎片 **博客首页&|Q%e$s&?
根据本月每周的检查分析数据库碎片情况 , 找到相应的解决方法 **博客首页4P1?KD \#y\+H
(3). 寻找数据库性能调整的机会 **博客首页{!IEk:E
比较每天对数据库性能的监控报告 , 确定是否有必要对数据库性能进 行调整 **博客首页k~E"KVS
(4). 数据库性能调整 **博客首页7E$D7{y4h5m R
如有必要 , 进行性能调整
%N:B$H.G2X(H/k0(5). 提出下一步空间管理计划 **博客首页$lo a;h#x ua
根据每周的监控 , 提出空间管理的改进方法

Oracle DBA 日常管理
Is&W7S3n"n%[v}+b0目的:这篇文档有很详细的资料记录着对一个甚至更多的 ORACLE 数据库每天的,每月的,**博客首页U:m{ f M3dSJT
每年的运行的状态的结果及检查的结果,在文档的附录中你将会看到所有检查,修改的 SQL**博客首页\]:F1A#iDz;C*Z
和 PL/SQL 代码。**博客首页`g+Z)m%A`d|
目录**博客首页qb-f%NwD"l
1. 日常维护程序
&tV,IH;@0A . 检查已起的所有实例**博客首页F?:q4]6q
B . 查找一些新的警告日志
{9z^$r/N9u0C . 检查 DBSNMP 是否在运行**博客首页&x$We(Zq(} I$J
D . 检查数据库备份是否正确
5b} BQ$h(`Du0E . 检查备份到磁带中的文件是否正确
Q VB+E%d*I{0F . 检查数据库的性能是否正常合理,是否有足够的空间和资源**博客首页 N9}1me5{!~'rU,g
G . 将文档日志复制到备份的数据库中
\+lE H,F D s0H . 要常看 DBA 用户手册**博客首页Y"^C@Je%ok[8M3F$Ui
2. 晚间维护程序
Uq#b3M HMv0A .收集 VOLUMETRIC 的数据**博客首页v:J~-e{)y l2uf+JW
3. 每周维护工作**博客首页(l;g^b `{a
A . 查找那些破坏规则的 OBJECT**博客首页0Q!K#Jt6j.W
B . 查找是否有违反安全策略的问题**博客首页-b+\~!h(Z!A@0V
C . 查看错误地方的 SQL*NET 日志**博客首页H,N$t5U6j7AP#IS
D . 将所有的警告日志存档
!y2m&J GgD7rB1j0E . 经常访问供应商的主页
R@ aF ` ja(u x04. 月维护程序
tM(o/b(s(sw v0A . 查看对数据库会产生危害的增长速度
PzI?F0B . 回顾以前数据库优化性能的调整**博客首页Pm+~t4jf
C . 查看 I/O 的屏颈问题
l\#rPe4fms0D . 回顾 FRAGMENTATION**博客首页0f&C0Vm r~| I
E . 将来的执行计划
9V8j#FpA0F . 查看调整点和维护
({2P)YX w(g)rk$M b05. 附录**博客首页2[LQ9`6H^7N
A . 月维护过程
.R T#a&dxA0B . 晚间维护过程
,b+f zh4w0C . 周维护过程**博客首页 bcb$?G)D`
6. 参考文献**博客首页e fSv u
----------------------------------------------------------------**博客首页,y0N ^2FoO%H4L
一.日维护过程
$cV$o L$V0A .查看所有的实例是否已起
|t_xM0~8Xs0确定数据库是可用的,把每个实例写入日志并且运行日报告或是运行测试
5io-}.E}0R0文件。当然有一些操作我们是希望它能自动运行的。
7` Ah7y5w0可选择执行:用 ORACLE 管理器中的‘ PROBE' 事件来查看**博客首页Q$}$CE5IT3QN
B .查找新的警告日志文件**博客首页 bA3]gxy
1. 联接每一个操作管理系统
|u+q{m;K02. 使用‘ TELNET' 或是可比较程序**博客首页.c8A/M*W}5E2I
3. 对每一个管理实例,经常的执行 $ORACLE_BASE//bdump 操
I r5^)V7O0作,并使其能回退到控制数据库的 SID 。**博客首页1V)N}m$Ecd
4. 在提示下,使用 UNIX 中的‘ TAIL '命令查看 alert_.log ,或是**博客首页mGKt4H
用其他方式检查文件中最近时期的警告日志
o-s'i5yV05. 如果以前出现过的一些 ORA_ERRORS 又出现,将它记录到数据库
G%?'?r*Y;|0恢复日志中并且仔细的研究它们,这个数据库恢复日志在〈 FILE 〉中
.M2@&S0_x2D%Qo L'y~T,B0C .查看 DBSNMP 的运行情况**博客首页kg;X;G$E
检查每个被管理机器的‘ DBSNMP' 进程并将它们记录到日志中。**博客首页/|;K6~ I q ]K6]
在 UNIX 中,在命令行中,键入 ps –ef | grep dbsnmp, 将回看到 2 个**博客首页g8b4](iN$mpg%^2X:E
DBSNMP 进程在运行。如果没有,重启 DBSNMP 。
!`!T3X^:TH-Mj0D .查数据库备份是否成功
Dsp3r:E0E .检查备份的磁带文档是否成功**博客首页5CA2y|jK g&yo n5y
F .检查对合理的性能来说是否有足够的资源**博客首页"D_(w7F Hr
1. 检查在表空间中有没有剩余空间。**博客首页7`I\5[:Km8{p(k'N
对每一个实例来说,检查在表空间中是否存在有剩余空间来满足当天
(O]"P7F4Y%i.s(T!m \0的预期的需要。当数据库中已有的数据是稳定的,数据日增长的平均
Hy i$C8L0数也是可以计算出来,最小的剩余空间至少要能满足每天数据的增 长。
7?.rc+t#c6C0A ) 运行‘ FREE.SQL' 来检查表空间的剩余空间。**博客首页 o.b)T!@F Q
B ) 运行‘ SPACE.SQL' 来检查表空间中的剩余空间百分率**博客首页*w6cl&ot w.d pR k7|
2. 检查回滚段**博客首页f|j;m#x#@\+Y.G1jF
回滚段的状态一般是在线的,除了一些为复杂工作准备的专用 段,它一般状态是离线的。**博客首页-v%Fcv&Z f
a) 每个数据库都有一个回滚段名字的列表。
0qft*l#c,K$v0b) 你可以用 V$ROLLSTAT 来查询在线或是离线的回滚段的现在状 态 .**博客首页NxIR~
c) 对于所有回滚段的存储参数及名字, 可用**博客首页(F;iNE,?
DBA_ROLLBACK_SEGS 来查询。但是它不如 V$ROLLSTAT 准确。
c`9v9[:L3{03. 识别出一些过分的增长
(V-\F#MT6KY0查看数据库中超出资源或是增长速度过大的段,这些段的存储参 数需要调整。
(l6Gu+UA?0a ) 收集日数据大小的信息, 可以用
S`uKl7QE E`(d0‘ ANALYZE5PCT.SQL '。如果你收集的是每晚的信息, 则可跳过这一步。
}foe$c0b ) 检查当前的范围,可用‘ NR.EXTENTS.SQL' 。
E$HTr._.O:@H'B0c ) 查询当前表的大小信息。
~#NB _N6@4T0d ) 查询当前索引大小的信息。
e%pN+^K5J!I7H z0e ) 查询增长趋势。**博客首页Vx(\n Hbb
4. 确定空间的范围。**博客首页#[8HM6^iR3l$W7[S5|
如果范围空间对象的 NEXT_EXTENT 比表空间所能提供的最大范
kv%K*^vLO7rhk0围还要大,那么这将影响数据库的运行。如果我们找到了这个目标,可
0uhWd~`0以用‘ ALTER TABLESPACE COALESCE' 调查它的位置,或加另外 的数据文件。
[D3RU9cCSD0A )运行‘ SPACEBOUND.SQL' 。如果都是正常的,将不返回任何行。**博客首页srl)WxNc-w h!z
5. 回顾 CPU ,内存,网络,硬件资源论点的过程
[yJ]qO,tw+b0A )检查 CPU 的利用情况,进到 x:\web\phase2\default.htm =>system
4y7qBMjiF G(w8cy0metrics=>CPU 利用页, CPU 的最大限度为 400 ,当 CPU 的占用保持**博客首页%VFv0rQ@Buy
在 350 以上有一段时间的话,我们就需要查看及研究出现的问题。**博客首页A S m(t] }
G .将存档日志复制到备用数据库中
0RF O$A#[2Fe!_0如果有一个备用数据库,将适当的存档日志复制到备用数据库的期望
2Q(o*Tg-m)wu0位置,备用数据库中保存最近期的数据。
%?v$]FiM-[0H. 经常查阅 DBA 用户手册
I5cZ7LyN bv0如果有可能的话,要广泛的阅读,包括 DBA 手册,行业杂志,新闻 组或是邮件列表。
|q%YyEu,|0-------------------------------------------------------------
T/kl/Qd~x~[0二.晚间维护过程**博客首页XLSVKW
大部分的数据库产品将受益于每晚确定的检查进程的运行。**博客首页8h,f J|4H/q"v/e
A. 收集 VOLUMETRIC 数据
eM;jf)x@,a5w5b01. 分析计划和收集数据**博客首页?:F2jLIms8R
更准确的分析计算并保存结果。
"r#tL9nCf0a ) 如果你现在没有作这些的话,用‘ MK VOLFACT.SQL' 来创建测定体积的 表。
$x^"`#} hI0b ) 收集晚间数据大小的信息,用‘ ANALYZE COMP.SQL' 。**博客首页6v/wT(Uk0g u
c ) 收集统计结果,用‘ POP VOL.SQL' 。**博客首页6\~&m{QE
d ) 在空闲的时候检查数据,可能的话,每周或每个月进行。
r)Z(QF)V#Ni0我是用 MS EXCEL 和 ODBC 的联接来检查数据和图表的增长
(Q.DEz]@e)|%Y0-------------------------------------------------------------**博客首页$f|w e'r!CPDbj
三.每周维护过程
k#o"{:lEL1E/[1j0A . 查找被破坏的目标
d2L osa#se+`01. 对于每个给定表空间的对象来说, NEXT_EXTENT 的大小是相同的,如
'l%@h{_,no012/14/98 ,缺省的 NEXT_EXTENT 的 DATAHI 为 1G , DATALO 为 500MB ,**博客首页z1nH_S:P8?d6F
INDEXES 为 256MB 。
U,f,IQz!A1p@`0A ) 检查 NEXT_EXTENT 的设置,可用‘ NEXTEXT 。 SQL' 。**博客首页 c(X5[Dc0T
B ) 检查已有的 EXTENTS ,可用‘ EXISTEXT 。 SQL' 。
'J ZA`z7CQ02. 所有的表都应该有唯一的主键
R\W mz.D%Tl9D#O0a ) 查看那些表没有主键,可用‘ NO_PK.SQL' 。
O$e3Zo9XvC"y0b ) 查找那些主键是没有发挥作用的,可用‘ DIS_PK.SQL' 。
U1X4`-T!~ oiD0c ) 所有作索引的主键都要是唯一的,可用‘ NONUPK 。 SQL' 来检 查。
fw6A2@[mX1]03. 所有的索引都要放到索引表空间中。运行‘ MKREBUILD_IDX 。 SQL'
"S}'O#z+hy%k,URm04. 不同的环境之间的计划应该是同样的,特别是测试环境和成品环境之间的 计划应该相同。
*e$` y4Y/[:?3[@7v0a ) 检查不同的 2 个运行环境中的数据类型是否一致,可用**博客首页4zDu E(a6?^
‘ DATATYPE.SQL '。
^6L-TT!CWA0b ) 在 2 个不同的实例中寻找对象的不同点, 可用
pM,a*A C8wu%}w0‘ OBJ_COORD.SQL '。
{ E?a(\0c ) 更好的做法是,使用一种工具,象寻求软件的计划管理器那样的 工具。
!QgOSJ`2z'J,a0B . 查看是否有危害到安全策略的问题。
vN!z0TK0C . 查看报错的 SQL*NET 日志。
1P*S9k.{$q~xx#B F01. 客户端的日志。
/N/Zd4s!T02. 服务器端的日志。
#?~)J mC O{0D . . 将所有的警告日志存档
^$z0nY+`0E . . 供应商的主页
#u [ xB&_~h$n~01. ORACLE 供应商
(w7m)[Z(V-M0http://www.oracle.com
m"bT7a l)j0http://technet.oracle.com
dFr@M{+X HM0http://www.oracle.com/support**博客首页m#SJj'zQ
http://www.oramag.com
*f+@"i3^*pT(c02. Quest Software
1y)iQ$py.a0http://www.quests.com
n5S9@@@wy~2\03. Sun Microsystems**博客首页x-\c?wCN
http://www.sun.com**博客首页 ?7v!vf}i`i
----------------------------------------------------------------
6h`q!^gKB0四.月维护过程
X9r6RUd#JM0A .查看对数据库会产生危害的增长速度
3f&Zu:^2Cr(|%B eK5q-W01. 从以前的记录或报告中回顾段增长的变化以此来确定段增长带来危害
NN:wq*y_0B . 回顾以前数据库优化性能的调整**博客首页ZE?0x-Kj
1. 回顾一般 ORACLE 数据库的调整点,比较以前的报告来确定有害的发展 趋势。**博客首页,R c G/E#QR qA0\
C . 查看 I/O 的屏颈问题
B,S8AE"T R,Wu01. 查看前期数据库文件的活动性,比较以前的输出来判断有可能导致屏颈 问题的趋势。**博客首页7~v3T e(H9L;h
D . 回顾 FRAGMENTATION**博客首页O6qo%?&I-W;S$L2r
E . 计划数据库将来的性能**博客首页3Ct#{M0nZ?f lJ
1. 比较 ORACLE 和操作系统的 CPU ,内存,网络,及硬盘的利用率以此**博客首页}%EWEqw*G
来确定在近期将会有的一些资源争夺的趋势
kbq3GG6X~^Z,l+A02. 当系统将超出范围时要把性能趋势当作服务水平的协议来看
4A8Z9Qd6f x-]0F . 完成调整和维护工作**博客首页9T5o7zsk6?w
1. 使修改满足避免系统资源的争夺的需要,这里面包括增加新资源或使预期 的停工。**博客首页 _'F5Bm%z2~
----------------------------------------------------------------
BHQ ]kP/eJ0五.附录**博客首页+iBQ@)w:`.U
A. 日常程序
#s+r:SH[+S0-- free.sql**博客首页+U4d[`.[~#zx
--To verify free space in tablespaces**博客首页qDb4z'N]xmL
--Minimum amount of free space**博客首页"B{e:Q9GpX[6MLe
--document your thresholds:
EaM:scB0-- = m**博客首页1A;z(h0{G/k
SELECT tablespace_name, sum ( blocks ) as free_blk , trunc ( sum ( bytes ) /
q5[yo B#CWZ6[\0(1024*1024) ) as free_m, max ( bytes ) / (1024) as big_chunk_k, count (*) as num_chunks**博客首页~gQ)v fr X"f/@
FROM dba_free_space GROUP BY tablespace_name**博客首页&k,o2x/N7cf?
1. Space.sql
6]/j-Y;I Z(t1P0-- space.sql
\]L^9~OkW0-- To check free, pct_free, and allocated space within a tablespace**博客首页T*u&e3W&e3a
-- 11/24/98
Cq,vA%_Y$\^)a{0SELECT tablespace_name, largest_free_chunk**博客首页 _@-l$a&f
, nr_free_chunks, sum_alloc_blocks, sum_free_blocks
Mni6J#R"^0, to_char(100*sum_free_blocks/sum_alloc_blocks, '09.99') || '%'
&g8k5X'b"U$a0AS pct_free
'_gG C]u0FROM ( SELECT tablespace_name , sum(blocks) AS sum_alloc_blocks**博客首页F^{ T0f YZJ
FROM dba_data_files GROUP BY tablespace_name )**博客首页 y&n(n9`Y#hl
, ( SELECT tablespace_name AS fs_ts_name
},V[ L#\"o9CP0, max(blocks) AS largest_free_chunk
]Tp7q)g|Tee0, count(blocks) AS nr_free_chunks
%mqQ3]@.s0qY6e qI0, sum(blocks) AS sum_free_blocks FROM dba_free_space**博客首页o"mQ@!M2I
GROUP BY tablespace_name ) WHERE tablespace_name = fs_ts_name**博客首页Ps)e/w"],Cfg"T
2. analyze5pct.sql**博客首页2Q]?9w7uz
-- analyze5pct.sql
V8t.@ c+MQ5\$o9V0-- To analyze tables and indexes quickly, using a 5% sample size**博客首页9o ~aC N'uP
-- (do not use this scrīpt if you are performing the overnight
lT9T)Elb*h9u;g7b?0-- collection of volumetric data)**博客首页(JXpk2mw ft
-- 11/30/98
&^{0N F-\m1f0BEGIN**博客首页(i7a g*o8W}IZ
dbms_utility.analyze_schema ( '&OWNER', 'ESTIMATE', NULL, 5 ) ;
'DIa:l'WYs["n0END ;
6f~k,q#n0/
z%s+G5F4l nF03. nr_extents.sql**博客首页 J\;`gQ2V W
-- nr_extents.sql
-YE9Un"RR-l8c0-- To find out any object reaching
I QrALP0-- extents, and manually upgrade it to allow unlimited
a.R)X!G(EaL0mn0-- max_extents (thus only objects we *expect* to be big
|7EYHR0-- are allowed to become big)**博客首页/n!` w ["c8oo o
-- 11/30/98**博客首页%S%hV*\a!Xyl
SELECT e.owner, e.segment_type , e.segment_name , count(*) as nr_extents ,**博客首页rOMs\:O,u
s.max_extents**博客首页vmD7c3Q gB
, to_char ( sum ( e.bytes ) / ( 1024 * 1024 ) , '999,999.90') as MB**博客首页+C+MEiB2U
FROM dba_extents e , dba_segments s**博客首页Dqy~.K
WHERE e.segment_name = s.segment_name**博客首页 [7v jA7C6|s*GN"[:^
GROUP BY e.owner, e.segment_type , e.segment_name , s.max_extents**博客首页rD-rI!Ip9`_xv(j
HAVING count(*) > &THRESHOLD**博客首页"_q^*m fihD"v&d c
OR ( ( s.max_extents - count(*) ) < &&THRESHOLD )**博客首页I8t9O+{1y$d*vS
ORDER BY count(*) desc
I,zjQT})n'Xp{04. spacebound.sql
&Vz|.pcAU/A0-- spacebound.sql
$~ gr%x's,rc5h0-- To identify space-bound objects. If all is well, no rows are returned.**博客首页f3DB |d6L!uNt(s C
-- If any space-bound objects are found, look at value of NEXT extent**博客首页aU5AB)T}Zo
-- size to figure out what happened.**博客首页^5x*V#Nn1p} r2W
-- Then use coalesce (alter tablespace coalesce .
b3M_JK0-- Lastly, add another datafile to the tablespace if needed.
~ \!}:Nc&LQ0-- 11/30/98
4N$a.f#@0@u B0SELECT a.table_name, a.next_extent, a.tablespace_name
R'IpA*Na0FROM all_tables a,
;e asN$s%N&n0( SELECT tablespace_name, max(bytes) as big_chunk**博客首页'Ep[,xG_1q'p]
FROM dba_free_space**博客首页5~3["^d2OT
GROUP BY tablespace_name ) f
b3T+e(w`#IL8`0WHERE f.tablespace_name = a.tablespace_name
3y }F` fEYe0AND a.next_extent > f.big_chunk**博客首页P'Hw)CeO(@n
B. 每晚处理程序
O7zZU[SWOu01. mk_volfact.sql
;B5Xd^4W(i0-- mk_volfact.sql (only run this once to set it up; do not run it nightly!)
;ga%{Qb0-- -- Table UTL_VOL_FACTS**博客首页uj:W!\'R9`BK"O l
CREATE TABLE utl_vol_facts (**博客首页6O`Fd~&HQ,k.H!t1b
table_name VARCHAR2(30),**博客首页7YTyZ1{&s1t
num_rows NUMBER,**博客首页sQ ly [zC o%s
meas_dt DATE )**博客首页$R"Xd0d"c@+y
TABLESPACE platab
L&[Vx{BM V0STORAGE (
sM;i/z)X6kR0INITIAL 128k**博客首页Ayb;r^$Fo
NEXT 128k**博客首页2i0T3[ z7JL
PCTINCREASE 0
}4{ BkY ?0}-S:c0MINEXTENTS 1
LO-Y I;@V)tk2F |0MAXEXTENTS unlimited
7Js;A.I?0)
}YfF6HN0/**博客首页9S q/}B#N1D
-- Public Synonym
N b{ A8s^;LP X0CREATE PUBLIC SYNONYM utl_vol_facts FOR &OWNER..utl_vol_facts
L%l"` w N!bX8|0/**博客首页 x$t(}%~8y2C;Rm
-- Grants for UTL_VOL_FACTS**博客首页 K1\4p+IZ#dWl
GRANT SELECT ON utl_vol_facts TO public
n;LC[ lc+X4X0/**博客首页s0o}:|d[6\
2. analyze_comp.sql**博客首页B2O(s)[8n[D6l&x J
--**博客首页.K*cn4u4B)T
-- analyze_comp.sql
E5~1Q(x!K#@TTV3}0--**博客首页2vp/i7[jD3d7F5Qq
BEGIN
,m;t,tV].Fp%d@0sys.dbms_utility.analyze_schema ( '&OWNER','COMPUTE');
j}:B%J \Qk4VG0END ;**博客首页)tI+cf{*w&W$M
/**博客首页c!@M7l e"q.e0Y3at
3. pop_vol.sql**博客首页9PH3l]P.t ~
--
9R"A$Vo0a k[AE0-- pop_vol.sql**博客首页}l*b Y sV-Ha
--
[3ec3AsA!|0insert into utl_vol_facts**博客首页+?c;F1}3MHT:\
select table_name
J |,s6?{:^5{ K h0, NVL ( num_rows, 0) as num_rows
m%Q2LB(MI0, trunc ( last_analyzed ) as meas_dt
0e2Jkq xff!]+Y0from all_tables -- or just user_tables**博客首页d/bv(F7q,FOHk |
where owner in ('&OWNER') -- or a comma-separated list of owners**博客首页rdE K!G
/
lvwB ST#k0commit
m9u?C ^o7q8bG0/**博客首页#N+m-G [(]]-_6t
C. 每周处理程序**博客首页N Zx J5D4`g
1. nextext.sql
L3T,`:H-J9ip[.[9l0--
(y*oxN;Zj0-- nextext.sql
g;Hr)Nq'D0--**博客首页%q._ W,Vbs
-- To find tables that don't match the tablespace default for NEXT extent.
N(Ub(g#w.{n8`y `0-- The implicit rule here is that every table in a given tablespace should**博客首页#I;x'wg/};FS^ h
-- use the exact same value for NEXT, which should also be the tablespace's
9Z4u0T;S4s4ff,oYe0-- default value for NEXT.
m6Av*pX:Ul }-v_0--
8r/hcuB0-- This tells us what the setting for NEXT is for these objects today.**博客首页F`)~K2s t,x
--**博客首页F2oNk [#Gu t
-- 11/30/98
2Q7z KQ2xoyyLS8x0SELECT segment_name, segment_type, ds.next_extent as Actual_Next
0NL AK k V2?|#Lb0, dt.tablespace_name, dt.next_extent as Default_Next**博客首页TN8x/Z+C7F
FROM dba_tablespaces dt, dba_segments ds
@#D:VTN+{"@;wq0WHERE dt.tablespace_name = ds.tablespace_name
7I7q D7Q(m/K6d F9hz0AND dt.next_extent !=ds.next_extent
qM'l\ ?i~Ki0AND ds.owner = UPPER ( '&OWNER' )
8c+Y"u\j dzl0ORDER BY tablespace_name, segment_type, segment_name
Zx `'N4n$R TW02. existext.sql
/L j6B&D~%]M,n0--
j#S0P)Ot$F0-- existext.sql
}W wv2{Lj0--
r#r(X7s!dj2B9}0-- To check existing extents
7T$TQ-|9~0--
zE}ijj&K0-- This tells us how many of each object's extents differ in size from**博客首页7F? LZXp.U.f/c
-- the tablespace's default size. If this report shows a lot of different
\_k/Y/R \0-- sized extents, your free space is likely to become fragmented. If so,
&Mg5[*]a3L8nfR0-- this tablespace is a candidate for reorganizing.
#W8v!spoP/]0--**博客首页-x:{{rW/D4W
-- 12/15/98
1?%pv I-U fG ~%w5|N0SELECT segment_name, segment_type
C(nf {J*s!rL0, count(*) as nr_exts**博客首页I1t(F xA;NA uLT
, sum ( DECODE ( dx.bytes,dt.next_extent,0,1) ) as nr_illsized_exts
$cb0A8K hag:k \+N0, dt.tablespace_name, dt.next_extent as dflt_ext_size
V`7{m/uy8l9q$U T0FROM dba_tablespaces dt, dba_extents dx**博客首页 e3H@/yX ?.Vd,I
WHERE dt.tablespace_name = dx.tablespace_name**博客首页bn3sS B K
AND dx.owner = '&OWNER'**博客首页%K~-\*a z+B&oS l:U
GROUP BY segment_name, segment_type, dt.tablespace_name, dt.next_extent**博客首页GAb#g"s5p
3. No_pk.sql**博客首页t!Z4?.n*d,c
--**博客首页up{pG._ XY |0S
-- no_pk.sql
\;Ud&MRf0--**博客首页5w5M4Z V){,g^8X9e
-- To find tables without PK constraint
9kh'j9I Ur0--
W zj+M@s0-- 11/2/98**博客首页 Q R(u3e0a
SELECT table_name
*}7msk"q0FROM all_tables**博客首页 Xt;H5[ j#eU0T/c0c#x
WHERE ōwner = '&OWNER'**博客首页Fl%z9[XSVc
MINUS**博客首页j)K HgC-d h G B,[
SELECT table_name
ro2EFq4u0FROM all_constraints
'}o o5R.e0WHERE ōwner = '&&OWNER'
Ua t'l0j1^ u0AND constraint_type = 'P'**博客首页8J f]V^N w
4. disPK.sql
b k(L9^5E;hUBqQ{[0--**博客首页#M%L@#EeI
-- disPK.sql**博客首页lRr(Dt%o
--
TD%Cp FH rnf0-- To find out which primary keys are disabled
7^M Vy}0--**博客首页Kf]p[ {2AC
-- 11/30/98**博客首页1uR,v{*i?
SELECT owner, constraint_name, table_name, status
Dp B%n D"mW0FROM all_constraints
f&gr:i~6w\0WHERE ōwner = '&OWNER' AND status = 'DISABLED' AND constraint_type = 'P'**博客首页:`/A+O] wCz*[q
5. nonuPK.sql
oL!j j){2`"L8v8^0--**博客首页-g(A#O7OL3\ I
-- nonuPK.sql
Y{w(sX0--
v\9Q3J y*b0-- To find tables with nonunique PK indexes. Requires that PK names**博客首页4ZfYH3g
-- follow a naming convention. An alternative query follows that
u;~"k`R^0|E ]0-- does not have this requirement, but runs more slowly.
d1a:?4P}Iig3X7o+f0--**博客首页-K6O Lzda
-- 11/2/98**博客首页&S$W/A(X1g2QF'{
SELECT index_name, table_name, uniqueness
e6qL"vd/cu0FROM all_indexes
Ef5e6s\(M0WHERE index_name like '&PKNAME%'
V p+V4e[)g kR0AND ōwner = '&OWNER' AND uniqueness = 'NONUNIQUE'
-t2N Mo/J$[0SELECT c.constraint_name, i.tablespace_name, i.uniqueness
V!?*K+TG{x0FROM all_constraints c , all_indexes i**博客首页F1rjLeH
WHERE c.owner = UPPER ( '&OWNER' ) AND i.uniqueness = 'NONUNIQUE'**博客首页,d(_$S [6W'SL
AND c.constraint_type = 'P' AND i.index_name = c.constraint_name**博客首页q2zBe a y'O
6. mkrebuild_idx.sql
tcs`0D[$wNm0--**博客首页 sQ J@q/S5Q _*IU
-- mkrebuild_idx.sql**博客首页WW y'H Ckh
--
nmoC~ [0-- Rebuild indexes to have correct storage parameters**博客首页o-~S^{0W
--
/Fs4i!V0wN Dy,i0-- 11/2/98
c7CFiT6U'X.O0SELECT 'alter index ' || index_name || ' rebuild '**博客首页"}^w q hf~})T
, 'tablespace INDEXES storage '**博客首页?;m,G mZl
|| ' ( initial 256 K next 256 K pctincrease 0 ) ; '**博客首页Pd(D b T(N(NC
FROM all_indexes**博客首页9RK&rc8K#`
WHERE ( tablespace_name != 'INDEXES'
deO@;b$e0OR next_extent != ( 256 * 1024 )**博客首页f6S]Vx8@f
)
JUu`i.].[7\8W0AND ōwner = '&OWNER'**博客首页1LR ]:WepT
/
-pb:p#h(n].HT07. datatype.sql
Ir`4ks eF0--
.] vs#S!}_n0-- datatype.sql**博客首页4O`HVd;k%X
--**博客首页7X\4D$J8O'~Y N;T-V
-- To check datatype consistency between two environments
\q l;a#UWFL0--
3d1t0gY"RFg S0-- 11/30/98
7YJ{'y&r v(e1U0SELECT
1W2VQl"I%h u0table_name,
O'}| L4Lm-W-\ v0column_name,**博客首页@5E!glmtj
data_type,**博客首页nGN}gR d|
data_length,**博客首页'gSu/b O
data_precision,**博客首页{#i,o6n y
data_scale,**博客首页`3tVeC:A$l
nullable**博客首页j1x0Q7gky+uy
FROM all_tab_columns -- first environment
3_:xx^Wh0WHERE ōwner = '&OWNER'**博客首页-\9_(v"N8@1zA-r
MINUS**博客首页QN4yj7d:z.O] n7g|
SELECT
I&d f1k6?t0table_name,
g|(n'XF!J"C,O }8D-C0column_name,**博客首页%pq"yT]#aD\
data_type,**博客首页 uD5_S4y*Z+[/IB!]
data_length,**博客首页-]y]$b d"l3z
data_precision,
'S8}c+sy+S#N;D s5Ha0data_scale,
k.NX){C1D${0nullable**博客首页3a!?!KG C)a HIA
FROM all_tab_columns@&my_db_link -- second environment
] N\P3~ Y0WHERE ōwner = '&OWNER2'**博客首页b4_azz
order by table_name, column_name
o.g6agC.zQqH)a0g#O08. obj_coord.sql**博客首页k9]J)a/{9T1me:u
--**博客首页*{/F{p)@` L
-- obj_coord.sql**博客首页!V,K'E+s)\@
--**博客首页9CrO1^%xrgP#D
-- To find out any difference in objects between two instances**博客首页9u(pC C aaJ
--
lS@GT!X7m0-- 12/08/98
p _L}f&{3p0SELECT object_name, object_type**博客首页#Ne"SSO&m!Q%N
FROM user_objects**博客首页 @vfz4J*X5g
MINUS
c$~1k)zU0SELECT object_name, object_type
%y4ty|6Y a.DG0FROM user_objects@&my_db_link
%V$UK1@/d9z0

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/15037413/viewspace-600903/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/15037413/viewspace-600903/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值