一:情景再现,假设我的
数据库
是实例为orcl2,环境window,oracle版本
Oracle
Database
10g
Enterprise Edition Release 10.2.0.3.0
1. shutdown immediate 关闭数据库
2. 手工删除所有的日志文件,只保持控制文件和数据文件
3. 删除跟实例相关的文件夹和文件:
(admin文件夹下的名叫orcl2文件夹,oradata文件夹下的orcl2文件夹,database文件夹下的关于orcl2的初始化文件pfile和spfile,口令文件PWDorcl2)
4. 删除实例 orcl2
oradim -delete -sid orcl2
二:数据库 恢复
1. 创建实例
oradim -new -sid orcl2
2. 编辑初始化参数文件(可以拷贝一份可用数据库的初始化参数文件,并进行部分修改,比如控制文件等的存放位置),并重命名为INITorcl2.ora
3. 创建相应的目录结构,设置oracle_sid=orcl2,连接到空闲例程 sqlplus / as sysdba,并启动实例 startup nomount pfile = F:\oracle\product\10.2.0\db_1\database\INITorcl2.ora
4. 创建口令验证文件(orapwd file='' password=sys entries=1) --注意:file不能有引号,同时file=F:\oracle\product\10.2.0\db_1\database\PWDorcl2.ora这个话'='两边不能有空格(space)
$orapwd file=F:\oracle\product\10.2.0\db_1\database\PWDorcl2.ora password=sa entries=1
5. 将控制文件copy至oradata/orcl2/文件夹下,再将数据库启动到mount状态
alter database mount;
6. 查看v$log表
SYS@orcl2>select group#,archived,status from v$log;
GROUP# ARC STATUS
---------- --- ----------------
1 YES UNUSED
3 NO CURRENT
2 YES UNUSED
可以先clear 1号和2号redo日志文件,创建出1号组和2号组的日志文件,因为3号组日志文件是current的,所以不能用以下语句恢复。
alter database clear logfile group 1;
alter database clear logfile group 2;
7. 打印出控制文件创建语句
alter database backup controlfile to trace;
之后到admin\orcl2\udump文件夹下查看trace文件中控制文件的内容,并复制
8. 关闭数据库,再启动数据库到nomount状态,用以上复制的内容重建控制文件。
CREATE CONTROLFILE REUSE DATABASE "ORCL2" RESETLOGS ARCHIVELOG
MAXLOGFILES 32
MAXLOGMEMBERS 2
MAXDATAFILES 32
MAXINSTANCES 16
MAXLOGHISTORY 1752
LOGFILE
GROUP 1 (
'F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL2\REDOLOG0101.LOG',
'F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL2\REDOLOG0102.LOG'
) SIZE 10M,
GROUP 2 (
'F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL2\REDOLOG0201.LOG',
'F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL2\REDOLOG0202.LOG'
) SIZE 10M,
GROUP 3 (
'F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL2\REDOLOG0301.LOG',
'F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL2\REDOLOG0302.LOG'
) SIZE 10M
-- STANDBY LOGFILE
DATAFILE
'F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL2\SYSTEM01.DBF',
'F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL2\UNDO01.DBF',
'F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL2\SYSAUX01.DBF',
'F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL2\USERS01.DBF',
'F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL2\TEST01.DBF'
CHARACTER SET ZHS16GBK
;
9.开启数据库:alter database open resetlogs; 创建出current状态的重做日志文件。
1. shutdown immediate 关闭数据库
2. 手工删除所有的日志文件,只保持控制文件和数据文件
3. 删除跟实例相关的文件夹和文件:
(admin文件夹下的名叫orcl2文件夹,oradata文件夹下的orcl2文件夹,database文件夹下的关于orcl2的初始化文件pfile和spfile,口令文件PWDorcl2)
4. 删除实例 orcl2
oradim -delete -sid orcl2
二:数据库 恢复
1. 创建实例
oradim -new -sid orcl2
2. 编辑初始化参数文件(可以拷贝一份可用数据库的初始化参数文件,并进行部分修改,比如控制文件等的存放位置),并重命名为INITorcl2.ora
3. 创建相应的目录结构,设置oracle_sid=orcl2,连接到空闲例程 sqlplus / as sysdba,并启动实例 startup nomount pfile = F:\oracle\product\10.2.0\db_1\database\INITorcl2.ora
4. 创建口令验证文件(orapwd file='' password=sys entries=1) --注意:file不能有引号,同时file=F:\oracle\product\10.2.0\db_1\database\PWDorcl2.ora这个话'='两边不能有空格(space)
$orapwd file=F:\oracle\product\10.2.0\db_1\database\PWDorcl2.ora password=sa entries=1
5. 将控制文件copy至oradata/orcl2/文件夹下,再将数据库启动到mount状态
alter database mount;
6. 查看v$log表
SYS@orcl2>select group#,archived,status from v$log;
GROUP# ARC STATUS
---------- --- ----------------
1 YES UNUSED
3 NO CURRENT
2 YES UNUSED
可以先clear 1号和2号redo日志文件,创建出1号组和2号组的日志文件,因为3号组日志文件是current的,所以不能用以下语句恢复。
alter database clear logfile group 1;
alter database clear logfile group 2;
7. 打印出控制文件创建语句
alter database backup controlfile to trace;
之后到admin\orcl2\udump文件夹下查看trace文件中控制文件的内容,并复制
8. 关闭数据库,再启动数据库到nomount状态,用以上复制的内容重建控制文件。
CREATE CONTROLFILE REUSE DATABASE "ORCL2" RESETLOGS ARCHIVELOG
MAXLOGFILES 32
MAXLOGMEMBERS 2
MAXDATAFILES 32
MAXINSTANCES 16
MAXLOGHISTORY 1752
LOGFILE
GROUP 1 (
'F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL2\REDOLOG0101.LOG',
'F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL2\REDOLOG0102.LOG'
) SIZE 10M,
GROUP 2 (
'F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL2\REDOLOG0201.LOG',
'F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL2\REDOLOG0202.LOG'
) SIZE 10M,
GROUP 3 (
'F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL2\REDOLOG0301.LOG',
'F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL2\REDOLOG0302.LOG'
) SIZE 10M
-- STANDBY LOGFILE
DATAFILE
'F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL2\SYSTEM01.DBF',
'F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL2\UNDO01.DBF',
'F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL2\SYSAUX01.DBF',
'F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL2\USERS01.DBF',
'F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL2\TEST01.DBF'
CHARACTER SET ZHS16GBK
;
9.开启数据库:alter database open resetlogs; 创建出current状态的重做日志文件。