WEB开发网
开发学院数据库Oracle Oracle 10g第2版新特性之SQL和PL/SQL 阅读

Oracle 10g第2版新特性之SQL和PL/SQL

 2006-12-30 12:01:50 来源:WEB开发网   
核心提示: COMMIT WRITE NOWAIT;这样,控制权立即返还给会话,Oracle 10g第2版新特性之SQL和PL/SQL(7),甚至是在将重做流写入联机重做日志之前,当执行提交命令时,首先,您需要创建一个表来保存由 DML 语句所拒绝的记录,日志写入器进程将重做流写入到联机重做日志,如果
COMMIT WRITE NOWAIT;

这样,控制权立即返还给会话,甚至是在将重做流写入联机重做日志之前。

当执行提交命令时,日志写入器进程将重做流写入到联机重做日志。如果您正在进行一系列事务处理(如在批处理环境中),则可能不希望如此频繁地进行提交。当然,最好的操作过程是更改应用程序以减少提交数量;但这可能说起来容易做起来难。在这种情况下,您只需执行以下的提交语句:

COMMIT WRITE BATCH;

此命令将以批量方式将重做流写入到日志文件中,而不是每次提交都执行写操作。在频繁提交的环境中,您可以使用这种技术来减少日志缓冲区刷新。如果您希望立即写入日志缓冲区,则可以执行:

COMMIT WRITE IMMEDIATE;

如果您数据库默认使用某种特定的提交行为,则可以执行以下语句。

ALTER SYSTEM SET COMMIT_WRITE = NOWAIT;

此命令将使数据库默认使用这一行为。您还可以使其成为会话级默认行为:

ALTER SESSION SET COMMIT_WORK = NOWAIT;

对于任何参数,如果完成设置后,则该参数在系统级执行。如果有会话级的设置,则会话级设置优先,而最后如果 COMMIT 语句后面有子句,则该子句优先。

此选项不可用于分布式事务处理。

记录错误并继续运行:错误事件记录子句

假设您正试图将表 ACCOUNTS_NY 的记录插入到表 ACCOUNTS 中。表 ACCOUNTS 在 ACC_NO 列上有一个主键。可能 ACCOUNTS_NY 中的某些行与该主键冲突。尝试使用一个常规的插入语句:

SQL> insert into accounts
2 select * from accounts_ny;
insert into accounts
*
ERROR at line 1:
ORA-00001:unique constraint (ARUP.PK_ACCOUNTS) violated

表 ACCOUNTS_NY 中的记录均未被装载。现在,将错误事件记录项打开,尝试同样的操作。首先,您需要创建一个表来保存由 DML 语句所拒绝的记录。调用该表 ERR_ACCOUNTS。

上一页  2 3 4 5 6 7 8 9 10  下一页

Tags:Oracle 特性 SQL

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接