Oracle入门之RMAN基于时间点的不完全恢复

本节将演示下rman基于时间点的不完全恢复,修改过的数据有执行commit操作的事务,只要备份文件和联机重做日志或者归档日志文件存在,理论上都是可以恢复的

1:使用rman备份test表空间,test在Oracle里面是一个保留关键字,所以备份的时候要加双引号

RMAN> backup tablespace "TEST" format '/u01/backup/test_1216.dbf' tag ts;

2:使用yang用户连接数据库实例,进行数据操作,改用户的默认表空间即为test

yang SQL>select default_tablespace from dba_users where username='YANG';

DEFAULT_TABLESPACE
------------------------------
TEST

yang SQL>conn yang/yang
Connected.

yang SQL>col object_name format a30;
yang SQL>select object_name,object_type from user_objects;

OBJECT_NAME                    OBJECT_TYPE
------------------------------ -------------------
TEST                           TABLE

 
yang SQL>select * from test order by 1;

        ID NAME
---------- --------------------------------
         1 one
         2 two
         3 three

3:插入一条新数据,并提交事务

yang SQL>insert into test values (4,'four');

1 row created.

yang SQL>commit;

Commit complete.

4:使用sys用户登录数据库,查看当前的联机日志组为组1

yang SQL>show user;
USER is "SYS"

yang SQL>select group#,status from v$log;

    GROUP# STATUS
---------- ----------------
         1 CURRENT
         2 UNUSED
         3 UNUSED

yang SQL>!strings /u01/app/oracle/oradata/yang/redo01.log |grep 'four' //在lgwr进程发生之前,记录是保存在redolog buffer中

yang SQL>!strings /u01/app/oracle/oradata/yang/redo01.log |grep 'four' //commit后,记录保存在当前active状态的联机重做日志文件中
four

yang SQL>!strings /u01/app/oracle/oradata/yang/test01.dbf |grep 'four'

yang SQL>alter system checkpoint; //在checkpoint发生后,记录才真实可靠的写入到数据文件中

System altered.

yang SQL>!strings /u01/app/oracle/oradata/yang/test01.dbf |grep 'four'
four,

5:继续更新一条记录,但不执行提交操作
yang SQL>insert into test values (5,'five');

1 row created.

yang SQL>select count(*) from test;

  COUNT(*)
----------
         5

相关推荐