recover database in time point
2024-07-21 02:39:37
供稿:網友
SQL> startup
Oracle 例程已經啟動。
Total System Global Area 101784276 bytes
Fixed Size 453332 bytes
Variable Size 75497472 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
ORA-01991: ???????'C:/oracle/ora92/DATABASE/PWDtestdb.ORA'
SQL> alter database open;
數據庫已更改。
SQL> create table arch1 (status varchar(2)) tablespace users;
表已創建。
SQL> alter system switch logfile;
系統已更改。
SQL> insert into arch1 select 'ok' from dba_objects;
已創建6166行。
SQL> commit;
提交完成。
SQL> insert into arch1 select * from arch1;
已創建6166行。
SQL> /
已創建12332行。
SQL> /
已創建24664行。
SQL> /
已創建49328行。
SQL> commit;
提交完成。
SQL> alter system switch logfile;
系統已更改。
SQL> commit;
提交完成。
SQL> select GROUP#,SEQUENCE#,archived, STATUS from v$log;
GROUP# SEQUENCE# ARC STATUS
---------- ---------- --- ----------------
1 5 NO CURRENT
2 3 YES INACTIVE
3 4 YES ACTIVE
SQL> alter database backup controlfile to 'c:/backup.ctl';
數據庫已更改。
SQL> select count(*) from arch1;
COUNT(*)
----------
98656
SQL> select to_char(sysdate,'YYYY-MM-DD:HH24:MI:SS') from dual;
TO_CHAR(SYSDATE,'YY
-------------------
2005-03-07:15:46:17
alter system switch logfile;
系統已更改。
SQL> drop table arch1;
表已丟棄。
SQL> create table salgrade (grade number,losal number,hisal number) tablespace users;
表已創建。
SQL> select owner,name,tablespace_name,
2 to_char(creation_time,'YYYY-MM-DD:HH24:MI:SS')
3 from sys.ts_pitr_objects_to_be_dropped
4 where tablespace_name in ('USERS')
5 and creation_time > to_date('2005-03-07:15:46:17','YYYY-MM-DD:HH24:MI:SS')
6 order by tablespace_name, creation_time;
OWNER NAME
------------------------------ ----------------------------------------
TABLESPACE_NAME TO_CHAR(CREATION_TI
------------------------------ -------------------
SYS SALGRADE
USERS 2005-03-07:15:46:36
SQL> alter tablespace users offline for recover;
表空間已更改。
~~~~~~~~~~~~~~~~
克隆數據庫
~~~~~~~~~~~~~~~~
oradim -new -sid clone -intpwd clone
set oracle_sid=clone
創建初始化文件initCLONE.ora
增加*.lock_name_space=CLONE
注重db_name跟主數據庫一樣
歸檔路徑也可以一樣,以便于恢復時使用默認的路徑
SQL> create pfile='C:/oracle/ora92/database/initCLONE.ora' from spfile;
文件已創建。
shutdown
set ORACLE_SID=CLONE
C:/Documents and Settings/lifeng.fang>sqlplus "sys/clone as sysdba"
SQL*Plus: Release 9.2.0.1.0 - PRodUCtion on 星期一 3月 7 17:18:51 2005
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
已連接到空閑例程。
SQL> startup nomount pfile='C:/oracle/ora92/database/initCLONE.ora'
ORACLE 例程已經啟動。
Total System Global Area 101784276 bytes
Fixed Size 453332 bytes
Variable Size 75497472 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
SQL> alter database mount clone database;
SQL> select name from v$datafile;
NAME
--------------------------------------------------------------------------------
C:/ORACLE/ORADATA/TESTDB/SYSTEM01.DBF
C:/ORACLE/ORADATA/TESTDB/UNDOTBS01.DBF
C:/ORACLE/ORADATA/TESTDB/INDX01.DBF
C:/ORACLE/ORADATA/TESTDB/TOOLS01.DBF
C:/ORACLE/ORADATA/TESTDB/USERS01.DBF
SQL> alter database rename file 'c:/ORACLE/ORADATA/TESTDB/SYSTEM01.DBF' to 'c:/
ORACLE/ORADATA/CLONE/SYSTEM01.DBF' ;
數據庫已更改。
SQL> alter database rename file 'c:/ORACLE/ORADATA/TESTDB/UNDOTBS01.DBF' to 'c:/
ORACLE/ORADATA/CLONE/UNDOTBS01.DBF';
數據庫已更改。
SQL> alter database rename file 'c:/ORACLE/ORADATA/TESTDB/INDX01.DBF' to 'c:/
ORACLE/ORADATA/CLONE/INDX01.DBF' ;
數據庫已更改。
SQL> alter database rename file 'c:/ORACLE/ORADATA/TESTDB/TOOLS01.DBF' to 'c:/
ORACLE/ORADATA/CLONE/TOOLS01.DBF' ;
數據庫已更改。
SQL> alter database rename file 'c:/ORACLE/ORADATA/TESTDB/USERS01.DBF' to 'c:/
ORACLE/ORADATA/CLONE/USERS01.DBF' ;
數據庫已更改。
SQL>
SQL>
SQL> alter database datafile 'C:/ORACLE/ORADATA/CLONE/SYSTEM01.DBF' online;
數據庫已更改。
SQL> alter database datafile 'C:/ORACLE/ORADATA/CLONE/UNDOTBS01.DBF' online;
數據庫已更改。
SQL> alter database datafile 'C:/ORACLE/ORADATA/CLONE/INDX01.DBF' online;
數據庫已更改。
SQL> alter database datafile 'C:/ORACLE/ORADATA/CLONE/TOOLS01.DBF' online;
數據庫已更改。
SQL> alter database datafile 'C:/ORACLE/ORADATA/CLONE/USERS01.DBF' online;
數據庫已更改。
SQL> RECOVER DATABASE USING BACKUP CONTROLFILE UNTIL TIME '2005-03-07:16:57:31';
ORA-00279: 更改 69257 (在 02/28/2005 11:08:18 生成) 對于線程 1 是必需的
ORA-00289: 建議: C:/ORACLE/ORADATA/TESTDB/ARCHIVE_3.DBF
ORA-00280: 更改 69257 對于線程 1 是按序列 # 3 進行的
指定日志: {<RET>=suggested filename AUTO CANCEL}
ORA-00279: 更改 69556 (在 03/07/2005 16:45:42 生成) 對于線程 1 是必需的
ORA-00289: 建議: C:/ORACLE/ORADATA/TESTDB/ARCHIVE_4.DBF
ORA-00280: 更改 69556 對于線程 1 是按序列 # 4 進行的
ORA-00278: 此恢復不再需要日志文件 'C:/ORACLE/ORADATA/TESTDB/ARCHIVE_3.DBF'
指定日志: {<RET>=suggested filename AUTO CANCEL}
ORA-00279: 更改 69601 (在 03/07/2005 16:45:43 生成) 對于線程 1 是必需的
ORA-00289: 建議: C:/ORACLE/ORADATA/TESTDB/ARCHIVE_5.DBF
ORA-00280: 更改 69601 對于線程 1 是按序列 # 5 進行的
ORA-00278: 此恢復不再需要日志文件 'C:/ORACLE/ORADATA/TESTDB/ARCHIVE_4.DBF'
指定日志: {<RET>=suggested filename AUTO CANCEL}
已應用的日志。
完成介質恢復。
在clone庫eXP該表空間
exp SYS/clone TRANSPORT_TABLESPACE=y TABLESPACES=(users) TTS_FULL_CHECK=y file=expat.dmp
在主數據庫中
DROP TABLESPACE users INCLUDING CONTENTS;
在主庫
imp TRANSPORT_TABLESPACE=y FILE=expat.dmp
DATAFILES=('C:/ORACLE/ORADATA/CLONE/USERS01.DBF')