DB

Oracleにユーザーを追加しテーブルを作成してみた

Oracleデータベース上に、ユーザーを作成しテーブル作成等が行えるようにするには、ユーザーの作成・権限の付与等一定の手順をふむ必要がある。個々のコマンドについて説明しているサイトは多いものの、一連の手順を記載しているサイトが少なかったので、今回、その手順について共有することにした。

前提条件

Windows端末上に、Oracleをインストール済で、SQL Developerをダウンロード済であること。OracleのインストールとSQL Developerのダウンロードの手順は下記記事を参照のこと。

Windows端末にMySQL、PostgreSQL、Oracleをインストールしてみた今回はいろいろな種類のデータベースを使ってみたかったので、Windows端末に、MySQL、PostgreSQL、Oracleそれぞれの...



やってみたこと

  1. Oracleユーザーの作成と権限の付与
  2. 作成したユーザーによるテーブル作成確認

 

Oracleユーザーの作成と権限の付与

ユーザー作成は、Oracleインストール時に作成済である、SYSDBA権限をもつsysユーザーで作成する。その手順は以下の通り。

1) SQL Developerで「接続(+)」ボタンを押下
Oracleユーザーの作成1

2) 以下のように、sysユーザーでの接続設定を行い、「接続」ボタンを押下
Oracleユーザーの作成2
なお、このときのロールは、上図のように「SYSDBA」を選択する。

3) 以下のコマンドを実行し、ユーザーの所属する表領域を作成

Oracleユーザーの作成3_1

なお、表領域とはテーブル等を格納するものをいう。今回作成した表領域「USER02」は、下図赤枠のデータファイル「USER02.dbf」に含まれている。
Oracleユーザーの作成3_2

4) 以下のコマンドを実行し、「USER02」ユーザーを作成

Oracleユーザーの作成4
上記コマンドでは、「USER02」ユーザーを、パスワード:USER02、デフォルト表領域:USER02、一時表領域:TEMPで作成している。なお、一時表領域「TEMP」は、Oracleインストール時に作成済の表領域である。

5) 以下のコマンドを実行し、「USER02」ユーザーに権限を付与

Oracleユーザーの作成5_1
上記コマンドの意味は、以下の通り。
・最初のGRANT文で、作成したUSER02ユーザーに、DBにアクセスできるCONNECTロールと、テーブル等のDBオブジェクトを作成できるRESOURCEロールを付与している。
・次のGRANT文で、作成したUSER02ユーザーが、任意の表領域を無制限に使うことができるようにしている。
ちなみに、「ロール」とは、複数の権限を1つにまとめたものをいう。

以上の手順により、作成した「USER02」ユーザーでDBにログインすると、テーブルの作成等が行えるようになる。

CONNECTロールの所属する権限を確認した結果は、以下の通りで、データベースアクセスするためのCREATE SESSION権限が含まれている。

Oracleユーザーの作成5_2

RESOURCEロールの所属する権限を確認した結果は、以下の通りで、テーブルを作成するCREATE TABLE権限等が含まれている。

Oracleユーザーの作成5_3

USER02ユーザーの権限を確認した結果は、以下の通りで、任意の表領域を無制限に使うことができるUNLIMITED TABLESPACE権限が含まれている。

Oracleユーザーの作成5_4

なお、表領域割当制限は、任意の表領域を無制限に使うことができるUNLIMITED TABLESPACE権限の他に、QUOTA句による割当制限を付与することができる。そのコマンドについては、下記サイトを参照のこと。
https://cosol.jp/knowledge/knowledge_post/ob0003_new_user/



作成したユーザーによるテーブル作成確認

作成した「USER02」ユーザーでDBにログインし、テーブル作成等が行えることを確認した。その手順は以下の通り。

1) SQL Developerで「接続(+)」ボタンを押下
Oracleユーザーの確認1

2) 以下のように、user02ユーザーでの接続設定を行い、「接続」ボタンを押下
Oracleユーザーの確認2
なお、このときのロールは、上図のように「デフォルト」を選択する。

3) 以下のコマンドを実行し、「test_table」テーブルを作成できることを確認

Oracleユーザーの確認3

4) 以下のコマンドを実行し、「test_table」テーブルにデータを追加できることを確認

Oracleユーザーの確認4

5) 以下のコマンドを実行し、「test_table」テーブルのデータが参照できることを確認

Oracleユーザーの確認5

6) 以下のコマンドを実行し、「test_table」テーブルのデータを更新/削除できることを確認

Oracleユーザーの確認6

7) 以下のコマンドを実行し、「test_table」テーブルのデータが更新/削除されたことを確認

Oracleユーザーの確認7

以上より、作成した「USER02」ユーザーで、テーブルの作成・データ追加/参照/更新/削除ができることが確認できた。

要点まとめ

  • 作成したOracleユーザーでDBログイン・DBオブジェクトの生成を行えるようにするには、作成したユーザーに、CONNECT, RESOURCEの各ロールと、表領域割当権限であるUNLIMITED TABLESPACE等を付与する必要がある。