ORACLE UNDO 《深入浅出ORACLE第七章》
如果说Redo是用来保证在故障时事务可以被恢复,那么Undo则是用来保证事务可以被回退或者撤销。
在修改操作中,对于回退段的操作存在多处,在事务开始时,首先需要在回滚段表空间获得一个事务槽,分配空间,然后创建前镜像,此后事务的修改才能进行,Oracle必须以此来保证事务是可以回退的。
如果用户提交了事务,Oracle会在日志文件记录提交,并且写出日志,同时会在回滚段中把该事务标记为已提交;如果用户回滚事务,则Oracle需要从回滚段把前镜像数据读取出来,修改数据缓冲区,完成回滚,这个过程本身也要产生Redo,所以回退这个操作是很昂贵的。
在Oracle性能优化中,有一个性能指标称为平均事务回滚率(Rollback per transaction),用来衡量数据库的提交与回滚效率。可以在Statspack中找到这个指标。
该参数计算公式为:
Round(User rollbacks/(user commits+user rollbacks),4)*100%
其中user commits和user rollbacks数据来自系统的统计信息,可以从v$sysstat视图中得到,
SQL> select name,value from v$sysstat
2 where name in ('user commits','user rollbacks');
NAME VALUE
---------------------------------------------------------------- ----------
user commits 5
user rollbacks  
相关文档:
oracle 默认隔离等级是:读已提交。
查询锁定,防止另外用户更新:
select * from books for update;
当前用户更新之后,另外用户可以更改。
01、表连接
假定from子句中从左到右两个表分别为A,B表。
内连接:选取A、B表的完全匹配的集合,两表交集:
select empno,ename,emp.deptno A,dept.deptno B,dname from emp ......
1)SQL Server链接服务器 Linked Server方式(SQLServer作为源服务器):
http://www.cnblogs.com/riccc/archive/2009/07/23/sql-server-linked-server.html
2)Oracle高级复制(oracle数据库之间复制):
http://www.chinaunix.net/bbsjh/8/54.html
其他技术方法:
snapshot
Replication ......