手順は以下のとおり。
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