Oracle 11g重建控制文件――控制文件全部丢失,从零开始
粘贴出处:http://blog.csdn.net/xiaobluesky/article/details/49718757写的很好,解决我的需求 控制文件(control file)是一个相当小的文件(最多能增长到64M左右),其中包含Oracle需要的其他文件的一个目录。参数文件告知实例控制文件的位置,控制文件则告知示例数据库和在线重做日志文件的位置。控制文件还告知了Oracle其他一些事情,如已发生检查点的有关信息、数据库名(必须和db_name参数匹配)、创建数据库的时间戳、归档重做日志的历史(有时这会让控制文件变大)、RMAN信息等。 1.环境准备数据库版本我们在Oracle11g中进行测试。 点击(此处)折叠或打开
删除控制文件1.通过查询control_files初始化参数,获取控制文件路径; 点击(此处)折叠或打开
点击(此处)折叠或打开
3.此时,强制关闭数据库,然后重启数据库,报ORA-00205错误。需要注意的是,此时执行shutdown immediate命令,数据库无法正常关闭,只能关闭到mounted状态;需要使用shutdown abort命令强制关闭数据库。 点击(此处)折叠或打开
2.获取数据库名首先生成文本格式的参数文件; Filecreated. SQL> 打开参数文件,查看db_name参数值,即为数据库名称。 HOEGH.__db_cache_size=419430400 HOEGH.__java_pool_size=4194304 HOEGH.__large_pool_size.__oracle_base='/u01/app/oracle'#ORACLE_BASEsetfromenvironment HOEGH.__pga_aggregate_target=377487360 HOEGH.__sga_target=566231040 HOEGH.__shared_io_pool_size=0 HOEGH.__shared_pool_size=130023424 HOEGH.__streams_pool_size=0 .audit_file_dest'/u01/app/oracle/admin/HOEGH/adump' .audit_trail'db' .compatible'11.2.0.0.0' .control_files'/u01/app/oracle/oradata/HOEGH/control01.ctl''/u01/app/oracle/oradata/HOEGH/control02.ctl' .db_block_size=8192 .db_domain'' *.db_name='HOEGH' .diagnostic_dest'/u01/app/oracle' .dispatchers'(PROTOCOL=TCP) (SERVICE=HOEGHXDB)' .memory_max_target=943718400 .memory_target.open_cursors=300 .processes=150 .remote_login_passwordfile'EXCLUSIVE' .undo_tablespace'UNDOTBS1' $
由于需要执行查询语句selectuserenv('language')fromdual;来获取字符集,因此需要将数据库启动到nomount状态。 ORACLE instance startedDatabaseBuffers 419430400 bytes Redo Buffers 4919296 bytes SQLselectuserenv('language')fromdualUSERENV('LANGUAGE') ---------------------------------------------------- AMERICAN_AMERICAUS7ASCII SQL> 4.获取数据文件名称通过ls命令获取数据文件列表。 点击(此处)折叠或打开
5.生成创建控制文件脚本这样,创建控制文件所需的基本信息都已经有了,我们来生成创建控制文件脚本。 CREATECONTROLFILE REUSEDATABASE"HOEGH"NORESETLOGS ARCHIVELOG MAXLOGFILES 5 MAXLOGMEMBERS 3 MAXDATAFILES 100 MAXINSTANCES 1 MAXLOGHISTORY 226 LOGFILE GROUP1'/u01/app/oracle/oradata/HOEGH/redo01.log'SIZE50MGROUP2'/u01/app/oracle/oradata/HOEGH/redo02.log'GROUP3'/u01/app/oracle/oradata/HOEGH/redo03.log'SIZE50M DATAFILE '/u01/app/oracle/oradata/HOEGH/system01.dbf''/u01/app/oracle/oradata/HOEGH/sysaux01.dbf''/u01/app/oracle/oradata/HOEGH/undotbs01.dbf''/u01/app/oracle/oradata/HOEGH/users01.dbf''/u01/app/oracle/oradata/HOEGH/example01.dbf''/u01/app/oracle/oradata/HOEGH/temp01.dbf' CHARACTERSETUS7ASCII ; 6.重建控制文件需要注意的是,在执行上述创建脚本时会报错,系统提示临时文件不属于数据文件,如下所示: ORA-01081:cannotstartalready-running ORACLE-shut it down first "HOEGH"NORESETLOGS ARCHIVELOG * ERROR at line 1: ORA-01503CREATECONTROLFILE failed 01160isnotadatafile ORA-01110data'/u01/app/oracle/oradata/HOEGH/temp01.dbf' SQL修改脚本并重新执行,重建控制文件后,数据库会打开到mount状态。 ORACLE instance startedDatabaseBuffers 419430400 bytes Redo Buffers 4919296 bytes Controlfilecreated; STATUS ------------ MOUNTED SQL7.打开数据库
在打开数据库时,会报错,提示system01数据文件需要执行介质恢复,我们执行recover database即可。 SP2-0734:unknown command beginning"alater dat..."-restofline ignoredalter; databaseopen -01113file1 needs media recovery ORAfile1'/u01/app/oracle/oradata/HOEGH/system01.dbf' SQLrecoverdatabase; Media recovery completeDatabasealtered> SQL> select tablespace_name from dba_tablespaces; 8.总结下面总结一下重建控制文件的步骤: hoegh 15.05.30 -- The End -- 粘贴出处:http://blog.csdn.net/xiaobluesky/article/details/49718757 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |