您的位置:首页 > 其它

原表是nologging,为什么create table.. as select还是有redo log产生?

2009-09-11 10:29 435 查看
原表是nologging,为什么create table.. as select还是有redo log产生?

数据库版本是9.0.2.1

原表是test,nologging属性. 然后运用create table..as select创建两个表。用logmnr分析日志,检查是否产生了日志.

一. 表创建操作:
SQL> create table test (f1 number(3), f2 number(3)) nologging;

表已创建。

SQL> insert into test select rownum,rownum from dba_objects where rownum<=999;

已创建999行。

SQL> commit;

提交完成。

SQL> create table test1 as select * from test;

表已创建。

SQL> create table test2 as select * from test nologging;

表已创建。

SQL> select table_name,logging from user_tables where table_name like 'TEST%';

TABLE_NAME LOG
------------------------------ ---
TEST NO
TEST1 YES
TEST2 YES

二.Logmnr分析redo log日志
SQL> connect / as sysdba;
已连接。
SQL> exec dbms_logmnr_d.build(dictionary_filename=>'logminer_dict.dat',dictionar
y_location=>'e:/oracle/log');

PL/SQL 过程已成功完成。

SQL> execute dbms_logmnr.add_logfile(options=>dbms_logmnr.new,logfilename=>'c:/r
edo03.log');

PL/SQL 过程已成功完成。

SQL> execute dbms_logmnr.start_logmnr(dictfilename=>'e:/oracle/log/logminer_dict
.dat');

PL/SQL 过程已成功完成。

SQL> select substr(sql_redo,1,27),count(*) from v$logmnr_contents where timestam
p>=to_date('20071225224000','YYYYMMDDHH24MISS') and sql_redo like 'insert into%'
group by substr(sql_redo,1,27);

SUBSTR(SQL_REDO,1,27) COUNT(*)
------------------------------------------------------ ----------
insert into "SCOTT"."TEST1" 999--产生了999条insert redo
insert into "SCOTT"."TEST2" 999--产生了999条insert redo
insert into "SYS"."OBJ$"("O 2

原表test是nologging的,为什么还会产生redo log呢?

将语句改为create table test2 nologging as select * from test之后就没有产生redo log.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: