Oracleの制御ファイルやアーカイブファイルの場所を変更する
ここ数週間はOracleをいじることが多いです。旧環境からデータファイルなどを移行したときに割と適当にpfileやcreate databaseをやったので、妙なディレクトリに制御ファイルとアーカイブファイルの場所を指定してしまった模様。変更します。
現在の値を確認する。
DBをopenまであげて、systemで接続。show parameterで値を確認する。
$ sqlplus system/manager as sysdba SQL> show parameter control_files ; NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ control_files string /mnt/db/oracle/oradata/hogehog /control1/control1.ctl, /mnt/d b/oracle/oradata/cyhope1/contr ol1/control2.ctl, /mnt/db/orac le/oradata/hogehog/control1/co ntrol3.ctl SQL>
アーカイブファイルの置き場なんかは control_files のところを db_recovery_file_dest にすればOK。
spfileを作るもとにしたpfileがあればそれを参照するのもいいけど、show parameterを叩くのが確実。
spfileを変更する
コントロールファイルの場合。
SQL> alter system set controlfiles='/path/to/anyware/control01.ctl','/path/to/somewhre/control02.ctl' scope=spfile ;
アーカイブファイルの場合
SQL> alter system set db_recovery_file_dest='/path/to/nowhere/arch' scope=spfile ;
Oracleをシャットダウンする
SQL> shutdown immediate ;
DBをOpenする。
SQL> startup
元の場所は消しときましょう。運用しているうちになんで二箇所あるんだとか、このファイル日付変わってないけどいるのかなぁってことになってしまいます。というかなりました。