Oracleユーザーを作成してみます。

SQL> CREATE USER user2 IDENTIFIED BY password DEFAULT TABLESPACE TBS_BIG;

ユーザーが作成されました。

「user2」のデフォルト表領域はTBS_BIGです。

SQL> grant CREATE SESSION to user2;

権限付与が成功しました。

SQL> grant CREATE TABLE to user2;

権限付与が成功しました。


インスタンスの接続権限と表を作成する権限を付与しました。

[oracle@db01 ~]$ sqlplus user2/password

SQL*Plus: Release 11.2.0.3.0 Production on 木 5月 19 00:44:04 2016

Copyright (c) 1982, 2011, Oracle.  All rights reserved.

SQL> create table TBL5 (col1 number, col2 varchar2(100));

表が作成されました。

SQL> select TABLE_NAME, TABLESPACE_NAME from USER_TABLES;

TABLE_NAME                     TABLESPACE_NAME
------------------------------ ------------------------------
TBL5                           TBS_BIG

早速、user2でログインし表を作成しました。
この時、デフォルト表領域のTBS_BIGに表が作成されました。

SQL> insert into TBL5 values(1, 'tadashi');
insert into TBL5 values(1, 'tadashi')
            *
行1でエラーが発生しました。:
ORA-01950: 表領域'TBS_BIG'に対する権限がありません


しかし、データをinsertすると権限が無いというエラーが出力されました。
これはユーザーにquota制限が割当てられていないからです。

SQL> alter user user2 quota 400M on TBS_BIG;

ユーザーが変更されました。

SQL> select USERNAME, TABLESPACE_NAME, MAX_BYTES/1024/1024 from DBA_TS_QUOTAS where USERNAME='USER2';

USERNAME                       TABLESPACE_NAME                MAX_BYTES/1024/1024
------------------------------ ------------------------------ -------------------
USER2                          TBS_BIG                                        400

user2にquotaの400MBを割当てました。

SQL> insert into TBL5 values(1, 'tadashi');

1行が作成されました。


これでデータの挿入が出来るようになりました。