Welcome 微信登录

首页 / 数据库 / MySQL / Oracle控制文件操作

控制文件是连接instance和 database的纽带。记录了database的结构信息。
控制文件是1个2进制文件。记录的是当前database的状态。
控制文件可以有多个,在参数文件中通过control_files参数指定位置,在需要向控制文件写入时,会同步的向多个控制文件写入。读取控制文件时,只会读取第一个控制文件。如果任意一个控制文件损坏,则实例会abort。
控制文件只能和1个database相关联。
控制文件是在创建database的时候创建的。也可以在启动到nomount状态时重建。相关阅读:Oracle控制文件的恢复 http://www.linuxidc.com/Linux/2012-07/66041.htmOracle用老的控制文件备份恢复新建的数据文件  http://www.linuxidc.com/Linux/2013-05/85126.htmOracle教程:基于用户管理的备份与恢复-控制文件的备份与恢复 http://www.linuxidc.com/Linux/2011-08/39724.htmOracle控制文件新增,备份,恢复 http://www.linuxidc.com/Linux/2013-06/86379.htmOracle使用备份控制文件恢复数据库 http://www.linuxidc.com/Linux/2013-06/86721.htm与control file相关的视图
v$controlfile:当前instance中所有的控制文件的信息。
v$controlfile_record_section: 控制文件中所有的section信息。查看当前控制文件信息:
 select * from v$controlfile;
 select * from v$parameter where name like "%control%";
 show parameter control;
 select * from v$controlfile_record_section;用命令修改控制文件的路径alter system set control_files="/u01/app/oracle/oradata/saigon/control01.ctl",
                              "/u01/app/oracle/oradata/saigon/control02.ctl",
                              "/u01/app/oracle/oradata/saigon/control03.ctl" scope=spfile; 使用spfile增加控制文件个数或修改控制文件路径
(1)利用v$controlfile 来获取现有控制文件名字和位置.
(2)修改spfile,使用
alter system set control_files=
"D:DISK3CONTROL01.CTL",
"D:DISK6CONTROL02.CTL",
"D:DISK9CONTROL03.CTL" SCOPE=SPFIL;
(3)正常关闭数据库,(shutdown,shutdown immediate).
(4)使用操作系统的复制命令将现有控制文件复制到指定位置.
(5)重新启动oracle数据库(startup)
(6)利用数据字段v$controlfile来验证新的控制文件名字是否正确.
(7)如有错误,重复上述操作:如果无误,删除原有的控制文件. 使用pfile增加控制文件个数或修改控制文件路径
 1.干净的关闭数据库。
 2.在操作系统上复制1个新的控制文件并改名。
 3.在initSID.ora中的control_files参数中添加之前的参数文件。
 4.启动数据库。在oracle运行过程中备份控制文件
 1.alter database backup controlfile to "D:aaa.bak";
 2.alter database backup controlfile to trace;  把控制文件翻译成创建控制文件的脚本,路径在用户警告文件的目录下(可以通过show parameter user_dump;查看),后缀名为trc。或根据下面方式找到:SELECT d.VALUE
|| "/"
|| LOWER (RTRIM (i.INSTANCE, CHR (0)))
|| "_ora_"
|| p.spid
|| ".trc" trace_file_name
FROM (SELECT p.spid
FROM v$mystat m, v$session s, v$process p
WHERE m.statistic# = 1 AND s.SID = m.SID AND p.addr = s.paddr) p,
(SELECT t.INSTANCE
FROM v$thread t, v$parameter v
WHERE v.NAME = "thread"
AND (v.VALUE = 0 OR t.thread# = TO_NUMBER (v.VALUE))) i,
(SELECT VALUE
FROM v$parameter
WHERE NAME = "user_dump_dest") d
/3.run{
backup current controlfile format"/backup1/controlfile_%d_%s.ctl";
} 控制文件的的恢复resetlog方式打开数据只要拥有当前的日志文件是可以实现完全恢复的。 
是否需要使用resetlogs方式打开,则取决于是否使用的是备份的控制文件。
如果使用的是备份的控制文件则需要使用resetlogs方式打开数据库;
如果拥有当前的控制文件或者通过重建控制文件来恢复,就不需要通过resetlogs方式打开。RMAN>restore controlfile to "/tmp/control01.ctl" from "c-3152029224-20051221-00"-------恢复控制文件用户resetlogs方式打开run{
startup force nomount;set dbid=
restore controlfile from autobackup;
alter database mount;
recover database;
alter database open resetlogs;
}-------恢复控制文件用正常方式打开
1.startup nomount;
2.RMAN>restore controlfile from autobackup;
3.alter database mount;
4.SQL>alter database backup controlfile to trace;
5.找到trace文件
SELECT d.VALUE
|| "/"
|| LOWER (RTRIM (i.INSTANCE, CHR (0)))
|| "_ora_"
|| p.spid
|| ".trc" trace_file_name
FROM (SELECT p.spid
FROM v$mystat m, v$session s, v$process p
WHERE m.statistic# = 1 AND s.SID = m.SID AND p.addr = s.paddr) p,
(SELECT t.INSTANCE
FROM v$thread t, v$parameter v
WHERE v.NAME = "thread"
AND (v.VALUE = 0 OR t.thread# = TO_NUMBER (v.VALUE))) i,
(SELECT VALUE
FROM v$parameter
WHERE NAME = "user_dump_dest") d
/
  • 1
  • 2
  • 下一页
Oracle expdp 过滤和并行Oracle调用Java写存储过程相关资讯      Oracle控制文件 
  • Oracle数据库丢失控制文件的恢复四  (08月09日)
  • Oracle控制文件多路复用  (09/17/2014 17:33:00)
  • Oracle控制文件损坏  (01/25/2014 13:42:32)
  • Oracle控制文件多路复用时要注意的  (11/21/2014 13:09:23)
  • Oracle控制文件的备份、恢复以及多  (04/10/2014 15:15:06)
  • Oracle控制文件的多路复用  (11/10/2013 19:06:11)
本文评论 查看全部评论 (0)
表情: 姓名: 字数


评论