Oracle9iをOracle11gへ移行
Oracle9iをOracle11g環境へデータ移行しました。同じ機械でアップグレードするとするといろいろとややこしい手順があるのですが今回は別の機械へのデータ移行。
expで吐き出したファイルをimpで取り込むってのが基本方針なんですが、9iと11gとの間でいろいろと細かい差分があってちょいと苦労しました。
データベースは既にインストールされているものとして話をすすめます。
初期化ファイルを旧環境から移す
初期化ファイルを移動します。内容は少し変更する必要があります。10gか11gあたりから追加になったUNDO機能のために、undoの表領域を初期化ファイルに追記。以下二行を追加します。
undo_management=auto undo_tablespace=undotbs
二行目に書いたのが、undoのためのテーブルスペース名。後でcreate databaseで同じ名前で指定します。
次にshared_pool_sizeを大きく。9iとは最低限のメモリ必要量がちがうようで最低でも325477990必要。今回はこのサイズに変更しました。
shared_pool_size = 325477990
最後。アーカイブモードが有効になっている場合のアーカイブファイルのファイル名指定が少し変更になっていて、%t,%s,%rの三つが入ってないといけない模様。9iまでは%tと%sだけでもOKでした。
log_archive_format = %t_%s_%r.dbf
必要なディレクトリを作成する
これから作成するOracleインスタンスが使用するディレクトリを作成。今回は/export/home/data以下に全部つくりました。
# mkdir -p /export/home/data/{cdump,bdump,udump,control1,control2,arch,log1,log2} # chown -R oracle:dba /export/home/data
データベースをnomountでスタート
ここまでやったところでsqlplusでインスタンスをnomountでスタート。
$ sqlplus /nolog SQL*Plus: Release 11.1.0.6.0 - Production on 火 11月 4 19:35:41 2008 Copyright (c) 1982, 2007, Oracle. All rights reserved. SQL> conn system/manager as sysdba アイドル・インスタンスに接続しました。 SQL> startup nomount ORA-32004: obsolete and/or deprecated parameter(s) specified ORACLEインスタンスが起動しました。 Total System Global Area 626548736 bytes Fixed Size 2088584 bytes Variable Size 352321912 bytes Database Buffers 268435456 bytes Redo Buffers 3702784 bytes SQL>
なんかエラーがでてるな。今度調べよう。
databaseを作成する。
以下のSQLコマンドでデータベースを作成。9iと違うのは以下の点。
- sysauxを指定する。system表領域の補助らしい。
- undo表領域を指定する。undo機能ってなんだろ。これも後で調べよう。
- logファイルのサイズが9iでは2Mでよかったんだけど、最低でも4M必要らしい。今回は8Mで指定。
- データファイルのファイルサイズも最低限が大きくなったみたい。ディスク容量に糸目をつけずunlimitedを指定するのが吉。
こんなSQLコマンドでデータベースを作成しました。
create database data controlfile reuse logfile group 1 ('/export/home/data/log1/redo0101.log','/export/home/data/log1/redo0102.log') size 8M , group 2 ('/export/home/data/log2/redo0201.log','/export/home/data/log2/redo0202.log') size 8M maxlogfiles 40 datafile '/export/home/data/systemdata/system01.dbf' size 180357129 autoextend on next 30M sysaux datafile '/export/home/data/systemdata/sysaux.dbf' size 1048578048 autoextend on next 30M undo tablespace "undotbs" datafile '/export/home/data/systemdata/undotbs.dbf' size 1048578048 autoextend on next 30M maxsize unlimited maxdatafiles 240 character set ja16sjis
必要なテーブルスペースを準備する
移行もとのデータベースのdba_data_fileやv$datafileなんかを参照して必要なテーブルスペースとデータファイルのセットを準備します。
create tablespace testdata datafile '/export/home/data/testdata.dbf' size 1000M autoextend on next 10M maxsize 5000M; create tablespace userdata datafile '/export/home/data/userdata.dbf' size 300m autoextend on next 10M maxsize 1000M;