tabimoba.net

とあるエンジニアの雑記帳

Oracle環境を新環境へまるまる移行する方法

以下の方法は、Oracleを停止させる必要はありますが(ダウンタイムは発生しますが)、手軽にOracleの環境を移行することができます。 なお、この方法はOracle環境一式をバックアップする方法としても有効です。

1.【現環境】Oracleを止める

# su - oracle
$ sqlplus sys as sysdba
SQL> shutdown immediate
SQL> quit
$ lsnrctl stop

2.【現環境】/u01ディレクトリを圧縮する

# cd /
# tar czvf u01.tgz /u01

3.【現環境】u01.tgzを新環境へコピー

$ scp u01.tgz <ユーザー名>@<コピー先のIPアドレス>:/home/<ユーザー名>

4.【新環境】u01.tgzを展開

$ tar zxvf u01.tgz
$ sudo -s
# mv u01 /

5.【新環境】以下のファイルを更新する

例)hoge.local -> fuga.localへ変更する場合

/u01/app/oracle/product/x.x.x/dbhome_1/admin/listener.ora

変更前)

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = hoge.local)(PORT = 1521))
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
  )

変更後)

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = fuga.local)(PORT = 1521))
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
  )

/u01/app/oracle/product/x.x.x/dbhome_1/admin/tnsnames.ora

変更前)

HOGE =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = hoge.local)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = ACTIVITI)
    )
  )

LISTENER_HOGE =
  (ADDRESS = (PROTOCOL = TCP)(HOST = hoge.local)(PORT = 1521))

変更後)

HOGE =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = fuga.local)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = ACTIVITI)
    )
  )

LISTENER_HOGE =
  (ADDRESS = (PROTOCOL = TCP)(HOST = fuga.local)(PORT = 1521))

6.【新環境】Oracleを立ち上げる

以下のコマンドを実行し、特にエラー等が表示されなければ移行完了です。

# su - oracle
$ sqlplus sys as sysdba
SQL> startup
SQL> quit
$ lsnrctl start