以前にユーザーを作成しました:

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" 。それはどのようなエラーですか?なぜ発生するのですか?


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; 

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

コメント

  • コマンドalter database default tablespace users
  • Oracle XE 11では、usersテーブルスペースがすでに存在するため、alter database default tablespace users;alter user scott quota 50m on system;
  • のみが必要です。

回答

SYSTEMテーブルスペースアクセス、SYSDBA権限が必要です。

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

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です