Oracleエラー(権限の関係?)

このQ&Aのポイント
  • 上記環境で、CREATEができなくなりました。空き領域を整理し、データファイルを新しく割り付けた後も同様のエラーが発生しました。
  • AユーザからテーブルデータEXPORT後BユーザへIMPORTができない状態でしたが、BユーザにDBAロールを追加することで問題が解決しました。
  • SQL*Loaderを実行する際にエラーが発生し、再度実行しても同じエラーが発生しました。また、BユーザにはTABLESPACEの作成・INSERTもできませんでした。最終的にはDBAロールを追加することで処理が可能になりました。
回答を見る
  • ベストアンサー

Oracleエラー(権限の関係?)

<環境>マシン:IBM RX6000 OS:AIX Ver.4.3 DB:ORACLE(Ver.8.1.6) 上記環境で、急にCREATEができなくなりました。 (1)ORA-01536: 表領域 TABLESPACE1に対して割り当てられた領域を使い果たしました。 というエラーが出たのですが、 空き領域を整理し、データファイルを新しく割り付けた後も同様のエラーが 発生しました。 それまでの処理は、 2)AユーザからテーブルデータEXPORT後BユーザへIMPORT ※※補足※※ Aユーザのロール:CONNECT、DBA Bユーザのロール:CONNECT、RESOURCE だったのですが、この状態だとBにIMPORTできない ため、 IMPORT前にBにDBAロールを追加、IMPORT後に削除 3)SQL*Loader実行すると、 エラーコード-2 STDERRに関する何かのエラーが出、 (↑ログが残っていないため詳細不明) その後、再度SQL*Loaderを実行しても、 (1)のエラーが発生して処理終了 4)Bユーザに関して、TABLESPACE1に関しても、その他 のTABLESPACE(TABLESPACE2)に関しても、CREATE不可 INSERTも件数が多いと途中で(1)のエラー発生 ※※補足※※ Aユーザに関しては、TABLESPACE2にはCREATE可能 (TABLESPACE1はテスト未) 最終的には、BユーザにDBAロールを追加して、 実行可能になったのですが、元々はDBAロールを持たせずに 処理できていたので、原因が分かりません。 EXPORT&IMPORT時に「権限をIMPORTするか?>Yes」を選択 したことや、DBAロールを追加&削除したことが影響するので しょうか? ただ、最近Oracleサーバの調子が悪かったため、その影響も あるかもしれません。 全く原因が分かりませんので、心当たりのある方、 よろしくお願いします。

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

  • ベストアンサー
  • bourbon
  • ベストアンサー率46% (18/39)
回答No.1

こんばんは。 このエラーを見て、一番最初に思いつくのは 該当ユーザのTABLESPACE使用領域の使い果たしです。 ユーザを作成する際、どのTABLESPACEに何バイトまで 使用許可をします、といった制限を設けることができます。 その使用制限値を超えたデータを挿入しようとしてエラーが 出たのではないでしょうか? 使用制限は「QUOTA」というキーワードです。 マニュアルでひくと見つかると思います。 管理者ユーザで ALTER USER XXX QUOTA XXM ON テーブルスペース名 として制限値を大きくすれば解消できるはずです。 またサイズに「UNLIMITED(無制限)」とすることも可能です。

