ORACLE複製資料庫【weber出品】

來源:互聯網
上載者:User

標籤:style   blog   io   color   ar   使用   for   sp   檔案   

一、概述

  在公司中,我們會經常面臨著一種情況。我們制定了對資料庫的操作方案後,還不可以在真正的資料庫上執行,需要在備用資料庫進行測試,這個時候就需要備用資料上的資料和真正資料庫的資料是一模一樣的。我們這裡說的資料庫不是指RAID1這樣的鏡像備份。而是指複製這個資料庫然後將資料放到另一個資料庫中而已。在備份資料庫中我們完成對方案的執行確保萬無一失後即可在真機上部署。

 

二、分類

  目前用的比較多的複製資料庫的方法有:

  1.手工複製資料庫

  2.RMAN複製資料庫

三、環境

  VMware:8.0

  Linux:RHEL5

  Oracle:Release 10.2.0.5.0

  ORACLE_SID:orcl

  環境描述:我開了一台的虛擬機器,其實可以開兩台虛擬機器來類比最好了,可是本本的配置有限,只有在開這一台虛擬機器的情況下進行資料庫複寫類比。但是基本上都是一個樣的。

 

四、手工複製資料庫

1.首先先建立備份的指令碼:backup.sh

 sqlplus / as sysdba<<eof        alter database begin backup;        !cp -v /u01/app/oracle/oradata/orcl/*dbf /u01/backup/hotbk        alter database end backup;        alter database backup controlfile to trace as             ‘/u01/backup/hotbk/control.trace‘ reuse;        alter database backup controlfile to ‘/u01/backup/hotbk/control.bak‘ reuse;        create pfile=‘/u01/backup/hotbk/initorcl.ora‘ from spfile;        alter system switch logfile;        alter system switch logfile;        alter system switch logfile;        exit        eof        echo "backup is complete!!!"

2.給指令碼賦許可權

chmod +x backup.sh

3.執行指令碼

./backup.sh

4.等待備份成功後

cp /u01/backup/hotbk/initorcl.ora  $ORACLE_HOME/dbs/initcddx.ora

5.我們要做的就是修改我們的參數檔案

vi $ORACLE_HOME/dbs/initcddx.ora

6.為什麼要修改參數檔案呢?因為資料庫啟動到mount狀態就需要用到參數檔案,參數檔案裡麵包含著資料庫的執行個體名等內容。具體還有什麼可以自己百度。

執行:%s/orcl/cddx
這裡將參數檔案的orcl執行個體名換成了cddx執行建立目錄:mkdir -p /u01/app/oracle/admin/cddx/{a,b,c,u}dump mkdir -p /u01/app/oracle/oradata/cddx/

7.修改完參數檔案後我們就可以登入資料庫了,在登入資料庫之前我們需要修改環境變數,因為之前的環境變數為orcl,要是不修改立馬啟動到orcl這個資料庫上去。

export ORACLE_SID=cddx

8.登入資料庫,建立參數檔案

SQL>sqlplus / as sysdbaSQL>create spfile from pfile;

9.startup nomount後即可查看到整個資料庫的執行個體和狀態,這個時候運用到了參數檔案後資料庫啟動到了nomount狀態。

10.之前我們已經將控制檔案trace了以後,現在要對控制檔案進行修改:

修改/u01/backup/hotbk/control.trace:

11.刪除55行以上的內容,保留以下內容:其實我們要做的就是重建控制檔案;變化地方:第一行SET DATABASE cddx RESETLOGS,將全部的orcl替換成cddx

CREATE CONTROLFILE SET DATABASE cddx RESETLOGS  ARCHIVELOG    MAXLOGFILES 16    MAXLOGMEMBERS 3    MAXDATAFILES 100    MAXINSTANCES 8    MAXLOGHISTORY 292LOGFILE  GROUP 1 ‘/u01/app/oracle/oradata/cddx/redo01.log‘  SIZE 50M,  GROUP 2 ‘/u01/app/oracle/oradata/cddx/redo02.log‘  SIZE 50M,  GROUP 3 ‘/u01/app/oracle/oradata/cddx/redo03.log‘  SIZE 50M-- STANDBY LOGFILEDATAFILE  ‘/u01/app/oracle/oradata/cddx/system01.dbf‘,  ‘/u01/app/oracle/oradata/cddx/undotbs01.dbf‘,  ‘/u01/app/oracle/oradata/cddx/sysaux01.dbf‘,  ‘/u01/app/oracle/oradata/cddx/users01.dbf‘,  ‘/u01/app/oracle/oradata/cddx/example01.dbf‘CHARACTER SET AL32UTF8 

然後將之前備份的資料檔案拷貝到/u01/app/oracle/oradata/weber/

cp  /u01/backup/hotbk/    /u01/app/oracle/oradata/weber/

12.接下來到sql中執行:

SQL> get /u01/backup/hotbk/control.trace  1  CREATE CONTROLFILE SET DATABASE cddx RESETLOGS  ARCHIVELOG  2     MAXLOGFILES 16  3     MAXLOGMEMBERS 3  4     MAXDATAFILES 100  5     MAXINSTANCES 8  6     MAXLOGHISTORY 292  7  LOGFILE  8    GROUP 1 ‘/u01/app/oracle/oradata/cddx/redo01.log‘  SIZE 50M,  9    GROUP 2 ‘/u01/app/oracle/oradata/cddx/redo02.log‘  SIZE 50M, 10    GROUP 3 ‘/u01/app/oracle/oradata/cddx/redo03.log‘  SIZE 50M 11  -- STANDBY LOGFILE 12  DATAFILE 13    ‘/u01/app/oracle/oradata/cddx/system01.dbf‘, 14    ‘/u01/app/oracle/oradata/cddx/undotbs01.dbf‘, 15    ‘/u01/app/oracle/oradata/cddx/sysaux01.dbf‘, 16    ‘/u01/app/oracle/oradata/cddx/users01.dbf‘, 17    ‘/u01/app/oracle/oradata/cddx/example01.dbf‘ 18* CHARACTER SET AL32UTF8 19  /Control file created.建立控制檔案後執行個體的狀態自動會變成mounted

13.現在我們進行對資料庫的恢複:

SQL>recover database until cancel

14.恢複的時候可能會有報錯,如果報錯則使用REDO1這個記錄檔來進行恢複

15.這個時候開啟資料庫

SQL>alter database open resetlogs;

16.查詢資料庫的狀態和資料庫的ID

SQL> alter database open resetlogs;Database altered.SQL> select status from v$instance;STATUS------------OPENSQL> select dbid from v$database;      DBID----------1387955536SQL> select dbid from v$database;      DBID----------1387955536

17.這個時候兩個資料庫的DBID是一樣的,這個時候需要更改DBID更改dbid,這個時候需要將資料庫處於mounted狀態,然後在作業系統中執行.

nid target=sys/rootroot輸入y然後重啟資料庫即可更改dbid開啟資料庫的時候會出現一個錯誤:Database mounted.ORA-01589: must use RESETLOGS or NORESETLOGS option for database open要求我們必須要重設歸檔日誌的序號。

18.查看資料庫ID

SQL> select dbid from v$database;      DBID----------2725151620原先是:1387955536

 

五、RMAN複製資料庫

 

ORACLE複製資料庫【weber出品】

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.