- PR -

OracleテーブルのOWNERの変更方の件

1
投稿者投稿内容
檸檬
ベテラン
会議室デビュー日: 2004/04/26
投稿数: 87
投稿日時: 2005-11-14 11:07
Oracle8iでテーブルのOWNERを変更したいと思っています。
テーブルをDROPしてからCREATEし直すしか方法はないんでしょうか?
ALTER TABLE文などでは無理なのでしょうか?
どなたかご存知の方いらっしゃいましたらご教授下さい。
宜しくお願い致します。
いーた
大ベテラン
会議室デビュー日: 2004/07/12
投稿数: 154
お住まい・勤務地: 東京
投稿日時: 2005-11-14 17:38
ALTER TABLE MOVE〜というのはあるけれど、これは表領域を移動するだけだったと記憶しています。
以下のような方法ではいかがでしょうか。

1.EXP/IMPユーティリティ
 対象のTABLEをExportして、Import時にFROMUSERとTOUSER指定をする。
2.CREATE TABLE
 CREATE TABLE BBB.TESTTBL SELECT * FROM AAA.TESTTBLというように、
 データをコピーするイメージでテーブルを再作成。
檸檬
ベテラン
会議室デビュー日: 2004/04/26
投稿数: 87
投稿日時: 2005-11-14 18:32
いーたさん、お返事ありがとうございます。

今回なぜ、ALTER TABLE文などでOWNERを変えたかったかとういと、
テーブル以外にもシノニムやインデックスもオーナーを変える必要があり数が多かったためなのです。説明不足で申し訳ありませんでした。

1.EXP/IMPユーティリティ
 前のデータについては消してもよかったので、EXP/IMPする必要はありませんでした。

2.CREATE TABLE
 こんな方法もあるのですね。ただ、やはり前のデータは必要ないのでただ作り直したいと思います。
Desmo
大ベテラン
会議室デビュー日: 2004/03/24
投稿数: 149
投稿日時: 2005-11-15 18:52
EXP/IMPユーティリティって、テーブル以外にもビューやシノニム、ストアドプロシジャーななども移行できるので、本当に多数のオブジェクトを移動する際には便利だと思いますよ。
データが不要なら、オプションで指定もできますし。
Gio
ぬし
会議室デビュー日: 2003/11/28
投稿数: 350
お住まい・勤務地: 都内から横浜の間に少量発生中
投稿日時: 2005-11-15 20:43
既存テーブルのオーナーを直接変更することはでき、るかもしれません←ちょっとあやふや

けれども、対象の既存テーブルに対して ALTER TABLE を発行するのではなく、作成されたテーブルの名前とオーナーの対応などを管理しているシステムテーブルを直接操作する方法です。

操作を誤ると非常に危険であり、他のシステムテーブルとの整合性を破壊するかもしれないため、ここでは具体的にシステムテーブル名や SQL を挙げるのは控えます。
(新基準の Oracle Master Gold を取得している方ならご存知と思います)

直接操作は不可能ではないと考えますが、より危険性の少ない Desmo さんが書かれた方法を推奨します。
檸檬
ベテラン
会議室デビュー日: 2004/04/26
投稿数: 87
投稿日時: 2005-11-16 11:00
Desmoさん、Gioさんお返事ありがとうございます。
調べてみたんですけど、EXP/IMPユーティリティはOWNERを指定してそのOWNERのオブジェクトを全て処理できるみたいなのでこの方法を考えてみたいと思います。
この方法でユーザを変えてインポートすればOWNERも変わるんですよね。インポート時もOWNERを指定するのかどうかがよくわかりませんが。

危険でも直接操作する方法もあるんですね、参考になりました。
1

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