10g新特性:rman恢復時候資料檔案的自動建立

husthxd發表於2004-10-20

Oracle 10g : rman恢復時候資料檔案的自動建立


 

select name,status from v$datafile;

select * from v$recover_file;

drop tablespace test including contents and datafiles;

drop user test cascade;

create tablespace test datafile 'F:ORACLEPRODUCT10.1.0ORADATATESTtest.dbf'  size 10m;

create user test identified by test default tablespace test;

grant dba to test;

conn test/test

create table t1 (n1 number);

insert into t1 values(1);

commit;

alter system switch logfile;

 

前言

本文透過實驗簡要介紹Oracle10grman對丟失檔案的自動處理,避免了以前版本在恢復時手工建立丟失資料檔案的麻煩。

假設對以下場景中丟失的資料檔案進行恢復:

1,2種恢復均使用以下的測試資料,其中2使用了恢復目錄.

A. 資料庫建立後用rman備份整個資料庫

RMAN> connect target  

連線到目標資料庫: TEST (DBID=1838111476)

RMAN> backup database;

啟動 backup 19-10-04

正在使用目標資料庫控制檔案替代恢復目錄

分配的通道: ORA_DISK_1

通道 ORA_DISK_1: sid=135 devtype=DISK

通道 ORA_DISK_1: 啟動全部資料檔案備份集

通道 ORA_DISK_1: 正在指定備份集中的資料檔案

輸入資料檔案 fno=00001 name=F:ORACLEPRODUCT10.1.0ORADATATESTSYSTEM01.DBF

輸入資料檔案 fno=00003 name=F:ORACLEPRODUCT10.1.0ORADATATESTSYSAUX01.DBF

輸入資料檔案 fno=00002 name=F:ORACLEPRODUCT10.1.0ORADATATESTUNDOTBS01.DBF

輸入資料檔案 fno=00004 name=F:ORACLEPRODUCT10.1.0ORADATATESTUSERS01.DBF

通道 ORA_DISK_1: 正在啟動段 1 19-10-04

通道 ORA_DISK_1: 已完成段 1 19-10-04

handle=D:RMANBACKUPTEST1G2UFR8_1_1 comment=NONE

通道 ORA_DISK_1: 備份集已完成, 經過時間:00:01:15

完成 backup 19-10-04 

啟動 Control File and SPFILE Autobackup 19-10-04

handle=D:RMANBACKUPTESTC-1838111476-20041019-01 comment=NONE

完成 Control File and SPFILE Autobackup 19-10-04

RMAN> 

B. 建立新的表空間,並在新的表空間中加入測試資料,歸檔當前日誌

> conn sys/manager@test10g as sysdba

已連線。

> create tablespace test datafile 'F:ORACLEPRODUCT10.1.0ORADATATESTtest.dbf'  size 10m;

表空間已建立。 

>

> create user test identified by test default tablespace test;

使用者已建立 

> grant dba to test;

授權成功。 

> @conn test/test@test10g

已連線。

test@GZSERVER> create table t1 (n1 number);

表已建立。 

test@GZSERVER> insert into t1 values(1);

已建立 1 行。 

test@GZSERVER> commit;

提交完成。 

test@GZSERVER>

test@GZSERVER> alter system switch logfile;

系統已更改。 

test@GZSERVER> alter system switch logfile;

系統已更改。 

C. 刪除新表空間的資料檔案

對第1種情況執行:

test@GZSERVER> alter tablespace test offline immediate;

表空間已更改。 

test@GZSERVER>

-- 手工刪除資料檔案

查詢select name,status from v$datafile;看到該資料檔案狀態為RECOVER

F:ORACLEPRODUCT10.1.0ORADATATESTTEST.DBF          RECOVER 

對第2種情況:

-- 關閉資料庫

SQL> shutdown immediate;

Database closed.

Database dismounted.

ORACLE instance shut down.

-- 刪除資料檔案,刪除控制檔案

-- 啟動資料庫

SQL> startup

ORA-32004: obsolete and/or deprecated parameter(s) specified

ORACLE instance started. 

Total System Global Area  171966464 bytes

Fixed Size                   787988 bytes

Variable Size             145488364 bytes

Database Buffers           25165824 bytes

Redo Buffers                 524288 bytes

ORA-00205: error in identifying controlfile, check alert log for more info

SQL> shutdown immedidate;

SP2-0717: illegal SHUTDOWN option

