- PR -

Oracle9iで表領域を移したい。

投稿者投稿内容
貧乏人
会議室デビュー日: 2007/02/15
投稿数: 17
投稿日時: 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/06/26
投稿数: 157
投稿日時: 2007-10-16 11:56
v$datafileで正確なパスを確認してみては如何でしょうか?
# パスの大文字小文字とかって影響しませんでしたっけ?(激しく自信無いです)
七味唐辛子
ぬし
会議室デビュー日: 2001/12/25
投稿数: 660
投稿日時: 2007-10-16 12:11
>B表領域オフライン
>SQL> alter tablespace users online;

これはタイプミス?
 
もしもし
ぬし
会議室デビュー日: 2004/10/15
投稿数: 280
投稿日時: 2007-10-16 12:16
まず、V$DATAFILE の NAME, TS# が表領域ときちんと対応しているか確認しましょう。

引用:

貧乏人さんの書き込み (2007-10-16 11:40) より:

◆データファイルの移動その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ログには記述が無いです。。。



まず、online のままコピーするのはまずいでしょう。ってかマニュアルに「データベースをオープンしておくこと、および名前の変更前に表領域をオフラインにすることが必要です。」と。
で、今接続しているデータベースには 'D:\\oracle\\aaaaaa\\USERS01.DBF' が無いのでは?

引用:

◆データファイルの移動その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のオプションがないか、または無効です。



これは ALTER DATABASE RENAME に DATAFILE 句が無いからです。

引用:

◆データファイルの移動その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"は存在しません

→のエラーにて???な状況です。
そもそも何ゆえエラーとなるのか、、、?



こちらも同じく。

_________________
もしもし@RMAN 友の会
貧乏人
会議室デビュー日: 2007/02/15
投稿数: 17
投稿日時: 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データベースの動作確認

当方検証上ですと上記の手順で問題無かったです。

一応、当方の質問は解決致しましたが、
記述的に補足やご指摘事項等ありましたら
ご連絡頂きたい所存で御座います。(ひとまず、)ありがとうございました!!。
deanna
大ベテラン
会議室デビュー日: 2004/08/23
投稿数: 118
投稿日時: 2007-10-17 11:00
引用:

→NAMEで参照したpathが異なっておりました。
(こあらさん、大文字、小文字は差別しないようです。)
きたい所存で御座います。(ひとまず、)ありがとうございました!!。



大文字、小文字の差別をしないのはWindowsプラットホームだからです。
Unix,linuxでは識別されますのでご注意を。
もしもし
ぬし
会議室デビュー日: 2004/10/15
投稿数: 280
投稿日時: 2007-10-17 18:31
解決済みとのことでなにより。
ところで、ものすごいどうでもいいですが OEM の作業って不要じゃないですか?
(OEM って結局 V$DATAFILE とかその辺のビューを参照してるだけですし)

_________________
もしもし@RMAN 友の会
貧乏人
会議室デビュー日: 2007/02/15
投稿数: 17
投稿日時: 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 〜
を使い分ける理由とは何でしょうか?
色々と調べているのですが、、、、(無知ですみません。)

スキルアップ/キャリアアップ(JOB@IT)