情况二 数据库崩溃,但是还剩下归档和redo log是好的。
启动归档
SQL>alter database archivelog;
System altered.
SQL> archive log list;
Database log mode No Archive Mode
Automatic archival Disabled
Archive destination USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence 7
Current log sequence 9
SQL>
重启数据库,归档就会自动启动。
启动自动备份控制文件
RMAN> configure controlfile autobackup on;
new RMAN configuration parameters:
CONFIGURE CONTROLFILE AUTOBACKUP ON;
new RMAN configuration parameters are successfully stored
配置RMAN的格式和存储位置。
RMAN> configure channel device type disk format ''F:\backup\%U'';
new RMAN configuration parameters:
CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT ''F:\backup\%U'';
new RMAN configuration parameters are successfully stored
查看数据文件的位置
SQL> select name from v$datafile;
确定原控制文件的路径
SQL> select name from v$controlfile;
查看log位置
SQL>select name from V$ARCHIVED_LOG;
查看log的信息
SQL>select * from v$log_history;
插入数据
SQL> select * from sss;
AA BB CC
---------- ---------- ---
aa bb cc
aa jj mm
vv ss tt
完全备份数据库
RMAN>backup data
再插入数据
SQL> select * from sss;
AA BB CC
---------- ---------- ---
aa bb cc
aa jj mm
vv ss tt
mm mm mm
用DBCA删除数据库,删除相关的数据文件,保留redo log和归档日志。
再用DBCA重建一个SID一样的数据库。
RMAN>startup
配置RMAN
RMAN> configure channel device type disk format ''F:\backup\%U''; //注意和原来的格式一样。
new RMAN configuration parameters:
CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT ''F:\backup\%U'';
new RMAN configuration parameters are successfully stored
RMAN>startup nomount
RMAN>restore controlfile to ''/opt/oracle/oradata/control01.ctl'' from autobackup;
再copy几份和原来一样的路径文件名。
RMAN>shutdown immediate
RMAN> startup mount
connected to target database (not started)
Oracle instance started
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of startup command at 08/03/2005 19:55:46
ORA-01991: invalid password file ''F:\oracle\product.1.0\Db_1\DATABASE\PWDtest.ORA''
重建本地认证文件
C:\>orapwd file=F:\oracle\product.1.0\Db_1\DATABASE\PWDtest.ORA password=123456 entries=2;
RMAN>shutdown immediate
RMAN> startup mount
database is already started
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of startup command at 08/03/2005 20:00:30
RMAN-06189: current DBID 1863531774 does not match target mounted database (1862908416)
RMAN>
重新设置DBID
RMAN> set DBID=1862908416
executing command: SET DBID
RMAN> startup mount
database is already started
RMAN> restore database;
RMAN> recover database;
Starting recover at 03-8月 -05
using channel ORA_DISK_1
starting media recovery
archive log thread 1 sequence 1 is already on disk as file F:\ORACLE\PRODUCT.1.0\FLASH_RECOVERY_AREA\TEST\ARCHIVELOG\
2005_08_03\O1_MF_1_1_1H2D39KL_.ARC
archive log thread 1 sequence 2 is already on disk as file F:\ORACLE\PRODUCT.1.0\ORADATA\TEST\REDO02.LOG
archive log thread 1 sequence 3 is already on disk as file F:\ORACLE\PRODUCT.1.0\ORADATA\TEST\REDO03.LOG
archive log thread 1 sequence 4 is already on disk as file F:\ORACLE\PRODUCT.1.0\ORADATA\TEST\REDO01.LOG
archive log filename=F:\ORACLE\PRODUCT.1.0\FLASH_RECOVERY_AREA\TEST\ARCHIVELOG05_08_03\O1_MF_1_1_1H2D39KL_.ARC thr
ead=1 sequence=1
archive log filename=F:\ORACLE\PRODUCT.1.0\ORADATA\TEST\REDO02.LOG thread=1 sequence=2
archive log filename=F:\ORACLE\PRODUCT.1.0\ORADATA\TEST\REDO03.LOG thread=1 sequence=3
archive log filename=F:\ORACLE\PRODUCT.1.0\ORADATA\TEST\REDO01.LOG thread=1 sequence=4
media recovery complete
Finished recover at 03-8月 -05
RMAN>
由于控制文件是用备份还原的需要resetlogs打开。
SQL> alter database open resetlogs;
SQL> select * from sss;
AA BB CC
---------- ---------- ---
aa bb cc
aa jj mm
vv ss tt
mm mm mm //此行数据回来了,说明没有丢数据.