ITPub博客

首页 > 数据库 > Oracle > 使用ORA_ROWSCN实现乐观锁定

使用ORA_ROWSCN实现乐观锁定

原创 Oracle 作者:壹頁書 时间:2014-10-20 16:16:29 1 删除 编辑
实现乐观锁定一般使用时间戳或者版本列的方式
oracle还可以使用ora_rowscn伪列实现
ora_rowscn可以查看块级或者行级大致的SCN信息,可以用于乐观锁定的判断.并且可以看到块或者行大致修改的时间。

Oracle文档描述如下
http://docs.oracle.com/cd/E11882_01/server.112/e41084/pseudocolumns007.htm#SQLRF50953

如果使用ora_rowscn查看行级scn信息,首先需要设置表的属性为ROWDEPENDENCIES
下面通过实验查看

drop table t1;
create table t1
(
    id int primary key,
    name varchar2(20) not null,
    createtime date default sysdate
) ROWDEPENDENCIES ;

insert into t1(id,name) values(1,'test1');
commit;

--稍等一会儿
exec Dbms_lock.sleep(10);
insert into t1(id,name) values(2,'test2');
commit;

--稍等一会儿
exec Dbms_lock.sleep(15);
insert into t1(id,name) values(3,'test3');
commit;

set linesize 400;
select 
to_char(scn_to_timestamp(ora_rowscn),'yyyy-mm-dd HH24:mi:ss') scn_time,
ora_rowscn scn,
id,name,
to_char(createtime,'yyyy-mm-dd HH24:mi:ss') ct from t1;

select table_name,dependencies from user_tables;


但是相应的,每行的存储空间增加6 byte
他相对于版本列,优点在于可以查看该行大致的更新时间
相对于时间戳,优点在于免去手工更新维护时间戳的工作

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

上一篇: RMAN异机恢复
请登录后发表评论 登录
全部评论

注册时间:2013-10-19

  • 博文量
    620
  • 访问量
    6340007