こんにちは。
どなたか教えて下さい。

Oracle8.0.4を使ってます。
表を作成する際、TABLESPACEを指定しなかったので、
SYSTEMになってしまいました。
どうやったらTABLESPACEを変更できますか?

このQ&Aに関連する最新のQ&A

A 回答 (2件)

移行したい表領域に表のコピーを


作成します。
craete table HOGE_TMP tablespace USERS
as select * from HOGE;
SYSTEM表領域にある表を削除します。
drop table HOGE;
コピーした表を元の名前に改名します。
rename HOGE_TMP to HOGE;

というのでどうでしょうか?
ただし、NOT NULL以外の制約(だったかな?)や、
ANALYZE情報等は、コピーされません。
また、表の作成時にSTORAGE句等をつけていた場合は
craete table HOGE_TMP の後につけ加える必要が
あります。
ユーザーの表領域の変更も必要です。
SYSTEM権限のあるユーザになって
alter user SCOTT default tablespace USERS;
てな感じです。
    • good
    • 0
この回答へのお礼

yamasa様
回答ありがとうございます。
やはり変更はできないのですね。
今度から気を付けようと思います。

ありがとうございました。

お礼日時:2001/08/06 09:29

Drop Table文を実行してテーブルを削除してから、Create Table文で


テーブルを再作成しないとダメです。

できたらユーザも作りなおした方がいいですね。
現在使用しているユーザのデフォルト表領域がSystemになっている
ハズです。
    • good
    • 0
この回答へのお礼

cse_ri様
回答ありがとうございます。
やはり変更はできないのですね。
今度から気を付けようと思います。

ありがとうございました。

お礼日時:2001/08/06 09:32

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す

このQ&Aと関連する良く見られている質問

QOracleのsystem表領域について

ORACLE初心者です。

system表領域がいっぱいになる現象が発生しました。(使用率98%)
原因調査を依頼されましたが、system表領域がどのような要素で
構成され、増えていくのか分かりません。

(環境)
Windows2000Server
Oracle 8.1.6 WorkGroupServer

ユーザのデフォルト表領域はちゃんと指定しているとの事です。
何か情報がありましたら、教えていただきたくお願いします。

Aベストアンサー

SQL*PLUSを起動し、一般ユーザが使用しているユーザIDで
ログインしてください。

そして、
select table_name,tablespace_name
from user_tables;
を実行します。

テーブル名と表領域名が表示されますので、表領域systemを
占有しているテーブル名がわかるかと思います。

QOracle8.0.5で、差分ロードする際、処理を高速化させる方法を教えて下さい

Oracle8.0.5で、差分ロードする際、
処理を高速化させる方法を教えて下さい。

Oracleの知識がほとんど無いので、作業が簡単で
効率的な方法を特に募集します。

よろしくお願いいたします。

Aベストアンサー

ロードはSQLLorderでいいんですよね?

>(1)TEMPテーブルにデータをロード
>(2)TEMPテーブルから本テーブルにInsert文で差分を抽出する
>(3)本テーブルにUPDATE文で差分データ文をUPDATEする。

(2)、(3)の区別をするためのマッチングは、相関副問い合わせで行ってますか?
もし、そうであれば、(2)の処理に時間がかかるはずです。
(件数にもよりますが)。
相関副問い合わせで更新対象のレコードを削除してしまい、本テーブルにすべての差分データをロードするという手もあります。



>Tableは、単純作成しただけで、インデックス等
>を一切張っておりません。

主キーもないんですか?
ないと更新という考えが出来ないはずですが。
主キーはあるというのなら、TEMPにもはってますか?

Qファイルメーカー8.0 スクリプト作成

ファイルメーカー8.0でスクリプトを作成いたしております。
「レコード/検索条件/ページへ移動」を利用するにあたって、「ステータスエリア」内の「レコード」番号を「コピー&ペースト」したいのですが、「レコード番号」はフィールドでもなく指定できません。
「レコード番号」をコピー等のために指定する方法はあるのでしょうか?

Aベストアンサー

数字グローバルフィールドを1個作って、コピーしたいレコードでフィールド設定やコピペのステップで
このフィールドにレコード番号を入れます。他のレコードに移って、元のレコードに戻るときは移動した
いページ指定を「計算式で指定」にしてこのグローバルフィールドを指定します。

Q表の複写について(ORACLE)

同一データベース、同一スキマーのテーブルを別名で複写したいです。
又この時データも一緒にコピーしたいです。
教えて下さい。できれば詳細で。

例)SCOTT.tableAを複写してSCOTT.tableBを作成する。

Aベストアンサー

こんばんは。これでどうですか?

create table 表名[(列名)]
as select 列名 from 元の表名;

not null制約のみコピー可能(自動的にコピーされる)。
[ ]は省略可能。列名を変更する場合。
表定義のみであれば

where 1=2;

などのありえない条件を追加する。

QORACLEでLONG項目からCHAR項目へ桁数指定で文字列を抽出

ORACLEでLONG項目からCHAR項目へ桁数指定で文字列を抽出したいのですが、方法はありますか?
LONG項目の先頭から30桁分の文字を抽出し、CHAR項目に入力したいのですが。

会社で使用しているERPパッケージでLONG項目があり、どうしてもこの項目から文字が抽出したいのです。

回答のほど宜しくお願いします。

Aベストアンサー

ちょっと質問の意図がわからないのですが、
例えば、T1,T2の2つのテーブルがあったとして、
T1のnumというnumber(10)の項目があって、その中から
先頭の5桁を取ってきて、T2のcommentというCHAR(5)の
項目に転送するなら、
まず、T1のnumから5文字取ってきて、それを変数hoge[chr(5)]に入れる。

select substrb(to_char(num),1,5) into hoge from t1 where id=1;

それから、hogeをT2のcomment列に挿入する。

insert into t2(id,comment) values (1,hoge);

んで、最後にcommitしたらOKです。

こんなもんでよかったでしょうか?


人気Q&Aランキング

おすすめ情報