Oracle11gr2新增APPEND_VALUES提示

简介: 在11.2中,Oracle新增了APPEND_VALUES提示,使得INSERT INTO VALUES语句也可以使用直接路径插入。     例子很简单: SQL> SELECT * FROM V$VERSION; BANNER-------------...

11.2中,Oracle新增了APPEND_VALUES提示,使得INSERT INTO VALUES语句也可以使用直接路径插入。

 

 

例子很简单:

SQL> SELECT * FROM V$VERSION;

BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
PL/SQL Release 11.2.0.1.0 - Production
CORE    11.2.0.1.0      Production
TNS for Linux: Version 11.2.0.1.0 - Production
NLSRTL Version 11.2.0.1.0 - Production

SQL> CREATE TABLE T_APPEND (ID NUMBER, NAME VARCHAR(30));

表已创建。

SQL> INSERT /*+ APPEND(A) */ INTO T_APPEND A
  2  VALUES (1, 'ABC');

已创建 1 行。

SQL> SELECT * FROM T_APPEND;

        ID NAME
---------- ------------------------------
         1 ABC

SQL> COMMIT;

提交完成。

SQL> INSERT /*+ APPEND(A) */ INTO T_APPEND A
  2  SELECT ROWNUM + 1, TNAME
  3  FROM TAB
  4  WHERE ROWNUM = 1;

已创建 1 行。

SQL> SELECT * FROM T_APPEND;
SELECT * FROM T_APPEND
              *
1 行出现错误:
ORA-12838:
无法在并行模式下修改之后读/修改对象


SQL> COMMIT;

提交完成。

对比INSERT INTO VALUESINSERT INTO SELECT语句后的结果可以清晰的看到,APPEND提示对于INSERT INTO VALUES语句无效,数据仍然采用常规路径插入。

11.2中使用APPEND_VALUES提示,才使得单条插入语句真正实现了直接路径方式:

SQL> INSERT /*+ APPEND_VALUES(A) */ INTO T_APPEND A
  2  VALUES (3, 'APPEND_VALUE');

已创建 1 行。

SQL> SELECT * FROM T_APPEND;
SELECT * FROM T_APPEND
*
1 行出现错误:
ORA-12838:
无法在并行模式下修改之后读/修改对象


SQL> COMMIT;

提交完成。

SQL> SELECT * FROM T_APPEND;

        ID NAME
---------- ------------------------------
         1 ABC
         2 DEMO
         3 APPEND_VALUE

 

 

目录
相关文章
|
10月前
|
SQL Oracle 关系型数据库
Oracle 使用DB link update table & TNS:linstener was not given the servicename in connect_data处理方式
业务需求:需要在Oracle1 的A表增加一个字段,这个字段来自于Oracle2 的B表的一个字段。
71 0
|
数据库
LeetCode(数据库)- The Category of Each Member in the Store
LeetCode(数据库)- The Category of Each Member in the Store
85 0
|
SQL Oracle 关系型数据库
如何快速批量导入非Oracle DB格式的数据--sqlloader
在 Oracle 数据库中,我们通常在不同数据库的表间记录进行复制或迁移时会用以下几种方法
287 0
如何快速批量导入非Oracle DB格式的数据--sqlloader
|
Oracle 关系型数据库
Oracle创建Sequence时Order/NoOrder选项
Oracle创建Sequence时Order/NoOrder选项
259 0
ORA-01400: 无法将 NULL 插入 ("S01"."A02_EMPLOYEES"."ID") 错误
这个问题很多时候是没有为该表建立触发器导致的,或者是sequence没建立,或者是trigger没建立。 建立其中一个或两个即可。
455 0
|
SQL Oracle 关系型数据库
关于ORACLE通过file_id与block_id定位数据库对象遇到的问题的一点思考
在ORACLE中,我们可以通过file_id(file#)与block_id(block#)去定位一个数据库对象(object)。例如,我们在10046生成的trace文件中file#=4 block#=266 blocks=8,那么我可以通过下面两个SQL去定位对象   SQL 1:此SQL效率较差,执行时间较长。
1098 0
|
机器学习/深度学习 SQL 关系型数据库
|
Web App开发 Oracle 关系型数据库