web-dev-qa-db-ja.com

Oracleには、テーブルスペースUSERSに対する権限がありません

エラーが発生している新しいOracleデータベースがあります。

ORA-01950: no privileges on tablespace 'USERS'

私はやった:

alter user kainaw quota 100M on 'USERS';
grant unlimited tablespace to kainaw;

それでも、1回の挿入でそのエラーが返されます。ディスククォータ以外に、「テーブルスペース 'USERS'に対する特権がない」エラーの原因は何ですか?

更新:

Oracleのバージョンは11.2.0.3.0(11g)です。サーバーのコマンドプロンプトからログインしています。したがって、ユーザーkainawをsysdbaに変更します。次に、ログアウトし、ユーザーkainawにログインしてテストします。

insert into i.test values (1);

注:i.testは、数値フィールドのみのテーブルです。上記のエラーが発生します。私はカイナウとしてログアウトし、sysdbaとしてログインし、権限で再生し、ログアウト、ログイン、テスト、エラー、ログアウト、ログイン、...

6
kainaw

不正なユーザーに権限を付与しています。

スキーマの所有者iはテーブルを所有しているため、テーブルスペースに対する関連する権限を付与する必要があるユーザーです。

7
Philᵀᴹ

これは、テーブルスペースに対する権限がないためです。これを修正するために、ユーザーにテーブルスペース割り当てを付与します。

SQL> alter user <your username> quota unlimited on tablespace_name;

SQL> GRANT UNLIMITED TABLESPACE TO <your username>;

詳細 ora-0195

5
Syndra

これが機能しない場合は、テーブル定義、特にインデックスを確認してください。詳細については、私のブログのこの投稿をご覧ください。 表の定義を確認してください

ありがとう、ジェイソン

1
Jason Brown

これは非常に一般的なエラーであり、テーブルスペースに対する権限が不十分なために発生します。これを試してみてください。

SQL>select USERNAME, DEFAULT_TABLESPACE from dba_users where USERNAME='XXXXX';
SQL> alter user USER_NAME DEFAULT TABLESPACE TABLESPC_NAME quota unlimited on TABLESPC_NAME;

ORA-0195

1
santosh

他の人がきちんと言ったように、テーブルのownerには、データをテーブルスペースに格納するための「アクセス許可」、つまり、データを引き起こした個人ではなく、そのテーブルスペース内の割り当てが必要ですto be格納されます。

私のタプセンスの価値:

どのユーザーにもUNLIMITED TABLESPACEを付与しないでください。

それは、彼らがたまたま何が呼ばれているかを知っている場合、データベース内部のシステムテーブルスペースを含むanyテーブルスペースにデータを落書きすることを可能にします。

ユーザーを抑制し、準備した(およびsize)テーブルスペースへの書き込みのみを許可します。私のように、スキーマとテーブルスペースを関連付けて、テーブルスペースのポイントインタイムリカバリ(TSPITR)を使用して個別に復元可能なユニットを作成する場合-明らかにCDBの古い戦略であり、ユーザーがデータベースの古いコーナーにデータを書き込むことができる一部のスペースを見つけることができる場所では、その回復戦略が完全に損なわれます。

0
Phill W.