执行commit时oracle做哪些工作
COMMIT是一个非常快的操作,当我们发布commit命令时,真正困难的动作已经完成,
在数据库中已经执行了数据更改,所以已经完成了99%的任务,例如:下列操作已经产生:
1.在SGA(Buffer Cache)中已经生成了undo块;
2.在SGA(Buffer Cache)中已经生成了产生改变的数据块和索引块;
3.在REDO LOG BUFFER生成了前面两项的redo信息;
4.依赖于前三项产生的数据量大小以及操作需要的时间,buffer中的数据可能已经
有一部分输出到了磁盘;
5.所有需要的锁已经获得;
当执行COMMIT命令时,只执行如下操作:
1.为事务生成SCN:SCN是ORACLE数据库的一种计时信息,用以保证事务的顺序性,
同时还用于失败恢复和保证数据库的读一致性和检查点,无论何时何人提交,SCN
自动加1;
2.将事务相关的未写入redo log file中的redo信息从redo log buffer写入到redo log
file,这才是真实的COMMIT,这步操作完成,说明我们已经完成COMMIT,事务从
V$TRANSACTION中移除;
3.V$LOCK中记录的SESSION关于该事务的锁会释放,其他需要这些锁的事务被唤醒;
4.执行块清理,清理块头保存的事务信息;
相关文档:
以下是Oracle JDBC官方文档的说法:
也就是随便翻译一下就理解了。
JDBC Thin for All Platforms
classes12.jar (1,600,090 bytes) - for use with JDK 1.2 and JDK 1.3
在低级JDK版本1.2与1.3中使用的驱动,虽然实际上在1.4,1.5中使用大部分情况也是OK的
classes12_g.jar (2,044,594 bytes) - same as classes12.j ......
1.用Oracle用户登陆Linux服务器;
2.在终端窗口输入 sqlplus /nolog
[oracle@hylinux ~]$ sqlplus /nolog
SQL*Plus: Release 10.2.0.1.0 - Production on 星期二 7月 29 14:26:16 2008
Copyright (c) 1982, 2005, Oracle. All rights reserved.
& ......
select column_name from all_cons_columns cc
where owner='SSH' --SSH为用户名称,要注意大小写
and table_name='SYS_DEPT' --SYS_DEPT为表名,注意大小写
and exists (select 'x' from all_constraints c
where c.owner = cc.owner
and c.constraint_name = cc.constraint_name
and c.constraint_type ='P'
......
网上有很多资料,也是参考eygle的文档。
OS : Redhat AS 4 U5
DB : Oracle 10.2.0.3
1.修改jdk 下面的字体。
[oracle@rac2 db_1]$ cd $ORACLE_HOME/jdk/jre/lib/
[oracle@rac2 lib]$ mv font.properties font.properties_bak
[oracle@rac2 lib]$
[oracle@rac2 lib]$ cp font.properties.zh_CN.Redhat font.propertie ......