Oracle中未记录的表

时间:2016-05-03 21:54:16

标签: oracle11g datatable postgresql-9.4 logged

我正在研究PostGreSQL,我看到了一个未记录的表的例子。 Oracle中是否有类似的资源?  我在Oracle中有一个小提取器,该日记填充表格然后生成一个文本文件。之后,此表将被清除,但不会被删除。 我明白这个"临时表"可能没有记录,因为它根本不是商业表。

1 个答案:

答案 0 :(得分:0)

可以将Oracle表创建为NOLOGGING。这类似于PostgreSQL UNLOGGED选项,但我确定存在许多实现差异。

即使表创建为NOLOGGING,只有特定的操作才会使用直接路径插入(即INSERT直接写入数据文件并且不会生成很多REDO或UNDO) 。 DML通常必须使用如下APPEND提示。如果看到LOAD AS SELECT

,您可以判断是否使用了直接路径写入
SQL> create table test1(a number) nologging;

Table created.

SQL> explain plan for insert /*+ append */ into test1 select 1 from dual;

Explained.

SQL> select * from table(dbms_xplan.display);
SQL> select * from table(dbms_xplan.display);

PLAN_TABLE_OUTPUT
----------------------------------------------------------------------------------
Plan hash value: 2781518217

----------------------------------------------------------------------------------
| Id  | Operation                        | Name  | Rows  | Cost (%CPU)| Time     |
----------------------------------------------------------------------------------
|   0 | INSERT STATEMENT                 |       |     1 |     2   (0)| 00:00:01 |
|   1 |  LOAD AS SELECT                  | TEST1 |       |            |          |
|   2 |   OPTIMIZER STATISTICS GATHERING |       |     1 |     2   (0)| 00:00:01 |
|   3 |    FAST DUAL                     |       |     1 |     2   (0)| 00:00:01 |
----------------------------------------------------------------------------------

直接路径写入有许多奇怪的限制。制造一个小错误并最终使用传统插件是很常见的。在下面的示例中,提示没有正确的语法。没有错误或警告,只有解释计划显示LOAD TABLE CONVENTIONAL

SQL> explain plan for insert /* append */ into test1 select 1 from dual;

Explained.

SQL> select * from table(dbms_xplan.display);

PLAN_TABLE_OUTPUT
--------------------------------------------------------------------------
Plan hash value: 1388734953

--------------------------------------------------------------------------
| Id  | Operation                | Name  | Rows  | Cost (%CPU)| Time     |
--------------------------------------------------------------------------
|   0 | INSERT STATEMENT         |       |     1 |     2   (0)| 00:00:01 |
|   1 |  LOAD TABLE CONVENTIONAL | TEST1 |       |            |          |
|   2 |   FAST DUAL              |       |     1 |     2   (0)| 00:00:01 |
--------------------------------------------------------------------------

9 rows selected.