ITPub博客

首页 > Linux操作系统 > Linux操作系统 > Oracle ddl隐式提交注意点

Oracle ddl隐式提交注意点

原创 Linux操作系统 作者:zecaro 时间:2011-06-11 15:29:31 0 删除 编辑

之前我对于ddl的隐式提交也仅限于ddl操作成功,则隐式提交。看了这篇文章,然后试了一下( Oracle 10.2.0.5.0 - 64bit),确如文章中所述。MARK~

来自:http://itspace.iteye.com/blog/1000379

文章分类:数据库
今天在测试中意外发现Oracle ddl隐式提交需要注意的地方。我们都知道,在同一个会话中,ddl执行之前,会隐式进行commit操作。但之前的理解一直局限于这个ddl操作成功,之前的事务才隐式提交,但今天所做的测试,看来并非如此。

场景1:
Oracle ddl通过语法检查,但对象不存在。

在一号会话中:
引用
SQL> select * from zhoul;

I NAME
---------- --------------------
1 bbb
2 bbb
3 bbb


SQL> update zhoul set i=1*8 where i=1;

1 row updated.

发布一条符合ddl语法的语句,只是表格yuiyiuyiuyui不存在
引用
SQL> drop table yuiyiuyiuyui;
drop table yuiyiuyiuyui
*
ERROR at line 1:
ORA-00942: table or view does not exist

在二号会话中查看事务已经提交
引用
SQL> select * from zhoul;

I NAME
---------- --------------------
8 bbb
2 bbb
3 bbb

经过以上测试,可以看出对于ddl语句,只要经过语法检查,还会进行隐式提交。

场景2:
Oracle ddl通过语法检查,但对象没有相应权限

在一号会话中:

引用
SQL> select * from zhoul;

I NAME
---------- --------------------
1 bbb
2 bbb
3 bbb

SQL> select count(*) from sys.testddl;

COUNT(*)
----------
10

SQL> update zhoul set i=1*8 where i=1;

1 row updated.

没有drop sys.testddl对象权限
引用
SQL> drop table sys.testddl;
drop table sys.testddl
*
ERROR at line 1:
ORA-01031: insufficient privileges

在二号会话中查看事务已经提交:
引用
SQL> select * from zhoul;

I NAME
---------- --------------------
8 bbb
2 bbb
3 bbb

场景3:
如果ddl语句不通过语法检查,那会出现什么情况呢?
在一号会话中:
引用
SQL> select * from zhoul;

I NAME
---------- --------------------
1 bbb
2 bbb
3 bbb

SQL>
SQL> update zhoul set i=1*8 where i=1;

1 row updated.

发布一条不符合语法的ddl语句
引用
SQL> drop tablw dss;
drop tablw dss
*
ERROR at line 1:
ORA-00950: invalid DROP option

在二号会话中可以看到并没有进行隐式提交。

引用
SQL> select * from zhoul;

I NAME
---------- --------------------
1 bbb
2 bbb
3 bbb


综上所述:

ddl总是提交在它之前正在进行的工作,从伪代码角度来讲,ddl进行如下处理:

begin
commit;
parse the ddl --verify privileages and syntax
begin
do_the_ddl;
commit;
exception
when others then
rollback;
end;
end;

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/23650854/viewspace-697662/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2010-10-28

  • 博文量
    182
  • 访问量
    348579