SQL Oracle

サーバーのIPアドレス、ホスト名変更に伴うOracleの修正

2012年12月20日

Oracle搭載のサーバーのIPアドレス、ホスト名を変更したときに少しはまったので備忘録として記載します。

こちらのHPを参考にして修正します。

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ファイルの修正

listener.ora、tnsnames.ora、sqlnet.ora、cman.ora、names.ora、init.oraの各ファイルに変更前のIPアドレス・ホスト名が記載されている場合は新しいものに変更します。

各ファイルの格納先は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の修正は完了です

-SQL, Oracle
-, , , ,