「ORA-01950:表領域「SYSTEM」に権限がありません」:エラーは何ですか?


15

先にユーザーを作成しました:

SQL>create user suhail identified by password
SQL>User created.
SQL>Grant create session,create table to suhail;
SQL>Grant Succeeded.

しかし、としてログインしsuhail、作成しようとするtableと、エラーが表示されますORA-01950: no privileges on tablespace 'SYSTEM'。それはどんなエラーですか?なぜ発生するのですか?


SQL> connect suhail
Enter password:
Connected.
SQL> create table suhail_table(name char(10));
create table suhail_table(name char(10))
*
ERROR at line 1:
ORA-01950: no privileges on tablespace 'SYSTEM'

Oracle Database 11g Express Editionリリース11.2.0.2.0を使用しています

回答:


22

このエラーは、ユーザーがSYSTEMデフォルトの永続テーブルスペースとして設定されているテーブルスペースにクォータがないことを示しています。次のようにユーザーにクォータを割り当てることができます。

sql> alter user scott quota 50m on system;

ここで50mは、SYSTEM表領域のユーザークォータが50メビバイトであることを意味します。クォータをに設定することもできunlimitedます。

ただし、SYSTEMデータの断片化を引き起こし、パフォーマンスを低下させるため、ユーザーとアプリケーションのデータを表領域に格納することは悪い習慣です。したがって、新しい永続的なテーブルスペースを作成することをお勧めします。

sql> create smallfile tablespace users datafile '/u01/app/oracle/oradata/ORCL/users.dbf' size 10g;

次に、それをデフォルトのデータベース永続表領域として設定し、ユーザーが作成したオブジェクトがそのデフォルト表領域に入るようにします。

sql> alter database default tablespace users;

次のコマンドを説明してくださいすることができますalter database default tablespace users
Suhailグプタ

1
あなただけに必要なように、Oracle XE 11日、ユーザー表領域がすでに存在alter database default tablespace users;してalter user scott quota 50m on system;
アンドリュースペンサー

2

SYSTEM表領域へのアクセスにはSYSDBA権限が必要なため、データベースに新しい表領域を1つ作成する必要があります。

そのため、1つの新しい表領域を作成し、それをデフォルトの表領域としてすべてのユーザーに割り当てます。ユーザーを作成すると、デフォルトで特定のテーブルスペースが割り当てられます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.