SQL> archive log list

Database log mode  Archive Mode

Automatic archival  Enabled

SQL> CREATE TABLE logtab AS SELECT * FROM dba_objects WHERE

1=2;

Table created.

SQL> SELECT force_logging FROM v$database;

FOR

---

NO

SQL>

SQL> SELECT logging FROM dba_tables WHERE

table_name='LOGTAB';

LOG

---

YES

SQL> INSERT INTO logtab SELECT * FROM dba_objects ;

14524 rows created.

----------------------------------------------------------

1593448  redo size

SQL>  INSERT INTO logtab SELECT * FROM

dba_objects ;

14524 rows created.

----------------------------------------------------------

1582344  redo size

SQL> alter table test.logtab nologging;

Table altered.

SQL> SELECT logging FROM dba_tables WHERE

table_name='LOGTAB';

LOG

---

NO

SQL> SQL>  INSERT INTO logtab SELECT *

FROM dba_objects ;

14524 rows created.

----------------------------------------------------------

1534188  redo size

SQL> INSERT INTO logtab SELECT * FROM dba_objects ;

14524 rows created.

----------------------------------------------------------

620  redo

size

SQL>

SQL> alter database force logging;

Database altered.

SQL>

SQL>

SQL> SELECT force_logging FROM v$database;

FOR

---

YES

SQL> SELECT logging FROM dba_tables WHERE

table_name='LOGTAB';

LOG

---

NO

SQL>  INSERT INTO

logtab SELECT * FROM dba_objects ;

14524 rows created.

----------------------------------------------------------

1541864  redo size

SQL>  INSERT INTO logtab SELECT * FROM

dba_objects ;

14524 rows created.

----------------------------------------------------------

1580076  redo size

SQL> INSERT INTO logtab SELECT * FROM dba_objects

nologging;

14524 rows created.

----------------------------------------------------------

1534084  redo size

SQL> INSERT INTO logtab (object_id,object_name)

VALUES(111111,'DDDDDDDDDDDDDDDDDDDDDDDDDDDDDD');

1 row created.

----------------------------------------------------------

328

redo size

SQL> INSERT  INTO logtab

(object_id,object_name)

VALUES(111111,'DDDDDDDDDDDDDDDDDDDDDDDDDDDDDD');

1 row created.

----------------------------------------------------------

328  redo

size

SQL>  INSERT INTO logtab

(object_id,object_name)

VALUES(111111,'DDDDDDDDDDDDDDDDDDDDDDDDDDDDDD');

1 row created.

----------------------------------------------------------

440  redo

size

归档模式下,只有NOLOGGING+APPEND才能产生少量日志。对于INSERT

VALUES模式APPEND不起作用。

非归档模式下,不管nologging、logging,

append都会减少日志量。

----不正确的NOLOGGING 操作。

INSERT INTO T1 SELECT * FROM T2 NOLOGGING;

INSERT INTO T1 VALUES ('0');

INSERT INTO T1 SELECT * FROM T2;

DELETE FROM T1;

UPDATE T1 SET A='1';

----正确的NOLOGGING 操作。

CREATE TABLE T1 NOLOGGING AS SELECT * FROM T2;

CREATE INDEX T1_IDX ON T1(A) NOLOGGING;

ALTER INDEX T1_IDX REDUILD ONLINE NOLOGGING;

对于HINT的正确使用,, 检查顺序是从左向右,当遇到第一个保留字(v$reserved_words)时宣告后面

HINT无效。

综上所述, 少量日志的时候还是比较少的。那么在这种情况下如何提高呢?

对的,是并行(parallel)

,下次我们实验下parallel的HINT以及正确使用。

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