手动修改oracle scn号,SCN(系统改变号)
1. scn: system change number
用以标识数据库在某个确切时刻提交的版本.
数据库的内部逻辑时钟.
每个数据库都有一个全局的SCN生成器.
它会随着外部变化的加快而加快变化,在数据文件和控制文件里各存放一个SCN号,然后恢复(主要是介质恢复)的时候它们会进行比对,
一般情况下,这俩个文件里的SCN号是一致的;非正常情况下,要根据实时情况判断这俩个文件里的SCN号的大小
ORACLE通过SCN维护数据库的一致性,
以及实施至关重要的恢复机制.
SCN的获取
(1)select dbms_flashback.get_system_change_number from dual; 9i
(2)select current_scn from v$database; 10g
(3)select max(ktuxescnw*power(2,32)+ktuxescnb) from x$ktuxe; before 9i
(4)从内存中获取SCN
sys:
sql>oradebug setmypid
sql>oradebug DUMPvar SGA kcsgscn_
kcslf kcsgscn_ [20009104, 20009124) =
00000000 000704BD 000007D2 00000000 00000000 00000000 00000000 20008F10
sql>select to_number('704BD','xxxxxx') SCN from dual;
select to_number('1078F3','xxxxxx') SCN from dual;
观察scn变化速率
不繁忙时:
select current_scn from v$database;
繁忙时:
set serveroutput on
declare
a number;
begin
for i in 1..100 loop
select current_scn into a from v$database;
dbms_output.put_line(a);
end loop;
end;
/ **执行上面的PL/SQL语句
2. 转储control file和数据文件头信息
控制文件保存的信息:
DB名称,创建时间
所有数据文件和日志文件名称和路径
表空间信息
备份信息
检查点和SCN信息
归档信息
sqlplus sys/oracle as sysdba
SQL> show parameter user_dump_dest
/opt/oracle/admin/LH/udump
quit
cd /opt/oracle/admin/LH/udump
rm *.trc
sqlplus sys/oracle as sysdba
alter session set events
'immediate trace name controlf level 8';
quit
ll lh_ora_17702.trc
vi lh_ora_17702.trc
观察内容
转储数据文件头信息
cd /opt/oracle/admin/LH/udump
rm *.trc
sqlplus sys/oracle as sysdba
alter session set events
'immediate trace name file_hdrs level 10';
quit
vi .trc
每个数据文件头信息都会转储出来
观察内容
转储日志文件
cd /opt/oracle/admin/LH/udump/
rm *.trc
sqlplus sys/oracle as sysdba
alter system dump logfile '/opt/oracle/oradata/lh/redo01.log';
quit
vi lh_ora_11346.trc
low scn
next scn
标识该日志文件包含这2个值之间的信息
CKPT:
工作:
(1)向DBWR布置写数据文件
(2)更新控制文件,数据文件头信息,记录检查点
触发:
(1)redolog切换
(2)alter system checkpoint;
(3)将tbs->offline,read only,backup
(4)初始化参数
log_checkpoint_interval
log_checkpoint_timeout
3.
v$database.checkpoint_change# 记录最后一次检查点发生控制文件的SCN
(the scn of ckpt in controlfile)
select checkpoint_change# from v$database;
v$datafile_header.checkpoint_change# 记录最后一次检查个个数据文件的SCN
(the scn of every datafile in every datafile)
select checkpoint_change# from v$datafile_header;
v$datafile.checkpoint_change# 记录最后一次检查个个控制文件的SCN
(the scn of every datafile in controlfile)
select checkpoint_change# from v$datafile;
v$datafile.last_change# (select last_change# from v$datafile;)
每个数据文件的终止scn都存储在controlfile中
在正常的数据库操作过程中,
所有正处于联机读写模式下的数据文件的终止scn都为null.
用以标识数据库或数据文件是否正常关闭
[当数据库是read only open模式,
v$database.current_scn=0]
在安全关闭数据库的过程中,系统会执行一个检查点动作,
这时所有数据文件的终止scn,都会设置成数据文件头中
的那个checkpoint_change#的值。
在数据库重新启动的时候,需要校验
(1)数据文件头部的 checkpoint cnt 与
控制文件中的 checkpoint cnt
是否一致,如不一致,停止往下进行,
如一致,继续校验
(2)数据文件头的SCN对应控制文件的结束SCN是否一致
Oracle将v$datafile_header.checkpoint_change#与v$database.checkpoint_change#进行比较 (介质恢复)
(比较v$datafile_header和v$database的checkpoint_change#)
如果这两个值相互匹配,oracle接下来还要比较v$datafile_header.checkpoint_change#和v$datafile.last_change# (实例恢复)
(比较v$databasefile_header的checkpoint_change#和v$databasefile的last_change#)
**实例恢复是由SMON,自动恢复
*1.如果这两个值也一致,就意味着所有数据块都已经提交,所有对数据库的修改都没有
在关闭数据库的过程中丢失,因此这次启动数据库的过程也不需要任何恢复操作,此时数据库就可以打开了。
*2.当所有的数据文件都打开之后,存储在控制文件中的v$datafile.last_change#的值再次被
更改为null,这表示数据文件已经打开并能够正常使用了。
在数据文件打开过程中,
如果v$datafile_header.checkpoint_change#
与v$database.checkpoint_change#不同,需要介质恢复
如果v$datafile_header.checkpoint_change#
和v$datafile.last_change#不同,需要实例恢复
open:
select checkpoint_change# from v$database 622419
select checkpoint_change# from v$datafile 622419
select last_change# from v$datafile null
select checkpoint_change# from v$datafile_header 622419
(1)正常关闭
ORACLE_SID=LH
sqlplus sys/oracle as sysdba
shutdown immediate 把所有数据文件的终止scn(null),都会设置成数据文件头中的那个checkpoint_change#的值
startup mount
select checkpoint_change# from v$database 623414
select checkpoint_change# from v$datafile 623414
select last_change# from v$datafile 623414
select checkpoint_change# from v$datafile_header 623414
alter database open;
比较v$datafile_header.checkpoint_change#与v$database.checkpoint_change#
比较v$datafile_header.checkpoint_change#和v$datafile.last_change#
select checkpoint_change# from v$database 623415
select checkpoint_change# from v$datafile 623415
select last_change# from v$datafile null
select checkpoint_change# from v$datafile_header 623415
(2)非正常关闭
在ORACLE打开状态下,断电,直接关机
启动OS
ORACLE_SID=LH
sqlplus sys/oracle as sysdba
startup mount
select checkpoint_change# from v$database 623415
select checkpoint_change# from v$datafile 623415
select last_change# from v$datafile null
select checkpoint_change# from v$datafile_header 623415
alter database open;
比较v$datafile_header.checkpoint_change#与v$database.checkpoint_change#
比较v$datafile_header.checkpoint_change#和v$datafile.last_change#不同,需要实例恢复
tail -f -n 300 alert_LH.log
SMON: enabling cache recovery
SMON: enabling tx recovery
select checkpoint_change# from v$database 645765
select checkpoint_change# from v$datafile 645765
select last_change# from v$datafile null
select checkpoint_change# from v$datafile_header 645765
(3)介质恢复(DBA要介入)
open:
ORACLE_SID=LH
sqlplus sys/oracle as sysdba
alter database begin backup;
$ cp tbs16.dbf tbs16.dbf.bak
sqlplus sys/oracle as sysdba
select checkpoint_change# from v$database 517792
select checkpoint_change# from v$datafile 517962
select last_change# from v$datafile null
select checkpoint_change# from v$datafile_header 517962
alter database end backup;
select checkpoint_change# from v$database 517792
select checkpoint_change# from v$datafile 517962
select last_change# from v$datafile null
select checkpoint_change# from v$datafile_header 517962
shutdown immediate
$ mv tbs16.dbf.bak tbs16.dbf
startup mount
select checkpoint_change# from v$database 518771
select checkpoint_change# from v$datafile 518771
select file#,last_change# from v$datafile 518771
select file#,checkpoint_change# from v$datafile_header 518771 (7) 517962
alter database open; 比较v$datafile_header.checkpoint_change#与v$database.checkpoint_change#不同,需要介质恢复
ORA-01113: file 7 needs media recovery
recover database;
Media recovery complete.
select checkpoint_change# from v$database 518771
select checkpoint_change# from v$datafile 518771
select file#,last_change# from v$datafile 518771 (7) 518770
select file#,checkpoint_change# from v$datafile_header 518771 (7) 518770
alter database open; 比较v$datafile_header.checkpoint_change#和v$datafile.last_change# 不同,需要实例恢复
SMON: enabling cache recovery
SMON: enabling tx recovery
select checkpoint_change# from v$database 518772
select checkpoint_change# from v$datafile 518772
select file#,last_change# from v$datafile null
select file#,checkpoint_change# from v$datafile_header 518772
sqlplus sys/oracle as sysdba
SQL> oradebug setmypid
sql> oradebug dump controlf 4
$ORACLE_BASE/admin/hj/udump/hj_ora_4198.trc
我们可以看到所有的数据文件Stop scn: 0xffff.ffffffff,这是一个极大的值,说明我们的数据库是打开的。我们知道,shutdown abort的时候,
没有checkpoint,控制文件也不会被更新,当数据库重新启动的时候,Oracle会发现这个SCN仍然是这个极大值,和数据库的Checkpoint SCN不一样,
此时数据库就会进行恢复,只有当这两个SCN一样,数据库才能OPEN。
redo: 已提交,datafile想要,但没有,需要应用redologfile里的redo sql
undo: 未提交,datafile不想要,但有了,需要应用undofile里的undo信息
手动修改oracle scn号,SCN(系统改变号)相关推荐
- 获取当前scn号scn1_Oracle 系统改变号SCN详解
Scn : scn的英文全称就是 system change number, 中文直译过来就是系统改变号了. 1.SCN的定义 scn的英文全称就是 system change number, 中文直 ...
- Oracle 系统改变号SCN详解
这篇文章是参考甲骨论老相老师的教学视频: http://v.youku.com/v_show/id_XNDAyNDIyMDgw.html 所做的学习笔记. 1. SCN的定义 scn的英文全称就是 s ...
- oracle最新scn补丁,Oracle 系统改变号(SCN), Headroom, 安全和补丁信息
适用于: Oracle Database – Enterprise Edition – 版本 10.1.0.5到 11.2.0.3 [Release 10.1 to 11.2] 本文信息适用于任何平台 ...
- oracle中scn(系统改变号)
系统scn: select checkpoint_change# from v$database; 文件scn: select name ...
- 手动修改oracle scn号,使用Oradebug修改Oracle SCN
Oracle SCN对于数据库运行.维护而言是至关重要的因素.在启动从mount到open过程中,主要是各种文件的SCN进行比较的行为.通常情况下,我们是不需要介入到Oracle SCN的取值和设置, ...
- 从配置文件(*.config)读到内存中,手动修改配置文件后,内存中数据改变问题.
某些情况,我们把数据信息存储在*.xml或*.config文件中,存储在*.config中会比较安全,发布的程序,浏览器不会打开*.config文件,但是*.xml会在浏览器中呈现. 使用.confi ...
- 如何手动修改oracle表空间,ORACLE数据库创建和修改表空间
-建立表空间(oracle中的tablespace(表空间)) CREATE TABLESPACE data01 DATAFILE 'D:\oracle\ora92\oradata\db\DATA01 ...
- oracle数据库的scn,Oracle数据库SCN详解
SCN号概述 SCN是当Oracle数据库更新后,由DBMS自动维护去累积递增的一个数字.Oracle数据库中一共有4种SCN分别为 系统检查点SCN: 系统检查点SCN位于控制文件中,当检查点进程启 ...
- oracle row_scn,【Oracle概念】-SCN是什么
SCN是什么 SCN查看与转换 ORA_ROWSCN伪列 关于SCN分类 SCN的作用 延伸阅读 SCN是什么 在<Concepts>中是描述SCN的: A system change n ...
最新文章
- 某月某日前包括当天吗_创恒国际投资平台介绍股票交易制度:股票是否可以当天买?当天卖?...
- vue 心跳监控_【笔记】vue中websocket心跳机制
- js数组fill()方法
- 乱码问题引申 python 中string和unicode
- DCMTK:解压缩RLE压缩的DICOM文件
- php中ci的session自动加载报错
- 前端学习(2250)拉取代码文件
- java mysql geo_GEO数据库简介
- 2017 开源软件排行_2017年政府和公民如何使用开源解决人类问题
- 【BZOJ3942】Censoring [KMP]
- Linux系统(三)vi、vim编辑器和shell编程
- ENVI软件中决策树分类和监督分类算法比较
- 乱码问题及字符编码集(一)
- java word 题目导入_Java导入导出Excel和Word
- 怎么把raw转换成jpg格式?推荐两个raw转jpg的方法
- WinRAR 6.0 sc 去广告版
- 计算机均价的公式,【转】二手笔记本电脑的价格计算方法和举例
- MOS管和三极管区别-对比很显然
- 【服务通信自定义srv调用3----客户端的优化】
- Apollo 5.5 源码学习笔记(五) | transform模块 | Apollo中的坐标系统详解
热门文章
- PIX配置手册三(nat)
- linux 新建用户(添加ssh用户两者方式一样)
- mybatis开发dao的方法——(三)
- (基础篇)PHP字符串函数
- IIS7.5+WebConfig实现页面伪静态和301重定向
- 谷歌地图控件,通过扩展实现GMAP的自定义绘图系统
- centos装oracle6,CentOS-6.7下安装Oracle11g
- python通信测试_Python接口测试实战1(上)- 接口测试理论
- iphone个系列尺寸_iPhone 12系列、11系列尺寸对比
- html 表格过滤功能,简单的带排序和过滤功能的jQuery表格插件