教程中国
PHOTOSHOP CS9.0中文版 MAYA 8.5 FOR WINDOWS Corel Painter v9.0 Flash MX2004 中文版 Illustrator cs2 中文版
VC++6.0含sp6 中英文版 VB6.0 +sp6 简体中文版 Borland Delphi 7汉化版 MSDN for vb6.0中文版 Visual Studio 2005简体
教程中国下属 文件存储共享专家BIBIDU.COM 提供大型软件,教材,源码,电影,音乐,图书等下载 更多精品请点此进入
  您目前所在位置: 教程中国 >> Oracle >> 备份恢复 >> 9i新特性之——在线表格重定义研究3 RSS订阅
9i新特性之——在线表格重定义研究3
教程(视频,书籍)下载:  ASP.NET AutoCAD 数据库 C# ASP java photoshop 网页设计 delphi 3dmax Flash C++ VB 张孝祥 实例   更多请进入BIBIDU搜索
IT搜索引擎   

详细过程

 

1、我们创建一个单独的测试用户用来测试整个过程

 

SQL> create user mytest identified by mytest;

User created

SQL> grant connect,resource to mytest;

Grant succeeded

 

SQL> connect mytest/mytest;

Connected to Oracle9i Enterprise Edition Release 9.2.0.4.0

Connected as mytest

 

2、首先,我们创建一个原表,假定是我们需要在线重新定义的表,由于工作需要,我们需要把该表(不是分区表)重新定义为一个分区表,而且不能影响应用程序的运行。

 

SQL> create table test(a int,b int) tablespace users;

Table created

 

模拟一个原表

 

declare i integer;

begin

for i in 1..100 loop

insert into test values(i,100-i);

end loop;

commit;

end;

 

插入100条模拟数据

 

create or replace trigger tr_test

  before insert or update or delete on test

   for each row

declare

   PRAGMA AUTONOMOUS_TRANSACTION;

   begin

     update audit_test set c=c+1;

       commit;

   end;

  

在上面创建一个触发器,模拟原表可能会有的触发器,这个触发器的作用就是如果有任何DML操作,将在audit_test中增加1

 

Audit_test现在的数据是:

SQL> select c from audit_test;

                       100

                      

检查触发器是否工作正常

SQL> insert into test values(101,0);

1 row inserted

SQL> commit;

 

SQL> select c from audit_test;

                       101

可以看到,触发器工作正常。

 

3、检查该表是否能重定义

 

SQL> exec dbms_redefinition.can_redef_table('MYTEST', 'TEST');

 

begin dbms_redefinition.can_redef_table('MYTEST', 'TEST'); end;

 

ORA-12089: cannot online redefine table "MYTEST"."TEST" with no primary key

ORA-06512: at "SYS.DBMS_REDEFINITION", line 8

ORA-06512: at "SYS.DBMS_REDEFINITION", line 247

ORA-06512: at line 1

 

可以看到,如果重新定义,需要主键,所以我们增加该表的主键

 

我们定义主键

 

SQL> alter table test add constraint pk_test_id primary key(a);

Table altered

 

SQL> exec dbms_redefinition.can_redef_table('MYTEST', 'TEST');

PL/SQL procedure successfully completed

 

现在发现,我们可以定义该表了

来源:upschool.com.cn
作者:
关键字:9i新特性之——,线表格重定义研究3
发表日期:2007-1-6 0:48:52

网页显示有限 阅读全文请下载本文完整版WORD文档

上一篇:9i新特性之——在线表格重定义研究2   下一篇:9i新特性之——在线表格重定义研究4


2008-12-4 8:57:47
本文的相类似文章
  • 9i新特性之——在线表格重定义研究5
  • 9i新特性之——在线表格重定义研究4
  • 9i新特性之——在线表格重定义研究3
  • 9i新特性之——在线表格重定义研究2
  • 9i新特性之——在线表格重定义研究1
  • 在学习中进步 在进步中成长 教程中国相随您的成长之路
    华腾联合科技股份有限公司版权所有
    广告联系:Rosibo@163.com