使用db结构变化前的controlfile文本来恢复数据库
// 创建新的表空i
17:22:45 sys@LEE2>select file_name,tablespace_name
17:37:14 2 from dba_data_files;
FILE_NAME
----------------------------------------------------------------------------------------------------
--------------------------------------------------
TABLESPACE_NAME
------------------------------
E:\ORACLE\PRODUCT\10.2.0\ORADATA\LEE2\USERS02.DBF
USERS
E:\ORACLE\PRODUCT\10.2.0\ORADATA\LEE2\SYSTEM02.DBF
SYSTEM
E:\ORACLE\PRODUCT\10.2.0\ORADATA\LEE2\SYSAUX02.DBF
SYSAUX
E:\ORACLE\PRODUCT\10.2.0\ORADATA\LEE2_01.DBF
TEST_EXP
E:\ORACLE\PRODUCT\10.2.0\ORADATA\LEE2.DBF
TEST_EXP
E:\ORACLE\PRODUCT\10.2.0\ORADATA\LEE2\LEE01.DBF
LEE
E:\ORACLE\PRODUCT\10.2.0\ORADATA\LEE2\USERS01.DBF
USERS
E:\ORACLE\PRODUCT\10.2.0\ORADATA\LEE2\SYSAUX01.DBF
SYSAUX
E:\ORACLE\PRODUCT\10.2.0\ORADATA\LEE2\UNDOTBS01.DBF
UNDOTBS1
E:\ORACLE\PRODUCT\10.2.0\ORADATA\LEE2\SYSTEM01.DBF
SYSTEM
已选择10行。
已用时间: 00: 00: 00.09
20:30:47 sys@LEE2>create tablespace lee2
20:30:58 2 datafile'E:\ORACLE\PRODUCT\10.2.0\ORADATA\LEE2\lee2.dbf' size 5m;
表空间已创建。
已用时间: 00: 00: 01.40
20:31:23 sys@LEE2>
// 关闭db,模拟控制文件丢失,并用上次db结构没有改变时的controlfile 文本来重建,恢复
20:45:25 sys@LEE2>shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
20:55:07 sys@LEE2>startup force
ORA-32004: obsolete and/or deprecated parameter(s) specified
ORACLE 例程已经启动。
Total System Global Area 440401920 bytes
Fixed Size 1249440 bytes
Variable Size 109055840 bytes
Database Buffers 322961408 bytes
Redo Buffers 7135232 bytes
ORA-00205: ?????????, ??????, ???????
20:56:28 sys@LEE2>shutdown immediate
ORA-01507: ??????
ORACLE 例程已经关闭。
20:56:41 sys@LEE2>startup nomount
ORA-32004: obsolete and/or deprecated parameter(s) specified
ORACLE 例程已经启动。
Total System Global Area 440401920 bytes
Fixed Size 1249440 bytes
Variable Size 109055840 bytes
Database Buffers 322961408 bytes
Redo Buffers 7135232 bytes
20:56:50 sys@LEE2>CREATE CONTROLFILE REUSE DATABASE "LEE2" NORESETLOGS ARCHIVELOG
20:57:28 2 MAXLOGFILES 16
20:57:28 3 MAXLOGMEMBERS 3
20:57:28 4 MAXDATAFILES 100
20:57:28 5 MAXINSTANCES 8
20:57:28 6 MAXLOGHISTORY 292
20:57:28 7 LOGFILE
20:57:28 8 GROUP 1 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\LEE2\REDO01.LOG' SIZE 50M,
20:57:28 9 GROUP 2 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\LEE2\REDO02.LOG' SIZE 50M,
20:57:29 10 GROUP 3 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\LEE2\REDO03.LOG' SIZE 50M
20:57:29 11 -- STANDBY LOGFILE
20:57:29 12 DATAFILE
20:57:29 13 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\LEE2\SYSTEM01.DBF',
20:57:29 14 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\LEE2\UNDOTBS01.DBF',
20:57:29 15 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\LEE2\SYSAUX01.DBF',
20:57:29 16 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\LEE2\USERS01.DBF',
20:57:29 17 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\LEE2\LEE01.DBF',
20:57:29 18 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\LEE2.DBF',
20:57:29 19 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\LEE2_01.DBF',
20:57:29 20 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\LEE2\SYSAUX02.DBF',
20:57:29 21 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\LEE2\SYSTEM02.DBF',
20:57:29 22 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\LEE2\USERS02.DBF'
20:57:29 23 CHARACTER SET ZHS16GBK
20:57:29 24 ;
控制文件已创建。
已用时间: 00: 00: 02.56
20:57:32 sys@LEE2>recover database
ORA-00283: ??????????
ORA-00264: ?????
20:58:32 sys@LEE2>alter system archive log all;
系统已更改。
已用时间: 00: 00: 03.23
20:59:03 sys@LEE2>alter database open;
数据库已更改。
已用时间: 00: 00: 13.95
20:59:28 sys@LEE2>select * from v$log;
GROUP# THREAD# SEQUENCE# BYTES MEMBERS ARC STATUS FIRST_CHANGE# FIRST_TIME
---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- ----------
----
1 1 5 52428800 1 YES INACTIVE 1480636 30-6? -08
2 1 4 52428800 1 YES INACTIVE 1448332 30-6? -08
3 1 6 52428800 1 NO CURRENT 1481778 30-6? -08
//发现db 不可识别的文件
已用时间: 00: 00: 00.04
20:59:40 sys@LEE2>select tablespace_name,file_name
20:59:53 2 from dba_data_files;
TABLESPACE_NAME
------------------------------
FILE_NAME
----------------------------------------------------------------------------------------------------
--------------------------------------------------
USERS
E:\ORACLE\PRODUCT\10.2.0\ORADATA\LEE2\USERS02.DBF
SYSTEM
E:\ORACLE\PRODUCT\10.2.0\ORADATA\LEE2\SYSTEM02.DBF
SYSAUX
E:\ORACLE\PRODUCT\10.2.0\ORADATA\LEE2\SYSAUX02.DBF
TEST_EXP
E:\ORACLE\PRODUCT\10.2.0\ORADATA\LEE2_01.DBF
TEST_EXP
E:\ORACLE\PRODUCT\10.2.0\ORADATA\LEE2.DBF
LEE
E:\ORACLE\PRODUCT\10.2.0\ORADATA\LEE2\LEE01.DBF
USERS
E:\ORACLE\PRODUCT\10.2.0\ORADATA\LEE2\USERS01.DBF
SYSAUX
E:\ORACLE\PRODUCT\10.2.0\ORADATA\LEE2\SYSAUX01.DBF
UNDOTBS1
E:\ORACLE\PRODUCT\10.2.0\ORADATA\LEE2\UNDOTBS01.DBF
SYSTEM
E:\ORACLE\PRODUCT\10.2.0\ORADATA\LEE2\SYSTEM01.DBF
LEE2
E:\ORACLE\PRODUCT\10.2.0\DB_1\DATABASE\MISSING00011
已选择11行。
已用时间: 00: 00: 00.12
20:59:58 sys@LEE2>
//查看 警告日志:
Dictionary check beginning
Tablespace 'TEMP' #3 found in data dictionary,
but not in the controlfile. Adding to controlfile.
Tablespace 'LEE2' #8 found in data dictionary,
but not in the controlfile. Adding to controlfile.
File #11 found in data dictionary but not in controlfile.
Creating OFFLINE file 'MISSING00011' in the controlfile.
Dictionary check complete
Mon Jun 30 20:59:17 2008
SMON: enabling tx recovery
Mon Jun 30 20:59:17 2008
*********************************************************************
WARNING: The following temporary tablespaces contain no files.
This condition can occur when a backup controlfile has
been restored. It may be necessary to add files to these
tablespaces. That can be done using the SQL statement:
ALTER TABLESPACE ADD TEMPFILE
Alternatively, if these temporary tablespaces are no longer
needed, then they can be dropped.
Empty temporary tablespace: TEMP
*********************************************************************
Database Characterset is ZHS16GBK
这个时候有两件事情要做:
1. 让db 数据字典识别 lee2.dbf
2. 给temp临时表空间增减datafile
//Go:
21:14:22 sys@LEE2>alter database rename file 'E:\ORACLE\PRODUCT\10.2.0\DB_1\DATABASE\MISSING00011'
21:14:39 2 to 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\LEE2\LEE2.DBF';
数据库已更改。
已用时间: 00: 00: 00.14
21:14:42 sys@LEE2>select tablespace_name,file_name
21:15:10 2 from dba_data_files;
TABLESPACE_NAME
------------------------------
FILE_NAME
----------------------------------------------------------------------------------------------------
--------------------------------------------------
USERS
E:\ORACLE\PRODUCT\10.2.0\ORADATA\LEE2\USERS02.DBF
SYSTEM
E:\ORACLE\PRODUCT\10.2.0\ORADATA\LEE2\SYSTEM02.DBF
SYSAUX
E:\ORACLE\PRODUCT\10.2.0\ORADATA\LEE2\SYSAUX02.DBF
TEST_EXP
E:\ORACLE\PRODUCT\10.2.0\ORADATA\LEE2_01.DBF
TEST_EXP
E:\ORACLE\PRODUCT\10.2.0\ORADATA\LEE2.DBF
LEE
E:\ORACLE\PRODUCT\10.2.0\ORADATA\LEE2\LEE01.DBF
USERS
E:\ORACLE\PRODUCT\10.2.0\ORADATA\LEE2\USERS01.DBF
SYSAUX
E:\ORACLE\PRODUCT\10.2.0\ORADATA\LEE2\SYSAUX01.DBF
UNDOTBS1
E:\ORACLE\PRODUCT\10.2.0\ORADATA\LEE2\UNDOTBS01.DBF
SYSTEM
E:\ORACLE\PRODUCT\10.2.0\ORADATA\LEE2\SYSTEM01.DBF
LEE2
E:\ORACLE\PRODUCT\10.2.0\ORADATA\LEE2\LEE2.DBF
已选择11行。
// 完成1. 开始2
21:18:22 sys@LEE2>startup force
ORA-32004: obsolete and/or deprecated parameter(s) specified
ORACLE 例程已经启动。
Total System Global Area 440401920 bytes
Fixed Size 1249440 bytes
Variable Size 113250144 bytes
Database Buffers 318767104 bytes
Redo Buffers 7135232 bytes
数据库装载完毕。
数据库已经打开。
21:19:51 sys@LEE2>alter tablespace temp add tempfile
21:20:29 2 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\lee2\temp.dbf';
alter tablespace temp add tempfile
*
第 1 行出现错误:
ORA-01119: 创建数据库文件 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\lee2\temp.dbf' 时出错
ORA-17610: 文件 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\lee2\temp.dbf' 不存在, 大小也未指定
ORA-27041: 无法打开文件
OSD-04002: 无法打开文件
O/S-Error: (OS 2) 系统找不到指定的文件。
已用时间: 00: 00: 00.28
21:21:33 sys@LEE2>alter tablespace temp add tempfile
21:22:03 2 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\lee2\temp01.dbf';
表空间已更改。
已用时间: 00: 00: 00.28
21:22:09 sys@LEE2>startup force
ORA-32004: obsolete and/or deprecated parameter(s) specified
ORACLE 例程已经启动。
Total System Global Area 440401920 bytes
Fixed Size 1249440 bytes
Variable Size 117444448 bytes
Database Buffers 314572800 bytes
Redo Buffers 7135232 bytes
数据库装载完毕。
数据库已经打开。
21:22:40 sys@LEE2>
//---------------------恢复正常
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/11134734/viewspace-366476/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/11134734/viewspace-366476/