- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ORA-00959: 表領域'****'は存在しません)
ORA-00959: 表領域'****'は存在しません
このQ&Aのポイント
- 既存のSQLスクリプトを流してテーブルを作成しようとしている際、ORA-00959: 表領域'TS_TB_DATA_1M'は存在しませんというエラーが出てしまいます。
- スクリプトの内容は、tb_mstcom_111というテーブル名で、様々な列が定義されています。主キーはtrhksk_cd列で、インデックステーブルスペースts_ix_data_1mを使用しています。
- 初心者の方は、このエラーの原因がわからず困っている状況です。どなたか原因を教えていただけると助かります。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
エラーの通り、表領域がないためです。 ORACLEのテーブルはすべて表領域に作られます。 ですのでテーブルを作る前に表領域tb_mstcom_111を先に作成するか、上記のtb_mstcom_111の部分を存在する表領域に変更すればいいと思います。 表領域の作成はCREATE TABLESPACEで可能です。
その他の回答 (1)
- potedora
- ベストアンサー率47% (66/140)
回答No.2
表領域が必要な場合は、CREATE TABLEでTABLESPACEを指定したときです。 上記でいえば、TABLESPACE ts_tb_data_1m を指定しているからです。 (表領域名はtb_mstcom_111ではなく、ts_tb_data_1mでした。) この指定をなくせば、デフォルトの表領域に上記のテーブルtb_mstcom_111が作成されます。 デフォルトの表領域にテーブルを作りたくない場合にTABLESPACE句を指定してCREATE TABLEを実行します。
質問者
お礼
迅速且つわかり易い説明ありがとうございました。 表領域を作成し、無事実行できました。
補足
今まで単純にCREATE TABLEでテーブルを作成していたのですが、その時は表領域とか作成したりしなくてもできていました。 表領域が必要な場合とそうでない場合の違いとは何でしょうか? お手数おかけしますが、簡単な説明でいいのでお願いします。