ORACLE数据块中的SCN是如何变化的? 举例如下:当我用UPDATE 修改一个数据块,此时的SCN为100,被修改数据块的SCN为88,于是进程到DATA FILE 读取数据块到到DATA BUFFER,并修改其中的数据,并将SCN为88和旧数据放到UNDO TABLESPACE,请问这个时候会修改此数据块的SCN为100吗?是提交之前修改还是提交之后修改?按照本人理解应该是提交之后修改,如果是提交之前修改,那么SELECT 就会看到未提交的数据。请各位大虾指教 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 SCN是建立再oracle内部系统时钟(scn)上的,每次提交的时候scn便会推进,(scn只会推进不会倒退),一般情况下所有数据块中只要有一条记录被更新后,整个数据块对应的scn就会向前推进,但如果表是ROWDEPENDENCIES 模式的话只会对具体某一行记录的scn进行更新而已.还可以将scn转换成timestamp进行查看<scn_to_timestamp(ORA_ROWSCN)> select deptno,dbms_rowid.rowid_block_number(rowid) blockno ,ora_rowscn,scn_to_timestamp(ora_rowscn) from zhbb_dept;使用 ORA_ROWSCN 来检测当前记录是否被修改,它会为每行增加6字节的开销!实现方法:如:create table ZHBB_dept(deptno, dname, loc, data, constraint dept_pk primary key(deptno) ) ROWDEPENDENCIES -- as select deptno, dname, loc, rpad('*',3500,'*') from scott.dept;1.记录当前scn值和块记录数select deptno ,dbms_rowid.rowid_block_number(rowid) blockno,ora_rowscn from dept;2.更新dept里面的值;3.再次查询scn值和块记录数 会发现更新后的记录对应的ora_rowscn值向前推进,而同一个数据块中未更新的数据scn未发生变化! ORACLE创建会计科目出现的系统警告,求牛人指点迷津! oracle 相关子查询 存储过程 ORA-06502: PL/SQL: 数字或值错误 数据字典设计 Oracle到底重要不? 新手提问。关于存储过程的一个小问题,谢谢 redhat9 安装ORACLE8I 求binutils-2.10.91.0.2-3.i386.rpm下载地址 PL/SQL执行数据插入操作 在NT4.0和WIN2000中安装oracle8有什么区别 oracle9.2.0在AIX5L上问题--急需!! 求一个存储过程 plsql调试存储过程(导出CSV)时报目录路径无效
一般情况下所有数据块中只要有一条记录被更新后,整个数据块对应的scn就会向前推进,但如果表是
ROWDEPENDENCIES 模式的话只会对具体某一行记录的scn进行更新而已.
还可以将scn转换成timestamp进行查看<scn_to_timestamp(ORA_ROWSCN)>
select deptno,dbms_rowid.rowid_block_number(rowid) blockno ,ora_rowscn,scn_to_timestamp(ora_rowscn) from zhbb_dept;使用 ORA_ROWSCN 来检测当前记录是否被修改,它会为每行增加6字节的开销!实现方法:如:
create table ZHBB_dept
(deptno, dname, loc, data,
constraint dept_pk primary key(deptno)
)
ROWDEPENDENCIES --
as
select deptno, dname, loc, rpad('*',3500,'*')
from scott.dept;1.记录当前scn值和块记录数
select deptno ,dbms_rowid.rowid_block_number(rowid) blockno,ora_rowscn from dept;2.更新dept里面的值;
3.再次查询scn值和块记录数
会发现更新后的记录对应的ora_rowscn值向前推进,而同一个数据块中未更新的数据scn未发生变化!