いつもブログ閲覧頂いている皆様方、ペタ戴いている皆様方こんばんは。
ssss です。
今日は仕事初めで5時起き生活の再開です。
といっても本当は明日からが仕事で、今回は一足早く、臨出してのお仕事なのでした。
でも都心の電車 はいつもと変わらなかった気が...。(バス はガラガラでしたが)
で、今日のお仕事の一つに、サーバのファイルシステム変更に伴うOracleDBの構成変更がありました。
シェルで一括処理させる勇気はないので、
ALTER DATABASE 文を叩きまくり です。
では日誌も兼ねて再現。たまにはオラクルネタです。
-------------------------------------------------------
オラクルにSYSDBAでログインして、
$ sqlsys <-- (alias で sqlplus / as sysdba してます。)
データベースを一旦止めて、
shutdown immediate;
もしOPEN状態でやりたい場合は、
alter tablespace 表領域名 offline
/
alter tablespace 表領域名 rename datafile '変更前のデータファイル名'
to '変更後のデータファイル名'
/
alter tablespace 表領域名 online
/
です。
ただし、SYSTEM表領域やデフォルト一時表領域はOFFLINEにできないのでこの方法は不可です。
ご注意を。
マウントモードで上げて、
startup mount
対象ファイル名を確認したい場合は、動的パフォーマンスビュー(V$xxxxx)で見てね。
(MOUNTモードではディクショナリ・ビュー(DBA_DATA_FILES 等) は見れません。)
select xxx,xxx from v$datafile
/
select xxx,xxx from v$tempfile
/
select xxx,xxx from v$logfile
/
select xxx,xxx from v$database
/
まぁ普通、事前に確認しておくだろうけど...。
対象のファイルをコピー!コピー!コピー!
!cp -p /db1/oradata1/sys/* /db2/oradata2/sys/
!cp -p /db1/oradata1/data/* /db2/oradata2/data/
!cp -p /db1/oradata1/temp/* /db2/oradata2/temp/
で、構成変更です。(リネーム)
alter database rename file '変更前のファイル名(フルパス)' to '変更後のファイル名(フルパス)'
/
・
・
・ ひたすら打ちます。
・
・
データファイルもテンポラリファイルも、
alter database rename file '変更前のファイル名(フルパス)' to '変更後のファイル名(フルパス)'
/
・
・
・ 打って打って、
・
・
オンラインREDOログファイルも、
alter database rename file '変更前のファイル名(フルパス)' to '変更後のファイル名(フルパス)'
/
・
・
・
打ちまくりました。
( あ、いや、一つの文でいっぺんにやればいいやん...ってツッコミは無しで。 )
アーカイブ・ログの先を変更して~、
alter system set log_archive_dest_1='location=変更後のアーカイブ先ディレクトリ'
/
alter system set log_archive_dest_2='location=変更後のアーカイブ先ディレクトリ'
/
ダンプファイル出力先を変更して~、
alter system set background_dump_dest='変更後のbdumpディレクトリ'
/
alter system set core_dump_dest='変更後のcdumpディレクトリ'
/
alter system set user_dump_dest='変更後のudumpディレクトリ'
/
で、最後に制御ファイルの変更っと。
alter system set control_files = '変更後の制御ファイル1',
'変更後の制御ファイル2',
'変更後の制御ファイル3'
scope=spfile
/
満足したら、正常停止。(即OPENじゃないよ)
shutdown immediate
ORA-01109: データベースがオープンされていません。 エラーが出るけど当たり前なので無視!
制御ファイルをコピーします!
!cp -p 移動前の制御ファイル1 移前後の制御ファイル1
!cp -p 移動前の制御ファイル2 移前後の制御ファイル2
!cp -p 移動前の制御ファイル3 移前後の制御ファイル3
さて、起動します。(ドキドキ...)
startup
で、完了。
おめでとーーーーーーーーーー(-^□^-)
あ、今回は 10g だったけど、8i ~ 9i あたりのローカル管理テンポラリファイル (一時表領域のファイル)は
alter database rename file '変更前のテンポラリファイル名(フルパス)'
to '変更後のテンポラリファイル名(フルパス)'
/
だとエラーになるかも。
事前に DBA_TEMP_FILES にあるかどうか確認してみて。(おせっかい)
無難に DROP --> CREATE してくださいな。
でわでわ。
追伸:
DB構成変更後は、すみやかにバックアップ(できればコールドバックアップ)を取得すること。
あとは、 alter system backup controlfile to trace しとけば完璧!(たぶん)
ではまた。
良かったら | フォローしてください。 |
日々是勉強 ( ̄∩ ̄@