Oracle基于表空间的时间点恢复

1、测试环境


03:57:50 SQL> conn scott/tiger


Connected.


03:57:57 SQL>


03:59:43 SQL> select * from tab;


TNAME                          TABTYPE  CLUSTERID


------------------------------ ------- ----------


EXCEPTIONS                     TABLE


LXTB1                          TABLE


LXTB2                          TABLE


SALGRADE                       TABLE


SYS_TEMP_FBT                   TABLE


BONUS                          TABLE


DEPT                           TABLE


EMP                            TABLE


8 rows selected.


03:59:45 SQL> select table_name,tablespace_name from user_tables;


TABLE_NAME                     TABLESPACE_NAME


------------------------------ ------------------------------


EXCEPTIONS                     USERS


LXTB1                          USERS


LXTB2                          LXTBS2


SALGRADE                       USERS


BONUS                          USERS


DEPT                           USERS


EMP                            USERS


SYS_TEMP_FBT


8 rows selected.


04:00:08 SQL> select * from lxtb2;


ID


----------


1


2


3


4


5


6


7


8


10


11


10 rows selected.




2、对主库做热备份


04:00:09 SQL> conn /as sysdba


Connected.


04:00:14 SQL>


04:00:14 SQL> @/home/oracle/test_hot_bak


04:00:22 SQL> set feedback off pagesize 0 heading off verify off linesize 100 trimspool on echo off time off


***spooling to /disk1/backup/test/hot_cmd.sql


spool /disk1/backup/test/hot_bak/hot_bak.lst


alter system switch logfile;


alter tablespace SYSTEM begin backup;


host cp /u01/app/oracle/oradata/test/system01.dbf /disk1/backup/test/hot_bak


alter tablespace SYSTEM end backup;


alter tablespace RTBS begin backup;


host cp /u01/app/oracle/oradata/test/rtbs01.dbf /disk1/backup/test/hot_bak


alter tablespace RTBS end backup;


alter tablespace SYSAUX begin backup;


host cp /u01/app/oracle/oradata/test/sysaux01.dbf /disk1/backup/test/hot_bak


alter tablespace SYSAUX end backup;


alter tablespace USERS begin backup;


host cp /u01/app/oracle/oradata/test/users01.dbf /disk1/backup/test/hot_bak


alter tablespace USERS end backup;


alter tablespace LOB_16K begin backup;


host cp /u01/app/oracle/oradata/test/lob_16k01.dbf /disk1/backup/test/hot_bak


alter tablespace LOB_16K end backup;


alter tablespace UNDOTBS1 begin backup;


host cp /u01/app/oracle/oradata/test/undotbs1.dbf /disk1/backup/test/hot_bak


alter tablespace UNDOTBS1 end backup;


alter tablespace INDX begin backup;


host cp /u01/app/oracle/oradata/test/indx01.dbf /disk1/backup/test/hot_bak


alter tablespace INDX end backup;


alter tablespace LXTBS1 begin backup;


host cp /u01/app/oracle/oradata/test/lxtbs01.dbf /disk1/backup/test/hot_bak


alter tablespace LXTBS1 end backup;


alter tablespace LXTBS2 begin backup;


host cp /u01/app/oracle/oradata/test/lxtbs2.dbf /disk1/backup/test/hot_bak


alter tablespace LXTBS2 end backup;


archive log list;


spool off;


Database log mode              Archive Mode


Automatic archival             Enabled


Archive destination            /disk4/arch/test


Oldest online log sequence     6


Next log sequence to archive   9


Current log sequence           9




3、备份控制文件,作为备库的controlfile


SQL> alter database backup controlfile to '/u01/app/oracle/oradata/test2/control01.ctl';


SQL> exit


Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production


With the Partitioning, OLAP and Data Mining options




4、生成pfile  文件


SQL>  create pfile from spfile;




5、表被误操作(truncate)


[oracle@work test]$ sqlplus / as sysdba;


SQL*Plus: Release 10.2.0.1.0 - Production on Thu Oct 27 04:01:49 2011


Copyright (c) 1982, 2005, Oracle.  All rights reserved.


Connected to:


Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production


With the Partitioning, OLAP and Data Mining options


04:01:50 SQL>


04:01:50 SQL> insert into scott.lxtb2 values (9);


1 row created.


04:02:15 SQL> insert into scott.lxtb2 values (12);


1 row created.


04:02:17 SQL> insert into scott.lxtb2 values (13);


1 row created.


04:02:19 SQL> commit;


Commit complete.


04:02:21 SQL> alter system switch logfile;


System altered.


04:02:39 SQL> /


System altered.


04:02:40 SQL> /


System altered.


04:02:41 SQL> truncate table scott.lxtb2;


Table truncated.


04:02:50 SQL> select * from scott.lxtb2;


no rows selected


04:02:56 SQL> !




6、生成备库的pfile 文件(inittest2.ora)和备库口令文件


[oracle@work dbs]$ orapwd file=orapwtest2 password=oracle entries=3 force=y


[oracle@work hot_bak]$ cp $ORACLE_HOME/dbs/inittest.ora $ORACLE_HOME/dbs/inittest2.ora


