NEWIDを使用したデータベース名の変更
House of Brick Senior Consultant
DBAが実行する多くのタスクの一つは、データベースのクローン作成です。 通常、これは生産量データを提供するために、生産データベースから品質保証またはテストデータベースに行われます。 データベースが仮想マシン上にある場合は、VMレベルでクローン作成が行われる可能性があります。
クローニングは、データベースの正確な複製を作成し、それが意味することを正確に行います。 残念ながら、それはあなたのネットワークに同じ名前とDBIDを持つ2つのデータベースを持つことになります。 場合によっては、TNSNAMESレベルでエイリアシングを使用して十分に解決できることがあります。それ以外の場合は、データベース名とDBIDを内部的に変更する必要があります。 Oracleには、このためのユーティリティであるNEWID applicationがあります。
このドキュメントでは、NEWIDを使用してデータベース名の変更を実行するために必要な手順について説明します。
用語と定義
このドキュメントでは、以下の用語と定義を使用します。
Sid–Oracleサイト識別子。 これは、変更中のデータベース名です。
Pfile–Oracleパラメータ・ファイル。 OR ORACLE_HOME/dbsフォルダにあります。SPFILE-Oracleサーバー・パラメータ・ファイル。 また、OR ORACLE_HOME/dbsフォルダにあります。ORATAB-Oracle SidをOracleホームに関連付けるOracle構成ファイル。 /Etc/oratabにあります。
TNSNAMES–着信接続をOracle Sidに関連付けるOracleネットワーク構成ファイル。 OR ORACLE_HOME/network/adminフォルダにあります。
データベース名
データベース名またはSIDがprdからqaに変更されています。 これは、文書内で適切な場合に参照されます。
プロセスの概要
Oracleデータベース名(SID)を変更するには、次の4つの手順を実行します。
- 予備準備作業
- NIDアプリケーションの使用
- SID参照の変更
- データベースの開始と変更の確定
1. 予備準備作業
データベース名の変更後、Oracleパラメータ-ファイルに変更を加える必要があります。 データベースがパラメータ・ファイル(PFILE)ではなくサーバー・パラメータ・ファイル(SPFILE)を使用している場合は、データベース名の変更が発生する前にSPFILEからPFILEに変換す
1.1SPFILEが使用されているかどうかの判断
次のクエリを実行して、データベースがPFILEまたはSPFILEで起動されているかどうかを確認します。
図1.1SPFILEが使用されているかどうかを確認するクエリ
“from sys。v_parameter parameter WHERE name=’spfile’;
このクエリを実行して、データベースがPFILEまたはSPFILEで開始されているかどうかを判断します。
データベースがPFILEで始まる場合は、それ以上の準備作業は必要なく、ステップ2–NIDアプリケーションの使用に進むことができます。 それ以外の場合は、次の手順に進みます。1.2SPFILEからのPFILEの作成次のsqlを実行して、SPFILEからPFILEを作成します。
図1.2SPFILEからのPFILEの作成。Sql>create pfile from spfile;
このコマンドを実行して、SPFILEからPFILEを作成します。これにより、OR ORACLE_HOME/dbsディレクトリにPFILEが作成されます。 名前には現在のSIDが使用されます。 データベースの現在のSIDはprdなので、名前はinitprdになります。オラ ファイル名に新しいSIDを入れるようにファイルをコピーします。 この例では、新しい名前はinitqaになります。オラ ファイルのコピーの例については、図1.3を参照してください。
図1.3古いPFILEを新しい名前にコピーする
…
$ /u01/app/oracle/product/11.2.0/db_1/dbs
is is–ls initped.ora
9–rw-r–1oracle oinstall1106 10月11日20:17initprd.ora
cp cp initprd.オラ-イニトカオラ
$
…
古いPFILEをコピーする例、initdwprd。oraを新しいPFILE initdwqaに設定します。オラNIDアプリケーションを使用するには、oracleユーザーとしてデータベース・サーバーにログインし、次の手順を実行する必要があります。
- データベースをシャットダウン
- マウントモードでデータベースを起動
- NIDコマンドを実行
- データベースをシャットダウン
2.1 データベースのシャットダウン
SQLPlusセッションを開始し、コマンドshutdown immediateを入力します。 図2.1は、この手順を示しています。
図2。1データベースのシャットダウン
$ sqlplus/as sysdba
SQL*Plus:リリース11.2.0.3.0本番環境(10月10日(土))11 20:02:24 2014
Copyright©1982,2011,Oracle,All rights reserved.
接続先:
Oracle Database11g Enterprise Editionリリース11.2.0.3.0–Production
パーティション、OLAP、データマイニング、およびリアル-アプリケーション-テスト-オプション
SQL>shutdown immediate
Database closed。
データベースがマウント解除されました。
ORACLEインスタンスがシャットダウンしました。
>
…
データベースをシャットダウンするときの出力の例。
2.2データベースをマウントモードで起動する
SQLPlusセッションを開始し、コマンドstartup mountを入力します。 図2.2は、これが行われていることを示しています。
図2.2データベースのマウントモードへの起動
$ sqlplus/as sysdbaSQL*Plus:リリース11.2.0.3.0生産On Sat Oct11 20:02:24 2014copyright©1982,2011,Oracle,All rights reserved.
アイドルインスタンスに接続されています。
SQL>スタートアップマウント
ORACLEインスタンスが開始されました。
システムグローバル領域の合計535662593バイト
固定サイズ1346140バイト
可変サイズ260048292バイト
データベースバッファ268435456バイト
Redoバッファ5832704バイト
データベース
>
…
データベースをマウントモードで起動したときの出力の例。
exitと入力して、シェルプロンプトに戻ります。
2.3NIDコマンドの実行
NIDコマンドは、データベースのSIDを変更するOracleプログラムです。 これを使用するには、SYSアカウントのパスワードとデータベースの新しいSIDが必要です。 新しいSIDがqaの場合、コマンドラインはnid target=SYS dbname=qaになります。 Enterキーを押すと、SYSアカウントのパスワードの入力を求められます。 パスワードを入力します。 SIDを変更するかどうかを確認するプロンプトが表示されます。 画面表示については、図2.3.1を参照してください。
図2.3.1NIDコマンド実行時の画面表示
$ NID target=SYS dbname=qa
DBNEWID:リリース11.2.0.3.0-Production on Sat Oct11 20:05:54 2014
著作権©1982,2011,Oracleおよび/またはその関連会社. すべての権利を保有します。
パスワード:データベース内のサーバー・バージョン11.2.0
制御ファイルに接続します:
/u01/app/oracle/oradata/prd/control01。ctl
/u01/app/oracle/oradata/prd/control02.ctl
データベースIDとデータベース名PRDをQAに変更しますか? (Y/) => _
…
nidコマンドの開始からの出力。
図2.3.2に示すように、データベース名の変更にコミットするには、Yを入力します
図2.3.2データベース名の変更の確認
$ NID target=SYS dbname=qa
DBNEWID:リリース11.2.0.3.0-土の生産Oct11 20:05:54 2014
著作権©1982,2011,Oracleおよび/またはその関連会社. すべての権利を保有します。パスワード:データベースPRDに接続されています(DBID=3949194393)
データベース内のサーバーバージョン11.2.0
制御ファイルに接続します:
/u01/app/oracle/oradata/prd/control01。ctl
/u02/app/oracle/oradata/prd/control02.ctl
データベースIDとデータベース名PRDをQAに変更しますか? >
…
confimationにYに答える。
プログラムは内部変更を行い、進行状況を表示します。 これが終了すると、図2.3.3に示すようにシェルプロンプトに戻ります。図2.3.3Nidプログラムからの出力データ・ファイル/u02/app/oracle/oradata/prd/dw03。Db-dbidが変更され、新しい名前
Datafile/u02/app/oracle/oradata/prd/dw04が書き込まれました。Db-dbidが変更され、新しい名前
Datafile/u02/app/oracle/oradata/prd/dw05が書き込まれました。db-dbidが変更され、新しい名前
Datafile/u01/app/oracle/oradata/prd/temp01が書き込まれました。db-dbidが変更され、新しい名前
制御ファイル/u01/app/oracle/oradata/prd/control01が書き込まれました。ctl-dbidが変更され、新しい名前
制御ファイル/u02/app/oracle/oradata/prd/control02が書き込まれました。ctl-dbidが変更され、新しい名前
インスタンスがシャットダウン
データベース名がQAに変更されました。
再起動する前に、パラメータファイルを変更し、新しいパスワードファイルを生成します。
データベースQAのデータベースIDが1714809981に変更されました
このデータベースの以前のバックアップとアーカイブredoログはすべて使用できません。
データベースは、リカバリ領域のpreviosバックアップとアーカイブログを認識していません。
データベースがシャットダウンされ、RESETLOGSオプションでデータベースを開きます。
データベース名とIDが正常に変更されました。
DBNEWID–正常に完了しました。
$
…
正常に完了したことを示すNIDプログラムからの出力。
2.4データベースをシャットダウン
データベースをシャットダウンする必要があります。 手順2.1に示すように、SQLPlusセッションの開始を繰り返し、コマンドshutdown immediateを入力します。
3. 変更SID参照
データベースSIDの変更を反映するには、データベース-パラメータ、tnsnames、oratab、および環境ファイルで変更を行う必要があります。
- Oracleパラメータ-ファイルの名前を変更して編集する必要があります。
- Oratabでは、SIDの名前を変更する必要があります。プロファイルにORACLE_SIDが設定されている場合は、変更する必要があります。
3.1 Oracleパラメータ・ファイルの名前を変更して編集する必要があります
Oracleパラメータ・ファイルを編集し、2行を変更する必要があります。 パラメータ・ファイルが格納されている場所であるOR ORACLE_HOME/dbsフォルダに変更します。 例については、図3.1.1を参照してください。
図3.1.1パラメータファイルフォルダへの変更
…
$ /u01/app/oracle/product/11.2.0/db_1/dbs
is is–ls initqa.ora
9–rw-r–1oracle oinstall1106 10月11日20:17initqa.オラ
$
…
パラメータファイルを編集するためにパラメータファイルフォルダに変更する例。
ファイルを編集し、変更する必要がある2行を見つけます。 行はdbnameおよびinstance_nameで始まります。 変更前のパラメータファイルの外観の例については、図3.1.2を参照してください。
図3.1.SPFILEが使用中であるかどうかを照会します。
dbname=”prd”
db_recovery_file_dest_size=64424509440
db_recovery_file_dest=”/u01/app/oracle/flash_recovery_area”
fast_start_mttr_target=120
instance_name=prd
…
強調表示されている行は、新しいSID名に変更する必要があります。2行のSID値を古いsid prdから新しいsid qaに変更する必要があります。 行が変更後にどのように表示されるかについては、図3.1.3を参照してください。
図3.1.SPFILEが使用されているかどうかを確認するための問合せ
dbname=”qa”
db_recovery_file_dest_size=64424509440
db_recovery_file_dest=”/u01/app/oracle/flash_recovery_area”
fast_start_mttr_target=120
instance_name=qa
…
編集後にSID名の変更を示すパラメータファイル。
ファイルを保存し、エディタを終了します。Oracle ORATABファイル/etc/oratabでは、SID参照を古いSIDから変更する必要があります。 新しいSIDへのprd。 qa… ファイルを編集し、古いSIDエントリを新しいSIDに変更します。 例については、図3.2.1を参照してください。
図3.2.1変更されたORATABファイルの例/etc/oratab
#
#
#1120:/u01/app/oracle/product/11.2.0:N
orcl:/u01/app/oracle/product/11.2.0/db_1:Y
#prd:/u01/app/oracle/product/11.2.0/db_1:Y
qa:/u01/app/oracle/product/11.2.0/db_1:Y;
3.3TNSNAMESでは、Sidの名前をOracle TNSNANESファイルのtnsnamesに変更する必要があります。oraでは、SID参照を古いSIDから変更する必要があります。 新しいSIDにdwprd。 ドワカ また、新しいシステムに一致するようにホストアドレスを変更する必要があります。 TNSNAMESは、folder ORACLE_HOME/network/adminフォルダにあります。 ファイルを編集し、古いSIDエントリを新しいSIDに変更し、新しいシステムに一致するようにホストアドレスを変更します。 例については、図3.3.1を参照してください。図3.3.1変更されたTNSNAMESファイルの例OR ORACLE_HOME/network/admin/tnsnames。ora
(SID=PLSExtProc)
(PRESENTATION=RO)
)
)QA=
(DESCRIPTION=
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=TCP)(HOST=192.188.1.86)(PORT= 1521))
)
(CONNECT_DATA=
(SERVICE_NAME=qa)
(UR=A))
)
)
変更されたSID参照をdwprdからdwqaに示し、ホストアドレスを新しいアドレスに設定したTNSNAMESファイルの例。 変更された値は太字で表示されます。3.4ORACLE_SIDがプロファイルに設定されている場合は、変更する必要があります。
通常、環境変数OR ORACLE_SIDは、ログイン・プロファイル・スクリプト$HOME/のSID値に設定されます。プロフィールまたは$HOME/.bash_profile。 Sid設定を見つけて、新しい値に変更します。 図3.4.1に、コマンドラインからOR ORACLE_SID値を表示する例を示します。
図3.4.1OR ORACLE_SID値の表示
$ エコー$ORACLE_SID
prd
$
…
echoコマンドを使用してOR ORACLE_SID値を表示します。環境で設定するには、プロファイル・スクリプトのORACLE_SID値を変更した後、ログアウトして再度ログインする必要があります。
4. データベースを起動して変更を確定する
最後に完了する必要があるのは、データベースをマウントレベルまで起動し、resetlogsオプションを使用して開くことです。 SQLPlusセッションを開始し、startup mountと入力してデータベースをマウントモードで起動します。 手順1でPFILEを作成する必要がある場合、startコマンドはstartup pfile=initSIDになります。オラ-マウント したがって、この例では、startup pfile=initqaになります。オラ-マウント 次に、alter database open resetlogs;コマンドを使用してデータベースを開きます。 画面表示の例については、図4.1を参照してください。
図4.1データベースの起動とログのリセット
$ sqlplus/as sysdba
SQL*Plus:リリース11.2.0.3.0本番環境(10月10日(土))11 20:02:24 2014
Copyright©1982,2011,Oracle,All rights reserved.
アイドル状態のインスタンスに接続されています。
SQL>スタートアップマウント
ORACLEインスタンスが開始されました。
システムグローバル領域の合計535662593バイト
固定サイズ1346140バイト
可変サイズ260048292バイト
データベースバッファ268435456バイト
Redoバッファ5832704バイト
データベース
SQL>alter database open resetlogs;
データベースが変更されました。
>
…
マウント-モードでデータベースを起動し、resetlogsオプションを使用して開きます。手順1でPFILEを作成する必要がある場合は、PFILEをSPFILEに変換し直す必要があります。 これを行うには、CREATE SPFILEコマンドを使用します。 SQLプロンプトで、コマンドcreate spfile from pfileを入力します。
結論
Oracleデータベースのデータベース名の変更は複雑に聞こえるかもしれませんが、基本的なシステムスキルで実行できます。 このドキュメントで説明されている手順に従って、DBAはデータベースのダウンタイムを最小限に抑えてタスクを実行できます。