在没有控制文件备份的情况下,重新创建控制文件也是其中一个选择。本文旨在帮助初学者学习之用,谢谢!!
在没有控制文件备份的情况下,重新创建控制文件也是其中一个选择。本文旨在帮助初学者学习之用,谢谢!!
如何恢复一个只有完好数据文件的数据库?
本文欲将此数据文件恢复成数据库tti,实例名tti
| $oracle_home=d:oracleora92 |
1、创建相关目录
d:oracleoradatatti --拷贝数据文件到此目录下,如果没有redolog文件,需要手工创建
| d:oracleadminttibdump d:oracleadmintticdump d:oracleadmintticreate d:oracleadminttipfile d:oracleadminttiudump |
2、创建初始化文件(本例的初始化文件d:oracleadminttipfileinit.ora)
可拷贝现有数据库的初始化文件进行修改,主要修改内容如下:
| db_name=tti background_dump_dest=d:oracleadminttibdump core_dump_dest=d:oracleadmintticdump timed_statistics=true user_dump_dest=d:oracleadminttiudump control_files=("d:oracleoradatatticontrol01.ctl", "d:oracleoradatatticontrol02.ctl", "d:oracleoradatatticontrol03.ctl") instance_name=tti dispatchers="(protocol=tcp) (service=ttixdb)" |
3、创建实例及密码文件
|
开始-〉执行-〉cmd d:>orapwd.exe file=d:oracleora92databasepwdtti.ora password=zlw001 |
4、添加监听和连接
1)在d:oracleora92networkadminlistener.ora中的sid_list_listener下面添加如下内容:
| (sid_desc = (global_dbname = tti) (oracle_home = d:oracleora92) (sid_name = tti) ) |
2)在d:oracleora92networkadmintnsnames.ora中添加如下内容:
(这里注意:如果你的d:oracleora92networkadminsqlnet.ora中的参数
names.default_domain = ###,则你的tnsnames.ora中下面的title那里也要改为tti.###)
tti = #title (description = (address_list = (address = (protocol = tcp)(host = mis011)(port = 1521)) ) (connect_data = (server = dedicated) (service_name = tti) ) ) |
5、开始重建控制文件
1)在类似的数据库(比如数据库名称"rman")上执行:
| alter database backup controlfile to trace; |
然后在d:oracleadminrmanudump下找到最新的trace文件,以文本方式打开,找到类似下面的一段话:
| startup nomount create controlfile reuse database "rman" noresetlogs archivelog -- set standby to maximize performance maxlogfiles 50 maxlogmembers 5 maxdatafiles 100 maxinstances 1 maxloghistory 226 logfile group 1 'd:oracleoradatarmanredo01.log' size 100m, group 2 'd:oracleoradatarmanredo02.log' size 100m, group 3 'd:oracleoradatarmanredo03.log' size 100m -- standby logfile datafile 'd:oracleoradatarmansystem01.dbf', 'd:oracleoradatarmanundotbs01.dbf', 'd:oracleoradatarmancwmlite01.dbf', 'd:oracleoradatarmandrsys01.dbf', 'd:oracleoradatarmanexample01.dbf', 'd:oracleoradatarmanindx01.dbf', 'd:oracleoradatarmanodm01.dbf', 'd:oracleoradatarmantools01.dbf', 'd:oracleoradatarmanusers01.dbf', 'd:oracleoradatarmanxdb01.dbf', 'd:oracleoradatarmantest.ora' character set we8mswin1252 |
2)将上面这段话修改为如下:
| startup nomount create controlfile set database "tti" resetlogs --注意这里要"set" -- set standby to maximize performance maxlogfiles 50 maxlogmembers 5 maxdatafiles 100 maxinstances 1 maxloghistory 226 logfile group 1 'd:oracleoradatattiredo01.log' size 100m, group 2 'd:oracleoradatattiredo02.log' size 100m, group 3 'd:oracleoradatattiredo03.log' size 100m -- standby logfile datafile 'd:oracleoradatattisystem01.dbf', 'd:oracleoradatattiundotbs01.dbf', 'd:oracleoradatatticwmlite01.dbf', 'd:oracleoradatattidrsys01.dbf', 'd:oracleoradatattiexample01.dbf', 'd:oracleoradatattiindx01.dbf', 'd:oracleoradatattiodm01.dbf', 'd:oracleoradatattitools01.dbf', 'd:oracleoradatattiusers01.dbf', 'd:oracleoradatattixdb01.dbf', 'd:oracleoradatattitest.ora' character set we8mswin1252 |
3)开始重建控制文件
|
d:>sqlplus/nolog sql*plus: release 9.2.0.1.0 - production on thu nov 16 09:08:19 2006 copyright (c) 1982, 2002, oracle corporation. all rights reserved. sql> conn sys/zlw001@tti as sysdba; total system global area 135338868 bytes control file created. sql> alter database open resetlogs; database altered. sql> select instance_name,status from v$instance; instance_name status sql> select ts#,name from v$datafile; file# name
sql> |
至此全部结束!

闽公网安备 35060202000074号