第6章:複製資料庫之克隆開啟的risenet資料庫

mengzhaoliang發表於2008-05-29

/* 2008/05/28
*環境:Windows XP +Oracle10.2.0.1
*Oracle 備份與恢復培訓教程 Kenny Smith,Stephan Haisley著 周琪、韓岷、李渝琳等譯
*第二部分:使用者管理的備份與恢復
*第6章:複製資料庫
*/

練習6.1:克隆開啟的risenet資料庫
1、準備克隆資料庫
為準備建立CLNE資料庫建立所有路徑:

C:\>set ORACLE_SID=CLNE

C:\>set ORACLE_BASE=G:\oracle

C:\>set ORACLE_HOME=G:\oracle\product\10.2.0\db_1

C:\>mkdir $ORACLE_ADMIN

C:\>mkdir G:\oracle\product\10.2.0\admin\clne

C:\>mkdir G:\oracle\product\10.2.0\admin\clne\pfile

C:\>mkdir G:\oracle\product\10.2.0\admin\clne\bdump

C:\>mkdir G:\oracle\product\10.2.0\admin\clne\cdump

C:\>mkdir G:\oracle\product\10.2.0\admin\clne\udump

C:\>mkdir G:\oracle\product\10.2.0\admin\clne\create

C:\>mkdir G:\oracle\product\10.2.0\oradata\clne

C:\>mkdir G:\oracle\product\10.2.0\oradata\clne\archive


複製引數檔案
C:\>copy G:\oracle\product\10.2.0\admin\risenet\pfile\init.ora.4282008152024 G:\
oracle\product\10.2.0\admin\clne\pfile
已複製         1 個檔案。

把init.ora.4282008152024改成init.ora,並開啟該檔案把"risenet"替換成"clne".

建立clne內部口令:
C:\>oradim -new -sid CLNE -intpwd CLNE
例項已建立。


2、備份開啟的risenet資料庫
C:\>sqlplus as sysdba

SQL*Plus: Release 10.2.0.1.0 - Production on 星期三 5月 28 17:34:00 2008

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


連線到:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options

SQL> @e:\open_backup.sql


複製備份的資料檔案到clne資料庫
C:\>copy E:\backup\*.dbf  G:\oracle\product\10.2.0\oradata\clne


3、配置控制檔案指令碼

在risenet資料庫
SQL> alter database backup controlfile to trace resetlogs;

資料庫已更改。
生成一個包含了建立控制檔案所需的全部命令的檔案。檔案位置由user_dump_dest引數確定。
SQL> select value from v$parameter where name='user_dump_dest';

VALUE
--------------------------------------------------------------------------------

G:\ORACLE\PRODUCT\10.2.0\ADMIN\RISENET\UDUMP

SQL> show parameter  user_dump_dest;

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
user_dump_dest                       string      G:\ORACLE\PRODUCT\10.2.0\ADMIN
                                                 \RISENET\UDUMP

把該*.trc檔案複製到G:\oracle\product\10.2.0\admin\clne\create中,並重新命名為create_control.sql
,刪除註釋,把create controlfile中的reuse改成set,改資料庫名稱


修改成後內容:
STARTUP NOMOUNT
CREATE CONTROLFILE SET DATABASE "CLNE" RESETLOGS  ARCHIVELOG
    MAXLOGFILES 16
    MAXLOGMEMBERS 3
    MAXDATAFILES 100
    MAXINSTANCES 8
    MAXLOGHISTORY 292
LOGFILE
  GROUP 1 'G:\ORACLE\PRODUCT\10.2.0\ORADATA\CLNE\REDO01.LOG'  SIZE 50M,
  GROUP 2 'G:\ORACLE\PRODUCT\10.2.0\ORADATA\CLNE\REDO02.LOG'  SIZE 50M,
  GROUP 3 'G:\ORACLE\PRODUCT\10.2.0\ORADATA\CLNE\REDO03.LOG'  SIZE 50M
DATAFILE
  'G:\ORACLE\PRODUCT\10.2.0\ORADATA\CLNE\SYSTEM01.DBF',
  'G:\ORACLE\PRODUCT\10.2.0\ORADATA\CLNE\UNDOTBS01.DBF',
  'G:\ORACLE\PRODUCT\10.2.0\ORADATA\CLNE\SYSAUX01.DBF',
  'G:\ORACLE\PRODUCT\10.2.0\ORADATA\CLNE\USERS01.DBF',
  'G:\ORACLE\PRODUCT\10.2.0\ORADATA\CLNE\RISE.DBF'
CHARACTER SET ZHS16GBK
;

 


最後把每個資料檔案和重做日誌檔案複製到G:\ORACLE\PRODUCT\10.2.0\ORADATA\CLNE\

4、執行控制檔案指令碼
G:\oracle\product\10.2.0\admin\clne\pfile\initclne.ora複製到G:\oracle\product\10.2.0\db_1\database\initclne.ora,啟動資料庫,

