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