知识大全 9i新特性之——在线表格重定义研究4
Posted 语句
篇首语:人生处万类,知识最为贤。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 9i新特性之——在线表格重定义研究4相关的知识,希望对你有一定的参考价值。
创建我们需要重新定义的中间表 这个是一个分区表 以后我们将把原表的所有数据在线转移到该表上来
SQL>create table int_test(a int b int)partition by range(a)(partition p values less than( ) partition p values less than( ) partition p values less than( ) partition p values less than( ));Table created
然后我们检查所有对象 所有对象共 个
SQL> select object_name object_type status object_id data_object_id from user_objects;AUDIT_TEST TABLE VALID INT_TEST TABLE PARTITION VALID INT_TEST TABLE PARTITION VALID INT_TEST TABLE PARTITION VALID INT_TEST TABLE PARTITION VALID INT_TEST TABLE VALID PK_TEST_ID INDEX VALID TEST TABLE VALID TR_TEST TRIGGER VALID rows selected
执行在线重新定义开始
SQL> executeDBMS_REDEFINITION START_REDEF_TABLE( MYTEST TEST INT_TEST );
begin SYS DBMS_REDEFINITION START_REDEF_TABLE( MYTEST TEST INT_TEST ); end;
ORA : insufficient privilegesORA : at SYS DBMS_REDEFINITION line ORA : at SYS DBMS_REDEFINITION line ORA : at line
这里存储过程返回一个错误 说没有足够的权限 的确是这样 经查 如果要执行这个存储过程 起码需要如下权限
* CREATE ANY TABLE* ALTER ANY TABLE* DROP ANY TABLE* LOCK ANY TABLE* SELECT ANY TABLE
我们可以临时授予DBA权限给用户 完之后取消掉 或转移到其他有权限的用户执行这个操作
SQL> CONNECT SYSTEM/CHENConnected to Oracle i Enterprise Edition Release Connected as SYSTEMSQL> execute SYS DBMS_REDEFINITION START_REDEF_TABLE( MYTEST TEST INT_TEST );PL/SQL procedure successfully pleted
这里可以看到 我们用system执行成功 那么这个过程到底两个表执行了那些语句呢?我们可以通过如下的语句来验证一下
SQL> select sql_text from v$sqlarea where sql_text like %TEST% ;
SQL_TEXT SELECT CURRENT$ A CURRENT$ B FROM (SELECT TEST A A TEST B B FROMselect * from MYTEST TEST ALTER TRIGGER MYTEST TR_TEST PILE DEBUGSELECT /*+ NO_MERGE NO_MERGE(LL$) ROWID(MAS$) ORDERED USE_NL(MAS$) NO_INDEX(MASDELETE FROM MYTEST INT_TEST SNAP$ WHERE A = : truncate table MYTEST INT_TEST purge snapshot logdelete from MYTEST MLOG$_TEST where snaptime$$ <= : INSERT INTO MYTEST INT_TEST ( A B ) VALUES (: : )select sql_text from v$sqlarea where sql_text like %TEST% UPDATE MYTEST INT_TEST SET A = : B = : WHERE A = : SELECT TEST A A TEST B B FROM MYTEST TEST TEST begin dbms_redefinition can_redef_table( MYTEST TEST ); end;select count(*) from snap$ where (vname sowner) in (( TEST MYTEST ))ment on table MYTEST RUPD$_TEST is temporary updatable snapshot log begin DBMS_REDEFINITION START_REDEF_TABLE( MYTEST TEST INT_TEST ); end;ment on table MYTEST MLOG$_TEST is snapshot log for master table MYTEST INSERT INTO MYTEST INT_TEST ( A B ) SELECT TEST A TEST B FROM MYTEINSERT /*+ APPEND */ INTO MYTEST INT_TEST ( A B ) SELECT TEST A TEST update MYTEST MLOG$_TEST set snaptime$$ = : where snaptime$$ > to_date( SELECT DISTINCT LOG$ A FROM (SELECT MLOG$ A FROM MYTEST MLOG$_TEST MLOG$
rows selected
以上的语句我不再解释 整个内部过程我也不再解释 只是需要大家明白 其实这里的主要需要了解的是 就是把原表的数据给中间表复制了一份
我们再检查所有对象
SQL> select object_name object_type status object_id data_object_id from user_objects order by ;TEST TABLE VALID AUDIT_TEST TABLE VALID TR_TEST TRIGGER VALID PK_TEST_ID INDEX VALID INT_TEST TABLE VALID INT_TEST TABLE PARTITION VALID INT_TEST TABLE PARTITION VALID INT_TEST TABLE PARTITION VALID INT_TEST TABLE PARTITION VALID
MLOG$_TEST TABLE VALID RUPD$_TEST TABLE VALID rows selected
发现比以前多了两个表对象
这个就是该过程在执行后会产生两个表
一个是永久表MLOG$_EMP 这个是一个TEST快照日志 记录TEST的在此之后 完成之前的DML语句
另一个就是临时表RUPD$_EMP
我们检查一下所有的表数据 已便与下面的结果对比
SQL> select count(*) from test; SQL> select count(*) from MLOG$_test; SQL> select count(*) from rupd$_test; SQL> select count(*) from int_test; 可以看到 表的数据已经转移过来
SQL> select c from audit_test; 这里可以看到 触发器执行的还是原触发器
这里给大家介绍两个表的来源
SQL> select master log_table from user_mview_logs;TEST MLOG$_TEST
cha138/Article/program/Oracle/201311/17663相关参考
所有的工作都准备完成我们执行重构完成的过程这个过程将执行表的交换 SQL>executeDBMS_REDEFINITIONFINISH_REDEF_TABLE(MYTESTTESTINT_
知识大全 Oracle 9i新特性研究系列之四 -- 延续性初始化参数文件
Oracle9i新特性研究系列之四--延续性初始化参数文件 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一
这篇文章主要讲解应用程序客户端访问数据库的新特性有些地方理解不好 写得也不是很好请大家帮忙指正谢谢! I安全认证拥有 解决了阻止未经认证的用户通过其他客户端访问数据的问题 在隐藏密码的实现
Oracle9i自动PGA管理的新特性 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 在Orac
在Oracle10g和9i上一些新的特性的总结 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!内部P
Oraclei电子商务平台 Oraclei通过提供旨在用于电子商务环境的一系列特定功能和产品束像Oraclei那样继续
知识大全 Oracle9i新特性-索引监视及注意事项[修正版]
Oracle9i新特性-索引监视及注意事项[修正版] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
知识大全 可与Spreadsheets媲美的在线表格系统:EditGrid
可与Spreadsheets媲美的在线表格系统:EditGrid 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起
Struts自定义标签--使用表格显示数据 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! app
什么是随机误差?并说明随机误差新定义和老定义的主要区别。参考答案:随机误差是测量结果与在重复性条件下,对同一被测量进行无限多次测量所得结果的平均值之差。随机误差等于误差减去系统误差。因为测量进行有限次