SQL> shutdown immediate;

ORA-01507: database not mounted

ORACLE instance shut down.

SQL> startup nomount

ORA-32004: obsolete and/or deprecated parameter(s) specified

ORACLE instance started.

Total System Global Area  171966464 bytes

Fixed Size                   787988 bytes

Variable Size             145488364 bytes

Database Buffers           25165824 bytes

Redo Buffers                 524288 bytes

SQL>  

 1.         控制檔案沒有丟失

控制檔案儲存有最新的資料庫資訊。

重啟資料庫:

SQL> startup

ORA-32004: obsolete and/or deprecated parameter(s) specified

ORACLE instance started.

Total System Global Area  171966464 bytes

Fixed Size                   787988 bytes

Variable Size             145488364 bytes

Database Buffers           25165824 bytes

Redo Buffers                 524288 bytes

Database mounted.

Database opened.

 

-- rman進行恢復

RMAN> restore tablespace "TEST";

 

啟動 restore 19-10-04

使用通道 ORA_DISK_1

 

建立資料檔案 fno = 5 名稱 = F:ORACLEPRODUCT10.1.0ORADATATESTTEST.DBF

沒有完成恢復; 所有檔案均為只讀或離線檔案或者已經恢復

完成 restore 19-10-04

RMAN> recover tablespace "TEST";

啟動 recover 19-10-04

使用通道 ORA_DISK_1

正在開始介質的恢復

存檔日誌執行緒 1 序列 7 已作為檔案 E:ARCHIVETESTTEST_7_1_539965048.ARC 存在於磁

盤上

存檔日誌執行緒 1 序列 8 已作為檔案 E:ARCHIVETESTTEST_8_1_539965048.ARC 存在於磁

盤上

存檔日誌執行緒 1 序列 9 已作為檔案 E:ARCHIVETESTTEST_9_1_539965048.ARC 存在於磁

盤上

存檔日誌檔名 =E:ARCHIVETESTTEST_7_1_539965048.ARC 執行緒 =1 序列 =7

完成介質的恢復

完成 recover 19-10-04

RMAN>

RMAN> sql 'alter tablespace test online';

sql 語句: alter tablespace test online

RMAN>

-- sqlplus

test@GZSERVER> select *from t1;

        N1

----------

         1

 

test@GZSERVER>

 

成功進行恢復.

2.  當前控制檔案丟失

如果沒有在監聽器中配置資料庫服務會出現如下錯誤:

RMAN> connect target sys/manager@test10g

 

RMAN-00571: ===========================================================

RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============

RMAN-00571: ===========================================================

ORA-12528: TNS: 監聽程式: 所有適用的例程都不允許建立新的連線

 

如果沒有手工配置監聽器中的資料庫服務,連線的時候會出現如下錯誤:

D:oracleproduct10.1.0BIN>rman target sys/manager@test10g catalog imis10g 

恢復管理器: 版本10.1.0.2.0 - Production

 Copyright (c) 1995, 2004, Oracle.  All rights reserved.

 RMAN-00571: ===========================================================

RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============

RMAN-00571: ===========================================================

RMAN-00554: initialization of internal recovery manager package failed

RMAN-04005: error from target database:

ORA-12528: TNS: 監聽程式: 所有適用的例程都不允許建立新的連線

 

原因可以從下面資訊中獲得:

 

服務 "test" 包含 1 個例程。

  例程 "test", 狀態 BLOCKED, 包含此服務的 1 個處理程式...

    處理程式:

      "DEDICATED" 已建立:0 已拒絕:0 狀態:ready

         LOCAL SERVER

命令執行成功

 手工配置監聽重啟監聽器後:

服務 "test" 包含 2 個例程。

  例程 "test", 狀態 UNKNOWN, 包含此服務的 1 個處理程式...

    處理程式:

      "DEDICATED" 已建立:1 已被拒絕:0

         LOCAL SERVER

  例程 "test", 狀態 BLOCKED, 包含此服務的 1 個處理程式...

    處理程式:

      "DEDICATED" 已建立:0 已拒絕:0 狀態:ready

         LOCAL SERVER

命令執行成功

 rman可以登入到目標資料庫中:

D:oracleproduct10.1.0BIN>rman target sys/manager@test10g catalog imis10g

恢復管理器: 版本10.1.0.2.0 - Production

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/6906/viewspace-21595/,如需轉載,請註明出處,否則將追究法律責任。

相關文章