服务热线:13616026886

技术文档 欢迎使用技术文档,我们为你提供从新手到专业开发者的所有资源,你也可以通过它日益精进

位置:首页 > 技术文档 > 数据库技术 > Oracle技术 > DBA > 查看文档

如何恢复只有完好数据文件的数据库

  在没有控制文件备份的情况下,重新创建控制文件也是其中一个选择。本文旨在帮助初学者学习之用,谢谢!!

  在没有控制文件备份的情况下,重新创建控制文件也是其中一个选择。本文旨在帮助初学者学习之用,谢谢!!

  如何恢复一个只有完好数据文件的数据库?

  本文欲将此数据文件恢复成数据库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:>oradim.exe -new -sid tti -startmode m

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;
connected to an idle instance.
sql> startup nomount pfile=d:oracleadminttipfileinit.ora;
oracle instance started.

total system global area 135338868 bytes
fixed size 453492 bytes
variable size 109051904 bytes
database buffers 25165824 bytes
redo buffers 667648 bytes
sql> create controlfile set database "tti" resetlogs
2 -- set standby to maximize performance
3 maxlogfiles 50
4 maxlogmembers 5
5 maxdatafiles 100
6 maxinstances 1
7 maxloghistory 226
8 logfile
9 group 1 'd:oracleoradatattiredo01.log' size 100m,
10 group 2 'd:oracleoradatattiredo02.log' size 100m,
11 group 3 'd:oracleoradatattiredo03.log' size 100m
12 -- standby logfile
13 datafile
14 'd:oracleoradatattisystem01.dbf',
15 'd:oracleoradatattiundotbs01.dbf',
16 'd:oracleoradatatticwmlite01.dbf',
17 'd:oracleoradatattidrsys01.dbf',
18 'd:oracleoradatattiexample01.dbf',
19 'd:oracleoradatattiindx01.dbf',
20 'd:oracleoradatattiodm01.dbf',
21 'd:oracleoradatattitools01.dbf',
22 'd:oracleoradatattiusers01.dbf',
23 'd:oracleoradatattixdb01.dbf',
24 'd:oracleoradatattitest.ora'
25 character set we8mswin1252;

control file created.

sql> alter database open resetlogs;

database altered.

sql> select instance_name,status from v$instance;

instance_name status
---------------- ------------
tti open

sql> select ts#,name from v$datafile;

file# name
--------- --------------------------------------------
1 d:oracleoradatattisystem01.dbf
2 d:oracleoradatattiundotbs01.dbf
3 d:oracleoradatatticwmlite01.dbf
4 d:oracleoradatattidrsys01.dbf
5 d:oracleoradatattiexample01.dbf
6 d:oracleoradatattiindx01.dbf
7 d:oracleoradatattiodm01.dbf
8 d:oracleoradatattitools01.dbf
9 d:oracleoradatattiusers01.dbf
10 d:oracleoradatattixdb01.dbf
11 d:oracleoradatattitest.ora


11 rows selected.

sql>

  至此全部结束!


  

扫描关注微信公众号