RMAN按时间点恢复实验(nocatalog)
时间:2010-09-03 来源:unixthisyear
测试步骤:
1、sqlplus / as sysdba;
2、建立一张新表xyz:
SQL> create table gmmtable(a number);
Table created.
3、在表xyz中插入一点数据:
SQL> insert into gmmtable values(66);
1 row created.
SQL> select * from gmmtable;
A
----------
66 SQL> insert into gmmtable values(99); 1 row created. SQL> select * from gmmtable; A
----------
66
99 4、提交: SQL> commit; RMAN连接: $ rman target / 5、进行数据库的全备: 需要先设置时间格式,否则备份只能看到年月日,无法看到小时、分钟、秒。 $ export NLS_DATE_FORMAT='yyyy-mm-dd hh24:mi:ss' RMAN> run {
2> backup database format='/opt/oracle_backup/20100903/db_full_%U';
3> } RMAN> list backup; //oracle10g下磁盘似乎不需要分配channel,完成后也会自动release; 6、进入sqlplus删除数据,做备份测试 SQL> select * from gmmtable; A
----------
66
99 删除数据: SQL> delete from gmmtable; 2 rows deleted. 提交: SQL> commit; 查看: SQL> select * from gmmtable; no rows selected 7、恢复: 恢复数据库需要在mount模式下进行 SQL> shutdown immediate; SQL> startup mount; 还原数据库: $ rman target /
RMAN> list backup;
RMAN> restore database;
RMAN> recover database until time "to_date('2010-09-03 11:22:04','yyyy-mm-dd hh24:mi:ss')";
RMAN> quit;
SQL> alter database open resetlogs; 8、resetlog: SQL> alter database open resetlogs; //完成了不完全恢复后,必须重新设置联机重做日志。当使用resetlogs选项打开数据库时,所有的数据文件都获得一个新的resetlogs scn(系统更改号)和时间戳。已归档的重做日志在它们的头部也有这两个值。oracle通过为数据库提供与重做日志文件相匹配的resetlogs scn和时间戳,来防止用旧的归档日志破坏数据文件。 在使用此命令后,联机重做日志文件被还原,每个数据文件的头部文件都被更新,控制文件也被更新。所有这些工作完成之后,数据库打开。注意每个联机重做日志文件 的新序号。 9、查看恢复情况: SQL> alter database open resetlogs; SQL> select * from gmmtable; A
----------
66
99 至此恢复成功。 说明:在使用resetlogs选项打开数据库之后,必须做一个完整的数据库备份。要还原一个以前的数据库并将它前滚到resetlogs执行后的某个时间几乎是不可能的。 又注:据说oracle10g以后可以实现resetlogs后的按时间恢复,但是未测试过。
----------
66 SQL> insert into gmmtable values(99); 1 row created. SQL> select * from gmmtable; A
----------
66
99 4、提交: SQL> commit; RMAN连接: $ rman target / 5、进行数据库的全备: 需要先设置时间格式,否则备份只能看到年月日,无法看到小时、分钟、秒。 $ export NLS_DATE_FORMAT='yyyy-mm-dd hh24:mi:ss' RMAN> run {
2> backup database format='/opt/oracle_backup/20100903/db_full_%U';
3> } RMAN> list backup; //oracle10g下磁盘似乎不需要分配channel,完成后也会自动release; 6、进入sqlplus删除数据,做备份测试 SQL> select * from gmmtable; A
----------
66
99 删除数据: SQL> delete from gmmtable; 2 rows deleted. 提交: SQL> commit; 查看: SQL> select * from gmmtable; no rows selected 7、恢复: 恢复数据库需要在mount模式下进行 SQL> shutdown immediate; SQL> startup mount; 还原数据库: $ rman target /
RMAN> list backup;
RMAN> restore database;
RMAN> recover database until time "to_date('2010-09-03 11:22:04','yyyy-mm-dd hh24:mi:ss')";
RMAN> quit;
SQL> alter database open resetlogs; 8、resetlog: SQL> alter database open resetlogs; //完成了不完全恢复后,必须重新设置联机重做日志。当使用resetlogs选项打开数据库时,所有的数据文件都获得一个新的resetlogs scn(系统更改号)和时间戳。已归档的重做日志在它们的头部也有这两个值。oracle通过为数据库提供与重做日志文件相匹配的resetlogs scn和时间戳,来防止用旧的归档日志破坏数据文件。 在使用此命令后,联机重做日志文件被还原,每个数据文件的头部文件都被更新,控制文件也被更新。所有这些工作完成之后,数据库打开。注意每个联机重做日志文件 的新序号。 9、查看恢复情况: SQL> alter database open resetlogs; SQL> select * from gmmtable; A
----------
66
99 至此恢复成功。 说明:在使用resetlogs选项打开数据库之后,必须做一个完整的数据库备份。要还原一个以前的数据库并将它前滚到resetlogs执行后的某个时间几乎是不可能的。 又注:据说oracle10g以后可以实现resetlogs后的按时间恢复,但是未测试过。
相关阅读 更多 +