Oracle備份與恢復系列(四)複製資料庫 使用原有的控制檔案
克隆Open狀態下的PRACTICE資料庫
實驗目的:在源資料庫PRACTICEopen狀態下,用alter tablespace .. begin backup 的方式備份全庫。 用該備份在一臺新的資料庫伺服器上恢復,驗證備份的有效性。為了操作簡便,克隆資料庫端採用了dbca建立資料庫,用源資料庫的備份來覆蓋所有檔案,執行恢復操作來完成此次克隆。
源資料庫: 192.168.1.20
克隆資料庫:192.168.1.21
此次試驗分為5個步驟
1 準備克隆資料庫
2 備份開啟的PRACTICE資料庫
3 從源庫複製備份到克隆庫
4 恢復克隆的資料庫
5 開啟克隆的資料庫
step1 準備克隆資料庫
在克隆資料庫主機上建立資料檔案、歸檔日誌、備份檔案目錄
mkdir /oradata
mkdir /archive
mkdir /backup
chown oracle:oinstall /oradata
chown oracle:oinstall /archive
chown oracle:oinstall /backup
dbca建庫
step2 備份Open狀態下的PRACTICE資料庫
該指令碼是在源資料庫open狀態下執行alter tablespace begin backup方式進行的。
@/backup/scripts/open_backup.sql
指令碼如下
vi /backup/scripts/open_backup.sql
set feedback off
set pagesize 0
set heading off
set verify off
set linesize 100
set trimspool on
define dir = '/backup/open_backup'
define fil = '/backup/scripts/open_backup_commands.sql'
define spo = '&dir/open_backup_output.lst'
set serveroutput on
spool &fil
prompt spool &spo
prompt archive log list;;
prompt alter system switch logfile;;
prompt alter system archive log all;;
DECLARE
rem不備份臨時表空間
CURSOR cur_tablespace IS
SELECT tablespace_name
FROM dba_tablespaces where tablespace_name<>'TEMP';
CURSOR cur_datafile (tn VARCHAR) IS
SELECT file_name
FROM dba_data_files
WHERE tablespace_name = tn;
BEGIN
FOR ct IN cur_tablespace LOOP
dbms_output.put_line ('alter tablespace '||ct.tablespace_name||' begin backup;');
FOR cd IN cur_datafile (ct.tablespace_name) LOOP
dbms_output.put_line ('host cp '||cd.file_name||' &dir');
END LOOP;
dbms_output.put_line ('alter tablespace '||ct.tablespace_name||' end backup;');
END LOOP;
END;
/
prompt alter system switch log file;;
rem 注意此處只備份了一個控制檔案,需要手工複製一份到快速恢復區/u01/app/oracle/fast_recovery_area/PRACTICE
prompt alter database backup controlfile to '&dir./control01.ctl' REUSE;;
prompt archive log list;;
prompt spool off
spool off;
@&fil
step3 從源庫複製備份到克隆庫
在源資料庫端root使用者下執行以下複製操作
複製spfile檔案
scp /u01/app/oracle/product/11.2.0/db_1/dbs/spfilePRACTICE.ora 192.168.1.21:/u01/app/oracle/product/11.2.0/db_1/dbs/
複製資料檔案、控制檔案
scp /backup/open_backup/* 192.168.1.21:/backup/
複製歸檔日誌檔案
scp -r /archive/ 192.168.1.21:/
在克隆資料庫端修改組屬
chown oracle:oinstall /u01/app/oracle/product/11.2.0/db_1/dbs/spfilePRACTICE.ora
chown oracle:oinstall /oradata
chown oracle:oinstall /archive
在克隆資料庫端複製一份複製過來的控制檔案到閃回區
cp /backup/control01.ctl /u01/app/oracle/fast_recovery_area/PRACTICE/control02.ctl
step4 恢復克隆的資料庫
recover database until cancel using backup control file;
ORA-00279: change 1304004 generated at 08/02/2014 10:52:46 needed for thread 1
ORA-00289: suggestion : /archive/1_2_854446453.arc
ORA-00280: change 1304004 for thread 1 is in sequence #2
Specify log: {=suggested | filename | AUTO | CANCEL}
ORA-00279: change 1304100 generated at 08/02/2014 10:53:08 needed for thread 1
ORA-00289: suggestion : /archive/1_3_854446453.arc
ORA-00280: change 1304100 for thread 1 is in sequence #3
ORA-00278: log file '/archive/1_2_854446453.arc' no longer needed for this
recovery
Specify log: {=suggested | filename | AUTO | CANCEL}
ORA-00279: change 1304837 generated at 08/02/2014 11:03:41 needed for thread 1
ORA-00289: suggestion : /archive/1_4_854446453.arc
ORA-00280: change 1304837 for thread 1 is in sequence #4
ORA-00278: log file '/archive/1_3_854446453.arc' no longer needed for this
recovery
Specify log: {=suggested | filename | AUTO | CANCEL}
Log applied.
Media recovery complete.
SYS@PRACTICE >
SYS@PRACTICE >
SYS@PRACTICE >alter database open resetlogs;
step5 開啟克隆的資料庫
alter database open resetlogs;
由於dbca建庫包含了temp01.dbf臨時表空間檔案,所以不需要再次新增了。
實驗目的:在源資料庫PRACTICEopen狀態下,用alter tablespace .. begin backup 的方式備份全庫。 用該備份在一臺新的資料庫伺服器上恢復,驗證備份的有效性。為了操作簡便,克隆資料庫端採用了dbca建立資料庫,用源資料庫的備份來覆蓋所有檔案,執行恢復操作來完成此次克隆。
源資料庫: 192.168.1.20
克隆資料庫:192.168.1.21
此次試驗分為5個步驟
1 準備克隆資料庫
2 備份開啟的PRACTICE資料庫
3 從源庫複製備份到克隆庫
4 恢復克隆的資料庫
5 開啟克隆的資料庫
step1 準備克隆資料庫
在克隆資料庫主機上建立資料檔案、歸檔日誌、備份檔案目錄
mkdir /oradata
mkdir /archive
mkdir /backup
chown oracle:oinstall /oradata
chown oracle:oinstall /archive
chown oracle:oinstall /backup
dbca建庫
step2 備份Open狀態下的PRACTICE資料庫
該指令碼是在源資料庫open狀態下執行alter tablespace begin backup方式進行的。
@/backup/scripts/open_backup.sql
指令碼如下
vi /backup/scripts/open_backup.sql
set feedback off
set pagesize 0
set heading off
set verify off
set linesize 100
set trimspool on
define dir = '/backup/open_backup'
define fil = '/backup/scripts/open_backup_commands.sql'
define spo = '&dir/open_backup_output.lst'
set serveroutput on
spool &fil
prompt spool &spo
prompt archive log list;;
prompt alter system switch logfile;;
prompt alter system archive log all;;
DECLARE
rem不備份臨時表空間
CURSOR cur_tablespace IS
SELECT tablespace_name
FROM dba_tablespaces where tablespace_name<>'TEMP';
CURSOR cur_datafile (tn VARCHAR) IS
SELECT file_name
FROM dba_data_files
WHERE tablespace_name = tn;
BEGIN
FOR ct IN cur_tablespace LOOP
dbms_output.put_line ('alter tablespace '||ct.tablespace_name||' begin backup;');
FOR cd IN cur_datafile (ct.tablespace_name) LOOP
dbms_output.put_line ('host cp '||cd.file_name||' &dir');
END LOOP;
dbms_output.put_line ('alter tablespace '||ct.tablespace_name||' end backup;');
END LOOP;
END;
/
prompt alter system switch log file;;
rem 注意此處只備份了一個控制檔案,需要手工複製一份到快速恢復區/u01/app/oracle/fast_recovery_area/PRACTICE
prompt alter database backup controlfile to '&dir./control01.ctl' REUSE;;
prompt archive log list;;
prompt spool off
spool off;
@&fil
step3 從源庫複製備份到克隆庫
在源資料庫端root使用者下執行以下複製操作
複製spfile檔案
scp /u01/app/oracle/product/11.2.0/db_1/dbs/spfilePRACTICE.ora 192.168.1.21:/u01/app/oracle/product/11.2.0/db_1/dbs/
複製資料檔案、控制檔案
scp /backup/open_backup/* 192.168.1.21:/backup/
複製歸檔日誌檔案
scp -r /archive/ 192.168.1.21:/
在克隆資料庫端修改組屬
chown oracle:oinstall /u01/app/oracle/product/11.2.0/db_1/dbs/spfilePRACTICE.ora
chown oracle:oinstall /oradata
chown oracle:oinstall /archive
在克隆資料庫端複製一份複製過來的控制檔案到閃回區
cp /backup/control01.ctl /u01/app/oracle/fast_recovery_area/PRACTICE/control02.ctl
step4 恢復克隆的資料庫
recover database until cancel using backup control file;
ORA-00279: change 1304004 generated at 08/02/2014 10:52:46 needed for thread 1
ORA-00289: suggestion : /archive/1_2_854446453.arc
ORA-00280: change 1304004 for thread 1 is in sequence #2
Specify log: {
ORA-00279: change 1304100 generated at 08/02/2014 10:53:08 needed for thread 1
ORA-00289: suggestion : /archive/1_3_854446453.arc
ORA-00280: change 1304100 for thread 1 is in sequence #3
ORA-00278: log file '/archive/1_2_854446453.arc' no longer needed for this
recovery
Specify log: {
ORA-00279: change 1304837 generated at 08/02/2014 11:03:41 needed for thread 1
ORA-00289: suggestion : /archive/1_4_854446453.arc
ORA-00280: change 1304837 for thread 1 is in sequence #4
ORA-00278: log file '/archive/1_3_854446453.arc' no longer needed for this
recovery
Specify log: {
Log applied.
Media recovery complete.
SYS@PRACTICE >
SYS@PRACTICE >
SYS@PRACTICE >alter database open resetlogs;
step5 開啟克隆的資料庫
alter database open resetlogs;
由於dbca建庫包含了temp01.dbf臨時表空間檔案,所以不需要再次新增了。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29047826/viewspace-1244325/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle備份與恢復系列(四)複製資料庫 續 建立新的控制檔案Oracle資料庫
- Oracle備份與恢復系列(四)續 RMAN Duplicate複製資料庫Oracle資料庫
- Oracle備份與恢復系列(四)複製資料庫 續 手工複製資料庫的最簡操作Oracle資料庫
- 使用備份的控制檔案恢復資料庫資料庫
- 備份與恢復系列 十一 控制檔案的備份與恢復
- 【rman 備份與恢復】恢復丟失所有的控制檔案
- Oracle備份與恢復系列 五 續 EXP/IMP遷移、複製資料庫Oracle資料庫
- Oracle資料庫控制檔案在備份恢復中的作用Oracle資料庫
- 【備份與恢復】恢復受損的複用控制檔案
- 備份與恢復系列 八 丟失所有資料檔案的還原與恢復
- 備份與恢復--利用備份的控制檔案恢復
- Oracle備份與恢復【丟失控制檔案的恢復】Oracle
- rman恢復資料庫--用備份的控制檔案資料庫
- Oracle備份與恢復【丟失資料檔案的恢復】Oracle
- 備份與恢復--重建控制檔案後資料檔案損壞的恢復
- ORACLE 只讀資料檔案備份與恢復Oracle
- 備份與恢復--重建控制檔案
- 備份與恢復系列 九 丟失表空間資料檔案的還原與恢復
- Oracle資料庫備份與恢復之三:OS備份/使用者管理的備份與恢復Oracle資料庫
- oracle資料庫的備份與恢復Oracle資料庫
- 備份與恢復系列 十 引數檔案spfile的備份與恢復
- 備份與恢復:polardb資料庫備份與恢復資料庫
- 資料庫備份與恢復(使用歸檔後滾)資料庫
- rman備份-(1) 利用備份級恢復資料檔案和控制檔案
- 使用舊的控制檔案備份來恢復控制檔案
- 備份與恢復--重新控制檔案資料字典和控制檔案不一致的恢復
- 【備份恢復】利用 備份控制檔案到指定目錄下的控制檔案 恢復控制檔案
- 【備份與恢復】控制檔案的恢復(不完全恢復)
- Oracle資料庫備份與恢復之RMANOracle資料庫
- Oracle資料庫的備份與恢復(轉)Oracle資料庫
- Oracle 資料庫的備份與恢復(轉)Oracle資料庫
- 循序漸進oracle第7章:備份與恢復之利用控制檔案快照恢復控制檔案Oracle
- oralce備份與恢復1 控制檔案(轉)
- 【備份恢復】Oracle 資料備份與恢復微實踐Oracle
- Oracle12c多租戶資料庫備份與恢復 - PDB中資料檔案的恢復Oracle資料庫
- Oracle手工不完全恢復(二):使用備份控制檔案Oracle
- 【技術分享】Oracle控制檔案的備份、恢復以及多路複用Oracle
- 【備份恢復】從備份恢復資料庫資料庫