人に聞けない痔の悩み、これでスッキリ >>

システム運用開始前の性能試験で、自動拡張に設定していない一時表領域の容量を超えるOracleのエラー(ORA-1652だったような)が出たため、SQLの修正を行っている最中です。

パフォーマンスチューニングやデータベース容量の設定などには詳しくないため、一時表領域を自動拡張に設定すべきかこのまま自動拡張にしないままにしておくべきかどうかの判断はつかないので、とりあえずそのままにして、一時表領域が容量を超えないようなSQLに修正しようとしています。

ただ、一時表領域のため、容量の見積が出来ず、実際にシステムを動かして確認するしかありません。
自社の環境でもOracleのエラーを再現させることが出来たのですが、一時表領域のサイズが小さくなりません。
これは、エラーのせいなのでしょうか?
また、一時表領域を小さく(0バイト)にしたり、いったん削除して再作成したりは出来ないのでしょうか?

ALTER TABLESPACE、DROP TABLESPACE 共に実行できませんでした。
ちなみに、この一時表領域は、TEMPORARYタイプでユーザのデフォルトの一時表領域になっています。

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

A 回答 (3件)

一度大きくなってしまった表領域を小さくすることはできないので、再作成するしかありません。



再作成の方法は、Oracle 9i 以降を使っているのであれば、

CREATE TEMPORARY TABLESPACE temp_new
TEMPFILE 'path' SIZE xxxM;

ALTER DATABASE DEFAULT TEMPORARY TABLESPACE temp_new;

DROP TABLESPACE temp_old INCLUDING CONTENTS;

で再作成が可能だったと思います。
    • good
    • 1
この回答へのお礼

回答ありがとうございます。
再作成が必要なことはわかりましたが、ご紹介いただいた方法では再作成できませんでした。
ALTER TABLESPACEが失敗します。

お礼日時:2006/03/09 00:09

> ALTER TABLESPACEが失敗します。



よく内容を確認してください。
デフォルト一時表領域の変更は、

ALTER TABLESPACE ......

ではなく、

ALTER DATABASE ......

です。あと、エラーが発生したのであれば、どういうエラーなのかをちゃんと書いていただかないと、アドバイスのしようがありません。
    • good
    • 0
この回答へのお礼

ALTER DATABASE を実行すると、うまくいきました。
ありがとうございました。

お礼日時:2006/03/20 12:34

一時表領域のエクステントは開放されない=縮小不可です。

よって、サイズを小さくするには「新しい一時表領域の作成」→「旧一時表領域の削除」となります。実際の手順は
1.ALTER TABLESPACE TEMP ADD TEMPFILE [新DBファイル名](必要であればAUTOEXTEND OFFも)
2.ALTER DATABASE TEMPFILE [旧DBファイル名] OFFLINE
3.ALTER DATABASE TEMPFILE [旧DBファイル名] DROP INCLUDING DATAFILES
です。ただし、実際の環境は手元にありませんので確認はしていません。また、あわせて初期化パラメタのSORT_AREA_SIZEの見直しもお勧めします。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
ご紹介いただいた方法では再作成できませんでした。
ALTER TABLESPACE ~ OFFLINEが失敗します。

お礼日時:2006/03/09 00:11

このQ&Aに関連する人気のQ&A

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

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

このQ&Aを見た人が検索しているワード

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

QData Pump で大量データインポートの際のUNDO表領域、TEMP表領域不足エラー解消法のついて

いつも多くの方々にお世話になっております。
どうしても解決できなかったので、質問を書き込ませていただきました。

大量データのテーブルをDataPump の Impdp でインポートしようとした際に、
UNDO表領域やTEMP表領域不足によりインポートが中断されてしまうので、
その解消法を探しています。

単純にTEMP表領域やUNDO表領域のサイズを大きくすれば解決できるのですが、
ディスクの容量に限りがあり、TEMP表領域やUNDO表領域のサイズを700MBのまま、
大量データをImpdp でインポートできるようにしたいのですが、そうするとうまくいきません。

