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

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1837|回复: 0
打印 上一主题 下一主题

[Oracle] 数据库控制文件全部丢失处理方法

[复制链接]
跳转到指定楼层
楼主
发表于 2021-11-7 19:12:01 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
一、测试环境
数据库版本: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

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 支持支持 反对反对
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|手机版|小黑屋|重庆思庄Oracle、Redhat认证学习论坛 ( 渝ICP备12004239号-4 )

GMT+8, 2024-11-7 20:54 , Processed in 0.104289 second(s), 20 queries .

重庆思庄学习中心论坛-重庆思庄科技有限公司论坛

© 2001-2020

快速回复 返回顶部 返回列表