全部控制文件丢失后的完全恢复(转)

全部控制文件丢失后的完全恢复




分类: ORACLE
如果数据库控制文件做过镜像,比如一个数据库有3个控制文件,丢失一个控制文件的恢复非常的容易,如果所有控制文件的丢失,那么恢复起来就要相对的麻烦一些。

如果注意观察下面的例子你会发现,即使没有控制文件的备份也是可以把数据库恢复的。
当然,最好不要把自己置于某种复杂和未知的环境,对数据库做控制文件的备份是一个很容易的事情。

我们这里通过用户管理的方法来创建控制文件的备份:
1.生成重建控制文件和修复数据库的脚本,脚本会放在$ORACLE_HOME/admin/$ORACLE_SID/udump路径下,其中sid是数据库实例名。
alter database backup controlfile to trace;
2.生成控制文件的镜像拷贝
alter database backup controlfile to '/home/oracle/c.bak'     ----引号部分是目录和备份文件名


SQL> create table demo (x number,y number);
表已创建。
SQL> insert into demo values(1,100);
已创建 1 行。
SQL> insert into demo values(2,200);
已创建 1 行。
SQL> commit;
提交完成。
SQL> select * from demo;
         X          Y
---------- ----------
         1        100
         2        200
SQL> conn / as sysdba
SQL> shutdown immediate

在这个时候,删掉所有的控制文件!!
$ oracle@model /oradata/test> ls
control01.ctl  control03.ctl  redo01.log  redo03.log    system01.dbf  undotbs01.dbf
control02.ctl  example01.dbf  redo02.log  sysaux01.dbf  temp01.dbf    users01.dbf
$ oracle@model /oradata/test> rm -rf *.ctl
$ oracle@model /oradata/test> ls
example01.dbf  redo02.log  sysaux01.dbf  temp01.dbf     users01.dbf
redo01.log     redo03.log  system01.dbf  undotbs01.dbf
SQL> startup
ORACLE 例程已经启动。
Total System Global Area  293601280 bytes
Fixed Size                  1248600 bytes
Variable Size             100663976 bytes
Database Buffers          184549376 bytes
Redo Buffers                7139328 bytes
ORA-00205: ?????????, ??????, ???????
SQL> select status from v$instance;
STATUS
---------------------
STARTED
从trace文件中获得以下的SQL语句,并复制创建:
-rw-r----- 1 oracle oinstall 6382 May 18 17:43 test_ora_4912.trc
我们之前备份的文件生成的是:test_ora_4912.trc
SQL> CREATE CONTROLFILE REUSE DATABASE "TEST" NORESETLOGS  ARCHIVELOG
    MAXLOGFILES 16
    MAXLOGMEMBERS 3
    MAXDATAFILES 100
    MAXINSTANCES 8
    MAXLOGHISTORY 292
LOGFILE
  GROUP 1 '/oradata/test/redo01.log'  SIZE 50M,
  GROUP 2 '/oradata/test/redo02.log'  SIZE 50M,
  GROUP 3 '/oradata/test/redo03.log'  SIZE 50M
-- STANDBY LOGFILE
DATAFILE
  '/oradata/test/system01.dbf',
  '/oradata/test/undotbs01.dbf',
  '/oradata/test/sysaux01.dbf',
  '/oradata/test/users01.dbf',
  '/oradata/test/example01.dbf',
  '/home/oracle/mai_dbf/for_mai01.dbf',
  '/home/oracle/mai_dbf/for_mai02.dbf',
  '/home/oracle/mai_dbf/ts_test01.dbf'
CHARACTER SET ZHS16GBK;
SQL> select status from v$instance;
STATUS
------------
MOUNTED
SQL> recover database;
ORA-00283: ??????????
ORA-00264: ?????
数据库不需要恢复的操作,所以报了上边的错误。
SQL> alter database open;
由于我们重建了控制文件,所以原来oracle数据库的临时表空间已经不能够被使用了,在这里我们需要对它进行重建:
SQL> select file_name from dba_temp_files;
no rows selected
SQL> alter tablespace temp add tempfile '/oradata/test/temp01.dbf' size 30M reuse;
SQL> select file_name from dba_temp_files;
FILE_NAME
---------------------------
/oradata/test/temp01.dbf
SQL> select * from demo;
         X          Y
---------- ----------
         1        100
         2        200

测试完成!!

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/24570973/viewspace-753762/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/24570973/viewspace-753762/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值