ORACLE搭載のサーバーのIPアドレス・ホスト名を変更したときに少しはまったので備忘録として記載します。
1.移行準備
サーバーのIPアドレスまたはホスト名を変更する前に移行準備を行います。
前提条件
- SYSMANユーザのパスワードがわかっていること
- SYSDBAユーザのパスワードがわかっていること
- IPアドレスまたはホスト名が変わっていないこと
IPアドレス・ホスト名は変更前でないと正常に作業できない場合があります。
既にIPアドレス・ホスト名を変更した場合は前のIPアドレス・ホスト名に戻してから作業してください。
環境変数の設定
ORACLE環境設定をexportコマンドで設定します。
su oracle #oracleユーザーに変更
export ORACLE_HOME=【オラクルホームのパス】
export ORACLE_SID=【接続したいSID】
export NLS_LANG=American_Japan.UTF8
spfileの取得
sqplusを起動し、spfileの場所を特定し、spfileをファイルとして出力します。
今回はspfileの出力ファイル名をinitORCL.oraとしています。
sqlplus /nolog #又は【ORACLE HOME】/bin/sqlplus /nolog
conn / as sysdba #sysdbaでログイン
select value from v$system_parameter where name = 'spfile'; #spfileのパスを取得
#取得したspfileのパス先に【initORCL.ora】がないことを確認する。あればバックアップや名前の変更等行い、削除する。
create pfile='【取得したspfileのパス】\initORCL.ora' from spfile;
quit
取得したspfileのパスに【initORCL.ora】ファイルが出来上がります。
spfileの確認、変更
作成したinitORCL.oraをvi等で確認し、IPアドレスまたはホスト名があれば変更したいIPアドレス・ホスト名に変更します。
IPアドレスまたはホスト名が見つからない場合はspfile変更が不要なので、削除します。
ORACLEリポジトリ削除
リポジトリ削除要件
emcaコマンドでORACLEリポジトリを削除します。
リポジトリ削除する際には以下の条件が必要になります。
- 環境変数にてORACLE_HOMEが設定されていること
- SYSMANユーザのパスワードがわかっていること
- SYSDBAユーザのパスワードがわかっていること
- IPアドレスまたはホスト名が変わっていないこと
一番重要なのはIPアドレスまたはホスト名を変更する前に作業を行わないといけません。
IPアドレスおよびホスト名を変更後に作業を行ってしまうとエラーが発生し、リポジトリが削除されない場合があります。
その際は前のIPアドレスに戻す必要がありますので手間がかかります。
(私の場合、IPアドレス、ホスト名を変えてから実行していたので何度もエラーで弾かれてました……)
リポジトリ削除
以下のコマンドを実行します。
emca -deconfig dbcontrol db -repos drop
emcaで実行できない場合は、【ORACLE_HOME】/bin/内にあると思います。(なければlocateで調べてください。)
emcaコマンド実行後、「Enterprise Managerの構成が正常に完了しました」と表示されればOKです。
IPアドレス・ホスト名の修正
IPアドレス・ホスト名を修正します。
【参考】IPアドレス・ホスト名の場所(CentOS6の場合)
IPアドレス:/etc/sysconfig/network-scripts/ifcfg-eth0
ホスト名:/etc/hostsと/etc/sysconfig/networkに
修正後「/etc/rc.d/init.d/network restart」を忘れず実施し、IPアドレス・ホスト名が変更されていることを確認します。
*.oraファイルの修正
下記ファイルを確認し、変更前のIPアドレス・ホスト名が記載されている場合は新しいIPアドレス・ホスト名に変更します。
- listener.ora
- tnsnames.ora
- sqlnet.ora
- cman.ora
- names.ora
- init.ora
各ファイルの格納先はORACLE_HOME配下でlocateやfind等で探してみてください。
設定によってcman.ora、names.ora、initORCL.ora、init.oraはないまたは名前が変更されている場合があります。
spfileの変更
spfileの確認、変更にて変更したspfile(initORCL.ora)をORACLEに適用します。
spfileにてIPアドレス・ホスト名が存在しない場合、この項目の対応は不要です。
spfileの適用
spfileの取得にて取得したパスをもとにspfileを適用します。
sqlplus /nolog #コマンド一覧にsqlplusがない場合、【Oracle_Home】/bin/sqlplus /nolog
conn / as sysdba #sysdbaでログイン
create spfile='【spfileの取得にて取得したパス】/spfile.ora' from pfile='【spfileの取得で出力したinitORCL.ora(フルパス)】';
quit
リスナーの確認・変更
リスナー情報にてIPアドレスが変更されているか確認します。
変更されていない場合は「alter system」で新IPアドレスに変更します。
sqlplus /nolog #コマンド一覧にsqlplusがない場合、【Oracle_Home】/bin/sqlplus /nolog
conn / as sysdba #sysdbaでログイン
show parameter local_listener; #リスナー情報の取得
#VALUEの項目に
#(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.***.***)(PORT=1521)) と表示される
#変更後のIPアドレスではない場合、以下のSQL文を実行する。
alter system set local_listener='(ADDRESS=(PROTOCOL=TCP)(HOST=変えたいIPアドレス)(PORT=1521))';
quit
Oracleリポジトリ作成
emcaコマンドでリポジトリを再構築します。
emca -config dbcontrol db -repos create
変更後確認
ORACLEを起動し実際にIPアドレスが変更され、正常に動作するか確認します。
問題がなければ、IPアドレス・ホスト名変更によるORACLEの修正は完了です。