empcard数据库备份恢复流程演练.docx
《empcard数据库备份恢复流程演练.docx》由会员分享,可在线阅读,更多相关《empcard数据库备份恢复流程演练.docx(18页珍藏版)》请在冰豆网上搜索。
empcard数据库备份恢复流程演练
empcard数据库备份恢复流程演练
1.复制数据库备份,控制文件备份,日志备份,Redo.log,
到备份目录E:
\OracleBackup\empcard\196BackupFile\
2.利用DataBaseConfigurationAssistant新建实例,
实例名称和SYS用户的密码保持和以前的一致。
注意设置rman的备份集的所在路径
更新rman的设置属性
3.关闭实例,连接到RMAN,执行SETDBID=原来的DBID,启动不要加载
从原来的rman备份的控制文件中取得数据库DBID
查看之前RMAN数据库备份控制文件命名中的DBID
E:
\OracleBackup\MYTEST\RmanBackupFile\
RMAN_BACKUP_CONTROLFILE_MYTEST_C-2483970197-20120607-00
DBID为文件名中的2483970197
rmantargetsys/abc123
showall;
shutdownimmediate;
setdbid=2484837015
startupnomount;
4.从备份文件中还原参数文件SPFILE
备份集中找不到SPfile,可能需要从依次里当前最接近的前一个控制文件的备份中恢复.
控制文件:
RMAN_BACKUP_CONTROLFILE_MYTEST_C-2483970197-20120607-00';
RMAN>
restorespfiletopfile'E:
\OracleBackup\EMPCARD\196BackupFile\EMPCARD_SPFILE.ORA'from'E:
\OracleBackup\empcard\196BackupFile\BACKUP_CONTROLFILE_EMPCARD_C-1714198115-20120610-00';
控制文件备份恢复参数文件成功
检查E:
\OracleBackup\MYTEST\RmanBackupFile\_SPFILE目录下已经有SPFILE存在
5.还原控制文件
从控制文件备份恢复控制文件
RMAN>
run
{
allocatechannelc1devicetypedisk;
restorecontrolfilefrom'E:
\OracleBackup\MYTEST\RmanBackupFile\RMAN_BACKUP_CONTROLFILE_MYTEST_C-2484823945-20120611-00';
}
查看SPfile内容,修改数据库路径,日志路径
恢复后的控制文件中的数据文件的路径不对,在后面需要修改。
RMAN>shutdownimmediate;
6.下面利用sqlplus来创建pfile文件:
你最好打开该参数文件,看一下路径是否都确实存在,或者是否正确。
)
用Sqlplus加载参数文件。
sqlplus/nolog
connsys/abc123assysdba;
startupnomount;
SQL>createpfile='E:
\OracleBackup\EMPCARD\196BackupFile\Initial_EMPCARD.ORA'fromspfile;
文件已创建。
编辑Initial_EMPCARD.ORA初始化参数文件:
下面可以启动数据库实例了:
SQL>shutdownimmediate;
SQL>startupmountpfile='E:
\OracleBackup\EMPCARD\196BackupFile\Initial_EMPCARD.ORA';
已连接到目标数据库(未启动)
Oracle例程已启动
RMAN-00571:
===========================================================
RMAN-00569:
===============ERRORMESSAGESTACKFOLLOWS===============
RMAN-00571:
===========================================================
RMAN-03002:
failureofstartupcommandat06/07/201212:
48:
12
ORA-01991:
无效的口令文件'E:
\OraHome_1\DATABASE\PWDmytest.ORA'
修改密码,不需要重启
SQL>connsys/admin@hunterassysdba
Connected.
SQL>showuser;
USERis"SYS"
SQL>alterusersysidentifiedbyadmin_123;
Useraltered.
重设口令文件,需要重启
先删除E:
\OraHome_1\DATABASE\PWDmytest.ORA
再重设
DelE:
\OraHome_1\DATABASE\PWD*.ORA
orapwdfile=E:
\OraHome_1\DATABASE\PWDEMPCARD.ORApassword=abc123entries=30
修改了SYS的口令,需要重启Oracle服务
重新启动oracle,windows服务控制台重启
sqlplus/nolog
connsys/abc123assysdba;
shutdownimmediate;
SQL>startupmountpfile='E:
\OracleBackup\EMPCARD\196BackupFile\Initial_EMPCARD.ORA';ORACLEinstancestarted.
7.还原数据文件
rmantargetsys/abc123
恢复管理器:
版本9.2.0.1.0-Production
Copyright(c)1995,2002,OracleCorporation.Allrightsreserved.
连接到目标数据库:
MYTEST(DBID=2483970197)
注意此DBID,就是原来的备份前的数据库DBID
RMAN>listbackup;
RMAN>crosscheckbackup;
deletenopromptexpiredbackup;
RMAN>reportobsolete;
deletenopromptobsolete;
RMAN>listbackup;
RMAN>crosscheckbackup;
RMAN>RESTOREDATABASEVALIDATE;
RMAN>restoredatabase;
需要修改数据文件的路径
sqlplus/nolog
connsys/abc123assysdba;
修改数据文件的路径:
@E:
\OracleBackup\empcard\script\change_datafile_path.sql;
恢复失败,找不到
从备份集恢复数据文件
用DBMS包恢复,首先查看每个备份集包含的数据文件
listbackup;
sqlplus/nolog
connsys/abc123assysdba;
从备份片中恢复数据文件:
注意恢复出来的文件名要与备份集内的数据文件名一致。
@E:
\OracleBackup\empcard\script\restore_datafile_from_baupPiece.sql;
查看目录下恢复出来的数据文件
8.还原归档日志
rmantargetsys/abc123
listbackup;
crosscheckbackup;
Restorearchivelog all;
找不到日志,则从备份集用DBMS恢复
sqlplus/nolog
connsys/abc123assysdba;
从备份片中恢复数据文件:
@E:
\OracleBackup\empcard\script\restore_archivelog_from_baupPiece.sql;
查看已恢复的归档日志。
9.修改控制文件中文件路径
查看控制文件路径
.查看控制文件位置
SQL>showparametercontrol_files;
select*fromv$controlfile;
控制文件路径正确,不需要修改
查看数据文件路径:
selectfile#,ts#,status,namefromv$datafile;
修改数据文件路径
sqlplus/nolog
connsys/abc123assysdba;
修改数据文件的路径:
@E:
\OracleBackup\empcard\script\change_datafile_path.sql;
查看归档路径:
selectdest_name,destination,status,errorfromv$archive_dest;
修改归档路径:
altersystemsetLOG_ARCHIVE_DEST_1="location=E:
\OraHome_1\ORADATA\EMPCARD\archive"scope=spfile;
查看以前所有的归档日志路径
select*fromv$archived_log;
查看归档日志格式:
showparameterlog_archive_format;
查看连接重做日志路径
select*fromv$logfile;
SELECTGROUP#,SEQUENCE#,MEMBERS,BYTES,STATUS,ARCHIVEDFROMV$LOG;
状态列(status)所显示常用状态的含义:
∙ inactive:
表示实例恢复已不再需要这组联机重做日志组了。
∙ active:
表示该组是活动的但不是当前组,实例恢复时需要这组日志。
∙ current:
表示该组日志是当前组,该联机重做日志组是活动的。
∙ unused:
表示该日志组从未写过,是重做日志刚刚添加到状态。
将原来的重做日志文件拷贝过去
目录E:
\OracleBackup\empcard\196BackupFile下的redo.log复制到数据库文件位置
E:
\OraHome_1\oradata\mytest目录,覆盖日志文件
修改重做日志路径:
修改数据文件的路径:
@E:
\OracleBackup\empcard\script\change_redo_log_path.sql;
查看连接重做日志路径
select*fromv$logfile;
SELECTGROUP#,SEQUENCE#,MEMBERS,BYTES,STATUS,ARCHIVEDFROMV$LOG;
查看数据库的参数文件的默认位置E:
\OraHome_1\database下的SPFILE
中的路径是否正确SPFILEEMPCARD.ORA
查看修改后控制文件的内容是否正确
alterdatabasebackupcontrolfiletotrace;
然后在E:
\OraHome_1\admin\EMPCARD\udump目录中查看新生成的trace文件
如有路径不对的再进行修改。
再通过这个查看alterdatabasebackupcontrolfiletotrace;
注意这个trace记录都在同一个文件,可以查看生成的时间来判断那个是刚生成的。
shutdownimmediate;
startupmount;
再查看一下控制文件,数据文件,归档日志,重做文件的信息
select*fromv$controlfile;
select*fromv$datafile;
select*fromv$archived_log;
selectdest_name,destination,status,errorfromv$archive_dest;
select*fromv$logfile;
SELECTGROUP#,SEQUENCE#,MEMBERS,BYTES,STATUS,ARCHIVEDFROMV$LOG;
10.恢复数据库
rmantargetsys/abc123
RMAN>recoverdatabase;
alterdatabaseopenRESETLOGS;
11.查询原来的表,发现数据已经恢复。
sqlplus/nolog
connsys/abc123assysdba;
SQL>selectcount(*)fromLOG_USER.INTERFACE_LOG;
12.执行完全备份
Resetlog打开之后必须马上备份,因此以前的备份在resetlog之后全部失效
rmantargetsys/abc123
listbackup;
crosscheckbackup;
reportobsolete;
13.Rman备份过程测试
向数据库每间隔5秒钟插入一条记录到数据库,然后一直循环此过程,在此过程中,同时进行rman数据库备份。
备份结束后,停止插入记录
1每隔5秒向test表插入一条记录,在此过程中rman备份
02012-6-140:
00:
00.000ThuJun1413:
18:
19CST2012testinsert
备份结束后,数据库已由50条记录
502012-6-140:
00:
00.000ThuJun1413:
22:
36CST2012testinsert
即数据库共有51条记录
14.数据库恢复测试
直接killoracle进程,
然后用服务器控制台重启Oracle数据库,因此Kill前数据库是打开状态,所以启动后oracle会自动将redo记录恢复到数据库
sqlplus/nolog
connsys/abc123assysdba;
此时记录不变。
然后再插入记录
然后关闭数据库,再重启加载,恢复,再打开
再循环一直插入,然后直接killoracle进程。
数据库挂掉,插入记录进程异常
用服务控制台重启oracle
重启后再查询,发现数据还在,oracle自动完成在线恢复