--------备库pfile 文件


[oracle@work dbs]$ cat inittest2.ora


test.__db_cache_size=251658240


test.__java_pool_size=4194304


test.__large_pool_size=4194304


test.__shared_pool_size=150994944


test.__streams_pool_size=0


*.audit_trail='NONE'


*.background_dump_dest='$ORACLE_BASE/admin/test/bdump'


*.core_dump_dest='$ORACLE_BASE/admin/test/cdump'


*.db_16k_cache_size=12582912


*.db_4k_cache_size=12582912


*.db_block_size=8192


*.db_cache_size=30M#DEMO


*.db_file_multiblock_read_count=16


*.db_name='test'


*.db_recovery_file_dest='/disk1/flash/test'


*.db_recovery_file_dest_size=2147483648


*.fast_start_mttr_target=900


*.fast_start_parallel_rollback='HIGH'


*.log_archive_dest_1='location=/disk4/arch/test'


*.log_archive_dest_2=''


*.log_archive_format='arch_%t_%s_%r.log'


*.log_checkpoints_to_alert=TRUE


*.nls_date_format='yyyy-mm-dd hh24:mi:ss'


*.O7_DICTIONARY_ACCESSIBILITY=FALSE


*.optimizer_mode='choose'


*.parallel_threads_per_cpu=4#SMALL


*.pga_aggregate_target=10485760


*.query_rewrite_enabled='true'


*.query_rewrite_integrity='trusted'


*.recovery_parallelism=4


*.remote_login_passwordfile='EXCLUSIVE'


*.resource_limit=TRUE


*.sga_max_size=440401920


*.sga_target=418m


*.shared_pool_size=100M#DEMO


*.star_transformation_enabled='true'


*.undo_management='auto'


*.undo_tablespace='UNDOTBS1'


*.user_dump_dest='$ORACLE_BASE/admin/test/udump'


*.utl_file_dir='/home/oracle/logmnr'


---------添加以下内容


*.control_files='/u01/app/oracle/oradata/test2/control01.ctl'


db_unique_name = test2


db_file_name_convert=('/u01/app/oracle/oradata/test','/u01/app/oracle/oradata/test2')


log_file_name_convert=('/u01/app/oracle/oradata/test','/u01/app/oracle/oradata/test2','/disk1/oradata/test','/disk1/oradata/test2')




7、拷贝主库备份数据文件到备库目录下


[oracle@work hot_bak]$ mkdir /u01/app/oracle/oradata/test2


[oracle@work hot_bak]$ mkdir /disk1/oradata/test2


[oracle@work test]$ cd /disk1/backup/test/hot_bak/


[oracle@work hot_bak]$ ls


hot_bak.lst  indx01.dbf  lob_16k01.dbf  lxtbs01.dbf  lxtbs2.dbf  rtbs01.dbf  sysaux01.dbf  system01.dbf  undotbs1.dbf  users01.dbf


[oracle@work hot_bak]$ cp *.dbf /u01/app/oracle/oradata/test2/




8、启动备库到nomount


export ORACLE_SID=test2


[oracle@work hot_bak]$ export ORACLE_SID=test2


[oracle@work hot_bak]$ !sql


sqlplus / as sysdba;


SQL*Plus: Release 10.2.0.1.0 - Production on Thu Oct 27 04:05:28 2011


Copyright (c) 1982, 2005, Oracle.  All rights reserved.


Connected to an idle instance.


04:05:29 SQL>


04:05:29 SQL> startup nomount pfile=$ORACLE_HOME/dbs/inittest2.ora


ORACLE instance started.


Total System Global Area  440401920 bytes


Fixed Size                  1219904 bytes


Variable Size             113246912 bytes


Database Buffers          322961408 bytes


Redo Buffers                2973696 bytes




9、启动备库到mount状态


04:05:43 SQL> alter database mount clone database;


Database altered.


04:06:25 SQL> col name for a50


04:06:32 SQL> select name ,file# ,status from v$datafile;


NAME                                                    FILE# STATUS


-------------------------------------------------- ---------- -------


/u01/app/oracle/oradata/test2/system01.dbf                  1 SYSOFF


/u01/app/oracle/oradata/test2/rtbs01.dbf                    2 OFFLINE


/u01/app/oracle/oradata/test2/sysaux01.dbf                  3 OFFLINE


/u01/app/oracle/oradata/test2/users01.dbf                   4 OFFLINE


/u01/app/oracle/oradata/test2/lob_16k01.dbf                 5 OFFLINE


/u01/app/oracle/oradata/test2/lxtbs01.dbf                   6 OFFLINE


/u01/app/oracle/oradata/test2/lxtbs2.dbf                    7 OFFLINE


/u01/app/oracle/oradata/test2/undotbs1.dbf                  9 OFFLINE


/u01/app/oracle/oradata/test2/indx01.dbf                   14 OFFLINE


9 rows selected.




10、将数据文件联机


04:09:17 SQL> alter database datafile 1 online;


Database altered.


04:09:24 SQL> alter database datafile 2 online;


Database altered.


04:09:26 SQL> alter database datafile 3 online;


