为何DDL会产生两次commit操作

以下是我做的测试,在ddl完成之前 就提交了。

1.、会话1上的操作
SQL> select * from t2;
no rows selected
SQL> insert into t2 values(1,'gyj1');
1 row created.
SQL> drop table t200;
drop table t200
*
ERROR at line 1:

ORA-00942: table or view does not exist

2、会话2上的操作
SQL> select * from t2;
ID NAME
---------- ----------
1 gyj1

在会话2能看到会话1中插入数据。

3、继续实验
drop table t2;
select current_scn from v$database;
create table t2 (id int,name varchar2(10));
select current_scn from v$database;

SQL> select current_scn from v$database;
create table t2 (id int,name varchar2(10));
select current_scn from v$database;
CURRENT_SCN
-----------
2030192
SQL>
Table created.
SQL>
CURRENT_SCN
-----------
2030199
SQL> select object_id from dba_objects where object_name='T2' and wner='GYJ';
OBJECT_ID
----------
76443

alter system dump logfile '/u01/app/oracle/oradata/ocp/redo01.log' scn min 2030192 scn max 2030199;
从日志中转存的部分内容:
REDO RECORD - Thread:1 RBA: 0x0000b5.000000fb.0058 LEN: 0x0060 VLD: 0x01
SCN: 0x0000.001efa71 SUBSCN: 1 12/06/2012 07:33:07
CHANGE #1 TYP:0 CLS:33 AFN:3 DBA:0x00c00100 OBJ:4294967295 SCN:0x0000.001efa70 SEQ:2OP:5.4 ENC:0 RBL:0
ktucm redo: slt: 0x001d sqn: 0x000004db srt: 0 sta: 9 flg: 0x2 ktucf redo: uba: 0x00c0028d.01a2.03 ext: 2 spc: 7832 fbi: 0

REDO RECORD - Thread:1 RBA: 0x0000b5.00000100.01bc LEN: 0x0170 VLD: 0x01
SCN: 0x0000.001efa72 SUBSCN: 1 12/06/2012 07:33:07
CHANGE #1 MEDIA RECOVERY MARKER SCN:0x0000.00000000 SEQ:0 OP:24.1 ENC:0
REDO RECORD - Thread:1 RBA: 0x0000b5.00000102.0010 LEN: 0x00dc VLD: 0x05
SCN: 0x0000.001efa75 SUBSCN: 1 12/06/2012 07:33:07
(LWN RBA: 0x0000b5.00000102.0010 LEN: 0001 NST: 0001 SCN: 0x0000.001efa73)
CHANGE #1 TYP:0 CLS:33 AFN:3 DBA:0x00c00100 OBJ:4294967295 SCN:0x0000.001efa71 SEQ:1 OP:5.4 ENC:0 RBL:0

在这两个scn之间有两个OP=5.4的操作,即commit操作。

查看本栏目更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/database/Oracle/

时间: 2025-01-21 10:23:14

为何DDL会产生两次commit操作的相关文章

并行计算-linux 下用p,V操作对两线程的操作

问题描述 linux 下用p,V操作对两线程的操作 计算/打印线程的同步:两个线程共享公共变量a线程1负责计算(+1)线程2负责打印 解决方案 我不太理解你问的问题的意图!公共变量a,在满足什么条件下,两线程的开始分配工作,你没有说清楚我假设你a==1时生产者工作,当a==2时,生产完成,线程2(即消费线程)开始工作即,打印a那么代码如下: #include <stdio.h>#include <stdlib.h>#include <pthread.h>pthread_

hibernate+spring两表数据操作

问题描述 hibernate+spring两表数据操作 新手求教,这两个对象属性要怎么显示到前台界面 ,访问查询方法的时候只显示了student的属性,大侠们能不能帮帮我 解决方案 spring 整合Spring和Hibernate操作商品库存表 解决方案二: 要是在控制台显示的话,重写student类的toString()方法. 然后再把System.out.println(list);改成 for(Student student:list) System.out.println(studen

git 对比两个commit 之间的差异

git 对比两个commit 之间的差异 比较两个版本之间的差异 git diff commit-id-1 commit-id-2 > d:/diff.txt 结果文件diff.txt中: "-"号开头的表示 commit-id-2 相对 commit-id-1 减少了的内容. "+"号开头的表示 commit-id-2 相对 commit-id-1 增加了的内容.

MySQL的rpm和源码两种安装操作

相比于传统行业,互联网浪潮中MySQL一直是数据库的主力军,无论是曾经的SUN,还是现在的Oracle,虽然可能商业策略不同,但发展方向还是平稳向前的,因此说自己不会MySQL,还真有些不好意思了. 我只能算是MySQL中的小小白,研究生毕设的时候,装过windows版本的MySQL,就像对Oracle一样,仅仅是用,但对于一门技术来说,没有深入理解运行的原理,就不算真正了解这门技术.又有一种说法,就是相似的技术是相通的,原理性质的知识,有些是可以复用学习和了解. 碰巧有一个旁支的项目,要用My

WPS两则表格操作技巧

跨页表格的表头设置 跨页表格的表头需要到[表格外观]中进行设置. 操作步骤: 1.使表格处于选定状态; 2.右键单击表格,弹出菜单, 执行[对象属性]|[表格外观]命令; 3.弹出[表格外观]对话框, 在[以标题行重复出现行数]栏中输入表头的行数; 4.点击[确定],表头设置完成. 修饰表格的外边框 表格外边框的花边修饰可以到[对象属性]中实现. 操作步骤: 1.使表格处于选定状态; 2.右键单击表格,弹出菜单, 执行[对象属性]|[表框特征]命令; 3.弹出[表格]对话框, 点击[边线端点]选

进程间通信--两个进程操作同一个文件

a.txt文件内容如下: hello,world. 编写两个不同的可执行程序,名称分别为a和b.在a程序中调用open函数打开a.txt文件,在b程序不可调用open或者fopen.只允许调用read函数来实现读取a.txt文件(a程序中可以使用fork和execv函数创建子进程). makefile .SUFFIXES: .c .o CC=gcc SRCS=a.c OBJS=$(SRCS:.c=.o) EXEC=a all: $(OBJS) $(CC) -o $(EXEC) $(OBJS) @

morphologyEx,dilate两种膨胀操作对比

发现用morphologyEx() 的 MORPH_DILATE操作和 dilate()操作得到的效果一模一样... 代码: #include <opencv2/opencv.hpp> #include<opencv2/highgui/highgui.hpp> #include<opencv2/imgproc/imgproc.hpp> using namespace cv; int main( ) { //载入原始图 Mat image = imread("0

Linq中两种更新操作

方法一:Attach方法 EmployeeDAL         /// <summary>         /// 更新雇员信息         /// </summary>         /// <param name="e"></param>         public void UpdateEmploee(Employee e)         {             try             {          

《Cisco IOS XR技术精要》一4.7 配置回退

4.7 配置回退 Cisco IOS XR技术精要在IOS XR中,用户执行的配置存放在target config中,target config通过commit命令提交形成新的running config.每次成功的commit操作都会生成一个唯一的ID号.这个ID也就是例3-4中提到的提交基准点,也可用做系统配置的回退点. 回退(rollback)是指将系统恢复到执行某一动作前的版本.用户可以使用配置回退这一强大的配置特性轻松地将配置恢复到先前的某个状态.IOS XR中可以最多回退到100个c