Oracle SCN 介绍三篇文章
文章一:SCN是什么?The System Change Number
system change number (SCN)是一个非常重要的标记,Oracle使用它来标记数据库在过去时间内的状态和轨迹。
Oracle使用SCN来保存所有变化的轨迹。SCN是一个逻辑时钟来记录数据库事件。它非常的重要,并不是只是为了恢复。
SCN有点类似于sequence,Oracle在SGA中增加它。当一个事务修改或者插入数据,Oracle首先写入一个新的SCN到回滚段中。log writer进程立刻把提交的记录写入到重做日志中,这条提交的记录将拥有唯一的SCN。事实上,把SCN写入到日志,就意味着一个事务的完成。SCN帮助Oracle决定在一次突然中断或者SHUTDOWN ABORT后,是否需要一个崩溃恢复。每当数据库发生checkpoint,Oracle 写一个START SCN命令到数据文件头。控制文件维护着每个数据文件
的SCN,称为STOP SCN,通常是无穷大,每当实例正常关闭(SHUTDOWN NORMAL or SHUTDOWN IMMEDIATE),Oracle会复制数据文件头START SCN到控制文件的STOP SCN。如果是正常的重启数据库,是不需要恢复的,因为控制文件和数据文件的SCN是吻合的。反之,突然中断系统就没法同步SCN,SCN不匹配,Oracle就认为需要做恢复。
另外Oracle还使用数据块的SCN来维护查询的一致性和多版本。
Checkpoint是一个数据库事件,用来同步所有的datafile,controlfile和redo logfile。当发出ckpt时(回顾什么时候oracle会发出ckpt呢),ckpt会将检查点时刻的scn写入到控制文件和数据文件头部,同时会促使dbwr进程将data buffer中的所有的脏数据写入到数据文件中。而dbwr进程工作时又会促使lgwr写log buffer中的日志数据到redo logfile中。所以当发出检查点时CKPT,DBWR和LGWR同时工作,三种文件的scn完全一致,从而能保持完全同步。
一次checkpoint包含以下步骤:
1. 1把redo buffers的内容刷到redo log中。
2. 2在redo log file中留下一个checkpoint记录。
3. 3把database buffer cache的变更刷新到磁盘。
4. 4在checkpoint完成后,更新数据文件头和控制文件。
Checkpoint的具体工作包括:
• 触发DBWn向磁盘写入Dirty data。
• 把checkpoint信息更新到datafile header上。
• 把checkpoint信息更新到control file里。
• Checkpoint做的事情之一是触发DBWn把buffer cache中的Dirty cache磁盘。另外就是把最近的系统的SCN更新到datafile header和control file(每一个事务都有一个SCN),做第一件事的目的是为了减少由于
相关文档:
数学函数:
1.绝对值
S:SELECT abs(-1) value
O:SELECT abs(-1) value from dual
2.取整(大)
S:SELECT ceiling(-1.001) value
O:SELECT ceil(-1.001) value from dual
3.取整(小)
S:SELECT floor(-1.001) value
O:SELECT floor(-1.001) value from dual
4.取整(截取)
S:SELECT cast(-1.002 as int) value
O ......
Oracle JOB 间隔时间详解
INTERVAL参数设置:
每天运行一次 'SYSDATE + 1'
每小时运行一次 &nbs ......
【训练6.1】 使用隐式游标的属性,判断对雇员工资的修改是否成功。
步骤1:输入和运行以下程序:
BEGIN
UPDATE emp SET sal=sal+100 WHERE empno=1234;
IF SQL%FOUND THEN
DBMS_OUTPUT.PUT_LINE('成功修改雇员工资!');
......
•何为审计
数据库审计,就是对数据库的活动做跟踪记录,主要包括数据库连接,SQL语句执行,数据库对象访问这些方面的跟踪记录。
•现实作用
安全控制、跟踪数据变化、程序BUG调试、自定义的数据汇总分析、操作日志
•存储方式
一种是存储在操作系统文件中,一种是存储在system表空间中的SYS.AUD$表中
......