ITPub博客

Moving表到新的段或者表空间

原创 作者:尛样儿 时间:2015-08-09 21:46:09 1 删除 编辑
<br /> <span style="font-size:16px;font-family:'Courier New';">这篇文章继续前两篇文章的内容,讨论Oracle段碎片整理的相关话题,相关文章:</span><br /> <span style="font-size:16px;font-family:'Courier New';"> &nbsp; &nbsp;《</span><span style="font-size:16px;font-family:'Courier New';">使用在线段收缩(ONLINE SEGMENT SHRINK)回收浪费的段空间</span><span style="font-size:16px;font-family:'Courier New';">》:</span><a href="http://blog.itpub.net/23135684/viewspace-1765511/" target="_blank"><span style="font-size:16px;font-family:'Courier New';">http://blog.itpub.net/23135684/viewspace-1765511/</span></a><span style="font-size:16px;font-family:'Courier New';"></span><br /> <span style="font-size:16px;font-family:'Courier New';"> &nbsp; &nbsp;《</span><span style="font-size:16px;font-family:'Courier New';">使用DBMS_REDEFINITION包执行在线重定义表(ONLINE TABLE REDEFINITION)</span><span style="font-size:16px;font-family:'Courier New';">》:</span><a href="http://blog.itpub.net/23135684/viewspace-1765128/" target="_blank"><span style="font-size:16px;font-family:'Courier New';">http://blog.itpub.net/23135684/viewspace-1765128/</span></a><span style="font-size:16px;font-family:'Courier New';"></span><br /> <span style="font-size:16px;font-family:'Courier New';"></span><br /> <span style="font-size:16px;font-family:'Courier New';">&nbsp; &nbsp;&nbsp;ALTER TABLE ...MOVE语句能够移动非分区表或者分区表的一个分区的数据到新的段,和任意有权限的不同表空间。这个语句也可以修改表或者分区任何的存储参数(Storage),包</span><span style="font-size:16px;font-family:'Courier New';">括不能通过ALTER TABLE修改的参数,也可以使用ALTER TABLE ... MOVE语句加上COMPRESS字句使用表压缩存储新的段。</span><br /> <br /> <span style="font-size:16px;font-family:'Courier New';color:#E53333;">当ALTER TABLE ... MOVE语句在执行的时候不允许在这个表上有DML语句执行,如果需要在Moving期间允许DML操作需要使用在线重定义表技术。</span><br /> <br /> <span style="font-size:16px;font-family:'Courier New';">以下的语句移动hr.admin_emp表到一个新段,指定新的存储参数:</span><br /> <span style="font-size:16px;font-family:'Courier New';">ALTER TABLE hr.admin_emp MOVE</span><br /> <span style="font-size:16px;font-family:'Courier New';">&nbsp; &nbsp; &nbsp; STORAGE ( INITIAL 20K</span><br /> <span style="font-size:16px;font-family:'Courier New';">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; NEXT 40K</span><br /> <span style="font-size:16px;font-family:'Courier New';">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; MINEXTENTS 2</span><br /> <span style="font-size:16px;font-family:'Courier New';">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; MAXEXTENTS 20</span><br /> <span style="font-size:16px;font-family:'Courier New';">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; PCTINCREASE 0 );</span><br /> <br /> <span style="font-size:16px;font-family:'Courier New';"><span style="color:#E53333;">&nbsp; &nbsp;&nbsp;</span><span style="color:#E53333;">Moving表改变了表行的rowid号,这会引起表上的索引被标记为UNUSABLE,任何使用索引的DML语句访问这个表将收到ORA-01502的错误,表上的索引必须被DROP或者重建</span></span><span style="font-size:16px;font-family:'Courier New';color:#E53333;">,同样的,表上的任何统计信息都变得无效,在Moving表完成之后应该收集新的统计信息。</span><br /> <br /> <span style="font-size:16px;font-family:'Courier New';"><span style="color:#E53333;">&nbsp; &nbsp;&nbsp;</span><span style="color:#E53333;">如果表包含LOB字段,在用户明确指定的情况下,这个语句能用于移动和这个表相关的LOB数据段,LOB索引段,如果没有指定,默认是不移动LOB数据和LOB索引段。</span></span><br /> <br /> <br /> <span style="font-size:16px;font-family:'Courier New';">下面通过一个简单测试来讨论一下Moving Table和Online Segment SHRINK的区别:</span><br /> <br /> <span style="font-size:16px;font-family:'Courier New';"><strong>1.创建测试数据:</strong></span><br /> <span style="font-size:16px;font-family:'Courier New';">SQL&gt; connect test1/test1</span><br /> <br /> <span style="font-size:16px;font-family:'Courier New';">表已删除。</span><br /> <br /> <span style="font-size:16px;font-family:'Courier New';">SQL&gt; create table test123 (id number primary key,name char(2000));</span><br /> <br /> <span style="font-size:16px;font-family:'Courier New';">表已创建。</span><br /> <br /> <span style="font-size:16px;font-family:'Courier New';">SQL&gt; begin</span><br /> <span style="font-size:16px;font-family:'Courier New';">&nbsp; 2 &nbsp;for i in 1..10000 loop</span><br /> <span style="font-size:16px;font-family:'Courier New';">&nbsp; 3 &nbsp;insert into test123 values(i ,i||'abc');</span><br /> <span style="font-size:16px;font-family:'Courier New';">&nbsp; 4 &nbsp;commit;</span><br /> <span style="font-size:16px;font-family:'Courier New';">&nbsp; 5 &nbsp;end loop;</span><br /> <span style="font-size:16px;font-family:'Courier New';">&nbsp; 6 &nbsp;end;</span><br /> <span style="font-size:16px;font-family:'Courier New';">&nbsp; 7 &nbsp;/</span><br /> <br /> <span style="font-size:16px;font-family:'Courier New';">PL/SQL 过程已成功完成。</span><br /> <br /> <span style="font-size:16px;font-family:'Courier New';">SQL&gt; commit;</span><br /> <br /> <span style="font-size:16px;font-family:'Courier New';">提交完成。</span><br /> <br /> <span style="font-size:16px;font-family:'Courier New';">创建了10000条测试数据。</span><br /> <br /> <span style="font-size:16px;font-family:'Courier New';"><strong>2.显示TEST1.TEST123数据分布情况。</strong></span><br /> <br /> <span style="font-size:16px;font-family:'Courier New';">SQL&gt; connect / as sysdba</span><br /> <span style="font-size:16px;font-family:'Courier New';">已连接。</span><br /> <span style="font-size:16px;font-family:'Courier New';">SQL&gt; analyze table test1.test123 compute statistics;</span><br /> <br /> <span style="font-size:16px;font-family:'Courier New';">表已分析。</span><br /> <br /> <span style="font-size:16px;font-family:'Courier New';">SQL&gt; set serveroutput on</span><br /> <span style="font-size:16px;font-family:'Courier New';">SQL&gt; exec show_space('TEST123','AUTO','T','Y','TEST1');</span><br /> <span style="font-size:16px;font-family:'Courier New';color:#E53333;">Total Blocks............................3456</span><br /> <span style="font-size:16px;font-family:'Courier New';">Total Bytes.............................28311552</span><br /> <span style="font-size:16px;font-family:'Courier New';">Unused Blocks...........................0</span><br /> <span style="font-size:16px;font-family:'Courier New';">Unused Bytes............................0</span><br /> <span style="font-size:16px;font-family:'Courier New';">Last Used Ext FileId....................4</span><br /> <span style="font-size:16px;font-family:'Courier New';">Last Used Ext BlockId...................4864</span><br /> <span style="font-size:16px;font-family:'Courier New';">Last Used Block.........................128</span><br /> <span style="font-size:16px;font-family:'Courier New';">*************************************************</span><br /> <span style="font-size:16px;font-family:'Courier New';">The segment is analyzed</span><br /> <span style="font-size:16px;font-family:'Courier New';">0% -- 25% free space blocks.............0</span><br /> <span style="font-size:16px;font-family:'Courier New';">0% -- 25% free space bytes..............0</span><br /> <span style="font-size:16px;font-family:'Courier New';">25% -- 50% free space blocks............0</span><br /> <span style="font-size:16px;font-family:'Courier New';">25% -- 50% free space bytes.............0</span><br /> <span style="font-size:16px;font-family:'Courier New';color:#E53333;">50% -- 75% free space blocks............1</span><br /> <span style="font-size:16px;font-family:'Courier New';">50% -- 75% free space bytes.............8192</span><br /> <span style="font-size:16px;font-family:'Courier New';color:#E53333;">75% -- 100% free space blocks...........30</span><br /> <span style="font-size:16px;font-family:'Courier New';">75% -- 100% free space bytes............245760</span><br /> <span style="font-size:16px;font-family:'Courier New';">Unused Blocks...........................30</span><br /> <span style="font-size:16px;font-family:'Courier New';">Unused Bytes............................245760</span><br /> <span style="font-size:16px;font-family:'Courier New';">Total Blocks............................3333</span><br /> <span style="font-size:16px;font-family:'Courier New';">Total bytes.............................27303936</span><br /> <br /> <span style="font-size:16px;font-family:'Courier New';">PL/SQL 过程已成功完成。</span><br /> <br /> <span style="font-size:16px;font-family:'Courier New';"><strong>3.删除部分数据。</strong></span><br /> <span style="font-size:16px;font-family:'Courier New';"><strong></strong></span><br /> <span style="font-size:16px;font-family:'Courier New';">SQL&gt; begin</span><br /> <span style="font-size:16px;font-family:'Courier New';">&nbsp; 2 &nbsp;for i in 1..2000 loop</span><br /> <span style="font-size:16px;font-family:'Courier New';">&nbsp; 3 &nbsp;delete from test1.test123 where id =(select ABS(MOD(DBMS_RANDOM.RANDOM,10000)) from dual);</span><br /> <span style="font-size:16px;font-family:'Courier New';">&nbsp; 4 &nbsp;commit;</span><br /> <span style="font-size:16px;font-family:'Courier New';">&nbsp; 5 &nbsp;end loop;</span><br /> <span style="font-size:16px;font-family:'Courier New';">&nbsp; 6 &nbsp;end;</span><br /> <span style="font-size:16px;font-family:'Courier New';">&nbsp; 7 &nbsp;/</span><br /> <br /> <span style="font-size:16px;font-family:'Courier New';">PL/SQL 过程已成功完成。</span><br /> <br /> <span style="font-size:16px;font-family:'Courier New';">SQL&gt; commit;</span><br /> <br /> <span style="font-size:16px;font-family:'Courier New';">提交完成。</span><br /> <br /> <span style="font-size:16px;font-family:'Courier New';">随机删除了2000条数据。</span><br /> <br /> <span style="font-size:16px;font-family:'Courier New';"><strong>4.获得删除后的数据分布。</strong></span><br /> <span style="font-size:16px;font-family:'Courier New';"><strong></strong></span><br /> <span style="font-size:16px;font-family:'Courier New';">SQL&gt; analyze table test1.test123 compute statistics;</span><br /> <br /> <span style="font-size:16px;font-family:'Courier New';">表已分析。</span><br /> <br /> <span style="font-size:16px;font-family:'Courier New';">SQL&gt; exec show_space('TEST123','AUTO','T','Y','TEST1');</span><br /> <span style="font-size:16px;font-family:'Courier New';">Total Blocks............................3456</span><br /> <span style="font-size:16px;font-family:'Courier New';">Total Bytes.............................28311552</span><br /> <span style="font-size:16px;font-family:'Courier New';">Unused Blocks...........................0</span><br /> <span style="font-size:16px;font-family:'Courier New';">Unused Bytes............................0</span><br /> <span style="font-size:16px;font-family:'Courier New';">Last Used Ext FileId....................4</span><br /> <span style="font-size:16px;font-family:'Courier New';">Last Used Ext BlockId...................4864</span><br /> <span style="font-size:16px;font-family:'Courier New';">Last Used Block.........................128</span><br /> <span style="font-size:16px;font-family:'Courier New';">*************************************************</span><br /> <span style="font-size:16px;font-family:'Courier New';">The segment is analyzed</span><br /> <span style="font-size:16px;font-family:'Courier New';">0% -- 25% free space blocks.............0</span><br /> <span style="font-size:16px;font-family:'Courier New';">0% -- 25% free space bytes..............0</span><br /> <span style="font-size:16px;font-family:'Courier New';color:#E53333;">25% -- 50% free space blocks............1199</span><br /> <span style="font-size:16px;font-family:'Courier New';">25% -- 50% free space bytes.............9822208</span><br /> <span style="font-size:16px;font-family:'Courier New';color:#E53333;">50% -- 75% free space blocks............273</span><br /> <span style="font-size:16px;font-family:'Courier New';">50% -- 75% free space bytes.............2236416</span><br /> <span style="font-size:16px;font-family:'Courier New';color:#E53333;">75% -- 100% free space blocks...........49</span><br /> <span style="font-size:16px;font-family:'Courier New';">75% -- 100% free space bytes............401408</span><br /> <span style="font-size:16px;font-family:'Courier New';">Unused Blocks...........................30</span><br /> <span style="font-size:16px;font-family:'Courier New';">Unused Bytes............................245760</span><br /> <span style="font-size:16px;font-family:'Courier New';">Total Blocks............................1843</span><br /> <span style="font-size:16px;font-family:'Courier New';">Total bytes.............................15097856</span><br /> <br /> <span style="font-size:16px;font-family:'Courier New';">PL/SQL 过程已成功完成。</span><br /> <br /> <span style="font-size:16px;font-family:'Courier New';">随机删除了2000条数据后,出现了很多未填满的块,高水位线未变化。</span><br /> <br /> <span style="font-size:16px;font-family:'Courier New';"><strong>5.执行ONLINE SEGMENT SHRINK操作。</strong></span><br /> <span style="font-size:16px;font-family:'Courier New';"></span><br /> <span style="font-size:16px;font-family:'Courier New';">SQL&gt; alter table test1.test123 enable row movement;</span><br /> <br /> <span style="font-size:16px;font-family:'Courier New';">表已更改。</span><br /> <br /> <span style="font-size:16px;font-family:'Courier New';">SQL&gt; alter table test1.test123 shrink space cascade;</span><br /> <br /> <span style="font-size:16px;font-family:'Courier New';">表已更改。</span><br /> <br /> <span style="font-size:16px;font-family:'Courier New';">SQL&gt; analyze table test1.test123 compute statistics;</span><br /> <br /> <span style="font-size:16px;font-family:'Courier New';">表已分析。</span><br /> <br /> <span style="font-size:16px;font-family:'Courier New';">SQL&gt; exec show_space('TEST123','AUTO','T','Y','TEST1');</span><br /> <span style="font-size:16px;font-family:'Courier New';">Total Blocks............................2792</span><br /> <span style="font-size:16px;font-family:'Courier New';">Total Bytes.............................22872064</span><br /> <span style="font-size:16px;font-family:'Courier New';">Unused Blocks...........................6</span><br /> <span style="font-size:16px;font-family:'Courier New';">Unused Bytes............................49152</span><br /> <span style="font-size:16px;font-family:'Courier New';">Last Used Ext FileId....................4</span><br /> <span style="font-size:16px;font-family:'Courier New';">Last Used Ext BlockId...................4224</span><br /> <span style="font-size:16px;font-family:'Courier New';">Last Used Block.........................98</span><br /> <span style="font-size:16px;font-family:'Courier New';">*************************************************</span><br /> <span style="font-size:16px;font-family:'Courier New';">The segment is analyzed</span><br /> <span style="font-size:16px;font-family:'Courier New';color:#E53333;">0% -- 25% free space blocks.............1</span><br /> <span style="font-size:16px;font-family:'Courier New';">0% -- 25% free space bytes..............8192</span><br /> <span style="font-size:16px;font-family:'Courier New';">25% -- 50% free space blocks............0</span><br /> <span style="font-size:16px;font-family:'Courier New';">25% -- 50% free space bytes.............0</span><br /> <span style="font-size:16px;font-family:'Courier New';color:#E53333;">50% -- 75% free space blocks............1</span><br /> <span style="font-size:16px;font-family:'Courier New';">50% -- 75% free space bytes.............8192</span><br /> <span style="font-size:16px;font-family:'Courier New';">75% -- 100% free space blocks...........0</span><br /> <span style="font-size:16px;font-family:'Courier New';">75% -- 100% free space bytes............0</span><br /> <span style="font-size:16px;font-family:'Courier New';">Unused Blocks...........................0</span><br /> <span style="font-size:16px;font-family:'Courier New';">Unused Bytes............................0</span><br /> <span style="font-size:16px;font-family:'Courier New';">Total Blocks............................2732</span><br /> <span style="font-size:16px;font-family:'Courier New';">Total bytes.............................22380544</span><br /> <br /> <span style="font-size:16px;font-family:'Courier New';">PL/SQL 过程已成功完成。</span><br /> <br /> <span style="font-size:16px;font-family:'Courier New';color:#E53333;">SHRINK表之后,表碎片得到了整理,高水位线下降,未填满的块减少了非常多,效果很理想。</span><br /> <br /> <span style="font-size:16px;font-family:'Courier New';"><strong>6.执行Moving表操作。</strong></span><br /> <span style="font-size:16px;font-family:'Courier New';"><strong></strong></span><br /> <span style="font-size:16px;font-family:'Courier New';">SQL&gt; alter table test1.test123 move;</span><br /> <br /> <span style="font-size:16px;font-family:'Courier New';">表已更改。</span><br /> <br /> <span style="font-size:16px;font-family:'Courier New';">SQL&gt; analyze table test1.test123 compute statistics;</span><br /> <br /> <span style="font-size:16px;font-family:'Courier New';">表已分析。</span><br /> <br /> <span style="font-size:16px;font-family:'Courier New';">SQL&gt; exec show_space('TEST123','AUTO','T','Y','TEST1');</span><br /> <span style="font-size:16px;font-family:'Courier New';">Total Blocks............................2816</span><br /> <span style="font-size:16px;font-family:'Courier New';">Total Bytes.............................23068672</span><br /> <span style="font-size:16px;font-family:'Courier New';">Unused Blocks...........................30</span><br /> <span style="font-size:16px;font-family:'Courier New';">Unused Bytes............................245760</span><br /> <span style="font-size:16px;font-family:'Courier New';">Last Used Ext FileId....................4</span><br /> <span style="font-size:16px;font-family:'Courier New';">Last Used Ext BlockId...................7040</span><br /> <span style="font-size:16px;font-family:'Courier New';">Last Used Block.........................98</span><br /> <span style="font-size:16px;font-family:'Courier New';">*************************************************</span><br /> <span style="font-size:16px;font-family:'Courier New';">The segment is analyzed</span><br /> <span style="font-size:16px;font-family:'Courier New';">0% -- 25% free space blocks.............0</span><br /> <span style="font-size:16px;font-family:'Courier New';">0% -- 25% free space bytes..............0</span><br /> <span style="font-size:16px;font-family:'Courier New';">25% -- 50% free space blocks............0</span><br /> <span style="font-size:16px;font-family:'Courier New';">25% -- 50% free space bytes.............0</span><br /> <span style="font-size:16px;font-family:'Courier New';">50% -- 75% free space blocks............0</span><br /> <span style="font-size:16px;font-family:'Courier New';">50% -- 75% free space bytes.............0</span><br /> <span style="font-size:16px;font-family:'Courier New';">75% -- 100% free space blocks...........0</span><br /> <span style="font-size:16px;font-family:'Courier New';">75% -- 100% free space bytes............0</span><br /> <span style="font-size:16px;font-family:'Courier New';">Unused Blocks...........................0</span><br /> <span style="font-size:16px;font-family:'Courier New';">Unused Bytes............................0</span><br /> <span style="font-size:16px;font-family:'Courier New';">Total Blocks............................2734</span><br /> <span style="font-size:16px;font-family:'Courier New';">Total bytes.............................22396928</span><br /> <br /> <span style="font-size:16px;font-family:'Courier New';">PL/SQL 过程已成功完成。</span><br /> <br /> <span style="font-size:16px;font-family:'Courier New';"><span style="color:#E53333;">&nbsp; &nbsp;&nbsp;</span><span style="color:#E53333;">首先,对表的Move操作是能够实现碎片整理的效果(和SHRINK效果类似);Move表之后,Table中的数据得到了重新组织,已经没有了任何未填满的块,所以单从碎片整</span></span><span style="font-size:16px;font-family:'Courier New';color:#E53333;">理的角度来说,Moving的效果要好于SHRINK,原因是Moving操作是在新的段上重新组织数据,表中数据的连续性,紧密型性都要好于SHRINK操作(把数据压得更紧),move后段尾出现了一</span><span style="font-size:16px;font-family:'Courier New';color:#E53333;">些unused的块,这是因为extent分配的大小是固定的,下面执行一下deallocate操作。</span><br /> <br /> <span style="font-size:16px;font-family:'Courier New';"><strong>7.执行DEALLOCATE操作。</strong></span><br /> <span style="font-size:16px;font-family:'Courier New';"></span><br /> <span style="font-size:16px;font-family:'Courier New';">SQL&gt; alter table test1.test123 deallocate unused;</span><br /> <br /> <span style="font-size:16px;font-family:'Courier New';">表已更改。</span><br /> <br /> <span style="font-size:16px;font-family:'Courier New';">SQL&gt; analyze table test1.test123 compute statistics;</span><br /> <br /> <span style="font-size:16px;font-family:'Courier New';">表已分析。</span><br /> <br /> <span style="font-size:16px;font-family:'Courier New';">SQL&gt; exec show_space('TEST123','AUTO','T','Y','TEST1');</span><br /> <span style="font-size:16px;font-family:'Courier New';">Total Blocks............................2792</span><br /> <span style="font-size:16px;font-family:'Courier New';">Total Bytes.............................22872064</span><br /> <span style="font-size:16px;font-family:'Courier New';">Unused Blocks...........................6</span><br /> <span style="font-size:16px;font-family:'Courier New';">Unused Bytes............................49152</span><br /> <span style="font-size:16px;font-family:'Courier New';">Last Used Ext FileId....................4</span><br /> <span style="font-size:16px;font-family:'Courier New';">Last Used Ext BlockId...................7040</span><br /> <span style="font-size:16px;font-family:'Courier New';">Last Used Block.........................98</span><br /> <span style="font-size:16px;font-family:'Courier New';">*************************************************</span><br /> <span style="font-size:16px;font-family:'Courier New';">The segment is analyzed</span><br /> <span style="font-size:16px;font-family:'Courier New';">0% -- 25% free space blocks.............0</span><br /> <span style="font-size:16px;font-family:'Courier New';">0% -- 25% free space bytes..............0</span><br /> <span style="font-size:16px;font-family:'Courier New';">25% -- 50% free space blocks............0</span><br /> <span style="font-size:16px;font-family:'Courier New';">25% -- 50% free space bytes.............0</span><br /> <span style="font-size:16px;font-family:'Courier New';">50% -- 75% free space blocks............0</span><br /> <span style="font-size:16px;font-family:'Courier New';">50% -- 75% free space bytes.............0</span><br /> <span style="font-size:16px;font-family:'Courier New';">75% -- 100% free space blocks...........0</span><br /> <span style="font-size:16px;font-family:'Courier New';">75% -- 100% free space bytes............0</span><br /> <span style="font-size:16px;font-family:'Courier New';">Unused Blocks...........................0</span><br /> <span style="font-size:16px;font-family:'Courier New';">Unused Bytes............................0</span><br /> <span style="font-size:16px;font-family:'Courier New';">Total Blocks............................2734</span><br /> <span style="font-size:16px;font-family:'Courier New';">Total bytes.............................22396928</span><br /> <br /> <span style="font-size:16px;font-family:'Courier New';">PL/SQL 过程已成功完成。</span><br /> <br /> <span style="font-size:16px;font-family:'Courier New';">执行deallocate之后,段尾的unused block得到释放,高水位线和SHRINK操作之后的一致。<br /> <br /> <span style="color:#E53333;">&nbsp; &nbsp;&nbsp;</span><span style="color:#E53333;">虽然MOVE TABLE在碎片整理方面比ONLINE SEGMENT SHRINK的效果好,但是MOVE TABLE期间不能执行任何DML操作,执行后索引会失效,统计信息会失效,这些方面要比ONLINE SEGMENT SHRINK弱很多,在允许停机和数据量不大的情况下,可以考虑使用Move Table来整理SEGMENT的碎片,对于高可用的数据库ONLINE SEGMENT SHRINK更适合。</span><br /> </span><br /> <span style="font-size:16px;font-family:'Courier New';">--end--</span><span style="font-size:16px;font-family:'Courier New';"></span><span style="font-size:16px;font-family:'Courier New';"></span><br /> <span style="font-size:16px;font-family:'Courier New';"></span>
请登录后发表评论 登录
全部评论
Oracle数据库管理员,Oracle数据库系统构架员;2012年7月出版《构建最高可用Oracle数据库系统:Oracle 11gR2 RAC管理、维护与性能优化》一书;Oracle 10g OCM。

注册时间:2010-01-05

  • 博文量
    461
  • 访问量
    5178483