以前からあったImport の場合でしたら、「COMMIT=Y」としていすれば、
大量データであっても、TEMP表領域やUNDO表領域のサイズを700MBのまま、インポートできました。

しかし、Impdp には「COMMIT=Y」がサポートされなくなったとOTNのドキュメントにも書かれていました。

従来のImport を使えばインポートできるのですが、非常に時間を要するため、
TEMP表領域やUNDO表領域のサイズを気にせずとも
Data Pump のImpdp を用いてインポートできる方法を
ご存知の方がいらっしゃいましたら、ご教授願えませんでしょうか?

いつも多くの方々にお世話になっております。
どうしても解決できなかったので、質問を書き込ませていただきました。

大量データのテーブルをDataPump の Impdp でインポートしようとした際に、
UNDO表領域やTEMP表領域不足によりインポートが中断されてしまうので、
その解消法を探しています。

単純にTEMP表領域やUNDO表領域のサイズを大きくすれば解決できるのですが、
ディスクの容量に限りがあり、TEMP表領域やUNDO表領域のサイズを700MBのまま、
大量データをImpdp でインポートできるようにした...続きを読む

Aベストアンサー

テーブル単位でインポートなどでも駄目なのでしょうか?
UNDOや一時領域をなるべく生成しない方法を考えましょう。
#この事象はサポートセンター行きだと思います。

Qsqlplusで表示が変なので、出力を整形したい。

いつもお世話になっています。

サーバにアクセスしてsqlplusで、
データを調べたいのですが、
出力形式が見づらくて困っています。

よくわからいのですが、
---------------------------
カラム名1
---------------------------
カラム名2
---------------------------
カラム名3
---------------------------
1の値 2の値
3の値
---------------------------
カラム名1
---------------------------
カラム名2
---------------------------
カラム名3
---------------------------

上記のように意味不明な形式で出てきます。

例えばこんな風に

select カラム1,カラム2,カラム3 from hoge;

カラム1 1の値
---------------------------
カラム2 2の値
---------------------------
カラム3 3の値

等のように分かりやすく表示できないでしょうか?

ちなみにOracle9iR2を使用しています。
sqlに関するツールは使用できないルールでして、あくまでsqlplusのコマンド上でみやすくしなければなりません。

分かりづらくですいませんが、皆さま、ご教授お願いします。

いつもお世話になっています。

サーバにアクセスしてsqlplusで、
データを調べたいのですが、
出力形式が見づらくて困っています。

よくわからいのですが、
---------------------------
カラム名1
---------------------------
カラム名2
---------------------------
カラム名3
---------------------------
1の値 2の値
3の値
---------------------------
カラム名1
---------------------------
カラム名2
---------------------------
カラム名3
-----------------------...続きを読む

Aベストアンサー

SQLPLUSを起動して、

SQL>set linesize 列数

でどうだ。

SQL>show linesize

で確認ができる。

Qデータを削除しても表領域の使用率が減りません

いつもお世話になっております。

今使用している表領域の使用率が高くなってきたため、
不要なテーブルやデータを削除しました。

ですが、少ししか使用率が減らず困っています。

テーブルを削除した際にはPURGE RECYCLEBINで、BIN~のテーブルも
消しています。

何か他に原因があるのでしょうか?

Aベストアンサー

前の方のおっしゃるとおり、DELETEしただけでは領域は開放されません(ハイウォーターマークが下がらない)ので、以下を試してみてください。

1.該当テーブルの全件削除で良い場合
truncate テーブル名 drop storage;
を実行する。
これで領域も開放されます。(最後のところをreuse storageとすると領域保持する意味となる)

2.部分的にdeleteして、領域を開放したい場合
alter table テーブル名 enable row movement;
alter table テーブル名 shrink space cascade;
alter table テーブル名 disable row movement;
を実行する。
1行目は領域開放の前準備、3行目は1行目の変更を元に戻す意味。
2行目でcascadeしておくと、関連インデックスの領域も一緒に縮小してくれます。

QOracleの一時表領域について

毎々お世話になっております。

