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

このQ&Aのポイント
  • 既存のSQLスクリプトを流してテーブルを作成しようとしている際、ORA-00959: 表領域'TS_TB_DATA_1M'は存在しませんというエラーが出てしまいます。
  • スクリプトの内容は、tb_mstcom_111というテーブル名で、様々な列が定義されています。主キーはtrhksk_cd列で、インデックステーブルスペースts_ix_data_1mを使用しています。
  • 初心者の方は、このエラーの原因がわからず困っている状況です。どなたか原因を教えていただけると助かります。
回答を見る
  • ベストアンサー

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

いつもお世話になっております。 既存のSQLスクリプトを流してテーブルを作成しようとしているのですが、 ORA-00959: 表領域'TS_TB_DATA_1M'は存在しません というエラーが出てしまいます。 スクリプトの内容は以下の通りです。 CREATE TABLE tb_mstcom_111 ( trhksk_cd CHAR (6),          ・          ・         途中省略          ・          ・  sishkshnprg_cd VARCHAR2 (30), skj_flg CHAR (1), CONSTRAINT tb_mstcom_111 PRIMARY KEY (trhksk_cd) USING INDEX TABLESPACE ts_ix_data_1m ) TABLESPACE ts_tb_data_1m; 単純なクリエイト文等しか経験したことが無い為、サイトを検索して調べてはみたのですが、初心者の私にはどれも??な感じで困っています。 どなたか原因がわかる方ご教授お願い致します。

  • Oracle
  • 回答数2
  • ありがとう数5

質問者が選んだベストアンサー

  • ベストアンサー
  • potedora
  • ベストアンサー率47% (66/140)
回答No.1

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

hisajiro
質問者

補足

今まで単純にCREATE TABLEでテーブルを作成していたのですが、その時は表領域とか作成したりしなくてもできていました。 表領域が必要な場合とそうでない場合の違いとは何でしょうか? お手数おかけしますが、簡単な説明でいいのでお願いします。

