如何恢复一个只有完好数据文件的数据库?
2007-03-05 11:52
721 查看
在没有控制文件备份的情况下,重新创建控制文件也是其中一个选择。本文旨在帮助初学者学习之用,谢谢!!
如何恢复一个只有完好数据文件的数据库?
本文欲将此数据文件恢复成数据库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文件,以文本方式打开,找到类似下面的一段话:
<iframe name="google_ads_frame" marginwidth="0" marginheight="0" src="http://pagead2.googlesyndication.com/pagead/ads?client=ca-pub-1572879403720716&dt=1173066663984&hl=zh-CN&lmt=1165263495&alternate_ad_url=http%3A%2F%2Fwww.pcdog.com%2F0000js%2Fgoogle336.htm&format=336x280_as&output=html&channel=6686853775&url=http%3A%2F%2Fwww.pcdog.com%2Fedu%2Foracle%2F2006%2F11%2Fs175094_2.html&color_bg=FFFFFF&color_text=000000&color_link=0000ff&color_url=008000&color_border=FFFFFF&ad_type=text_image&ref=http%3A%2F%2Fwww.pcdog.com%2Fedu%2Foracle%2F2006%2F11%2Fs175094.html&cc=29&u_h=768&u_w=1024&u_ah=738&u_aw=1024&u_cd=32&u_tz=480&u_his=1&u_java=true" frameborder="0" width="336" scrolling="no" height="280" allowtransparency="allowtransparency"></iframe>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>
至此全部结束!
如何恢复一个只有完好数据文件的数据库?
本文欲将此数据文件恢复成数据库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文件,以文本方式打开,找到类似下面的一段话:
<iframe name="google_ads_frame" marginwidth="0" marginheight="0" src="http://pagead2.googlesyndication.com/pagead/ads?client=ca-pub-1572879403720716&dt=1173066663984&hl=zh-CN&lmt=1165263495&alternate_ad_url=http%3A%2F%2Fwww.pcdog.com%2F0000js%2Fgoogle336.htm&format=336x280_as&output=html&channel=6686853775&url=http%3A%2F%2Fwww.pcdog.com%2Fedu%2Foracle%2F2006%2F11%2Fs175094_2.html&color_bg=FFFFFF&color_text=000000&color_link=0000ff&color_url=008000&color_border=FFFFFF&ad_type=text_image&ref=http%3A%2F%2Fwww.pcdog.com%2Fedu%2Foracle%2F2006%2F11%2Fs175094.html&cc=29&u_h=768&u_w=1024&u_ah=738&u_aw=1024&u_cd=32&u_tz=480&u_his=1&u_java=true" frameborder="0" width="336" scrolling="no" height="280" allowtransparency="allowtransparency"></iframe>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>
至此全部结束!
相关文章推荐
- 如何恢复一个只有完好数据文件的Oracle数据库?
- 只有一个ibd文件如何恢复数据表
- mysql从只有一个备份文件(多个数据库的备份)中恢复数据到指定数据库
- 如何恢复只有完好数据文件的oracle数据库
- 如何恢复只有完好数据文件的Sybase数据库
- 只有一个ibd文件如何恢复数据表
- 如何从完好的数据文件恢复oracle数据库
- 只有mdf和ldf文件,甚至只有mdf文件,如何恢复数据库
- 没有备份、只有归档日志,如何恢复数据文件?
- 数据库只有mdf文件而没有ldf文件,如何恢复数据库 .
- SqlServer_SqlServer恢复数据:如何通过mdf文件和ldf文件来恢复数据库;
- 恢复只有一个mdf文件的数据库
- 没有备份、只有归档日志,如何恢复数据文件?
- 没有备份、只有归档日志,如何恢复数据文件?
- 如何从完好的数据文件恢复oracle数据库
- SQLServer2005 没有日志文件(*.ldf) 只有数据文件(*.mdf) 恢复数据库的方法
- 只有MDF文件如何恢复数据库
- 如何恢复数据库-缺失了数据文件,存在所有的归档
- 数据库只有mdf文件而没有ldf文件,如何恢复数据库
- SQL恢复master数据库方法 只有mdf文件的数据库如何恢复