- PR -

表領域を変更するには?

1
投稿者投稿内容
t-note
会議室デビュー日: 2005/03/02
投稿数: 9
投稿日時: 2005-05-23 13:27
OS:Windows2000Server SP4
Oracle:9i

はじめまして。
現在、仕事でOracle環境を再構築しております。
しかし、以前構築した管理者がSystem領域にUserデータを
保存しておりました。
そこでデータを新しい表領域に移そうと思っているのですが
System領域を違う表領域に移すことは可能なのでしょうか?
ご存知の方ご教示宜しくお願い致します。
今川 美保(夏椰)
ぬし
会議室デビュー日: 2004/06/10
投稿数: 363
お住まい・勤務地: 神奈川県茅ヶ崎市
投稿日時: 2005-05-23 14:14
引用:

takeshi819さんの書き込み (2005-05-23 13:27) より:
以前構築した管理者がSystem領域にUserデータを
保存しておりました。
そこでデータを新しい表領域に移そうと思っているのですが
System領域を違う表領域に移すことは可能なのでしょうか?
ご存知の方ご教示宜しくお願い致します。



システム表領域にあるユーザテーブルの格納先を変えたいってことですか?
ALTER TABLEのmove_table_clauseは参考になりませんか?
あんとれ
ぬし
会議室デビュー日: 2004/01/14
投稿数: 556
投稿日時: 2005-05-23 16:13
一旦ユーザデータをエクスポートしてユーザを削除し、新しい表領域をデフォルト表領域に指定したユーザを作成してテーブルを作成し、ignore=Yオプションつきでインポートするのが手っ取り早いでしょう。

テーブルをあらかじめ作成しておかなかった場合、エクスポートファイルに作成場所の定義も含まれているため、またシステム表領域にオブジェクトが作成されてしまいます。
t-note
会議室デビュー日: 2005/03/02
投稿数: 9
投稿日時: 2005-05-23 16:32
ご返答ありがとうございます。

あんとれ様にご質問があります。
テーブルを再作成する場合、既存の表領域にあるテーブル内容を
削除しなくてはいけないと思うのですが
約300テーブルほどあるので
ユーザーテーブル内容を一気に消すSQL文など
ありましたらご教示宜しくお願い致します。
角やん
会議室デビュー日: 2001/10/11
投稿数: 4
投稿日時: 2005-05-25 17:14
takeishi819さん、始めまして。

>約300テーブルほどあるので
>ユーザーテーブル内容を一気に消すSQL文など
>ありましたらご教示宜しくお願い致します。

そのようなSQL文は残念ながらありません。
でもこれぐらいでしたら自分でSQLのスクリプトを作成しましょう。
と言っても手でコリコリ書くのではなく、以下のSELECT文の実行結果をファイル
に落として、余分なものを削除して一発実行! です。
(下の例だとユーザ A,Bが所有しているテーブルを全て削除するスクリプトを
作成します。)

select 'DROP TABLE '||owner||'.'||table_name||';' from dba_tables
where owner in ('A','B')

SQL*Plusからだと、

SQL> set pause off
SQL> set head off
SQL> set pages 0
SQL> spool (ファイル名)
SQL> (上のSQL文)

ですね・・・

P.S. (独り言)会議室デビュー日と投稿数見て愕然。ほとんどROMだったのねぇ・・・
1

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