ARCHIVELOG模式下用户管理恢复控制文件—使用二进制控制文件恢复

来源:互联网 发布:苹果手机无法更新淘宝 编辑:程序博客网 时间:2024/05/07 13:24
在生产数据库中,控制文件一般多路复用的。每个控制文件的内容是一模一样的,只要其中有一个没有丢失,那么就可以复制一下,改一下名字就可以用了。

 

首先在数据库中备份执行一个二进制的控制文件,也可以使用操作系统的命令直接复制控制文件来备份。

[sql] view plaincopyprint?
  1. SQL> startup  
  2. ORACLE 例程已经启动。  
  3.   
  4. Total System Global Area  167772160 bytes  
  5. Fixed Size                  1266392 bytes  
  6. Variable Size              62917928 bytes  
  7. Database Buffers          100663296 bytes  
  8. Redo Buffers                2924544 bytes  
  9. 数据库装载完毕。  
  10. 数据库已经打开。  
  11.   
  12. SQL> create tablespace tb1 datafile '/u01/app/oracle/oradata/orcl/tb1.dbf' size 10m;   
  13.   
  14. 表空间已创建。  
  15.   
  16. SQL> create user u1 identified by u1 default tablespace tb1;  
  17.   
  18. 用户已创建。  
  19.   
  20. SQL> grant connect,resource to u1;  
  21.   
  22. 授权成功。  
  23.   
  24. SQL> conn u1/u1  
  25. 已连接。  
  26.   
  27. SQL> create table t (id int,value varchar2(10));  
  28.   
  29. 表已创建。  
  30.   
  31. SQL> insert into t values(1,'a');  
  32.   
  33. 已创建 1 行。  
  34.   
  35. SQL> commit;  
  36.   
  37. 提交完成。  
  38.   
  39. SQL> select * from t;  
  40.   
  41.         ID VALUE  
  42. ---------- ----------  
  43.          1 a  
  44.   
  45. SQL> conn /as sysdba  
  46. 已连接。  
  47. SQL> alter system checkpoint;  
  48.   
  49. 系统已更改。  
  50.   
  51. SQL> alter system archive log current;  
  52.   
  53. 系统已更改。  
  54.   
  55. SQL> alter system switch logfile;  
  56.   
  57. 系统已更改。  
  58.   
  59. SQL> /  
  60.   
  61. 系统已更改。  
  62.   
  63. SQL> /  
  64.   
  65. 系统已更改。  
  66.   
  67. SQL> /  
  68.   
  69. 系统已更改。  
  70. SQL> alter database backup controlfile to '/u01/app/oracle/controlfile/control.ctl';  
  71.   
  72. 数据库已更改。  
  73.   
  74. SQL> shutdown immediate  
  75. 数据库已经关闭。  
  76. 已经卸载数据库。  
  77. ORACLE 例程已经关闭。  


现在关闭数据库后,所有的控制文件丢失了,然后把备份的控制文件复制过去,该一下名字。

[sql] view plaincopyprint?
  1. [oracle@linux orcl]$ rm -rf control0*  
  2. [oracle@linux orcl]$ cp /u01/app/oracle/controlfile/control.ctl .  
  3. [oracle@linux orcl]$ mv control.ctl control01.ctl   
  4. [oracle@linux orcl]$ cp control01.ctl control02.ctl   
  5. [oracle@linux orcl]$ cp control01.ctl control03.ctl   


下面记录恢复操作

[sql] view plaincopyprint?
  1. SQL> startup   
  2. ORACLE 例程已经启动。  
  3.   
  4. Total System Global Area  167772160 bytes  
  5. Fixed Size                  1266392 bytes  
  6. Variable Size              62917928 bytes  
  7. Database Buffers          100663296 bytes  
  8. Redo Buffers                2924544 bytes  
  9. 数据库装载完毕。  
  10. ORA-01589: 要打开数据库则必须使用 RESETLOGS 或 NORESETLOGS 选项  
  11.   
  12. SQL> select status from v$instance;  
  13.   
  14. STATUS  
  15. ------------  
  16. MOUNTED  
  17.   
  18. SQL> select * from v$log;  
  19.   
  20.     GROUP#    THREAD#  SEQUENCE#      BYTES    MEMBERS ARC STATUS           FIRST_CHANGE# FIRST_TIME  
  21. ---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- --------------  
  22.          1          1         13   52428800          1 YES INACTIVE                474583 10-10月-11  
  23.          3          1         12   52428800          1 YES INACTIVE                474581 10-10月-11  
  24.          2          1         14   52428800          1 NO  CURRENT                 474585 10-10月-11  
  25.   
  26. SQL> select member from v$logfile;  
  27.   
  28. MEMBER  
  29. --------------------------------------------------------------------------------  
  30. /u01/app/oracle/oradata/orcl/redo03.log  
  31. /u01/app/oracle/oradata/orcl/redo02.log  
  32. /u01/app/oracle/oradata/orcl/redo01.log  
  33.   
  34. SQL> recover database using backup controlfile;  
  35. ORA-00279: 更改 474585 (在 10/10/2011 01:15:57 生成) 对于线程 1 是必需的  
  36. ORA-00289: 建议: /u01/app/oracle/flash_recovery_area/ORCL/archivelog/2011_10_10/o1_mf_1_14_%u_.arc  
  37. ORA-00280: 更改 474585 (用于线程 1) 在序列 #14 中  
  38.   
  39.   
  40. 指定日志: {<RET>=suggested | filename | AUTO | CANCEL}  
  41. /u01/app/oracle/oradata/orcl/redo02.log  
  42. 已应用的日志。  
  43. 完成介质恢复。  
  44.   
  45. SQL> alter database open resetlogs;  
  46.   
  47. 数据库已更改。  
  48.   
  49. SQL> select status from v$instance;  
  50.   
  51. STATUS  
  52. ------------  
  53. OPEN  
  54.   
  55. SQL> conn u1/u1  
  56. 已连接。  
  57. SQL> select * from t;  
  58.   
  59.         ID VALUE  
  60. ---------- ----------  
  61.          1 a  
0 0
原创粉丝点击