Oracle學習筆記:利用rmanDatabase Backup,手工建立clone資料庫

來源:互聯網
上載者:User

我可是費了很大的勁完善的啊.......。只需要定義好批處理中的以下基本變數,便可以向任何目錄、產生任何sid的clone執行個體。

set oracle_base=d:\oracle10g\app\oracle\product\10.2.0
set oracle_sid=TEMP
set syspwd=oracle
set data_base=d:\data

不是吹:好好研究下我的指令碼,你會得到到很多!

 

已知的問題:你必須瞭解自己備份的內容,才可以寫出適合自己的指令碼!我是基於oracle預設的種子模板製作的!

 

共有三部分組成:

  1.批處理——用於設定變數、運行命令、動態產生指令碼、運行指令碼

  2.批處理動態產生的指令碼——定義替換變數

  3.固定指令碼——從備份中提取資料庫檔案、產生控制檔案、開啟資料庫

批處理:

@echo off
echo  .
echo step1:設定環境變數
set oracle_base=d:\oracle10g\app\oracle\product\10.2.0
set oracle_sid=TEMP
set syspwd=oracle
set data_base=d:\data

set datapath=%data_base%\%oracle_sid%
set oracle_home=%oracle_base%\server
set path=%path%;%oracle_home%\bin;
set adminpath=%oracle_base%\admin\%oracle_sid%

echo  .
echo step2:刪除執行個體:請等待...
oradim -delete -sid %oracle_sid%
echo step2:刪除執行個體:成功!

echo  .
echo step3:刪除 %oracle_sid% 執行個體的已有db_create_file_dest目錄、*dump目錄
if exist %datapath%    del %datapath%\*.* /s /f /q
if exist %adminpath%    del %adminpath%\*.* /s /f /q
if exist %oracle_home%\database\init%oracle_sid%.ora    del %oracle_home%\database\init%oracle_sid%.ora
if exist %oracle_home%\database\pwd%oracle_sid%.ora    del %oracle_home%\database\pwd%oracle_sid%.ora
rem del %oracle_home%\database\create_db.dbf

echo  .
echo step4:建立 %oracle_sid% 執行個體必要的目錄
if not exist %oracle_home%\cfgtoollogs\dbca\%oracle_sid%    mkdir %oracle_home%\cfgtoollogs\dbca\%oracle_sid%
if not exist %oracle_home%\dbs    mkdir %oracle_home%\dbs
if not exist %oracle_home%\RDBMS\trace    mkdir %oracle_home%\RDBMS\trace
if not exist %oracle_home%\RDBMS\log    mkdir %oracle_home%\RDBMS\log
if not exist %adminpath%\adump    mkdir %adminpath%\adump
if not exist %adminpath%\bdump    mkdir %adminpath%\bdump
if not exist %adminpath%\cdump    mkdir %adminpath%\cdump
if not exist %adminpath%\dpdump    mkdir %adminpath%\dpdump
if not exist %adminpath%\pfile    mkdir %adminpath%\pfile
if not exist %adminpath%\udump    mkdir %adminpath%\udump
if not exist %datapath%    mkdir %datapath%

echo  .
echo step5:copyDatabase Backup檔案:%oracle_home%\database\create_db.dbf
if not exist %oracle_home%\database\create_db.dbf copy usercent-2009-02-23.dbf %oracle_home%\database\create_db.dbf

echo  .
echo step6:建立 %oracle_sid% 執行個體初始化參數檔案pfile:%oracle_home%\database\init%oracle_sid%.ora
echo compatible='10.2.0.1.0'    >%oracle_home%\database\init%oracle_sid%.ora
echo db_name='%oracle_sid%'    >>%oracle_home%\database\init%oracle_sid%.ora
echo db_recovery_file_dest='%data_base%'    >>%oracle_home%\database\init%oracle_sid%.ora
echo db_recovery_file_dest_size=2g    >>%oracle_home%\database\init%oracle_sid%.ora
echo sga_target=250m    >>%oracle_home%\database\init%oracle_sid%.ora
echo undo_management='AUTO'    >>%oracle_home%\database\init%oracle_sid%.ora
echo control_files='%datapath%\control_%oracle_sid%_01.ctl','%datapath%\control_%oracle_sid%_02.ctl'    >>%oracle_home%\database\init%oracle_sid%.ora
echo audit_file_dest='%adminpath%\adump'    >>%oracle_home%\database\init%oracle_sid%.ora
echo background_dump_dest='%adminpath%\bdump'    >>%oracle_home%\database\init%oracle_sid%.ora
echo core_dump_dest='%adminpath%\cdump'    >>%oracle_home%\database\init%oracle_sid%.ora
echo user_dump_dest='%adminpath%\udump'    >>%oracle_home%\database\init%oracle_sid%.ora

echo  .
echo step7:建立 %oracle_sid% 執行個體,定義sys使用者的密碼
oradim.exe -new -sid %oracle_sid% -syspwd %syspwd%

echo  .
echo step8:使用重新導向產生create_db_define.sql定義替換變數檔案
echo define    datapath = '%datapath%'; >.\create_db_define.sql
echo define     oracle_sid = '%oracle_sid%'; >>.\create_db_define.sql
echo define    oracle_home = '%oracle_home%'; >>.\create_db_define.sql

echo  .
echo step9:使用sqlplus串連至執行個體,運行建立資料庫的指令碼
sqlplus / as sysdba @%cd%\create_db_and_controlfile.sql

pause
@echo on

 

固定指令碼:


@@create_db_define.sql;
set verify off;
set define on;
startup nomount;
declare
    devicename varchar2(255);
    omfname varchar2(512) := NULL;
    done boolean;
begin
    devicename := dbms_backup_restore.deviceAllocate;
    dbms_backup_restore.restoreSetDataFile;
    dbms_backup_restore.restoreDataFileTo(1, '&&datapath\SYSTEM01.DBF');
    dbms_backup_restore.restoreDataFileTo(2, '&&datapath\UNDOTBS01.DBF');
    dbms_backup_restore.restoreDataFileTo(3, '&&datapath\SYSAUX01.DBF');
    dbms_backup_restore.restoreDataFileTo(4, '&&datapath\USERS01.DBF');
    dbms_backup_restore.restoreBackupPiece('&&oracle_home\database\create_db.dbf', done);
    dbms_backup_restore.deviceDeallocate;
end;

Create controlfile reuse set database "&&oracle_sid"
    MAXINSTANCES 8
    MAXLOGHISTORY 1
    MAXLOGFILES 16
    MAXLOGMEMBERS 3
    MAXDATAFILES 100
Datafile
    '&&datapath\SYSTEM01.DBF',
    '&&datapath\UNDOTBS01.DBF',
    '&&datapath\SYSAUX01.DBF',
    '&&datapath\USERS01.DBF'
LOGFILE
    GROUP 1 ('&&datapath\redo01.log') SIZE 51200K,
    GROUP 2 ('&&datapath\redo02.log') SIZE 51200K,
    GROUP 3 ('&&datapath\redo03.log') SIZE 51200K
RESETLOGS;

alter database open resetlogs;

 

動態指令碼內容:

define    datapath = 'd:\data\TEMP';
define     oracle_sid = 'TEMP';
define    oracle_home = 'd:\oracle10g\app\oracle\product\10.2.0\server';

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.