- - PR -
Oracle9iで表領域を移したい。
投稿者 | 投稿内容 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2007-10-16 11:40
いつも参考にさせていただいております、貧乏人です。
この度、Windows2003ServerとOracle9iの環境上で既存で 動いていたのですが、表領域の物理ファイルのボリュームが 大きくなった為、別ドライブへの移動を考えており、 テストを行っているのですがうまくいかない状況でして、 皆様のお知恵を拝借したいと思います。 (DドライブからEドライブに移したい。) ◆データファイルの移動その1) @コマンドプロンプト上にてsqlplus起動。 sqlplus /nolog Aデータベース接続 SQL>connect ---/---- as sysdba B表領域オフライン SQL> alter tablespace users online; 表領域が変更されました。 C移動先へファイルのコピー D表領域の参照ファイルの変更 SQL> ALTER TABLESPACE users RENAME DATAFILE 'D:\oracle\aaaaaa\USERS01.DBF' to 'E:\oracle\aaaaaa\USERS01.DBF'; * 行1でエラーが発生しました。: ORA-01525: データ・ファイル名の変更中にエラーが発生しました。 ORA-01522: 名前を変更するファイル'D:\oracle\aaaaaa\USERS01.DBF'がありません。 (ファイルは存在しますが、認識されないようで、) alertログには記述が無いです。。。 ◆データファイルの移動その2) @コマンドプロンプト上にてsqlplus起動。 sqlplus /nolog Aデータベース接続 SQL>connect ---/---- as sysdba Bデータベース停止 SQL> shutdown immediate データベースがクローズされました。 データベースがアンマウントされました。 ORACLEインスタンスがシャットダウンされました。 Cマウント起動 SQL> startup mount ORACLEインスタンスが起動しました。 D移動先へファイルのコピー Eデータファイルの移動 SQL> alter database RENAME DATAFILE 'D:\oracle\aaaaaa\USERS01.DBF' to 'E:\oracle\aaaaaa\USERS01.DBF'; 行1でエラーが発生しました。: ORA-02231: ALTER DATABASEのオプションがないか、または無効です。 ◆データファイルの移動その3) 上記「その2)」のEで SQL> alter database rename FILE 'D:\oracle\aaaaaa\USERS01.DBF' to 'E:\oracle\aaaaaa\USERS01.DBF'; * 行1でエラーが発生しました。: ORA-01511: ログ/データ・ファイルの名前の変更中にエラーが発生しました。 ORA-01516: ログ・ファイル、データ・ファイルまたはテンポラリ・ファイル"D:\oracle\aaaaaa\USERS01.DBF"は存在しません →のエラーにて???な状況です。 そもそも何ゆえエラーとなるのか、、、? パスはコマンドプロンプト上でドラック&ドロップしています。(直打ち無し) (詳細のログも探しているのですが良くわからずでして、、、) どなたか是非ともお知恵を拝借したく、 何卒、宜しくお願い致します。 | ||||||||||||
|
投稿日時: 2007-10-16 11:56
v$datafileで正確なパスを確認してみては如何でしょうか?
# パスの大文字小文字とかって影響しませんでしたっけ?(激しく自信無いです) | ||||||||||||
|
投稿日時: 2007-10-16 12:11
>B表領域オフライン
>SQL> alter tablespace users online; これはタイプミス? | ||||||||||||
|
投稿日時: 2007-10-16 12:16
まず、V$DATAFILE の NAME, TS# が表領域ときちんと対応しているか確認しましょう。
まず、online のままコピーするのはまずいでしょう。ってかマニュアルに「データベースをオープンしておくこと、および名前の変更前に表領域をオフラインにすることが必要です。」と。 で、今接続しているデータベースには 'D:\\oracle\\aaaaaa\\USERS01.DBF' が無いのでは?
これは ALTER DATABASE RENAME に DATAFILE 句が無いからです。
こちらも同じく。 _________________ もしもし@RMAN 友の会 | ||||||||||||
|
投稿日時: 2007-10-17 10:43
こあらさん、七味唐辛子さん、もしもしさん、そして皆々様、ご回答有難うございます。
>まず、V$DATAFILE の NAME, TS# が表領域ときちんと対応しているか確認しましょう。 →NAMEで参照したpathが異なっておりました。 (こあらさん、大文字、小文字は差別しないようです。) 上記の原因、 元々テストで使用していた環境に複数の(論理的)データベースが同居しており、 SQL>connect ---/---- as sysdba で接続した場合、一番最新のデータベースに接続されていました。 なのでOracle9iで表領域を移したい場合、 @Oracleエンタープライズなどにて対象のデータベース、表領域を選定する。 A(バックアップ実施→)コマンドプロンプト上にてsqlplus起動。 sqlplus /nolog Bデータベース接続 SQL>connect ---/----@(対象データベース) as sysdba ◆!こちらがミスっていました。↑これ。 C表領域ときちんと対応しているか(上記@と見比べ)確認する。 SELECT NAME, TS# FROM V$DATAFILE; →Cの結果より下記D〜Gを繰り返す。 D表領域オフライン SQL> alter tablespace users offline; 表領域が変更されました。 (掲示板への転記ミスでした誤online→正offline) E移動先へ物理ファイルのコピー F表領域の参照ファイルの変更 SQL> ALTER TABLESPACE users RENAME DATAFILE 'D:\\oracle\\aaaaaa\\USERS01.DBF' to 'E:\oracle\\aaaaaa\\USERS01.DBF'; 表領域が変更されました。 G表領域オンライン SQL> alter tablespace users online; 表領域が変更されました。 H変更確認 SELECT NAME, TS# FROM V$DATAFILE; (上記と併せてOracleエンタープライズなどにて対象のデータベース、 表領域のパスが変更されていることを確認する。) Iデータベースの動作確認 当方検証上ですと上記の手順で問題無かったです。 一応、当方の質問は解決致しましたが、 記述的に補足やご指摘事項等ありましたら ご連絡頂きたい所存で御座います。(ひとまず、)ありがとうございました!!。 | ||||||||||||
|
投稿日時: 2007-10-17 11:00
大文字、小文字の差別をしないのはWindowsプラットホームだからです。 Unix,linuxでは識別されますのでご注意を。 | ||||||||||||
|
投稿日時: 2007-10-17 18:31
解決済みとのことでなにより。
ところで、ものすごいどうでもいいですが OEM の作業って不要じゃないですか? (OEM って結局 V$DATAFILE とかその辺のビューを参照してるだけですし) _________________ もしもし@RMAN 友の会 | ||||||||||||
|
投稿日時: 2007-10-18 15:04
deannaさん、もしもしさん、またまたのご意見、恐れ入ります。
>大文字、小文字の差別をしないのはWindowsプラットホームだからです。 >Unix,linuxでは識別されますのでご注意を。 →掲題の対応をするにあたり、V$DATAFILE でpathを確認しますが、 Windows(2003Server)上ですと全てフルパスが大文字でした。(なにゆえ?) LinuxOracleの状況は解りかねるのですが、 SELECT NAME, TS# FROM V$DATAFILE; の結果は大文字、小文字加味するのでしょうか? 直近では予定無いのですが気になりますね。 >ところで、ものすごいどうでもいいですが OEM の作業って不要じゃないですか? >(OEM って結局 V$DATAFILE とかその辺のビューを参照してるだけですし) (どうでもよいお話、当方、大好きです。) エンタープライズマネージャを観る理由ですが、当方としては、 複数の論理データベースが存在する場合、 connect ---/----@(対象データベース) as sysdba の際のデータベースの指定の為に存在する(移行対象の)データベースと その物理ファイルの割当が問題無いかとうかを確認する為と 移行実施後に変更が論理データベースとその表領域、物理ファイルの割当に問題無いことを 確認する為に必要なのでは無いかと考えたしたいです。(どうでしょうか?) 最初にご質問させて頂きました ◆データファイルの移動その3) の手順でも 表領域(物理ファイル参照先)の変更が行えることを確認しました。 上記の手順にデータベースオープンを加えると。 ここでまたまたご質問なのですが、 SQL> ALTER TABLESPACE users RENAME DATAFILE 〜 と SQL> ALTER database rename FILE 〜 を使い分ける理由とは何でしょうか? 色々と調べているのですが、、、、(無知ですみません。) |