その他の回答 (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を実行します。

hisajiro
質問者

お礼

迅速且つわかり易い説明ありがとうございました。 表領域を作成し、無事実行できました。

関連するQ&A

  • BLOB列作成でORA-03001が出ます

    皆様こんにちは。 環境はcompatible = 9.0.0で作成した データベースです。 下記のSQLで表領域を作成し、その表領域を指定して BLOB列を含むテーブルを作成しようとすると、 ORA-03001:実装されていない機能ですエラー が出てしまいます。 create tablespace data_ts datafile 'd:\oracle\oradata\data\data_ts.dbf' size 256M autoextend on next 10M maxsize 1024M extent management local segment space management auto / 原因と対処法をご存知の方がおられましたら お助けください。 よろしくお願いいたします。

  • 「ORA-12913: ディクショナリ管理表領域を作成できません」について

    AというサーバーのオラクルデータをダンプしてBというサーバーにデータ移行を 行っていますがうまくできません。 約1週間、調べて実行して失敗を繰り返しています。 ちゃんとオラクルを触るのは今回が初めてです。 以下の表領域のCREATE文はimpコマンドに「SHOW」オプションを「Y」にして実行した際に 出力されたものから抜き出しました。 CREATE TABLESPACE "DATA_A" BLOCKSIZE 8192 DATAFILE 'D:\oracle\oradata\...\DATA01.DBF' SIZE 5541M REUSE AUTOEXTEND ON NEXT 1048576 MAXSIZE 32767M, 'D:\oracle\oradata\...\DATA02.DBF' SIZE 6191M REUSE AUTOEXTEND ON NEXT 1048576 MAXSIZE 32767M EXTENT MANAGEMENT DICTIONARY DEFAULT NOCOMPRESS STORAGE ( INITIAL 524288 NEXT 524288 MINEXTENTS 8 MAXEXTENTS 2147483645 PCTINCREASE 50 ) ONLINE PERMANENT NOLOGGING; 上記のCREATE文を実行したら下記のエラーが発生して作成できませんでした。 「ORA-12913: ディクショナリ管理表領域を作成できません」 オラクルのバージョンは「9.2.0.1.0」です。 9.2から表領域を作成するSQLが変わったという記事を読みました。 どのように変わったのかがいまいちわかりません。 申し訳ありませんがご教授いただけませんでしょうか。 宜しくお願いします。

  • 表領域の作成について

    表領域を作成してインポートしたら下記のエラーが出力されて困っています。 表領域の作成の仕方が駄目でエラーが出力されてしまったのでしょうか。 下記のCREATE TABLESPACE文で表領域を作成しています。 ---------------------------------------------------------------------- CREATE TABLESPACE "T_DAT" BLOCKSIZE 8192 DATAFILE 'D:\oracle\oradata\ora92\DAT_01.DBF' SIZE 32767M, 'D:\oracle\oradata\ora92\DAT_02.DBF' SIZE 32767M EXTENT MANAGEMENT LOCAL UNIFORM SIZE 1M SEGMENT SPACE MANAGEMENT AUTO; ---------------------------------------------------------------------- コマンドプロンプトでimpコマンドを実行したら、下記のエラーなどが出力されました。 ---------------------------------------------------------------------- IMP-00003: Oracleエラー1659が発生しました。 ORA-01659: nを超えるMINEXTENTSを表領域T_DATに割当てできません。 IMP-00003: Oracleエラー1658が発生しました。 ORA-01658: 表領域T_DATにセグメント用のINITIALエクステントを作成できません。 ---------------------------------------------------------------------- 何がいけないのかが正直わかりません。 申し訳ありませんがアドバイスいただけませんでしょうか。 宜しくお願いします。

  • 新規表領域の作成について

    はじめて質問します。 現在Oracle9iで開発を行っているのですが下記のようなことができるかどうかをお教え下さい。 Oracle9i ServerがインストールされているPCとは別のPC上の共有フォルダ内に新規の表領域を作成したい。 具体的にはOracle ServerがインストールされているPCがSV1、 新規表領域を作成したい別のPCがCL2、CL2の共有フォルダがORA_DATA としてSV1とCL2はLANで繋がっておりSV1からCL2の共有フォルダは閲覧できる状態です。 この状態で CREATE TABLESPACE USERS2 DATAFILE '\\CL2\ORA_DATA\USERS02.DBF' SIZE 10M LOGGING ONLINE と実行すると ORA-01119: データベース・ファイル'\\CL2\ORA_DATA\USERS02.DBF'の作成中にエラーが発生しました。 ORA-27040: skgfrcre: 作成エラーが発生しました。ファイルを作成できません。 OSD-04002: ファイルをオープンできません とエラー表示され作成に失敗してしまいます。 ディスクの容量は50G以上空いており容量不足とは考えにくいです。 やはり'\\CL2\ORA_DATA\USERS02.DBF'といった書き方がマズイのでしょうか? それともOracleでは根本的にこういったことは許可されていないのでしょうか? もう何日も行き詰まっている状態ですのでどうかご助力下さい。

  • Oracleのcreate文で

    OracleのCreate文で、カラムに複数の制約を付ける方法を↓のサイトで見つけたのですが、 http://luna.gonna.jp/oracle/ora_const.html ちょっと、カラム名を変えたりして、このように↓書いてみたのですが、 create table Genereation_T ( Genereation_ID CHAR(3) not null, Genereation_Type VARCHAR2(10), Ins_dt DATE, Udp_dt DATE, Del_flg NUMBER(1), CONSTRAINT cons_p1 PRIMARY KEY(Genereation_ID), CONSTRAINT cons_u1 UNIQUE(Ins_dt), CONSTRAINT cons_f1 FOREIGN KEY(Udp_dt), REFERENCES Genereation_MASTER(Udp_dt), ); 「行10でエラーが発生し、キーワードがありません。」という表示がされます。 もう一個テーブルが必要なのでしょうか? エラー解消がわかる人お願いします。

  • DBエラー 右カッコがありません

    BLOB型を用いたテーブルを作成したいのですが、 create文を発行したところ、エラーが発生しました。 ORA-00907右カッコがありません。 と出てしまいます。 わかるかたがいらっしゃいましたらご教授いただきたいです。 よろしくお願いします。 CREATE TABLE BLOB_BOOK ( ID NUMBER(5) NOT NULL, TITLE VARCHAR2(100), AUTHOR VARCHAR2(30), PRICE NUMBER(9), EVALUATION VARCHAR2(1), URL VARCHAR2(255), FILENAME BLOB(4M), CONSTRAINT BLOB_BOOK_IDX0 PRIMARY KEY ( ID ) )

  • 同じテーブル設計にしたい

    CREATE TABLE 見積データ ( 見積番号 VARCHAR2(7) NOT NULL, 得意先コード VARCHAR2(7), CONSTRAINT 見積データ_KEY PRIMARY KEY ( 見積番号 ) ) STORAGE ( INITIAL 3020K NEXT 302K PCTINCREASE 0 ) TABLESPACE KNDN2; ALTER INDEX 見積データ_KEY REBUILD TABLESPACE KEC_IND STORAGE ( INITIAL 19K NEXT 2K PCTINCREASE 0 ); ******** 上記のようなテーブル設計のSQL文がありますが、私が作ったものではなく都合によりこのテーブルを create table A2 as select from A; 上記のようなコピーを行いました。 あたらしいテーブルでも CONSTRAINT 見積データ_KEY PRIMARY KEY ( 見積番号 ) ) STORAGE ( INITIAL 3020K NEXT 302K PCTINCREASE 0 ) TABLESPACE KNDN2; ALTER INDEX 見積データ_KEY REBUILD TABLESPACE KEC_IND STORAGE ( INITIAL 19K NEXT 2K PCTINCREASE 0 ); この制約と同じものを当てたいのですが、あとから追加するにはこの構文をどのように変えればいいのでしょうか?

  • 表領域の拡張について

    表領域の拡張について教えてください。 以前、以下のようなSQL文で表領域(WEB_DATA)を作成しました。 -------- CREATE TABLESPACE WEB_DATA DATAFILE '/home1/oracle/app/oracle/oradata/orcl/WEB_DATA.dbf' SIZE 500M REUSE AUTOEXTEND ON NEXT 1M MAXSIZE 1000M EXTENT MANAGEMENT LOCAL AUTOALLOCATE; -------- 最近データ容量も増えており以下のように約800Mほどとなっております。 -------- -rw-r----- 1 oracle oinstall 806363136 11月 6日 08:18 WEB_DATA.dbf -------- よって表領域の拡張を考えております。 そこで、考えられる方法として以下の2つがあると思われますが、どちらを選択するほうが良いのでしょうか? (1)alter tablespace文の add datafile句 (2)alter database文の resize句 両者のメリット・デメリットがイマイチよく分かりません。 (パフォーマンス的にどちらが良いなどもあるのでしょうか?) また表領域のmazsizeの上限値は通常どれほどにしておくべきなのでしょうか? 環境は以下の通りです。 OS:Solaris8 DB:Oracle9i 以上、宜しくお願い致します。

  • ORA-00917エラーが発生する

    SQL*Loaderを使用してCSVファイルをテーブルにロードしたいのですが、 「ORA-00917 カンマがありません」というエラーが発生してしまいます。 制御ファイルやデータファイルのどこに問題があるのでしょうか。 ご教授願います テーブル定義 テーブル名 TB_HOGE ID varchar XML_DATA XMLType INS_YMD DATE USER VARCHAR CTLファイル OPTIONS(  ERRORS = 0 ) LOAD DATA CHARACTERSET UTF8 INFILE '/temp/foo/data.csv' INTO TABLE TB_HOGE APPEND XMLType(XML_DATA) FIELDS TERMINATED BY "," OPTIONALLY ENCLOSED BY '"' TRAILING NULLCOLS (ID, XMLFILE FILLER CHAR, XML_DATA lobfile( XMLFILE ) terminated by EOF, INS_YMD "TO_DATA( :INS_YMD, 'YYYYMMDD')" USER) csvファイル data.csv ”No001","/temp/foo/xml/data1.xml","20150320","user1" ”No002","/temp/foo/xml/data2.xml","20150320","user1" よろしくお願いします。

  • Oracleでテーブルを作成する際に、インデクスの作成先を指定したい。

    以下のようにテーブルを作成しようとしてます。 CREATE TABLE TEST_USER.M_USER ( ID char(4), NAME varchar2(40) NOT NULL), CONSTRAINT PK_USER PRIMARY KEY(ID) ); さて、プライマリキーを定義しているので、インデクスが作成されるはずです。 この作成先のテーブルスペースを指定したいのですが、方法が解りません。 CREATE TABLEの紹介をしているサイトにものっていなくて、途方にくれています・・・。 CONSTRAINT句を使えばいいのでしょうか?