関連するQ&A

  • ORACLEのテーブルスペースについて

    OS:AIX Ver.4.3 DB:ORACLE(Ver.8.1.6) でSQL*Loaderを実行していたのですが、 "エラーコード -2 STDERR 書込不可"? ↑ (ログを消してしまってはっきりは覚えてないのですが) というエラーログが出力され、その後、ロードする テーブルのTABLESPACEについて "ORA-01536: 表領域 TABLESPACEXXXに対して割り当てられた領域を使い果たしました。" というORACLEのエラーが発生し始めました。 その後、CREATEは上記ORACLEエラーにより実行不可、 その後のINSERTは途中までできていたのですが、途中から 同様のORALCEエラーにより実行不可、 という状態になっています。 (直前まで通常にデータの更新は行えていました) ちなみに該当するTABLESPACEに割り付けられたデータ ファイルにはまだ十分領域が空いています。 該当するTABLESPACEのデータファイルに対する割付領域を "ALTER TABLE ~" で拡大できたと思うのですが、 方法がはっきり分かりません。 どなたかご存知の方、また、このエラー自体の原因が 分かる方、いらっしゃったらお願いします。

  • SYSTEM表領域にインポートされてしまう

    TASC_DATA表領域にインポートしたいのだが、 CREATE USER で 間違ってますか? CREATE USER TASC_USER IDENTIFIED BY TASC_USER DEFAULT TABLESPACE TASC_DATA TEMPORARY TABLESPACE TASC_TEMP PROFILE DEFAULT / GRANT CONNECT TO TASC_USER / GRANT RESOURCE TO TASC_USER / GRANT CREATE ROLE TO TASC_USER / GRANT EXECUTE ANY PROCEDURE TO TASC_USER / GRANT UNLIMITED TABLESPACE TO TASC_USER /

  • オラクルのユーザ、ロール、権限の位置づけについて

    オラクルブロンズ取得を目指して勉強しています。とても基本的なことで、いまいち分からないことがあるのですが・・・以下のユーザ、ロール、権限、表領域とも呼べるべきものの位置付けがはっきりしません。 ・SYS ・SYSTEM ・SYSAUX ・SYSDBA ・SYSMAN ・SYSOPER ・DBA DBAなんかはまるでユーザかのように書かれているあいまいな参考書もあり、初心者には混乱の元です。そこで整理してみたんですが、以下のような感じで間違いないでしょうか? ●表領域:SYS、SYSTEM、SYSAUX ●ユーザ:SYS、SYSTEM、SYSMAN ●スキーマ:SYS、SYSTEM、SYSMAN ●権限:SYSDBA、SYSOPER、DBA ●ロール:SYSDBA、SYSOPER、DBA

  • Oracleデータベーストリガーのインポート

    Oracle8.1.7にて、あるAユーザーの所有物を全てExportし、その後、Bユーザーの所有物としてImportしようとすると、データベーストリガーのImport時にエラーが発生します。その他テーブルのImportは全て、成功しています。 (FROMUSER=A TOUSER=Bとしてimpしています。) そこで、LOGを見てみると、データベーストリガーのCreate時にトリガー自体はBユーザーの所有物としてImportしようとしているが、そのトリガー作成SQL文内のテーブル参照部分がAの所有物として指定されている為、エラーが発生しているという事がわかりました。 create trigger B.trigger_name ~ on A.table_name となっていました。 これは、impの仕様?バグ?なのでしょうか?それとも、なにか他にImport時に指定するオプションがあるのでしょうか? 回避方法等ご存知でしたら教えてください。 あと、このCreate Trigger文をSQL PLUSに手動で貼りつけて実行させようとしたら、何の反応もありませんでした。 まるで、このコマンドを認識していないという感じでした。SQL PLUSではCreate Trigger文は処理されないのでしょうか?因みにSQL Worksheetにて実行は出来ました。 こちらもご存知の方お願いします。

  • ユーザーへのディレクトリ権限付与について

    WindowsXPのOracle9i環境にて、 まず、以下のようにしてユーザ「username」を作成しました。 create user username identified by Password default tablespace tab_space temporary tablespacetemp; grant dba,resource,connect to username; 次にsysユーザにて、CREATE DIRECTORY FILE_PATH as 'd:\temp'; ディレクトリを作成しました。 そして、そのディレクトリに対して、以下のように権限付与しようとすると、「ユーザ"username"が存在しません。」エラーが発生します。 grant READ,WRITE ON directory dir to username; また、grant READ,WRITE ON directory dir to public; とすると、権限付与は成功しますが、ユーザusernameにはディレクトリ参照権限は与えられていませんでした。 何か間違っておりますでしょうか? それとも何か手順で足らないものがあるのでしょうか? ご教示いただければと思います。

  • Oracle TNSプロトコルエラーについて

    新たに作成したbbsユーザーでSQLPlusでログインしようとするとTNSプロトコルエラーが 発生します。system、scottユーザーではログインできます 以下はユーザー作成に実行したSQLです。 SQL> create user bbs 2 identified by bbs; ユーザーが作成されました。 SQL> col username format a18 SQL> col password format a18 SQL> select username,password 2 from dba_users 3 where username = 'bbs'; レコードが選択されませんでした。 ご教授よろしくお願いします。

  • サーバーの移行について(エクスポートとインポート)

    ご覧頂きありがとうございます。 サーバーの移行がうまくいかず困っているのでご質問させていただきます。 やりたいことは、本サーバーにあるOracleデータベースのデータをエクスポートして、開発環境にインポートさせようと思っています。 以下、行った作業です。 windowsのコマンドプロンプトから以下のコマンドを実行してエクスポート C:\>emp sadmin/password@sid file=C:\ora_data\empsid.dmp consistent=y owner=sadmin 開発環境にて、表領域の作成とユーザの作成、権限の付与を行う。 SQL>CREATE TABLESPACE HOGE datafile 'C:\temp\HOGE1.dbf' size 800M reuse logging online segment space management auto; SQL>CREATE TEMPORARY TABLESPACE HOGE_TEMP tempfile 'C:\temp\HOGE_TEMP1.dbf' size 800M extent management local uniform size 10M; SQL>CREATE USER sadmin IDENTIFIED BY hogehoge DEFAULT TABLESPACE HOGE TEMPORARY TABLESPACE HOGE_TEMP QUOTA UNLIMITED ON HOGE; SQL>GRANT DBA TO sadmin; GRANT IMP_FULL_DATABASE TO sadmin; 以下のコマンドを実行して、windowsのコマンドプロンプトからインポート。 C:\>imp sadmin/password@sid file=C:\ora_data\empsid.dmp log=C:\ora_data\impsid.log fromuser=sadmin touser=sadmin ignore=y 状況としましては、エクスポートは問題なく終了しています。(確信はありませんが(汗)) インポート実行時、トリガーの箇所だと思うのですが処理が止まってしまいインポートが完了しません。 画面上では、「制約を使用可能にします・・」と表示されて止まってしまいます。 ログには以下のようなエラーが出ています。 IMP-00003: Oracleエラー439が発生しました。 ORA-00439: 機能は有効ではありません: Partitioning IMP-00041: 警告: オブジェクト作成の際、コンパイル・エラーが発生しました。 DBを見てみると、データのインポートはできているようなのですが、トリガーのインポートができていないみたいです。 当方Oracleを触るのは初めてで、書籍やGoogle検索などで調べているのですが、原因解明できず途方にくれています。 どなたかご助言頂けないでしょうか? 宜しくお願いします。

  • Oracle 参照用ユーザー作成

    Oracle 9i で新規で参照専用のユーザーを作成しています。 が、うまく作成できなかったため質問したいと思います。 現在、下記のようなデータベース、ユーザー名となっています。 データベース :A ユーザー :A これに対して、以下のユーザーを作成しました。 ユーザー :B ロール :CONNECT システム権限 :select any table execute any procedure この状態で、データベースAに対してユーザーBへ接続はできますが、 SELECT文を実行しても、”ORA-00942:表またはビューが存在しません”メッセージが表示されます。 そこで、BのロールをDBAにしたり、オブジェクト権限に、データベースAの表に対して 使用可能な権限としてSELECTを指定したりしたのですが、やはり同様のメッセージが表示されました。 データベースAの表を見れていない状況だと思うのですが、どのように、Aの表を参照するよう 設定してやるのかがわかりません。 何が不足しているのかご教授下さい。 よろしくお願い致します。

  • オラクルでエラー「ORA-00052」が起こります

    現在、ユーザーを削除して、また作成するようなことをおこなっています。 drop user を行った際に、 ORA-00052:最大エンキューリソース数 484が発生しました というエラーが出てしまいます。 これを回避する方法を求めています。 現象としては、まず1回目、drop user を行って create userを行います。 このときはエラーは発生しません。 次に同じ環境で、もう一回drop user を行うと、表題のエンキューエラーが 発生してしまいます。(よって、create userは成功しません) (1)エンキューリソースというのは、一回drop user を行えば開放されるものなのでしょうか?また、その状況(ロックと開放の状況)をウォッチすることなどは可能なのでしょうか?(そもそもなぜ不足してしまうのでしょうか??) (2)ENQUEU_RESOURCESという初期化パラメータの値を増やせばいいと 「oracle8i リファレンス・マニュアル」には書いてあったのですが いったいどれぐらい増やせばいいのでしょうか?またその値が妥当であるという判断は、どうやって下せばいいのでしょうか? (3)ENQUEU_RESOURCESを増やすとすると、初期化パラメータファイル?とやらを 編集すればよいのでしょうか?? たくさん書いてしまいましたが、ぜひともご教授ねがいます。 まだまだoralceを勉強し始めたばっかりで・・・・。

  • 表領域の作成について

    表領域を作成してインポートしたら下記のエラーが出力されて困っています。 表領域の作成の仕方が駄目でエラーが出力されてしまったのでしょうか。 下記の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エクステントを作成できません。 ---------------------------------------------------------------------- 何がいけないのかが正直わかりません。 申し訳ありませんがアドバイスいただけませんでしょうか。 宜しくお願いします。