【Oracle_19c】PDBにローカルユーザーを作成してテーブル作成、データ挿入しよう

oracle 19c PDBにローカルユーザーを作成して、テーブル作成 19c

本投稿ではOracle Database 19cに作成したPDBにローカルユーザーを作成します。
作成したローカルユーザーでPDBに接続し、テーブル作成、データ挿入できるまでの手順を紹介します。

検証環境として以下の投稿でインストールしたOracle Database 19cを利用します。

【Oracle】RHEL7.7にOracle Database 19cをインストールしよう

表領域と一時表領域の作成

まずは今回作成するユーザーのために新しい表領域を作成します。

-PDB1に接続する。

$ sqlplus / as sysdba
SQL> ALTER SESSION SET CONTAINER=PDB1;

-表領域を作成します。

SQL> CREATE TABLESPACE "TEST" DATAFILE '/oradata/CDB/pdb1/sql_test.dbf' SIZE 500M
AUTOEXTEND ON NEXT 100M MAXSIZE 1G LOGGING EXTENT MANAGEMENT
LOCAL SEGMENT SPACE MANAGEMENT AUTO;

■オプション説明
AUTOEXTEND ON NEXT 100M MAXSIZE 1G 
データファイルの容量が足らなくなったら1GBまで100MBずつ自動拡張します。
(MAXSIZEに制限をかけたくないのであれば「MAXSIZE UNLIMITED」とします。)

LOGGING
表領域に対するDML操作をREDOログに記録します。

EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO;
自動セグメント領域管理で作成します。

oracle 表領域 作成

-一時表領域を作成します。

SQL> CREATE TEMPORARY TABLESPACE "SQL_TEST_TMP"
TEMPFILE '/oradata/CDB/pdb1/sql_ test_tmp.dbf' SIZE 64M
AUTOEXTEND ON MAXSIZE UNLIMITED;

oracle 一時表領域 作成 temp

PDBのローカルユーザー作成

PDB1にローカルユーザーを作成します。

SQL> create user test identified by ●●●●●●●●●●●●
2   default tablespace TEST
3   temporary tablespace SQL_TEST_TMP
4   container=current;

■オプション説明
「container = current」とすると今接続しているコンテナ(PDB1)にのみユーザーが作成されます。(指定しなくてもデフォルトでそうなっています。)

ローカルユーザーを作成できるのはPDBのみですが、共通ユーザーを作成したいときは「container=all」を指定することで全てのコンテナに作成することができます。(接頭辞には「C##」を指定する必要があります。)

oracle ユーザー 作成 ローカル

ローカルユーザーへの権限付与

PDB1にtestというローカルユーザーを作成しました。
これから以下の動作をするために必要な権限を付与していきます。

  • PDB1への接続
  • テーブル作成
  • データ挿入

-PDB1への接続

何も権限を付与していない状態でtestユーザーでPDB1に接続してみるとエラーが発生します。

$ sqlplus test/●●●●●●●●●@orahost.local:1521/pdb1.local

ERROR:
ORA-01045: ユーザーTESTにはCREATE
SESSION権限がありません。ログオンが拒否されました。

ORA-01045 ログオン 拒否

SESSION権限がなく、ログオンが拒否されてしまったのでSESSION権限を付与します。

SQL> GRANT CREATE SESSION TO test;

CREATE SESSION

PDB1にtestユーザーで接続できることを確認しましょう。

-テーブル作成

PDB1にtestユーザーで接続できたのでテーブルを作成してみましょう。

SQL> CREATE TABLE tbl
2   (t_id INTEGER PRIMARY KEY,
3   t_var VARCHAR(10) NOT NULL);


CREATE TABLE tbl
*
行1でエラーが発生しました。:
ORA-01031: 権限が不足しています

ORA-01031:権限が不足しています

次は権限が不足しているとORA-01031エラーが出力されてしまいました。
CREATE TABLE権限を付与します。

SQL> GRANT CREATE TABLE TO test;

テーブル作成権限:CREATE TABLE

PDB1に作成したtestユーザーでテーブルを作成できることを確認しましょう。

CREATE TABLE

-データ挿入

今作成したtblテーブルにデータを挿入してみます。

ORA-01950 表領域 に対する権限がありません

なんとなく予想していたかとは思いますがこちらもエラーが出力されます。

ORA-01950: 表領域'TEST'に対する権限がありません

ORA-01031よりエラー内容が分かりやすいですね。
testユーザーに対して、表領域TESTに対する権限を付与します。

SQL> ALTER USER test QUOTA UNLIMITED ON test;

「UNLIMITED」の部分はサイズ(KB(K)、MB(M)、GB(G)、TB(T)、PB(P)、EB(E))指定も可能です。
例.testユーザーが使用可能な表領域TESTのサイズを100MBとする。

SQL> ALTER USER test QUOTA 100M ON test;

ALTER USER QUOTA UNLIMITED ON
表領域 ユーザー 割り当て 権限

ORA-01950が解消されたか確認しましょう。

ORA-01950 解消 確認

コメント

タイトルとURLをコピーしました