Chinaunix首页 | 论坛 | 博客
  • 博客访问: 216176
  • 博文数量: 55
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 1126
  • 用 户 组: 普通用户
  • 注册时间: 2014-01-22 15:15
个人简介

积累经验

文章分类

全部博文(55)

文章存档

2014年(55)

分类: Oracle

2014-01-23 00:39:51

控制文件
1 小型二进制文件
2 定义物理数据库的当前状态
3 维护数据库的完整性
4 要求:
– 在启动数据库时处于MOUNT 状态
– 能够操作数据库
5 只链接至一个数据库
6 丢失数据后可能需要恢复
7 最初由CREATE DATABASE

对控制文件进行多元备份
要避免控制文件的单点故障所带来的损失,我们强烈建议您对控制文件进行多元备份,即
在不同的物理磁盘上存储一个副本。如果某个控制文件丢失,可以使用控制文件的多元备
份副本重新启动例程,而不必恢复数据库。
通过以下方式,最多可以对控制文件进行八次多元备份:
1 创建数据库时,通过在初始化参数文件中指定控制文件的名称和完整路径来创建多个
控制文件:
CONTROL_FILES=$HOME/ORADATA/u01/ctrl01.ctl,
$HOME/ORADATA/u02/ctrl02.ctl
2 创建数据库后添加控制文件

show parameter control  (显示控制文件存放路径)
NAME      TYPE  VALUE
------------------------------------ ----------- ------------------------------
control_file_record_keep_time      integer  7
control_files      string  /opt/app/oracle/oradata/sytong
 1/control01.ctl, /opt/app/orac
 le/oradata/sytong1/control02.c
 tl, /opt/app/oracle/oradata/sy
 tong1/control03.ctl

控制文件改为2个
alter system set control_files='/opt/app/oracle/oradata/sytong1/control01.ctl','/opt/app/oracle/oradata/sytong1/control02.ctl' scope=spfile;

startup force
SQL> show parameter control;

NAME      TYPE  VALUE
------------------------------------ ----------- ------------------------------
control_file_record_keep_time      integer  7
control_files      string  /opt/app/oracle/oradata/sytong
 1/control01.ctl, /opt/app/orac
 le/oradata/sytong1/control02.c
 tl

1 使用SPFILE 对控制文件进行多元备份
恢复成3个控制文件control04.ctl,将第3个移动到上一级目录
alter system set control_files='/opt/app/oracle/oradata/sytong1/control01.ctl','/opt/app/oracle/oradata/sytong1/control02.ctl','/opt/app/oracle/oradata/control04.ctl' scope=spfile;
重启数据库,报205错误
SQL> startup force
ORA-00205: error in identifying control file, check alert log for more info
/opt/app/oracle/oradata/control04.ctl
将control01.ctl复制到上一级目录并更名为control04.ctl
cp control01.ctl /opt/app/oracle/oradata/control04.ctl
SQL> startup force; 重启成功

2 使用init.ora 对控制文件进行多元备份
sql>shutdown immediate
把spilesytong1.ora备份,修改(pfile)initsytong1.ora文件
mv spilesytong1.ora spilesytong1.ora.bak
vi initsytong1.ora
*.control_files='/opt/app/oracle/oradata/sytong1/control01.ctl','/opt/app/oracle/oradata/sytong1/control02.ctl','/opt/app/oracle/oradata/control04.ctl','/opt/app/oracle/oradata/sytong1/control05.ctl'
cp $ORACLE_BASE/oradata/sytong1/control01.ctl $ORACLE_BASE/oradata/sytong1/control05.ctl

sql>startup
show parameter control_file
NAME      TYPE  VALUE
------------------------------------ ----------- ------------------------------
control_file_record_keep_time      integer  7
control_files      string  /opt/app/oracle/oradata/sytong
 1/control01.ctl, /opt/app/orac
 le/oradata/sytong1/control02.c
 tl, /opt/app/oracle/oradata/co
 ntrol04.ctl, /opt/app/oracle/o
 radata/sytong1/control05.ctl


修改成1个控制文件,然后echo 0 >> 控制文件(破坏),建议将控制文件放在不同的目录,并做备份



查看正在使用的控制文件,查看检查点
[oracle@stu132 ~]$ ps -ef|grep ckpt
oracle    5446     1  0 16:03 ?        00:00:00 ora_ckpt_sytong1
[root@stu132 ~]# cd /proc/5446/fd
[root@stu132 fd]# ll|grep control
lrwx------ 1 oracle oinstall 64 Dec 14 16:24 16 -> /opt/app/oracle/oradata/sytong1/control01.ctl
lrwx------ 1 oracle oinstall 64 Dec 14 16:24 17 -> /opt/app/oracle/oradata/sytong1/control02.ctl
lrwx------ 1 oracle oinstall 64 Dec 14 16:24 18 -> /opt/app/oracle/oradata/control04.ctl

[oracle@stu132 fd]$ ll |grep system
lrwx------ 1 oracle oinstall 64 Dec 15 13:44 20 -> /opt/app/oracle/oradata/sytong1/system01.dbf

备份控制文件,当控制文件失效后,同过备份控制文件起数据库
1.备份控制文件
sql>alter database backup controlfile to trace as '/home/oracle/contxt.sql';
vi /home/oracle/contxt.sql
STARTUP NOMOUNT
CREATE CONTROLFILE REUSE DATABASE "SYTONG1" NORESETLOGS  NOARCHIVELOG
    MAXLOGFILES 16
    MAXLOGMEMBERS 3
    MAXDATAFILES 100
    MAXINSTANCES 8
    MAXLOGHISTORY 292
LOGFILE
  GROUP 1 '/opt/app/oracle/oradata/sytong1/redo01.log'  SIZE 50M,
  GROUP 2 '/opt/app/oracle/oradata/sytong1/redo02.log'  SIZE 50M,
  GROUP 3 '/opt/app/oracle/oradata/sytong1/redo03.log'  SIZE 50M
DATAFILE
  '/opt/app/oracle/oradata/sytong1/system01.dbf',
  '/opt/app/oracle/oradata/sytong1/undotbs01.dbf',
  '/opt/app/oracle/oradata/sytong1/sysaux01.dbf',
  '/opt/app/oracle/oradata/sytong1/users01.dbf'
CHARACTER SET ZHS16GBK

2.控制文件改名,这时起数据库会报错,然后通过备份的控制文件恢复
cd /opt/app/oracle/oradata/sytong1/
for i in 1 2 3 ;do mv control0$i.ctl control0$i.ctl.bak;done
sql>@/home/oracle/contxt.sql
sql> select status from v$instance
sql>recover database (实例恢复)
sql>alter database open

阅读(1375) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~