一時表領域が肥大化してきたため、オンラインで縮小処理をしました。
http://www.roy.hi-ho.ne.jp/montague/lilical-oracle.html

TEMP01を使用していたため、TEMP02を作成しTEMP01をオフラインにしました。
そしてdropしようとすると失敗しました。エラーが出たらしいのですが、後輩が消してしまったため
わかりません。またTEMP01の物理ファイルも削除してしまったようです。
今の一時表領域をみるとTEMP02がオンラインになっていました。正常に使用もされていましたが、
TEMP01が中途半端に残っています。TEMP01もオンラインになっていますが、サイズは0MBとなっています。TEMP01をオフラインにするSQLを入力するとオフラインになりましたというメッセージが出ます。しかしDROPしようとすると、使用できない旨のエラーがでます。
解決方法が分からなくて困っています。

バックアップファイルもないため困っています。
このような状況になった方はおられますでしょうか?お手数ですがご教授ください。

毎々お世話になっております。

一時表領域が肥大化してきたため、オンラインで縮小処理をしました。
http://www.roy.hi-ho.ne.jp/montague/lilical-oracle.html

TEMP01を使用していたため、TEMP02を作成しTEMP01をオフラインにしました。
そしてdropしようとすると失敗しました。エラーが出たらしいのですが、後輩が消してしまったため
わかりません。またTEMP01の物理ファイルも削除してしまったようです。
今の一時表領域をみるとTEMP02がオンラインになっていました。正常に使用もされていましたが、
TEMP01...続きを読む

Aベストアンサー

こんにちわ。

> DROPしようとすると、使用できない旨のエラーがでます。
一時表領域に紐付いている一時ファイルが削除された状態から問題の
一時表領域を削除したいと言う事でしょうか?
私は同様な状況に陥った事はありませんが、対応方法としては
以下のようになると思います。

1) 一時表領域と一時ファイルの対応を確認する。
 % sqlplus "/ as sysdba"
 SQL> select tablespace_name, file_name from dba_temp_files order by 1,2;

2) 削除する一時表領域に紐付く一時ファイルをOffline 化する。
  (エラーとなるかもしれません)
  SQL> alter database tempfile '一時ファイル名' offline;

3) 削除する一時表領域に紐付く一時ファイルに削除マークを付ける
  SQL> alter database tempfile '一時ファイル名' drop:

4) 問題の一時表領域を
  SQL> drop tablespace temp01;

こんにちわ。

> DROPしようとすると、使用できない旨のエラーがでます。
一時表領域に紐付いている一時ファイルが削除された状態から問題の
一時表領域を削除したいと言う事でしょうか?
私は同様な状況に陥った事はありませんが、対応方法としては
以下のようになると思います。

1) 一時表領域と一時ファイルの対応を確認する。
 % sqlplus "/ as sysdba"
 SQL> select tablespace_name, file_name from dba_temp_files order by 1,2;

