vcdog 发表于 2011-12-23 03:44

Oracle数据库管理员的日常任务_02(2011更新)

<P><B></B></P>
<P><B></B></P>
<P><B></B></P>
<P><B></B></P>
<P><STRONG>Oracle数据库管理员的日常任务_02(2011更新)</STRONG></P>
<P>目的:这篇文档有很详细的资料记录着对一个甚至更多的ORACLE数据库每天的,每月的,每年的运行的状态的结果及检查的结果,在文档的附录中你将会看到所有检查,修改的SQL和PL/SQL代码。</P>
<P>目录</P>
<P><A href="file:///F:/oracle/#_Toc302346886" target=_blank>1 日维护过程... 1</A></P>
<P><A href="file:///F:/oracle/#_Toc302346887" target=_blank>1.1 查看所有的实例是否已起:... 1</A></P>
<P><A href="file:///F:/oracle/#_Toc302346888" target=_blank>1.2 查找新的警告日志文件; 2</A></P>
<P><A href="file:///F:/oracle/#_Toc302346889" target=_blank>1.3 查看DBSNMP的运行情况; 2</A></P>
<P><A href="file:///F:/oracle/#_Toc302346890" target=_blank>1.4 查数据库备份是否成功; 2</A></P>
<P><A href="file:///F:/oracle/#_Toc302346891" target=_blank>1.5 检查备份的磁带文档是否成功; 2</A></P>
<P><A href="file:///F:/oracle/#_Toc302346892" target=_blank>1.6 检查对合理的性能来说是否有足够的资源; 2</A></P>
<P><A href="file:///F:/oracle/#_Toc302346893" target=_blank>1.7 将存档日志复制到备用数据库中... 4</A></P>
<P><A href="file:///F:/oracle/#_Toc302346894" target=_blank>1.8 经常查阅DBA用户手册... 4</A></P>
<P><A href="file:///F:/oracle/#_Toc302346895" target=_blank>2 晚间维护过程... 4</A></P>
<P><A href="file:///F:/oracle/#_Toc302346896" target=_blank>2.1 分析计划和收集数据... 4</A></P>
<P><A href="file:///F:/oracle/#_Toc302346897" target=_blank>2.1.1 如果你现在没有作这些的话,用‘MK VOLFACT.SQL’来创建测定体积的表。... 4</A></P>
<P><A href="file:///F:/oracle/#_Toc302346898" target=_blank>2.1.2 收集晚间数据大小的信息,用‘ANALYZE COMP.SQL’。... 4</A></P>
<P><A href="file:///F:/oracle/#_Toc302346899" target=_blank>2.1.3 收集统计结果,用‘POP VOL.SQL’。... 4</A></P>
<P><A href="file:///F:/oracle/#_Toc302346900" target=_blank>2.1.4 在空闲的时候检查数据,可能的话,每周或每个月进行。... 4</A></P>
<P><A href="file:///F:/oracle/#_Toc302346901" target=_blank>3 每周维护过程... 5</A></P>
<P><A href="file:///F:/oracle/#_Toc302346902" target=_blank>3.1 查找被破坏的目标... 5</A></P>
<P><A href="file:///F:/oracle/#_Toc302346903" target=_blank>3.1.1 检查表空间的next_extent. 5</A></P>
<P><A href="file:///F:/oracle/#_Toc302346904" target=_blank>3.1.2 所有的表都应该有唯一的主键... 5</A></P>
<P><A href="file:///F:/oracle/#_Toc302346905" target=_blank>3.1.3 所有的索引都要放到索引表空间中。运行‘MKREBUILD_IDX.SQL’ 5</A></P>
<P><A href="file:///F:/oracle/#_Toc302346906" target=_blank>3.1.4 不同的环境之间的计划应该是同样的,特别是测试环境和成品环境之间的计划应该相同。 5</A></P>
<P><A href="file:///F:/oracle/#_Toc302346907" target=_blank>3.2 查看是否有危害到安全策略的问题。... 6</A></P>
<P><A href="file:///F:/oracle/#_Toc302346908" target=_blank>3.3 查看报错的SQL*NET日志。... 6</A></P>
<P><A href="file:///F:/oracle/#_Toc302346909" target=_blank>3.3.1 客户端的日志。... 6</A></P>
<P><A href="file:///F:/oracle/#_Toc302346910" target=_blank>3.3.2 服务器端的日志。... 6</A></P>
<P><A href="file:///F:/oracle/#_Toc302346911" target=_blank>3.4 将所有的警告日志存档。... 6</A></P>
<P><A href="file:///F:/oracle/#_Toc302346912" target=_blank>3.5 供应商的主页... 6</A></P>
<P><A href="file:///F:/oracle/#_Toc302346913" target=_blank>3.5.1 ORACLE供应商... 6</A></P>
<P><A href="file:///F:/oracle/#_Toc302346914" target=_blank>3.5.2 Quest Software. 6</A></P>
<P><A href="file:///F:/oracle/#_Toc302346915" target=_blank>3.5.3 Sun Microsystems. 6</A></P>
<P><A href="file:///F:/oracle/#_Toc302346916" target=_blank>4 月维护过程... 7</A></P>
<P><A href="file:///F:/oracle/#_Toc302346917" target=_blank>4.1 查看对数据库会产生危害的增长速度... 7</A></P>
<P><A href="file:///F:/oracle/#_Toc302346918" target=_blank>4.1.1 从以前的记录或报告中回顾段增长的变化以此来确定段增长带来危害... 7</A></P>
<P><A href="file:///F:/oracle/#_Toc302346919" target=_blank>4.2 回顾以前数据库优化性能的调整... 7</A></P>
<P><A href="file:///F:/oracle/#_Toc302346920" target=_blank>4.2.1 回顾一般ORACLE数据库的调整点,比较以前的报告来确定有害的发展趋势。 7</A></P>
<P><A href="file:///F:/oracle/#_Toc302346921" target=_blank>4.3 查看I/O的屏颈问题... 7</A></P>
<P><A href="file:///F:/oracle/#_Toc302346922" target=_blank>4.3.1 查看前期数据库文件的活动性,比较以前的输出来判断有可能导致屏颈问题的趋势。 7</A></P>
<P><A href="file:///F:/oracle/#_Toc302346923" target=_blank>4.4 回顾FRAGMENTATION.. 7</A></P>
<P><A href="file:///F:/oracle/#_Toc302346924" target=_blank>4.5 计划数据库将来的性能... 7</A></P>
<P><A href="file:///F:/oracle/#_Toc302346925" target=_blank>4.5.1 比较ORACLE和操作系统的CPU,内存,网络,及硬盘的利用率以此来确定在近期将会有的一些资源争夺的趋 势; 7</A></P>
<P><A href="file:///F:/oracle/#_Toc302346926" target=_blank>4.5.2 当系统将超出范围时要把性能趋势当作服务水平的协议来看。... 7</A></P>
<P><A href="file:///F:/oracle/#_Toc302346927" target=_blank>4.6 完成调整和维护工作... 8</A></P>
<P><A href="file:///F:/oracle/#_Toc302346928" target=_blank>4.6.1 使修改满足避免系统资源的争夺的需要,这里面包括增加新资源或使预期的停工。 8</A></P>
<P><A href="file:///F:/oracle/#_Toc302346929" target=_blank>5 附录(维护用程序) 8</A></P>
<P><A href="file:///F:/oracle/#_Toc302346930" target=_blank>5.1 日常程序... 8</A></P>
<P><A href="file:///F:/oracle/#_Toc302346931" target=_blank>5.2 每晚处理程序... 10</A></P>
<P><A href="file:///F:/oracle/#_Toc302346932" target=_blank>5.3 每周处理程序... 12</A></P>
<P>&nbsp;</P>
<P>&nbsp;</P>
<P><A name=_Toc302346886>1 日维护过程</A> </P>
<P>&nbsp;</P>
<P>1.1 <A name=_Toc302346887>查看所有的实例是否已起</A>: </P>
<P>确定数据库是可用的,把每个实例写入日志并且运行日报告或是运行测试文件。当然有一些操作我们是希望它能自动运行的。</P>
<P>可选择执行:用ORACLE管理器中的‘PROBE’事件来查看;</P>1.2 <A name=_Toc302346888>查找新的警告日志文件</A>;
<P>1.联接每一个操作管理系统;</P>
<P>2.使用‘TELNET’或是可比较程序;</P>
<P>3.对每一个管理实例,经常的执行$ORACLE_BASE//bdump操作,并使其能回退到控制数据</P>
<P>4.在提示下,使用UNIX中的‘TAIL’命令查看alert_.log,或是用其他方式检查文件中最近时期的警告日志;</P>
<P>5.如果以前出现过的一些ORA_ERRORS又出现,将它记录到数据库恢复日志中并且仔细的研究它们,这个 数据库恢复日志在〈FILE〉中;</P>1.3 <A name=_Toc302346889>查看DBSNMP</A>的运行情况;
<P>检查每个被管理机器的‘DBSNMP’进程并将它们记录到日志中。</P>
<P>在UNIX中,在命令行中,键入ps–ef | grep dbsnmp,将回看到2个DBSNMP进程在运行。如果没有,重启DBSNMP。</P>1.4 <A name=_Toc302346890>查数据库备份是否成功</A>; 1.5 <A name=_Toc302346891>检查备份的磁带文档是否成功</A>; 1.6 <A name=_Toc302346892>检查对合理的性能来说是否有足够的资源</A>;
<P>1.检查在表空间中有没有剩余空间。</P>
<P>对每一个实例来说,检查在表空间中是否存在有剩余空间来满足当天的预期的需要。当数据库中已有的数据是稳定的,数据日增长的平均数也是可以计算出来,最小的剩余空间至少要能满足每天数据的增长。</P>
<P>A)运行‘FREE.SQL’来检查表空间的剩余空间。</P>
<P>B)运行‘SPACE.SQL’来检查表空间中的剩余空间百分率</P>
<P>2.检查回滚段;</P>
<P>回滚段的状态一般是在线的,除了一些为复杂工作准备的专用段,它一般状态是离线的。</P>
<P>a)每个数据库都有一个回滚段名字的列表。</P>
<P>b)你可以用V$ROLLSTAT来查询在线或是离线的回滚段的现在状态.</P>
<P>Select USN,LATCH,EXTENTS,RSSIZE,WRITES,HWMSIZE,SHRINKS,STATUS</P>
<P>Fromv$rollstat;</P>
<P>c)对于所有回滚段的存储参数及名字,可用DBA_ROLLBACK_SEGS来查询。但是它不如V$ROLLSTAT 准确。 </P>
<P>Col segment_name for a15</P>
<P>col tablespace_name for a20</P>
<P>colfile_id for 999999</P>
<P>Select*</P>
<P>From dba_rollback_segs;</P>
<P>库的SID。</P>
<P>3.识别出一些过分的增长。</P>
<P>查看数据库中超出资源或是增长速度过大的段,这些段的存储参数需要调整。</P>
<P>a)收集日数据大小的信息,可以用‘ANALYZE5PCT.SQL’。如果你收集的是每晚的信息,则可跳过这 一步。</P>
<P>b)检查当前的范围,可用‘NR_EXTENTS.SQL’。</P>
<P>c)查询当前表的大小信息。</P>
<P>d)查询当前索引大小的信息。</P>
<P>e)查询增长趋势。</P>
<P>4.确定空间的范围。</P>
<P>如果范围空间对象的NEXT_EXTENT比表空间所能提供的最大范围还要大,那么这将影响数据库的运行。如果我们找到了这个目标,可以用‘ALTER TABLESPACE COALESCE’调查它的位置,或加另外的数据文件。</P>
<P>A)运行‘SPACEBOUND.SQL’。如果都是正常的,将不返回任何行。 </P>
<P>5.回顾CPU,内存,网络,硬件资源论点的过程。</P>
<P>A)检查CPU的利用情况,进到x:.htm =&gt;system metrics=&gt;CPU利用页,CPU的最大限度为400,当CPU的 占用保持在350以上有一段时间的话,我们就需要查看及研究出现的问题。</P>1.7 <A name=_Toc302346893>将存档日志复制到备用数据库中</A>
<P>如果有一个备用数据库,将适当的存档日志复制到备用数据库的期望位置,备用数据库中保存最近期的数据。</P>1.8 <A name=_Toc302346894>经常查阅DBA</A>用户手册
<P>如果有可能的话,要广泛的阅读,包括DBA手册,行业杂志,新闻组或是邮件列表。</P><A name=_Toc302346895>2 晚间维护过程</A>
<P>大部分的数据库产品将受益于每晚确定的检查进程的运行。</P>
<P>A.收集VOLUMETRIC数据</P>2.1 <A name=_Toc302346896>分析计划和收集数据</A>
<P>更准确的分析计算并保存结果。</P>2.1.1 <A name=_Toc302346897>如果你现在没有作这些的话,用</A>‘MK VOLFACT.SQL’来创建测定体积的表。 2.1.2 <A name=_Toc302346898>收集晚间数据大小的信息,用</A>‘ANALYZE COMP.SQL’。 2.1.3 <A name=_Toc302346899>收集统计结果,用</A>‘POP VOL.SQL’。 2.1.4 <A name=_Toc302346900>在空闲的时候检查数据,可能的话,每周或每个月进行。</A>
<P>我是用MS EXCEL和ODBC的联接来检查数据和图表的增长。</P><A name=_Toc302346901>3 每周维护过程</A> 3.1 <A name=_Toc302346902>查找被破坏的目标</A> 3.1.1 <A name=_Toc302346903>检查表空间的next_extent</A>
<P>对于每个给定表空间的对象来说,NEXT_EXTENT的大小是相同的,如12/14/98,缺省的NEXT_EXTENT的 DATAHI为1G,DATALO为500MB,INDEXES为256MB。</P>
<P>A)检查NEXT_EXTENT的设置,可用‘NEXTEXT.SQL’。</P>
<P>B)检查已有的EXTENTS,可用‘EXISTEXT.SQL’。</P>3.1.2 <A name=_Toc302346904>所有的表都应该有唯一的主键</A>
<P>a)查看那些表没有主键,可用‘NO_PK.SQL’。</P>
<P>b)查找那些主键是没有发挥作用的,可用‘DIS_PK.SQL’。</P>
<P>c)所有作索引的主键都要是唯一的,可用‘NONUPK.SQL’来检查。</P>3.1.3 <A name=_Toc302346905>所有的索引都要放到索引表空间中。运行</A>‘MKREBUILD_IDX.SQL’ 3.1.4 <A name=_Toc302346906>不同的环境之间的计划应该是同样的,特别是测试环境和成品环境之间的计划应该相同。</A>
<P>a)检查不同的2个运行环境中的数据类型是否一致,可用‘DATATYPE.SQL’。</P>
<P>b)在2个不同的实例中寻找对象的不同点,可用‘OBJ_COORD.SQL’。</P>
<P>c)更好的做法是,使用一种工具,象寻求软件的计划管理器那样的工具。</P>3.2 <A name=_Toc302346907>查看是否有危害到安全策略的问题。</A> 3.3 <A name=_Toc302346908>查看报错的</A>SQL*NET日志。 3.3.1 <A name=_Toc302346909>客户端的日志。</A> 3.3.2 <A name=_Toc302346910>服务器端的日志。</A> 3.4 <A name=_Toc302346911>将所有的警告日志存档。</A> 3.5 <A name=_Toc302346912>供应商的主页</A> 3.5.1 <A name=_Toc302346913>ORACLE</A>供应商
<P>http://www.oracle.com</P>
<P>http://technet.oracle.com</P>
<P>http://www.oracle.com/support</P>
<P>http://www.oramag.com</P>3.5.2 <A name=_Toc302346914>Quest Software</A>
<P>http://www.quests.com</P>3.5.3 <A name=_Toc302346915>Sun Microsystems</A>
<P>http://www.sun.com</P><A name=_Toc302346916>4 月维护过程</A> 4.1 <A name=_Toc302346917>查看对数据库会产生危害的增长速度</A> 4.1.1 <A name=_Toc302346918>从以前的记录或报告中回顾段增长的变化以此来确定段增长带来危害</A> 4.2 <A name=_Toc302346919>回顾以前数据库优化性能的调整</A> 4.2.1 <A name=_Toc302346920>回顾一般ORACLE</A>数据库的调整点,比较以前的报告来确定有害的发展趋势。 4.3 <A name=_Toc302346921>查看</A>I/O的屏颈问题 4.3.1 <A name=_Toc302346922>查看前期数据库文件的活动性,比较以前的输出来判断有可能导致屏颈问题的趋势。</A> 4.4 <A name=_Toc302346923>回顾</A>FRAGMENTATION 4.5 <A name=_Toc302346924>计划数据库将来的性能</A> 4.5.1 <A name=_Toc302346925>比较</A>ORACLE和操作系统的CPU,内存,网络,及硬盘的利用率以此来确定在近期将会有的一些资源争夺的趋 势; 4.5.2 <A name=_Toc302346926>当系统将超出范围时要把性能趋势当作服务水平的协议来看。</A> 4.6 <A name=_Toc302346927>完成调整和维护工作</A> 4.6.1 <A name=_Toc302346928>使修改满足避免系统资源的争夺的需要,这里面包括增加新资源或使预期的停工。</A> <A name=_Toc302346929>5 附录(</A>维护用程序) 5.1 <A name=_Toc302346930>日常程序</A>
<P>0. free.sql</P>
<P>To verify free space in tablespaces </P>
<P>Minimum amount of free space </P>
<P>document your thresholds: </P>
<P>SELECT tablespace_name,sum(blocks) free_blk,trunc((sum(bytes)/1024*1024)) free_m,</P>
<P>max(bytes)/(1024) big_chunk_k,count(*) num_chunks</P>
<P>FROM dba_free_space</P>
<P>GROUP BY tablespace_name;</P>
<P><A href="http://blog.chinaunix.nethttp://blog.chinaunix.net/attachment/201109/23/7589639_1316774287qf44.jpg" target=_blank><IMG style="BACKGROUND-IMAGE: none; BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px" title=clip_image002 border=0 alt=clip_image002 src="http://blog.chinaunix.nethttp://blog.chinaunix.net/attachment/201109/23/7589639_1316774288956U.jpg" width=656 height=177></A></P>
<P>1. Space.sql</P>
<P>-- space.sql </P>
<P>-- To check free, pct_free, and allocated space within a tablespace </P>
<P>-- 11/24/98</P>
<P>SELECT tablespace_name,largest_free_chunk,nr_free_chunks,sum_alloc_blocks,sum_free_blocks</P>
<P>,to_char(100*sum_free_blocks/sum_alloc_blocks,'09.99')||'%' pct_free</P>
<P>FROM</P>
<P>(SELECT tablespace_name,sum(blocks) sum_alloc_blocks</P>
<P>FROM dba_data_files</P>
<P>GROUP BY tablespace_name)</P>
<P>,(SELECT tablespace_name fs_ts_name</P>
<P>,max(blocks) largest_free_chunk</P>
<P>,count(blocks) nr_free_chunks</P>
<P>,sum(blocks) sum_free_blocks</P>
<P>FROM dba_free_space</P>
<P>GROUP BY tablespace_name)</P>
<P>WHERE tablespace_name=fs_ts_name;</P>
<P><A href="http://blog.chinaunix.nethttp://blog.chinaunix.net/attachment/201109/23/7589639_131677428877oQ.jpg" target=_blank><IMG style="BACKGROUND-IMAGE: none; BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px" title=clip_image004 border=0 alt=clip_image004 src="http://blog.chinaunix.nethttp://blog.chinaunix.net/attachment/201109/23/7589639_13167742899fF3.jpg" width=770 height=148></A></P>
<P>2. analyze5pct.sql</P>
<P>-- analyze5pct.sql </P>
<P>-- To analyze tables and indexes quickly, using a 5% sample size </P>
<P>-- (do not use this script. if you are performing the overnight collection of volumetric data) 不使用此脚本。如果您正在执行的容积数据的隔夜收集</P>
<P>-- 11/30/98</P>
<P>BEGIN</P>
<P>DBMS_UTILITY.ANALYZE_SCHEMA('&amp;OWNER','ESTIMATE',NULL,5);</P>
<P>END;</P>
<P>/</P>
<P>3. nr_extents.sql</P>
<P>-- nr_extents.sql </P>
<P>-- To find out any object reaching </P>
<P>-- extents, and manually upgrade it to allow unlimited </P>
<P>-- max_extents (thus only objects we *expect* to be big </P>
<P>-- are allowed to become big) </P>
<P><A name=OLE_LINK3></A><A name=OLE_LINK2></A><A name=OLE_LINK1></A></P>
<P>SELECT e.owner,e.segment_type,e.segment_name,count(*) nr_extents,s.max_extents</P>
<P>,to_char(sum(e.bytes)/(1024*1024),'999,999.90') MB</P>
<P>FROM dba_extents e,dba_segments s</P>
<P>WHERE e.segment_name=s.segment_name</P>
<P>GROUP BY e.owner,e.segment_type,e.segment_name,s.max_extents</P>
<P>HAVING count(*)&gt;&amp;THRESHOLD or ((s.max_extents-count(*)) &lt; &amp;&amp;THRESHOLD)</P>
<P>ORDER BY count(*) desc;</P>
<P>4. spacebound.sql</P>
<P><A name=OLE_LINK7></A><A name=OLE_LINK6>spacebound</A>.sql </P>
<P>To identify space-bound objects. If all is well, no rows are returned. </P>
<P>f any space-bound objects are found, look at value of NEXT extent </P>
<P>size to figure out what happened. </P>
<P>Then use coalesce (alter tablespace coalesce . </P>
<P>Lastly, add another datafile to the tablespace if needed. </P>
<P><A name=OLE_LINK5></A><A name=OLE_LINK4>SELECT a.table_name,a.next_extent,a.tablespace_name</A></P>
<P>FROM all_tables a,</P>
<P>(SELECT tablespace_name,max(bytes) big_chunk</P>
<P>FROM dba_free_space</P>
<P>GROUP BY tablespace_name) f</P>
<P>WHERE f.tablespace_name=a.tablespace_name</P>
<P>AND a.next_extent &gt; f.big_chunk;</P>5.2 <A name=_Toc302346931>每晚处理程序</A>
<P>1. mk_volfact.sql</P>
<P>mk_volfact.sql (only run this once to set it up; do not run it nightly!)</P>
<P>Table UTL_VOL_FACTS</P>
<P>CREATETABLEutl_vol_facts(</P>
<P>table_nameVARCHAR2(30),</P>
<P>num_rowsNUMBER,</P>
<P>meas_dtDATE)</P>
<P>TABLESPACEplatab</P>
<P>STORAGE(</P>
<P>INITIAL128k</P>
<P>NEXT128k</P>
<P>PCTINCREASE0</P>
<P>MINEXTENTS1</P>
<P>MAXEXTENTSunlimited</P>
<P>)</P>
<P>/</P>
<P>--PublicSynonym</P>
<P>CREATEPUBLICSYNONYMutl_vol_factsFOR&amp;OWNER..utl_vol_facts</P>
<P>/</P>
<P>Grants for UTL_VOL_FACTS</P>
<P>GRANTSELECTONutl_vol_factsTOpublic</P>
<P>2. analyze_comp.sql </P>
<P>analyze_comp.sql</P>
<P>BEGIN</P>
<P>SYS.DBMS_UTILITY.ANALYZE_SCHEMA('&amp;OWNER','COMPUTE');</P>
<P>END;</P>
<P>/</P>
<P>3. pop_vol.sql</P>
<P>pop_vol.sql</P>
<P>insertintoutl_vol_facts</P>
<P>selecttable_name</P>
<P>,NVL(num_rows,0)asnum_rows</P>
<P>,trunc(last_analyzed)asmeas_dt</P>
<P>fromall_tables</P>
<P>or just user_tables</P>
<P>whereownerin('&amp;OWNER')</P>
<P>or a comma-separated list of owners</P>
<P>/</P>
<P>commit</P>
<P>/</P>5.3 <A name=_Toc302346932>每周处理程序</A>
<P>1. nextext.sql</P>
<P>nextext.sql </P>
<P>To find tables that don't match the tablespace default for NEXT extent. </P>
<P>The implicit rule here is that every table in a given tablespace should </P>
<P>use the exact same value for NEXT, which should also be the tablespace's </P>
<P>default value for NEXT. </P>
<P>his tells us what the setting for NEXT is for these objects today. </P>
<P>11/30/98</P>
<P>SELECTsegment_name,segment_type,ds.next_extentasActual_Next</P>
<P>,dt.tablespace_name,dt.next_extentasDefault_Next</P>
<P>FROMdba_tablespacesdt,dba_segmentsds</P>
<P>WHEREdt.tablespace_name=ds.tablespace_name</P>
<P>ANDdt.next_extent!=ds.next_extent</P>
<P>ANDds.owner=UPPER('&amp;OWNER')</P>
<P>ORDERBYtablespace_name,segment_type,segment_name;</P>
<P>2. existext.sql</P>
<P>existext.sql </P>
<P>To check existing extents </P>
<P>This tells us how many of each object's extents differ in size from </P>
<P>the tablespace's default size. If this report shows a lot of different </P>
<P>sized extents, your free space is likely to become fragmented. If so, </P>
<P>this tablespace is a candidate for reorganizing. </P>
<P>12/15/98</P>
<P>SELECTsegment_name,segment_type</P>
<P>,count(*)asnr_exts</P>
<P>,sum(DECODE(dx.bytes,dt.next_extent,0,1))asnr_illsized_exts</P>
<P>,dt.tablespace_name,dt.next_extentasdflt_ext_size</P>
<P>FROMdba_tablespacesdt,dba_extentsdx</P>
<P>WHEREdt.tablespace_name=dx.tablespace_name</P>
<P>ANDdx.owner='&amp;OWNER'</P>
<P>GROUPBYsegment_name,segment_type,dt.tablespace_name,dt.next_extent;</P>
<P>3. No_pk.sql</P>
<P>no_pk.sql </P>
<P>To find tables without PK constraint </P>
<P>11/2/98</P>
<P>SELECTtable_name</P>
<P>FROMall_tables</P>
<P>WHEREwner='&amp;OWNER'</P>
<P>MINUS</P>
<P>SELECTtable_name</P>
<P>FROMall_constraints</P>
<P>WHEREwner='&amp;&amp;OWNER'</P>
<P>ANDconstraint_type='P';</P>
<P>4. disPK.sql</P>
<P>disPK.sql </P>
<P>To find out which primary keys are disabled </P>
<P>11/30/98</P>
<P>SELECTowner,constraint_name,table_name,status</P>
<P>FROMall_constraints</P>
<P>WHEREwner='&amp;OWNER'ANDstatus='DISABLED’ANDconstraint_type='P';</P>
<P>5. nonuPK.sql</P>
<P>nonuPK.sql </P>
<P>To find tables with nonunique PK indexes. Requires that PK names </P>
<P>follow a naming convention. An alternative query follows that </P>
<P>does not have this requirement, but runs more slowly.</P>
<P>11/2/98</P>
<P>SELECTindex_name,table_name,uniqueness</P>
<P>FROMall_indexes</P>
<P>WHEREindex_namelike'&amp;PKNAME%'</P>
<P>ANDwner='&amp;OWNER'ANDuniqueness='NONUNIQUE'</P>
<P>SELECTc.constraint_name,i.tablespace_name,i.uniqueness</P>
<P>FROMall_constraintsc,all_indexesi</P>
<P>WHEREc.owner=UPPER('&amp;OWNER')ANDi.uniqueness='NONUNIQUE'</P>
<P>ANDc.constraint_type='P'ANDi.index_name=c.constraint_name</P>
<P>6. mkrebuild_idx.sql</P>
<P>mkrebuild_idx.sql </P>
<P>Rebuild indexes to have correct storage parameters </P>
<P>11/2/98</P>
<P>SELECT'alterindex'||index_name||'rebuild'</P>
<P>,'tablespaceINDEXESstorage'</P>
<P>||'(initial256Knext256Kpctincrease0);'</P>
<P>FROMall_indexes</P>
<P>WHERE(tablespace_name!='INDEXES'</P>
<P>ORnext_extent!=(256*1024)</P>
<P>)</P>
<P>ANDwner='&amp;OWNER'</P>
<P>/</P>
<P>7. datatype.sql</P>
<P>datatype.sql </P>
<P>To check datatype consistency between two environments </P>
<P>11/30/98</P>
<P>SELECTtable_name,column_name,data_type,data_length,data_precision,data_scale,nullable</P>
<P>FROMall_tab_columns--firstenvironment</P>
<P>WHEREwner='&amp;OWNER'</P>
<P>MINUS</P>
<P>SELECTtable_name,column_name,data_type,data_length,data_precision,data_scale,nullable</P>
<P>FROMall_tab_columns@&amp;my_db_link--secondenvironment</P>
<P>WHEREwner='&amp;OWNER2'</P>
<P>orderbytable_name,column_name</P>
<P>8. obj_coord.sql</P>
<P>obj_coord.sql </P>
<P>To find out any difference in objects between two instances </P>
<P>12/08/98</P>
<P>SELECTobject_name,object_type</P>
<P>FROMuser_objects</P>
<P>MINUS</P>
<P>SELECTobject_name,object_type</P>
<P>FROMuser_objects@&amp;my_db_link</P>

<P>&nbsp;&nbsp;&nbsp;</P>
<P><A href="http://www.51.la/?5549688" target=_blank><IMG style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-TOP: medium none; BORDER-RIGHT: medium none" alt=我要啦免费统计 src="http://img.users.51.la/5549688.asp"></A></P>
页: [1]
查看完整版本: Oracle数据库管理员的日常任务_02(2011更新)