重建控制文件

1 说明

重建控制文件,只能在迫不得已的情况下使用。一般以下情况使用:

  • 1 All current copies of the control file have been lost or are corrupted.–所有控制文件都丢失或损坏
  • 2 You are restoring a backup in which the control file is corrupted or missing. --备份的空间损坏或丢失
  • 3 You need to change a hard limit database parameter in the controlfile. --需要修改控制文件中某个参数
  • 4 If you are moving your database to another server and files are located in a different location. —移动数据库到不同的目录下
  • 5 Oracle Customer Support advises you to. —Oracle官方给出的建议

2 方法

2.1 方法1

–备份控制文件

SQL> alter database backup controlfile to trace;

–查看TRACE文件生成路径

SQL> show parameter user_dump_dest
NAME      TYPE  VALUE
------------------------------------ ----------- ------------------------------
user_dump_dest      string  /u01/app/oracle/product/12.2.0/db_1/rdbms/log

[root@12cdg-p 12.2.0]# cd /u01/app/oracle/product/12.2.0/db_1/rdbms/log/
[root@12cdg-p log]# ls  -ltr --按时间排序
total 46
-rw-r----- 1 oracle oinstall  927 Aug 23 16:12 cndba_ora_3254.trc
-rw-r----- 1 oracle oinstall  927 Aug 23 16:13 cndba_ora_3450.trc
-rw-r----- 1 oracle oinstall  927 Aug 23 16:14 cndba_ora_3545.trc
-rw-r----- 1 oracle oinstall  120 Aug 23 16:15 qopatch.log
-rw-r----- 1 oracle oinstall  927 Aug 23 16:17 cndba_ora_4506.trc
-rw-r----- 1 oracle oinstall  927 Aug 23 16:18 cndba_ora_4938.trc
-rw-r----- 1 oracle oinstall  927 Aug 23 16:24 cndba_ora_5808.trc
-rw-r----- 1 oracle oinstall  927 Aug 30 18:15 cndba_ora_2471.trc
-rw-r----- 1 oracle oinstall  927 Aug 30 20:54 cndba_ora_3084.trc
-rw-r----- 1 oracle oinstall 5688 Aug 30 22:01 qopatch_log.log

2.2 方法2-更简单

SQL> alter database backup controlfile to trace;
Database altered.

SQL> oradebug setmypid;
Statement processed.

SQL> oradebug tracefile_name;
/u01/app/oracle/diag/rdbms/cndba_p/cndba/trace/cndba_ora_3168.trc

直接把这个文件里的创建语句复制出来根据实际情况稍加修改即可。

大概内容如下:

文件的部分内容:

CREATE CONTROLFILE REUSE DATABASE "CNDBA" NORESETLOGS  ARCHIVELOG
    MAXLOGFILES 16
    MAXLOGMEMBERS 3
    MAXDATAFILES 100
    MAXINSTANCES 8
    MAXLOGHISTORY 292
LOGFILE
  GROUP 1 (
    '/u01/app/oracle/oradata/CNDBA/onlinelog/o1_mf_1_dstgbrgr_.log',
    '/u01/app/oracle/fast_recovery_area/cndba/CNDBA/onlinelog/o1_mf_1_dstgc3ky_.log'
  ) SIZE 200M BLOCKSIZE 512,
  GROUP 2 (
    '/u01/app/oracle/oradata/CNDBA/onlinelog/o1_mf_2_dstgbrhj_.log',
    '/u01/app/oracle/fast_recovery_area/cndba/CNDBA/onlinelog/o1_mf_2_dstgc3k9_.log'
  ) SIZE 200M BLOCKSIZE 512,
  GROUP 3 (
    '/u01/app/oracle/oradata/CNDBA/onlinelog/o1_mf_3_dstgcgfh_.log',
    '/u01/app/oracle/fast_recovery_area/cndba/CNDBA/onlinelog/o1_mf_3_dstgcm91_.log'
  ) SIZE 200M BLOCKSIZE 512
-- STANDBY LOGFILE
DATAFILE
  '/u01/app/oracle/oradata/CNDBA/datafile/o1_mf_system_dstg7dv8_.dbf',
  '/u01/app/oracle/oradata/CNDBA/datafile/o1_mf_sysaux_dstg8tr7_.dbf',
  '/u01/app/oracle/oradata/CNDBA/datafile/o1_mf_undotbs1_dstg9mx9_.dbf',
  '/u01/app/oracle/oradata/CNDBA/datafile/o1_mf_users_dstg9q15_.dbf'
CHARACTER SET AL32UTF8;

2.3 重建控制文件

SQL> shutdown immediate;
SQL> startup nomount;
SQL>@control.sql--存放创建控制文件的SQL语句

注意:

  • 创建控制文件之后,手动添加temp file。
    如:alter tablespace temp_ts add tempfile '˜/oradata/V11/temp01.dbf’™ reuse;

  • 一旦通过RESETLOGS方式打开数据,那么尽快备份数据库。

当Oracle数据库的控制文件遭到损坏或丢失时,我们需要重建控制文件。下面是重建控制文件的步骤: 1. 首先,我们需要确保数据库处于关闭状态。如果数据库正在运行,我们需要停止所有相关进程,包括实例和监听器。 2. 找到数据库实例的初始化参数文件(通常是spfile或init.ora文件),此文件记录了数据库的配置信息和启动参数。确保备份此文件,以防止意外情况发生。 3. 打开一个编辑器,并创建一个新的SQL脚本文件,例如控制文件重建.sql,用于重建控制文件。 4. 在SQL脚本文件中,编写以下命令: ALTER DATABASE BACKUP CONTROLFILE TO TRACE; 这个命令将生成一个包含重建控制文件所需的语句的跟踪文件。 5. 关闭SQL脚本文件,并将其放置在$ORACLE_HOME/rdbms/admin目录中。 6. 启动数据库实例,但不要打开任何数据库。 7. 使用SQL*Plus以SYSDBA权限登录到数据库。 8. 运行以下命令加载步骤4中生成的跟踪文件: @?/rdbms/admin/控制文件重建.sql 这将执行所需的SQL语句,以重建控制文件。 9. 当脚本执行完成后,检查控制文件是否已经成功重建。你可以通过查询V$CONTROLFILE视图来检查。 10. 确认控制文件的完整性和正确性后,关闭数据库实例。 11. 最后,备份新生成的控制文件,以便将来遇到类似问题时可以快速恢复。 总结起来,重建Oracle控制文件涉及到备份初始化参数文件、创建包含重建语句的SQL脚本、加载脚本以重建控制文件,最后确认重建结果并备份新的控制文件。这些步骤将帮助我们成功重建控制文件,使数据库恢复正常运行。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值