控制文件的恢复(二进制)

本文详细介绍了如何在Oracle数据库中恢复二进制控制文件的完整过程,包括备份控制文件、创建表空间、插入数据、删除现有控制文件、启动数据库至挂载状态、恢复数据库并处理错误、重命名数据文件以及最终打开数据库的步骤。在恢复过程中,通过SQL命令和系统视图监控恢复状态,确保数据完整性和一致性。

1.备份二进制控制文件

SQL> alter database backup controlfile to '/tmp/c1.bin';


 

2.创建表空间

SQL> create tablespace app3 datafile '/u01/app/oracle/oradata/demo1/app3_01.dbf' size 10M autoextend on;

3.创建表并插入数据

SQL> create table t1 (id int,name varchar2(20)) tablespace app3;


SQL> insert into t1  values(0,'zhangning');


SQL> commit;

 

4.删除所有控制文件

[oracle@asm demo1]$ rm -f control0*

 

5.关闭数据库

SQL> shutdown abort

 

6.拷贝控制文件到原来位置

cp /tmp/c1.bin ./control01.ctl

cp /tmp/c1.bin ./control02.ctl

cp /tmp/c1.bin ./control03.ctl

 

7.启动数据库mount状态

SQL> startup mount

 

8.查看SCN号码

SQL> select file#,checkpoint_change# from v$datafile;(来自控制文件)


SQL> select file#,checkpoint_change# from v$datafile_header;(来自数据文件)

 

9.恢复数据库

SQL> recover database using backup controlfile;
ORA-00279: change 673673 generated at 01/30/2012 12:50:27 needed for thread 1
ORA-00289: suggestion :
/u01/app/oracle/flash_recovery_area/DEMO1/archivelog/2012_01_30/o1_mf_1_24_%u_.arc ----经查并无此文件
ORA-00280: change 673673 for thread 1 is in sequence #24


Specify log: {<RET>=suggested | filename | AUTO | CANCEL}

 

SQL> recover database using backup controlfile;
ORA-00283: recovery session canceled due to errors
ORA-01111: name for data file 7 is unknown - rename to correct file
ORA-01110: data file 7: '/u01/app/oracle/product/10.2.0/db_1/dbs/UNNAMED00007'
ORA-01157: cannot identify/lock data file 7 - see DBWR trace file
ORA-01111: name for data file 7 is unknown - rename to correct file
ORA-01110: data file 7: '/u01/app/oracle/product/10.2.0/db_1/dbs/UNNAMED00007'

 

10.查看视图

SQL> select * from v$recover_file;

SQL> select file#,name from v$datafile;

 

11.恢复数据文件到原来位置

SQL> alter database rename file '/u01/app/oracle/product/10.2.0/db_1/dbs/UNNAMED00007' to '/u01/app/oracle/oradata/demo1/app3_01.dbf';

 

12.恢复数据库

SQL> recover database using backup controlfile until cancel;
ORA-00279: change 674860 generated at 01/30/2012 13:01:31 needed for thread 1
ORA-00289: suggestion :
/u01/app/oracle/flash_recovery_area/DEMO1/archivelog/2012_01_30/o1_mf_1_24_%u_.a
rc
ORA-00280: change 674860 for thread 1 is in sequence #24


Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
/u01/app/oracle/oradata/demo1/redo02.log
Log applied.
Media recovery complete.

 

13.打开数据库

SQL> alter database open resetlogs;

 

14.验证

SQL> select * from t1;

        ID NAME
---------- --------------------------------------------------
         0 zhangning

 

 

数据库控制文件(control file)以二进制形式备份通常是为了保护数据库系统的元数据信息,因为控制文件包含了如服务器状态、数据文件位置、日志文件位置等重要配置信息。在Oracle数据库中,这种备份操作可以按照以下步骤进行: 1. **登录数据库**: 首先需要以拥有足够权限的用户(比如DBA)登录到数据库。 2. **切换到归档模式**: 如果不是已经在归档模式下运行,需要先设置数据库为归档模式,以便记录所有重要的改变。 3. **启用归档日志**: 确保归档日志已经开启并且有至少一个归档路径可用,这对于安全地备份控制文件至关重要。 4. **关闭实例**: 完成上述操作后,关闭当前的数据库实例(`shutdown immediate` 或 `shutdown transactional`,取决于是否允许未提交事务的数据一致性)。 5. **备份控制文件**: 使用Oracle提供的工具如`rman`(Recovery Manager),执行类似以下命令备份控制文件二进制文件: ``` rman target / << 登录rman> backup controlfile to 'path/to/controlfile autobackup'; exit; ``` `autobackup`选项会自动创建一个副本,并将其保存到指定的目录。 6. **恢复备份**: 当需要恢复控制文件时,可以在系统故障后使用此备份快速恢复数据库的元数据。 请注意,这仅适用于Oracle数据库管理系统,其他数据库系统可能会有不同的备份控制文件的方法。在实际操作前,应确保了解所使用的数据库管理系统的特定指南。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值