標籤: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出品】