oracle 11g 数据库恢复技术 ---02 控制文件
oracle 11g 数据库恢复技术 ---02 控制文件
SYS@ orcl >show parameter control_file NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
control_file_record_keep_time integer 7
control_files string /u01/app/oracle/oradata/orcl/c
ontrol01.ctl, /u01/app/oracle/
oradata/orcl/control02.ctl
多个oracle进程将控制文件做信息注册、交换的中心,健康的控制文件是数据库启动至mount阶段的必要条件
在备份与恢复中,控制文件同样非常重要,db在mount时,该文件本身的信息就足以判断数据库是否需要介质恢复、上一次db是否正常关闭,在db open时,
oracle通过检查其他文件的头与控制文件中的信息进行交叉校验,从而判断当前控制文件是否为旧或从备份中还原而来的控制文件。
控制文件的主要任务信息是管理数据库的状态及描述数据库物理结构
控制文件至少包含以下信息:
--1 数据库名
--2 dbid
--3 db创建时间戳
--4 db 字符集
--5 datafile信息
--6 tempfile信息
--7 online redo log
--8 近期的归档日志信息
--9 tablespace 信息
--10 rman备份文件信息,即rman资料库
--11 checkpoint信息
--12 损坏的数据块注册表
--13 还原点信息
--14 重设日志SCN
--15 脏数据块的数量
数据库实例的启动的3个阶段:
--1 nomount,需要打开参数文件
--2 mount,需要打开控制文件
--3 open,需要打开所有的online redo log和online datafile
控制文件还包含恢复数据库所需要的信息,如rman备份信息、检查点SCN以及从各个在线日志和数据文件头部复制而来的信息(比如用作交叉校验的数据文件头部检查点SCN和RBA)
只要db处于open,会有多个进程进行R/W操作,CKPT,LGWR,ARCn,DBRn,MMON等其他后台进程
1 DBID
每个数据库拥有的一个编号,称为数据库标识符,在创建db时自动生成,除了使用nid命令修改之外,dbid是不会变的。
DBID散布于db的各个文件中:控制文件、数据文件和日志文件头部。在恢复的时候,以自动备份恢复控制文件时,rman提升需要指定dbid
--restore controlfile from autobackup;
--must explicitly specify dbid with set dbid command
获取dbid的方法
--SYS@ orcl >select dbid from v$database;
DBID
----------
1534031567
--查看控制文件自动备份的文件名
--dump或者bbed查看数据文件头部信息
--若启用了recovery catalog,通过查询db
使用rman 自动备份的控制文件名
RMAN> backup tablespace users;
RMAN> list backup;
Piece Name: /u01/app/oracle/product/11.2.0/db_1/dbs/c-1534031567-20190522-00
--转储文件
SYS@ orcl > alter system dump logfile '/u01/app/oracle/arch/1_259_1006250831.dbf';
SYS@ orcl > select value from v$diag_info where name='Default Trace File';
/u01/app/oracle/diag/rdbms/orcl/orcl/trace/orcl_ora_10017.trc
[oracle@DSI arch]$ grep -i 'db id' /u01/app/oracle/diag/rdbms/orcl/orcl/trace/orcl_ora_10017.trc
Db ID=1534031567=0x5b6f76cf, Db Name='ORCL'
--bbed
alter session set events 'immediate trace name controlf level 2';
select * from v$diag_info;
BBED> set filename '/u01/app/oracle/oradata/orcl/control01.ctl';
BBED> dump
[root@DSI ~]# more /u01/app/oracle/diag/rdbms/orcl/orcl/trace/orcl_ora_16425.trc
DUMP OF CONTROL FILES, Seq # 4067 = 0xfe3
V10 STYLE FILE HEADER:
Compatibility Vsn = 186647552=0xb200400
Db ID=1534031567=0x5b6f76cf, Db Name='ORCL'
Activation ID=0=0x0
Control Seq=4067=0xfe3, File size=614=0x266
File Number=0, Blksiz=16384, File Type=1 CONTROL
SYS@ orcl >select to_number('5b6f76cf','xxxxxxxxxxxxx') from dual;
TO_NUMBER('5B6F76CF','XXXXXXXXXXXXX')
-------------------------------------
1534031567
SYS@ orcl > select to_char(1534031567,'xxxxxxxxxxxxx') from dual;
TO_CHAR(153403
--------------
5b6f76cf
BBED> set file 1 block 1
BBED> map /v
BBED> p kcvfh
Offset 28~31 5b6f76cf 表示DBID
2 数据库物理结构
数据库物理结构是在线日志路径、数据文件路径、表空间信息和备份文件信息的汇总。
物理结构可以查询相应的动态视图,在db处于mount状态即可查询
--v$database\v$archived_log\v$datafile\v$tmepfile\v$log\v$logfile\v$recover_file
SYS@ orcl >startup mount;
ORACLE instance started. Total System Global Area 784998400 bytes
Fixed Size 2257352 bytes
Variable Size 511708728 bytes
Database Buffers 264241152 bytes
Redo Buffers 6791168 bytes
Database mounted.
SYS@ orcl >select * from v$logfile;
SYS@ orcl >select * from v$database;
SYS@ orcl >select * from v$datafile;
SYS@ orcl >select group#,status,thread#,sequence#,archived from v$Log;
SYS@ orcl >select name,sequence# from v$archived_log;
SYS@ orcl >select file#,name from v$datafile;
SYS@ orcl >select file#,name from v$tempfile;
3 其他信息
--dbid,数据库标识符不仅保存在控制文件中,在datafile和日志文件的头部也存在,是判断控制文件、日志文件和数据文件是否属于同一个数据库
--数据库名,此信息与dbid作用一致,也保存在数据文件和日志问题头部
--控制文件序列号,是判断控制文件是否过”旧”的要素之一,控制文件更新后就会增加,控制文件更新包括检查点信息更新、创建或删除表空间等。
控制文件序列号在数据文件和重做日志的头部也有,与控制文件的不同,它们是在自身的头部被更新时从当时的控制文件复制的。
分别获得当前控制文件记录的及当前数据文件头部中记录的控制文件序列号
SYS@ orcl >select controlfile_sequence# from v$database;
CONTROLFILE_SEQUENCE#
---------------------
8327
SYS@ orcl >select hxfil as file#,fhcsq from x$kcvfh;
FILE# FHCSQ
---------- ----------
1 8269
2 8269
3 8269
4 8269
5 8301
上面结果8327(控制文件中的)大于8301(数据文件中的),这是很正常的。
--控制文件检查点SCN,该scn也是判断控制文件是否是”旧”的要素之一,完全检查点把scn更新到控制文件和数据文件中,而增量检查点仅把scn更新到控制文件中。无论是哪一种检查点,其scn在控制文件中由一个称为控制文件检查点scn的记录表示。
实际上,不管控制文件发生任何形式的更改,该SCN都会上升,在db为open状态,这个SCN一定>=current重做日志的低位SCN(v$log.first_change#)
SYS@ orcl >select controlfile_change# from v$database;
CONTROLFILE_CHANGE#
-------------------
9297603
控制文件检查点scn必须>=所有数据文件头部的检查点SCN号,否则,控制文件同样被认为”旧”,实例恢复无法启动。
--数据库检查点SCN,控制文件中保存的数据库检查点scn号实际上是在所有数据文件头部中最小的检查点scn,根据他的值与每个重做日志的高、低位scn比较,oracle可以确定恢复数据文件需要使用的第一个日志文件。
SYS@ orcl >select checkpoint_change#,controlfile_change# from v$database;
CHECKPOINT_CHANGE# CONTROLFILE_CHANGE#
------------------ -------------------
9330966 9333793
--在线日志文件低位scn(first_change#)和高位scn(next_change#),日志文件中的重做记录范围是由这两个scn来表示的,低位scn指日志文件中第一条重做记录的scn,而高位scn是指下一个日志文件中的第一个重做记录的scn。
SYS@ orcl >select group#,first_change#,next_change# from v$log;
GROUP# FIRST_CHANGE# NEXT_CHANGE#
---------- ------------- ------------
1 9330966 2.8147E+14 ---0xfffffffffffff(当前正在写的文件)
2 9311463 9330958
3 9330958 9330966
根据上面数据,如果当前数据库检查点scn是9330967,并且现在实例意外崩溃,显然只需要1号日志文件就可以对数据库完成恢复。
--rman资料库,在默认情况下,控制文件有rman的记录:rman的配置、闪回日志路径、重做日志历史、归档日志路径及属性、rman备份集信息、rman镜像复制信息、rman备份集和rman镜像复制中损坏的数据块信息、数据文件中块数据信息等。
--还原点信息,scn的别名,通过’create restore point’命令创建,主要用于闪回技术。
--重设日志scn,每次使用resetlogs打开db时候的scn,日志文件和数据文件头部也会保存该scn,每次open db,都会检查是否一致。resetlogs一般是不完全恢复的结果。
oracle 11g 数据库恢复技术 ---02 控制文件的更多相关文章
- oracle 11g 数据库恢复技术 ---01 重做日志
一 redo log Oracle数据库中的三大核心文件分别是数据文件(data file).重做日志(redo log)和控制文件(control file).数据文件保证了数据库的持久性,是保存修 ...
- oracle 11g 数据库恢复技术 ---04 rman
四 RMAN RMAN体系结构的主要组成部分: --1 目标数据库(target) --2 RMAN命令行客户端 --3 通道(channel) --4 快速恢复区(fast recovery are ...
- oracle 11g 数据库恢复技术 --rman catalog
Oracle RMAN的catalog并不是指标备份恢复操作的一个必要组件,但oracle推荐使用该组件.启用之后,归档日志.备份集.镜像复制等备份信息的保存地点是RMAN资料库(catalog), ...
- oracle 11g 数据库恢复技术 ---03 补充日志
三 补充日志(supplemental logging) 补充日志是对重做记录中变更矢量的补充信息,增加了变更矢量记载的记录量.Oracle某些功能要求启用补充日志才能正常或更好的工作,比如logmi ...
- Oracle 11g数据库详解(2)
FAILED_LOGIN_ATTEMPTS 用于指定连续登陆失败的最大次数 达到最大次数后,用户会被锁定,登陆时提示ORA-28000 UNLIMITED为不限制 精确无误差 是 实时 PASSWOR ...
- 【转帖】循序渐进Oracle:数据库的字符集和字符集文件
循序渐进Oracle:数据库的字符集和字符集文件 https://blog.csdn.net/Enmotech/article/details/100869162 2019年09月15日 18:23: ...
- 在Windows 10上安装Oracle 11g数据库出现的问题及解决
在Windows 10上安装Oracle 11g数据库,并且很多次出现过:当安装的进度条进行到快要结束的时候弹出一个提示框.如下: [Java(TM)2 Platform Standard Editi ...
- PL/SQL Developer工具包和InstantClient连接Oracle 11g数据库
一.前言 PLSQL Developer是Oracle数据库开发工具,很牛也很好用,PLSQL Developer功能很强大,可以做为集成调试器,有SQL窗口,命令窗口,对象浏览器和性能优化等功能. ...
- 完美完全卸载Oracle 11g数据库
Oracle 11g可在开始菜单中卸载,然后同时需要删除注册表中相关内容. 操作系统:windows10专业版. 卸载步骤: 1.停用oracle服务:进入计算机管理,在服务中,找到oracle开头的 ...
随机推荐
- 09java进阶——IO
1.File类 1.1目录及路径分隔符 package cn.jxufe.java.chapter09.demo01; import java.io.File; public class Test01 ...
- u-boot-2016.09 make编译过程分析(二)
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/guyongqiangx/article/ ...
- .net core Consul
创建API项目修改Program public class Program { public static void Main(string[] args) { CreateWebHostBuilde ...
- Deepin(Ubuntu)安装rpm软件包
1.首先安装alien和fakeroot这两个软件,alien可以将rpm转换为deb包. 在终端中输入命令 sudo apt-get install alien fakeroot 2.使用alien ...
- Python---协程---重写多进程
一. # 匹配一行文字中所有开头的字母import re s = 'i love you but you don\'t love me' # \b\m findallcontent = re.find ...
- 【机器人M号】题解
题目 题目描述 3030年,Macsy正在火星部署一批机器人. 第1秒,他把机器人1号运到了火星,机器人1号可以制造其他的机器人. 第2秒,机器人1号造出了第一个机器人--机器人2号. 第3秒,机器人 ...
- [CF852D] Exploration plan
问题描述 The competitors of Bubble Cup X gathered after the competition and discussed what is the best w ...
- 【leetcode】1169. Invalid Transactions
题目如下: A transaction is possibly invalid if: the amount exceeds $1000, or; if it occurs within (and i ...
- LeetCode--062--不同路径(python)
一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” ). 机器人每次只能向下或者向右移动一步.机器人试图达到网格的右下角(在下图中标记为“Finish”). 问总共有多 ...
- 8:Spring Boot Shiro记住密码
1,添加Cookie 2,添加安全管理器中 3,配置记住我, 4 ,在登录页面中加我rememberMe复选框 /** * 1.配置Cookie对象 * 记住我的cookie:rememberMe * ...