2) 削除する一時表領域に紐付く一時ファイルをOffline 化する。
  (エ...続きを読む

Qdatapumpの実行方法について

いつもお世話になっております。

datapumpの実行方法(expdp/impdp)について、ご存知の方がいらっしゃいましたら、ご教授の程お願い致します。

------------------------------
●環境
 Oracle 11g (11.2.0.3)

以下の手順で、エクスポート/インポート テストを行ったのですが、
expdpで"tables"を指定するとエラーとなり実行できませんでした。
full=y(データベース全体)は動きました。
tablesで指定するものは、"CREATE TABLE"で作成したテーブル名ではないのでしょうか。

また、テーブルスペースを削除"drop tablespace tbl01"したのですが、
expdpでデータベース全体をエクスポートしたものから、impdpしても
削除したものが戻せませんでした。
impdpのコマンドに誤りがあるのでしょうか。


●expdp実行
-----
・tablespace作成
$ sqlplus / as sysdba
SQL> create tablespace tbl01 datafile '+data/testdb/datafile/tblsp1' size 10m autoextend off;
-----
・sequence作成
SQL> create sequence seq1;
-----
・TABLE作成
SQL> CREATE TABLE TEST_TBL(USER_ID VARCHAR2(8) NOT NULL, DEPT_NO VARCHAR2(8)) tablespace tbl01;
-----
・INSERT実行(5件分)
begin
for i in 1..5 loop
INSERT INTO TEST_TBL (USER_ID, DEPT_NO) VALUES (seq1.nextval, '1234') ;
commit;
end loop;
end;
/
-----
・expdp使用する為の準備
ディレクトリの作成と read/write 権限の付与
$ sqlplus / as sysdba
SQL> create directory expdp_dir as '/u01/tpump';
SQL> grant read,write on directory expdp_dir to system;
-----
・expdb実行
$ expdp system/pass dumpfile=TEST_DIR:expdp_all.dmp logfile= TEST_DIR:expdp_all.log full=y
=====
"SYSTEM"."SYS_EXPORT_FULL_01"を起動しています: system/******** dumpfile=TEST_DIR:expdp_all.dmp logfile= full=y
BLOCKSメソッドを使用して見積り中です...
オブジェクト型DATABASE_EXPORT/SCHEMA/TABLE/TABLE_DATAの処理中です
-中略-
SYSTEM.SYS_EXPORT_FULL_01に設定されたダンプ・ファイルは次のとおりです:
/u01/tpump/expdp_all.dmp
ジョブ"SYSTEM"."SYS_EXPORT_FULL_01"が11:31:19で正常に完了しました
=====

$ expdp system/pass tables=TEST_TBL dumpfile=TEST_DIR:expdp_tbl.dmp logfile= TEST_DIR:expdp_tbl.log
=====
"SYSTEM"."SYS_EXPORT_TABLE_01"を起動しています: system/******** tables=TEST_TBL dumpfile=TEST_DIR:expdp_tbl.dmp logfile=
BLOCKSメソッドを使用して見積り中です...
BLOCKSメソッドを使用した見積り合計: 0 KB
ORA-39166: オブジェクトSYSTEM.TEST_TBLが見つかりません。
ORA-31655: ジョブに対してデータまたはメタデータ・オブジェクトが選択されていません
ジョブ"SYSTEM"."SYS_EXPORT_TABLE_01"が完了しましたが、2エラーが11:33:54で発生しています
=====

●impdp実行
$ impdp system/pass dumpfile=TEST_DIR:expdp_all.dmp logfile= TEST_DIR:impdp_all.log
=====
マスター表"SYSTEM"."SYS_IMPORT_FULL_01"は正常にロード/アンロードされました
"SYSTEM"."SYS_IMPORT_FULL_01"を起動しています: system/******** dumpfile=expdp_dir:expdp_all.dmp logfile= full=y
オブジェクト型DATABASE_EXPORT/TABLESPACEの処理中です
ORA-31684: オブジェクト型TABLESPACE:"UNDOTBS1"はすでに存在します
ORA-31684: オブジェクト型TABLESPACE:"TEMP"はすでに存在します
ORA-31684: オブジェクト型TABLESPACE:"USERS"はすでに存在します
ORA-39083: オブジェクト型TABLESPACEの作成が次のエラーで失敗しました:
ORA-01119: データベース・ファイル'+DATA/testdb/datafile/tblsp1'の作成中にエラーが発生しました。
ORA-17502: ksfdcre:4 ファイル+DATA/testdb/datafile/tblsp1の作成に失敗しました
ORA-15005: name "testdb/datafile/tblsp1" is already used by an existing alias
-中略-
※以下のORAエラーが多数発生
例:ORA-31684: オブジェクト型TABLESPACE:"UNDOTBS1"はすでに存在します
例:ORA-39151: 表"SYSTEM"."REPCAT$_PRIORITY_GROUP"が存在します。スキップのtable_exists_actionのため、すべての依存メタデータおよびデータはスキップされます
例:ORA-39111: 依存オブジェクト型OBJECT_GRANT:"SYSTEM"はスキップされ、ベース・オブジェクト型VIEW:"SYSTEM"."SCHEDULER_PROGRAM_ARGS"はすでに存在します
-中略-
オブジェクト型DATABASE_EXPORT/SCHEMA/TABLE/CONSTRAINT/REF_CONSTRAINTの処理中です
オブジェクト型DATABASE_EXPORT/SCHEMA/TABLE/STATISTICS/TABLE_STATISTICSの処理中です
オブジェクト型DATABASE_EXPORT/SCHEMA/TABLE/POST_TABLE_ACTIONの処理中です
オブジェクト型DATABASE_EXPORT/SCHEMA/TABLE/TRIGGERの処理中です
オブジェクト型DATABASE_EXPORT/SCHEMA/POST_SCHEMA/PROCACT_SCHEMAの処理中です
オブジェクト型DATABASE_EXPORT/AUDITの処理中です
ジョブ"SYSTEM"."SYS_IMPORT_FULL_01"が完了しましたが、146エラーが20:14:48で発生しています
=====

いつもお世話になっております。

datapumpの実行方法(expdp/impdp)について、ご存知の方がいらっしゃいましたら、ご教授の程お願い致します。

------------------------------
●環境
 Oracle 11g (11.2.0.3)

以下の手順で、エクスポート/インポート テストを行ったのですが、
expdpで"tables"を指定するとエラーとなり実行できませんでした。
full=y(データベース全体)は動きました。
tablesで指定するものは、"CREATE TABLE"で作成したテーブル名ではないのでしょうか。

また、テーブルスペースを削除"...続きを読む

Aベストアンサー

> SYSスキーマなどを含めてエクスポートしたいときには、
> Full=y では無理だから各スキーマ(SYS、ORDSYS等)を指定して個別で
> 行う必要があるということなのでしょうか。

SYS スキーマはシステムの持ち物なのでexp した事はありません。
その他も、Oracle Text やExpression Filter 等、Oracle の拡張機能をInstall
した際に作成されるスキーマのため、ユーザが意識的にexp/imp する事はありません。

SYSスキーマにオブジェクトを作成しなければならない理由が無いのであれば、
新しいスキーマを作成してそちらにオブジェクトを移動した方が良いです。
テーブルのデータだけで良ければ、ユーザ作成後に
Create table 新ユーザ.テーブル名 as select * from SYS.テーブル名;
とすれば、コピー可能です。

Qオラクル表領域データファイルの削除について

まず、経緯から書きますと、
レコードINSERT処理(Access)にて表領域不足エラーが出たため、
以下コマンドにてデータファイルを追加しました。

ALTER TABLESPACE USERS ADD DATAFILE '/db3/oradata/ora805/datafile09.dbf' SIZE 1000M;

ところが、以下のエラーが出ました。

エラー行: 1: エラーが発生しました。
ORA-19510: 207360ブロックのサイズ設定に失敗しました
  (ファイル"/db3/oradata/ora805/datafile09.dbf"、ブロックサイズ=2048)。
ORA-27059: skgfrsz: ファイル・サイズを削減できません。
SVR4 Error: 28: No space left on device
Additional information: 2
ORA-19502: ファイル"/db3/oradata/ora805/datafile09.dbf"の書込みエラー。
  ブロック番号: 207105(ブロックサイズ=2048)
ORA-27063: skgfospo: 読込み/書込みのバイト数が正しくありません。
SVR4 Error: 28: No space left on device
Additional information: -1
Additional information: 131072

まず、このエラーの詳細が正確に理解できていない状況なのですが、
なんとなく、これは、空き容量がないところに1000Mのデータファイルを
作成しようとして、大きすぎて作成出来ませんというエラーを返された、
と解釈しました。

それで、sqlplusにてデータファイルの一覧を見てみると、
追加しようとしていたdatafile09.dbfは確認できませんでした。

表領域 ファイル名            サイズ 自動追加
----------------------------------------------------------
USERS /db1/oradata/ora805/datafile01.dbf 4194304 NO 0
USERS /db1/oradata/ora805/datafile02.dbf 2097152000 NO 0
USERS /db1/oradata/ora805/datafile03.dbf 2097152000 NO 0
USERS /db2/oradata/ora805/datafile04.dbf 2097152000 NO 0
USERS /db2/oradata/ora805/datafile05.dbf 1048576000 NO 0
USERS /db2/oradata/ora805/datafile06.dbf 996147200 NO 0
USERS /db3/oradata/ora805/datafile07.dbf 2097152000 NO 0
USERS /db3/oradata/ora805/datafile08.dbf 1887436800 NO 0

ところが、OS(Solaris5.6)に戻って、
/db3/oradata/ora805 フォルダの一覧を確認しますと、
以下のように datafile09.dbf が出来ていました。

-rw-rw---- 1 oracle dba 2097154048 13:52 datafile07.dbf
-rw-rw---- 1 oracle dba 1887438848 13:52 datafile08.dbf
-rw-rw---- 1 oracle dba 1048578048 14:32 datafile09.dbf


ここから、質問なのですが、

1)なぜ、datafile09.dbf は OSでファイルが認識されているのに、
sqlplusでデータファイルを一覧したときには表示されないのか。

2)datafile09.dbf をいったん消したいのですが、
OSレベルで datafile09.dbf を削除してもオラクルに悪影響は
出ないのでしょうか。正しい消し方がわかりません。

以上です。
どなたかアドバイスいただけないでしょうか?
よろしくお願いいたします。

Ver:Oracle8
OS:SunOS 5.6(Solaris)

まず、経緯から書きますと、
レコードINSERT処理(Access)にて表領域不足エラーが出たため、
以下コマンドにてデータファイルを追加しました。

ALTER TABLESPACE USERS ADD DATAFILE '/db3/oradata/ora805/datafile09.dbf' SIZE 1000M;

ところが、以下のエラーが出ました。

エラー行: 1: エラーが発生しました。
ORA-19510: 207360ブロックのサイズ設定に失敗しました
  (ファイル"/db3/oradata/ora805/datafile09.dbf"、ブロックサイズ=2048)。
ORA-27059: skgfrsz: ファイル・サイズを削減でき...続きを読む

Aベストアンサー

※最悪のケースを考えて予めバックアップすることをオススメします。
 expなどでデータだけでも・・・
※また、当方はSolarisの知識が無いので間違っている可能性も・・・

改善方法ではないのですがアドバイス(?)を。

> SVR4 Error: 28: No space left on device
「No space left on device」とあるので、データファイルを
追加しようとした領域に空きはあるのでしょうか?

>1)なぜ、datafile09.dbf は OSでファイルが認識されているのに、
>sqlplusでデータファイルを一覧したときには表示されないのか。

エラーが出ているので出てこない方が正解だと思います。
ファイルがOSで認識されていることのほうが不思議です。

> 2)datafile09.dbf をいったん消したいのですが、
> OSレベルで datafile09.dbf を削除してもオラクルに悪影響は
> 出ないのでしょうか。正しい消し方がわかりません。

V$DATAFILE,V$DATAFILE_HEADER,DBA_DATA_FILES 上に無いのであれば
Oracle上では認識されていないと思われます。
データディクショナリビュー上に無いのであれば、OSレベルで削除
してかまわないと思います。

p.s.申し訳ないですが、コレによりDBが破損してしまっても
  私には保障できないので念のため・・・

※最悪のケースを考えて予めバックアップすることをオススメします。
 expなどでデータだけでも・・・
※また、当方はSolarisの知識が無いので間違っている可能性も・・・

改善方法ではないのですがアドバイス(?)を。

> SVR4 Error: 28: No space left on device
「No space left on device」とあるので、データファイルを
追加しようとした領域に空きはあるのでしょうか?

>1)なぜ、datafile09.dbf は OSでファイルが認識されているのに、
>sqlplusでデータファイルを一覧したときには表示され...続きを読む

Qimportについて

こんばんは。

exportしたダンプファイルを頂いたので
oracleにimportしようと思っています。
色々調べて以下のようにわかったのですが、
間違っていないか、パラメータで追加した方が
よいものがあれば、ご指摘お願いします。

1)
既に同じ内容のテーブルが存在するが、それは気にせずimportを行う。既存のテーブルデータは新しくimportするもので更新されている???

2)
SQL*PLUSでコマンドを叩く。
コマンド内容は以下の通り。
imp system/manager fromuser=test1 touser=test2 file=db_data.dmp log=implog.log

test1 ← DBA権限あり。
test2 ← このユーザーの表領域にデータを作成したい。

Aベストアンサー

>上記オプションで、既存のテーブルは古いデータが削除され、

ignore=yにしてもimpコマンドではデータの削除は行われません。
一意制約違反となります。
あらかじめ不要なデータは消しておきましょう。

truncate table テーブル名;
でデータを切り捨てるのがいいかと。


>新規に増えたテーブルは
>新規に作成(データ込み)と考えて正しいでしょうか?

はい。こちらはこうです。

Q主キーにインデックスは貼らないと駄目でしょうか?

いつもお世話になっております。

テーブルを作成したときに主キーのインデックスは改めて
貼る必要があるのでしょうか? それとも自動的に
インデックスを貼ってくれます?

Aベストアンサー

主キーと分かっているのならテーブル作成時にPRIMARY KEY指定していますよね?
それならばインデックスは自動で作成されるはずです。

QORA-00959: 表領域'****'は存在しません

いつもお世話になっております。
既存のSQLスクリプトを流してテーブルを作成しようとしているのですが、
ORA-00959: 表領域'TS_TB_DATA_1M'は存在しません
というエラーが出てしまいます。
スクリプトの内容は以下の通りです。
CREATE TABLE tb_mstcom_111 (
trhksk_cdCHAR (6),
         ・
         ・
        途中省略
         ・
         ・ 
sishkshnprg_cdVARCHAR2 (30),
skj_flgCHAR (1),
CONSTRAINT tb_mstcom_111 PRIMARY KEY (trhksk_cd) USING INDEX TABLESPACE ts_ix_data_1m
)
TABLESPACE ts_tb_data_1m;

単純なクリエイト文等しか経験したことが無い為、サイトを検索して調べてはみたのですが、初心者の私にはどれも??な感じで困っています。
どなたか原因がわかる方ご教授お願い致します。

いつもお世話になっております。
既存のSQLスクリプトを流してテーブルを作成しようとしているのですが、
ORA-00959: 表領域'TS_TB_DATA_1M'は存在しません
というエラーが出てしまいます。
スクリプトの内容は以下の通りです。
CREATE TABLE tb_mstcom_111 (
trhksk_cdCHAR (6),
         ・
         ・
        途中省略
         ・
         ・ 
sishkshnprg_cdVARCHAR2 (30),
skj_flgCHAR (1),
CONSTRAINT tb_mstcom_111 PRIMARY KEY (trhksk_c...続きを読む

Aベストアンサー

エラーの通り、表領域がないためです。
ORACLEのテーブルはすべて表領域に作られます。
ですのでテーブルを作る前に表領域tb_mstcom_111を先に作成するか、上記のtb_mstcom_111の部分を存在する表領域に変更すればいいと思います。
表領域の作成はCREATE TABLESPACEで可能です。

QNUMBER(N,M) としたときの、格納データサイズ(バイト)

ORACLEで、DB項目をNUMBER(N,M)と定義したときの
データサイズ(バイト)を知りたいです。

例えば、
NUMBER(1,0),
NUMBER(2,0),
....
NUMBER(10,0)
としたときには、サイズは何バイトになりますか?

また、小数以下を指定したときにはどうなるでしょうか?

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

Aベストアンサー

こんにちは。

NUMBER型はVARCHAR2型と同じく可変長なので
入力された値の桁数によって異なります。

■計算式
長さ = 1 + CEIL (n / 2)

型については下記のURLを参考してください。

参考URL:http://otndnld.oracle.co.jp/skillup/oracle9i/3_1/index.html


人気Q&Aランキング