以前にユーザーを作成しました:
SQL>create user suhail identified by password SQL>User created. SQL>Grant create session,create table to suhail; SQL>Grant Succeeded.
ただし、
そしてtable
を作成しようとすると ORA-01950: no privileges on tablespace "SYSTEM"
emというエラーが表示されます>。それはどのようなエラーですか?なぜ発生するのですか?
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 ExpressEditionリリース11.2.0.2.0を使用しています
回答
このエラーは、ユーザーがテーブルスペース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;
次に、それをデフォルトのデータベース永続テーブルスペースとして設定し、ユーザーが作成したオブジェクトがそのデフォルトのテーブルスペースに入るようにします。
コメント
回答
SYSTEM
テーブルスペースアクセス、SYSDBA
権限が必要です。
したがって、1つの新しいテーブルスペースを作成し、それをデフォルトのテーブルスペースとしてすべてのユーザーに割り当てます。ユーザーを作成すると、デフォルトで特定のテーブルスペースが割り当てられます。
alter database default tablespace users
alter database default tablespace users;
とalter user scott quota 50m on system;
のみが必要です。