手順は以下のとおり。
1.初期化パラメータファイルの作成
サーバー・パラメータ・ファイルで起動しているインスタンスの場合、ソース・データベース上で以下のSQLを実行し、初期化パラメータファイルを作成します。CREATE PFILE={任意のディレクトリ}\init{SID}.ora FROM SPFILE='{ORACLE_HOME}\database\spfile{SID}.ora' PFILE :作成する初期化パラメータファイル名 SPFILE:作成元となるサーバー・パラメータファイル名 例)ORACLE_HOMEがC:\oracle\ora92、SIDがORCL、作成する初期化パラメータ ファイル名をC:\oracle\initORCL2.oraの場合、以下のようなSQLとなります。 CREATE PFILE='C:\oracle\initORCL2.ora' FROM SPFILE='C:\oracle\ora92\database\spfileORCL.ora'
2.制御ファイル作成スクリプトの生成(バックアップ)
ソース・データベース上で以下のSQLを実行し、制御ファイル作成スクリプトを生成します。ALTER DATABASE BACKUP CONTROLFILE TO TRACE ※結果は初期化パラメータuser_dump_destで指定されたディレクトトリに トレースファイル(~.trc)として作成されます。
3.ソースデータベースの停止
コピーするデータベース・ファイルを確定させる(オフライン・バックアップを取得できる状態にする)ためにソース・データベースを停止します。4.Oracleデータベース構成ファイルのコピー
ソース・データベース上のOracleデータベース構成ファイルを、ネットワークあるいはテープなどのバックアップ・メディアを介して、ターゲット・データベース上にコピーします。この時、ソース・データベースとターゲット・データベースで各ファイルの物理配置を変更する必要があれば変更します。
コピー対象となるOracleデータベース構成ファイルは以下のとおり。
- 初期化パラメータ・ファイル ※1.で作成したもの
- 制御ファイルのバックアップ・トレースファイル(~.trc) ※2.で作成したもの
- データ・ファイル
- REDOログファイル
- トレース・ファイル・ディレクトリ ※ファイルのコピーは不要
- アーカイブ・ディレクトリ ※アーカイブ・ログ・モードで運用しているデータベースの場合。
ファイルのコピーは不要。
それぞれのファイルが何処に格納されているかは、データベースによって異なりますが、例えば、何も考えずに標準の設定で作成した"ORCL"というデータベースの場合は、以下のようなディレクトリとファイルの構成になります。
C: \oracle \admin \ORCL \bdump \cdump \udump ~.trc \ora92 \database initORCL.ora PWDORCL.ora \oradata \ORCL controll~.ctl ~.dbf redo~.log \archive
5.初期化パラメータ・ファイルの編集
1.で作成し、4.でターゲット・データベースにコピーした初期化パラメータ・ファイルをテキスト・エディタで開き、ターゲット・データベースの環境に合わせてパラメータを編集します。(表2)表2.編集する初期化パラメータ
パラメータ名 | 説明 | 編集要領 |
---|---|---|
background_dump_dest | バックグラウンド・ダンプの出力先 | 4.でコピーしたディレクトリに合わせます。 |
control_files | 制御ファイルの物理位置 | 4.でコピーしたディレクトリに合わせます。 |
core_dump_dest | コア・ダンプの出力先 | 4.でコピーしたディレクトリに合わせます。 |
db_cache_size | データベース・キャッシュサイズ | 物理メモリー構成や他のアプリケーションとのメモリーの配分を考慮して決定します。 |
db_name | データベース名 | ソース・データベースと異なる名称にしたい場合は変更します。 |
instance_name | インスタンス名 | ソース・データベースと異なる名称にしたい場合は変更します。 |
java_pool_size | Javaプールサイズ | 物理メモリー構成や他のアプリケーションとのメモリーの配分を考慮して決定します。 |
large_pool_size | ラージ・プールサイズ | 物理メモリー構成や他のアプリケーションとのメモリーの配分を考慮して決定します。 |
log_archive_dest_1(※) | アーカイブ・ログ出力先 | 4.でコピーしたディレクトリに合わせます。 |
pga_aggregate_targe | PGA集計ターゲット | 物理メモリー構成や他のアプリケーションとのメモリーの配分を考慮して決定します。 |
sga_max_size | SGA最大サイズ | 物理メモリー構成や他のアプリケーションとのメモリーの配分を考慮して決定します。 |
shared_pool_size | 共有プールサイズ | 物理メモリー構成や他のアプリケーションとのメモリーの配分を考慮して決定します。 |
user_dump_dest | ユーザーダンプ出力先 | 4.でコピーしたディレクトリに合わせます。 |
※Standard Editionの場合は、log_archive_dest
6.ターゲット・データベースのパスワード・ファイルの作成
ターゲット・データベース上でコマンドプロンプトから以下のコマンドを実行し、sysユーザーのパスワードファイルを作成します。orapwd FILE={ORACLE_HOME}\database\PWD{SID}.ora PASSWORD={sysのパスワード} FILE :パスワードファイル名 PASSWORD:sysのパスワード 例)ORACLE_HOMEがC:\oracle\ora92、SIDがORCL2、sysのパスワードが managerの場合、以下のようなSQLとなります。 orapwd FILE=C:\oracle\ora92\database\PWDORCL2.ora PASSWORD=manager
7.ターゲット・データベースのOracleインスタンス(サービス)の作成
ターゲット・データベース上でコピーしたデータベースを起動するために、コマンド・プロンプトから以下のコマンドを実行し、Oracleインスタンス(サービス)を作成します。ORADIM -NEW -SID { SID } -STARTMODE AUTO -NEW : Oracleインスタンスの新規作成 -SID : 作成するOracleインスタンスのSID -STARTMODE : OS起動時のOracleインスタンス(サービス)の 自動起動設定
SIDが"ORCL2"の場合、以下のようなコマンドとなります。
ORADIM -NEW -SID ORCL2 -STARTMODE AUTO
既に作成されているOracleインスタンス(サービス)を同一名称で再作成したい場合は、上記のコマンドを実行する前に以下のコマンドを実行して既存のOracleインスタンス(サービス)を削除します。
ORADIM -DELETE -SID { SID }
8.リスナーの構成
Oracle Net Managerを利用して、リスナーにデータベース・サービスを追加します。※listener.oraの構成を理解しているのであれば、listener.oraを直接編集してもOKです。
9.Oracle Netサービスの構成
Oracle Net Managerを利用して、Oracle Netサービスを追加します。※tnsnames.oraの構成を理解しているのであれば、tnsnames.oraを直接編集してもOKです。
10.ターゲット・データベースの起動
1.で作成し、4.でターゲット・データベースにコピーした制御ファイルのバックアップトレースファイルをテキスト・エディタで開き、"# Set #2. RESETLOGS case"以降のSQL文だけを抜き出し、以下の要領で編集します。# # Set #2. RESETLOGS case # # The following commands will create a new control file and use it # to open the database. # The contents of online logs will be lost and all backups will # be invalidated. Use this only if online logs are damaged. STARTUP NOMOUNT CREATE CONTROLFILE REUSE DATABASE "ORCL" RESETLOGS ARCHIVELOG -- SET STANDBY TO MAXIMIZE PERFORMANCE MAXLOGFILES 5 MAXLOGMEMBERS 3 MAXDATAFILES 100 MAXINSTANCES 1 MAXLOGHISTORY 226 LOGFILE GROUP 1 'E:\ORACLE\ORADATA\ORCL\REDO01A.LOG' SIZE 100M, GROUP 2 'E:\ORACLE\ORADATA\ORCL\REDO02A.LOG' SIZE 100M, GROUP 3 'E:\ORACLE\ORADATA\ORCL\REDO03A.LOG' SIZE 100M -- STANDBY LOGFILE DATAFILE 'E:\ORACLE\ORADATA\ORCL\SYSTEM01.DBF', 'E:\ORACLE\ORADATA\ORCL\UNDOTBS01.DBF', 'E:\ORACLE\ORADATA\ORCL\DRSYS01.DBF', 'E:\ORACLE\ORADATA\ORCL\INDX01.DBF', 'E:\ORACLE\ORADATA\ORCL\TOOLS01.DBF', 'E:\ORACLE\ORADATA\ORCL\USERS01.DBF', 'E:\ORACLE\ORADATA\ORCL\XDB01.DBF' CHARACTER SET JA16SJISTILDE ; # Recovery is required if any of the datafiles are restored backups, # or if the last shutdown was not normal or immediate. RECOVER DATABASE USING BACKUP CONTROLFILE # Database can now be opened zeroing the online logs. ALTER DATABASE OPEN RESETLOGS; # Commands to add tempfiles to temporary tablespaces. # Online tempfiles have complete space information. # Other tempfiles may require adjustment. ALTER TABLESPACE TEMP ADD TEMPFILE 'E:\ORACLE\ORADATA\ORCL\TEMP01.DBF' SIZE 174063616 REUSE AUTOEXTEND ON NEXT 655360 MAXSIZE 32767M; # End of tempfile additions. #
- (1)STARTUP NOMOUNT
- 5.で編集した初期化パラメータ・ファイルを指定します。
例)STARTUP NOMOUNT PFILE='E:\oracle\admin\ORCL2\pfile\initORCL2.ora' - (2)CREATE CONTROLFILE ~
- ・データベース名を変更する場合は、DATABASEの後ろの"データベース名"を変更し、DATABASEの前に"SET"を付け加えます。
※データベース名は5.で編集した初期化パラメータファイルのDB_NAMEと一致させること
・アーカイブログモードを変更する場合は、RESETLOGSの後ろのARCHIVELOG(またはNOARCHIVELOG)をNOARCHIVELOG(またはARCHIVELOG)に変更します。
・デーファイル、REDOログファイルのディレクトリを4.でコピーしたディレクトリに合わせます。例)CREATE CONTROLFILE REUSE SET DATABASE "ORCL2" RESETLOGS NOARCHIVELOG -- SET STANDBY TO MAXIMIZE PERFORMANCE MAXLOGFILES 5 MAXLOGMEMBERS 3 MAXDATAFILES 100 MAXINSTANCES 1 MAXLOGHISTORY 226 LOGFILE GROUP 1 ( 'E:\ORACLE\ORADATA\ORCL2\REDO01A.LOG', 'E:\ORACLE\ORADATA\ORCL2\REDO01B.LOG' ) SIZE 100M, GROUP 2 ( 'E:\ORACLE\ORADATA\ORCL2\REDO02A.LOG', 'E:\ORACLE\ORADATA\ORCL2\REDO02B.LOG' ) SIZE 100M, GROUP 3 ( 'E:\ORACLE\ORADATA\ORCL2\REDO03A.LOG', 'E:\ORACLE\ORADATA\ORCL2\REDO03B.LOG' ) SIZE 100M -- STANDBY LOGFILE DATAFILE 'E:\ORACLE\ORADATA\ORCL2\SYSTEM01.DBF', 'E:\ORACLE\ORADATA\ORCL2\UNDOTBS01.DBF', 'E:\ORACLE\ORADATA\ORCL2\DRSYS01.DBF', 'E:\ORACLE\ORADATA\ORCL2\INDX01.DBF', 'E:\ORACLE\ORADATA\ORCL2\TOOLS01.DBF', 'E:\ORACLE\ORADATA\ORCL2\USERS01.DBF', 'E:\ORACLE\ORADATA\ORCL2\XDB01.DBF' CHARACTER SET JA16SJISTILDE ;
- (3)RECOVER DATABASE ~
- リカバリは不要であるため削除します。
- (4)ALTER DATABASE OPEN RESETLOGS;
- そのまま使用します。
- (5)ALTER TABLESPACE TEMP ~
- TEMPFILEのディレクトリを4.でコピーしたディレクトリに合わせます。
例)ALTER TABLESPACE TEMP ADD TEMPFILE 'E:\ORACLE\ORADATA\ORCL\TEMP01.DBF' SIZE 625999872 REUSE AUTOEXTEND ON NEXT 655360 MAXSIZE 32767M;
SQLが編集できたら、sqlplusで7.で作成したインスタンスにsysユーザー(SYSDBA権限)で接続して実行します。
STARTUP NOMOUNT PFILE='E:\oracle\admin\ORCL2\pfile\initORCL2.ora' CREATE CONTROLFILE REUSE SET DATABASE "ORCL2" RESETLOGS NOARCHIVELOG -- SET STANDBY TO MAXIMIZE PERFORMANCE MAXLOGFILES 5 MAXLOGMEMBERS 3 MAXDATAFILES 100 MAXINSTANCES 1 MAXLOGHISTORY 226 LOGFILE GROUP 1 ( 'E:\ORACLE\ORADATA\ORCL2\REDO01A.LOG', 'E:\ORACLE\ORADATA\ORCL2\REDO01B.LOG' ) SIZE 100M, GROUP 2 ( 'E:\ORACLE\ORADATA\ORCL2\REDO02A.LOG', 'E:\ORACLE\ORADATA\ORCL2\REDO02B.LOG' ) SIZE 100M, GROUP 3 ( 'E:\ORACLE\ORADATA\ORCL2\REDO03A.LOG', 'E:\ORACLE\ORADATA\ORCL2\REDO03B.LOG' ) SIZE 100M -- STANDBY LOGFILE DATAFILE 'E:\ORACLE\ORADATA\ORCL2\SYSTEM01.DBF', 'E:\ORACLE\ORADATA\ORCL2\UNDOTBS01.DBF', 'E:\ORACLE\ORADATA\ORCL2\DRSYS01.DBF', 'E:\ORACLE\ORADATA\ORCL2\INDX01.DBF', 'E:\ORACLE\ORADATA\ORCL2\TOOLS01.DBF', 'E:\ORACLE\ORADATA\ORCL2\USERS01.DBF', 'E:\ORACLE\ORADATA\ORCL2\XDB01.DBF' CHARACTER SET JA16SJISTILDE ; ALTER DATABASE OPEN RESETLOGS; ALTER TABLESPACE TEMP ADD TEMPFILE 'E:\ORACLE\ORADATA\ORCL\TEMP01.DBF' SIZE 625999872 REUSE AUTOEXTEND ON NEXT 655360 MAXSIZE 32767M;
11.サーバー・パラメータファイルの作成
ターゲット・データベース上で以下のSQLを実行し、サーバー・パラメータファイルを作成します。CREATE SPFILE='{ORACLE_HOME}\database\spfile{SID}.ora' FROM PFILE={5.で編集した初期化パラメータ・ファイル}' SPFILE:作成するサーバー・パラメータファイル名 PFILE :作成元となる初期化パラメータファイル名 例)ORACLE_HOMEがC:\oracle\ora92、SIDがORCL2、作成元の初期化パラメータ ファイル名がE:\oracle\admin\ORCL2\pfile\initORCL2.oraの場合、 以下のようなSQLとなります。 CREATE SPFILE='C:\oracle\ora92\database\spfileORCL2.ora' FROM PFILE='E:\oracle\admin\ORCL2\pfile\initORCL2.ora'
12.ターゲット・データベースへの接続の確認
7.で作成されたOracleインスタンス(サービス)を再起動し、sqlplus、Oracle Enterprise Managerなどを使用してターゲット・データベースに接続できることを確認します。※接続できない場合は、アラートログファイルやリスナー、Oracle Netの設定などを確認します。
【関連エントリ】
[Oracle] データベースのコピー方法(オフライン・バックアップを利用する方法<その1>) 2004/09/09
[Oracle] データベースのコピー方法(オフライン・バックアップを利用する方法<その2>) 2004/09/10