重庆思庄Oracle、Redhat认证学习论坛

标题: 数据库控制文件全部丢失处理方法 [打印本页]

作者: 刘泽宇    时间: 2021-11-7 19:12
标题: 数据库控制文件全部丢失处理方法
一、测试环境
数据库版本:11.2.0.4
操作系统版本:CentOS Linuxrelease 7.9.2009 (Core)
数据库归档:未开启
备份情况:无任何备份
二、模拟控制文件丢失
1.      查看数据库控制文件路径
SQL>show parameter control
NAME                                 TYPE        VALUE
----------------------------------------------- ------------------------------
control_file_record_keep_time        integer     7
control_files                        string      /u01/app/oracle/oradata/orcl/c
                                                ontrol01.ctl, /u01/app/oracle/
                                                 fast_recovery_area/orcl/contro
                                                l02.ctl
control_management_pack_access       string      DIAGNOSTIC+TUNING
2.      关闭数据库
SQL>shutdown immediate
Databaseclosed.
Databasedismounted.
ORACLEinstance shut down.
3.      删除所有控制文件
4.      启动数据库报错
SQL>startup
ORACLEinstance started.
TotalSystem Global Area 1820540928 bytes
FixedSize                  2254184 bytes
VariableSize             503319192 bytes
DatabaseBuffers         1308622848 bytes
RedoBuffers                6344704 bytes
ORA-00205:error in identifying control file, check alert log for more info
三、处理方法
一)、如果及时发现了数据库还未关闭,则可以使用命令将重建控制文件的脚本输出到trace文件中,方便控制文件的重建操作
alter databasebackupcontrolfile to trace ;
二)、如果数据库已经关闭了发现控制文件丢失,那么需要重建控制文件
SQL>CREATE CONTROLFILE REUSE DATABASE "ORCL" NORESETLOGS ARCHIVELOG
  2 MAXLOGFILES 16
  3 MAXLOGMEMBERS 3
  4 MAXDATAFILES 100
  5 MAXINSTANCES 8
  6 MAXLOGHISTORY 292
  7 LOGFILE
  8 GROUP 1 '/u01/app/oracle/oradata/orcl/redo01.log' size 50M,
  9 GROUP 2 '/u01/app/oracle/oradata/orcl/redo02.log' size 50M,
10 GROUP 3 '/u01/app/oracle/oradata/orcl/redo03.log' size 50M
11 DATAFILE
12 '/u01/app/oracle/oradata/orcl/system01.dbf',
13 '/u01/app/oracle/oradata/orcl/sysaux01.dbf',
14  '/u01/app/oracle/oradata/orcl/undotbs01.dbf',
15 '/u01/app/oracle/oradata/orcl/users01.dbf',
16 '/u01/app/oracle/oradata/orcl/example01.dbf';
Controlfile created.
SQL>select status from v$instance ;
STATUS
------------
MOUNTED
打开数据库:
SQL>alter database open ;
Databasealtered.
查看临时文件情况:
SQL>select name from v$tempfile;
no rowsselected
添加临时文件:
SQL>ALTER TABLESPACE TEMP ADD TEMPFILE '/u01/app/oracle/oradata/orcl/temp01.dbf';
Tablespacealtered.
SQL>select name from v$tempfile;
NAME
--------------------------------------------------------------------------------
/u01/app/oracle/oradata/orcl/temp01.dbf
查看控制文件原路径下已经重新生成了控制文件
数据库状态正常:
SQL>select open_mode,database_role from v$database;
OPEN_MODE            DATABASE_ROLE
------------------------------------
READWRITE           PRIMARY






欢迎光临 重庆思庄Oracle、Redhat认证学习论坛 (http://bbs.cqsztech.com/) Powered by Discuz! X3.2