預設到該目錄尋找初始化引數

winnt>set oracle_sid=clne
winnt>cd G:\oracle\product\10.2.0\admin\clne\create
winnt>sqlplus /nolog
SQL>connect sys/mzl as sysdba
SQL> @create_control.sql
ORACLE 例程已經啟動。

Total System Global Area  272629760 bytes
Fixed Size                  1248476 bytes
Variable Size              88081188 bytes
Database Buffers          176160768 bytes
Redo Buffers                7139328 bytes

控制檔案已建立。


5、恢復克隆的資料庫
用risenet的歸檔日誌
SQL> alter database recover until cancel using backup controlfile;
alter database recover until cancel using backup controlfile
*
第 1 行出現錯誤:
ORA-00279: 更改 558001 (在 05/28/2008 17:35:06 生成) 對於執行緒 1 是必需的
ORA-00289: 建議:
G:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\CLNE\ARCHIVELOG\2008_05_29\O1_MF_1_

3_%U_.ARC
ORA-00280: 更改 558001 (用於執行緒 1) 在序列 #3 中

 

關閉資料庫:shutdown immediate
啟動資料庫:startup mount

SQL> set logsource G:\oracle\product\10.2.0\flash_recovery_area\RISENET\ARCHIVE
OG\2008_05_28;
SQL> alter database recover until cancel using backup controlfile;
alter database recover until cancel using backup controlfile
*
第 1 行出現錯誤:
ORA-00275: 已經開始介質恢復

SQL> alter database recover cancel;
alter database recover cancel
*
第 1 行出現錯誤:
ORA-01547: 警告: RECOVER 成功但 OPEN RESETLOGS 將出現如下錯誤
ORA-01194: 檔案 1 需要更多的恢復來保持一致性
ORA-01110: 資料檔案 1: 'G:\ORACLE\PRODUCT\10.2.0\ORADATA\CLNE\SYSTEM01.DBF'


SQL> recover database using backup controlfile;
ORA-00279: 更改 558001 (在 05/28/2008 17:35:06 生成) 對於執行緒 1 是必需的
ORA-00289: 建議:
G:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\RISENET\ARCHIVELOG\2008_05_28\ARC00

003_0655921947.001
ORA-00280: 更改 558001 (用於執行緒 1) 在序列 #3 中


指定日誌: {=suggested | filename | AUTO | CANCEL}
cancel
介質恢復已取消。

SQL> select file#,checkpoint_change#,last_change# from v$datafile;

     FILE# CHECKPOINT_CHANGE# LAST_CHANGE#
---------- ------------------ ------------
         1             558001
         2             558001
         3             558001
         4             558001
         5             558001

SQL> select name,checkpoint_change# from v$database;

NAME      CHECKPOINT_CHANGE#
--------- ------------------
CLNE                       0

SQL> select file#,checkpoint_change# from v$datafile_header;

     FILE# CHECKPOINT_CHANGE#
---------- ------------------
         1             558001
         2             558001
         3             558001
         4             558001
         5             558001

 

由上面表可見資料庫的控制檔案的scn為0,與資料檔案的scn558001不一致。

在G:\oracle\product\10.2.0\db_1\database\initclne.ora上加個 _allow_resetlogs_corruption=true隱含引數
SQL> startup pfile='G:\oracle\product\10.2.0\db_1\database\initclne.ora';
ORACLE 例程已經啟動。

Total System Global Area  272629760 bytes
Fixed Size                  1248476 bytes
Variable Size              88081188 bytes
Database Buffers          176160768 bytes
Redo Buffers                7139328 bytes
資料庫裝載完畢。
ORA-01113: 檔案 1 需要介質恢復
ORA-01110: 資料檔案 1: 'G:\ORACLE\PRODUCT\10.2.0\ORADATA\CLNE\SYSTEM01.DBF'

SQL> recover datafile 1;
完成介質恢復。

SQL> alter database open;
alter database open
*
第 1 行出現錯誤:
ORA-00603: ORACLE 伺服器會話因致命錯誤而終止

關閉資料庫,重起資料庫正常:
SQL> startup
ORACLE 例程已經啟動。

Total System Global Area  272629760 bytes
Fixed Size                  1248476 bytes
Variable Size              88081188 bytes
Database Buffers          176160768 bytes
Redo Buffers                7139328 bytes
資料庫裝載完畢。
資料庫已經開啟。

 


6、開啟克隆的資料庫,檢查資料

SQL> select * from test;

        ID TIME
---------- --------------
         1 28-5月 -08

 

不用關閉risenet資料庫,就克隆了clne資料庫。

 

 

問答:如果希望改變一個以有資料庫的名稱,將不得不重新建立控制檔案。在CREATE CONTROLFILE命令中哪

個關鍵字可以重新命名資料庫?
A、SET DATABASE
B、RENAME DATABASE
C、CHANGE DATABASE
D、 COPY DATABASE

答案:A
 

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

相關文章