首页 > Linux操作系统 > Linux操作系统 > ORACLE 数据库管理员的职责
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/
I r5^)V7O0作,并使其能回退到控制数据库的 SID 。**博客首页1V)N}m$Ecd
4. 在提示下,使用 UNIX 中的‘ TAIL '命令查看 alert_
用其他方式检查文件中最近时期的警告日志
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--
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
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博客 ” ,链接:https://blog.itpub.net/15037413/viewspace-600903/ ,如需转载,请注明出处,否则将追究法律责任。