Database altered.


04:09:28 SQL> alter database datafile 4 online;


Database altered.


04:09:30 SQL> alter database datafile 5 online;


Database altered.


04:09:32 SQL> alter database datafile 6 online;


Database altered.


04:09:34 SQL> alter database datafile 7 online;


Database altered.


04:09:36 SQL> alter database datafile 9 online;


Database altered.


04:09:40 SQL> alter database datafile 14 online;


Database altered.


04:09:42 SQL> select name ,file# ,status from v$datafile


04:09:47   2  ;


NAME                                                    FILE# STATUS


-------------------------------------------------- ---------- -------


/u01/app/oracle/oradata/test2/system01.dbf                  1 SYSTEM


/u01/app/oracle/oradata/test2/rtbs01.dbf                    2 ONLINE


/u01/app/oracle/oradata/test2/sysaux01.dbf                  3 ONLINE


/u01/app/oracle/oradata/test2/users01.dbf                   4 ONLINE


/u01/app/oracle/oradata/test2/lob_16k01.dbf                 5 ONLINE


/u01/app/oracle/oradata/test2/lxtbs01.dbf                   6 ONLINE


/u01/app/oracle/oradata/test2/lxtbs2.dbf                    7 ONLINE


/u01/app/oracle/oradata/test2/undotbs1.dbf                  9 ONLINE


/u01/app/oracle/oradata/test2/indx01.dbf                   14 ONLINE


9 rows selected.




11、在备库上做基于时间点的database recover(时间点就是truncate时的时间点,可以用logmnr找出)


04:09:48 SQL> recover database until time '2011-10-27 04:01:50' using backup controlfile;


ORA-00279: change 1354493 generated at 10/27/2011 04:00:23 needed for thread 1


ORA-00289: suggestion : /disk4/arch/test/arch_1_9_765501215.log


ORA-00280: change 1354493 for thread 1 is in sequence #9


04:10:30 Specify log: {<RET>=suggested | filename | AUTO | CANCEL}


auto


Log applied.


Media recovery complete.




12、open database 查看恢复


04:10:37 SQL> alter database open resetlogs;


Database altered.


04:10:58 SQL> select * from scott.lxtb2;


ID


----------


1


2


3


4


5


6


7


8


10


11


10 rows selected.


04:11:30 SQL>


---------------------恢复成功




13、将恢复后的表空间导出(lxtbs2 tablespace)


[oracle@work data]$ exp userid=\'sys/oracle as sydba\' point_in_time_recover=y tablespaces=lxtbs2 file=lxtbs2.dmp


Export: Release 10.2.0.1.0 - Production on Thu Oct 27 04:15:34 2011


Copyright (c) 1982, 2005, Oracle.  All rights reserved.


EXP-00004: invalid username or password


Username: sys as sysdba


Password:


Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production


With the Partitioning, OLAP and Data Mining options


Export done in US7ASCII character set and AL16UTF16 NCHAR character set


server uses ZHS16GBK character set (possible charset conversion)


Note: table data (rows) will not be exported


About to export Tablespace Point-in-time Recovery objects…


For tablespace LXTBS2 …


. exporting cluster definitions


. exporting table definitions


. . exporting table                          LXTB2


EXP-00091: Exporting questionable statistics.


. exporting referential integrity constraints


. exporting triggers


. end point-in-time recovery


Export terminated successfully with warnings.


[oracle@work data]$




14、将表空间导入到主库


----------将主库表空间脱机  test (主库)


04:13:45 SQL> alter tablespace lxtbs2 offline;


Tablespace altered.


--------拷贝备库表空间datafile 到主库目录下


[oracle@work data]$ cp /u01/app/oracle/oradata/test2/lxtbs2.dbf /u01/app/oracle/oradata/test


[oracle@work data]$ export ORACLE_SID=test


-------------导入到主库


[oracle@work data]$ imp userid=\'sys/oracle as sysdba\' point_in_time_recover=y  file=lxtbs2.dmp ignore=y


Import: Release 10.2.0.1.0 - Production on Thu Oct 27 04:38:29 2011


Copyright (c) 1982, 2005, Oracle.  All rights reserved.


Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production


With the Partitioning, OLAP and Data Mining options


Export file created by EXPORT:V10.02.01 via conventional path


About to import Tablespace Point-in-time Recovery objects…


import done in US7ASCII character set and AL16UTF16 NCHAR character set


import server uses ZHS16GBK character set (possible charset conversion)


. importing SYS's objects into SYS


. importing SCOTT's objects into SCOTT


. . importing table                        "LXTB2"


. importing SYS's objects into SYS


Import terminated successfully without warnings




15、验证


04:30:39 SQL> alter tablespace lxtbs2 online;


Tablespace altered.


04:38:51 SQL> select * from scott.lxtb2;


ID


----------


1


2


3


4


5


6


7


8


10


11


10 rows selected.


-----------数据文件恢复到truncate 之前


oracle视频教程请关注:http://u.youku.com/user_video/id_UMzAzMjkxMjE2.html


你可能感兴趣的:(oracle,时间点,表空间恢复)