DB

Oracleの別ユーザーのテーブルにスキーマ名無しでアクセスしてみた

今回は、Oracleの別ユーザーのテーブルに、スキーマ名無しでアクセスする方法を習得したので、その手順について共有する。テーブル所有者とテーブルアクセス者を別にしたい場合に、今回の記事の内容が利用できる。

前提条件

下記記事の手順に従って、USER01,USER02のユーザーが作成されていること。

Oracleにユーザーを追加しテーブルを作成してみたOracleデータベース上に、ユーザーを作成しテーブル作成等が行えるようにするには、ユーザーの作成・権限の付与等一定の手順をふむ必要があ...

さらに、USER01ユーザー上に、下記「USER_DATA」というテーブルが作成されていること。
ユーザーデータテーブル

やってみたこと

  1. テーブルへのアクセス権限付与
  2. シノニムの作成

 

テーブルへのアクセス権限付与

テーブルへのアクセス権限付与の手順は、以下の通り。

1) アクセス権限を付与する前は、以下のように、スキーマ名を付与しても付与しなくても、USER02ユーザーからUSER01ユーザーのテーブルにアクセスすることができない。

アクセス権限付与1_1

アクセス権限付与1_2

2) sysユーザーでログイン
アクセス権限の付与2

3) 下記GRANT文を発行し、USER02ユーザーに、USER_DATAテーブルへの参照・更新権限を付与

アクセス権限の付与3

4) USER02ユーザーでログイン
アクセス権限の付与4

5) アクセス権限を付与した後は、以下のように、スキーマ名を付与した場合は、USER02ユーザーからUSER01ユーザーのテーブルにアクセスできる

アクセス権限の付与5_1

アクセス権限の付与5_2

シノニムの作成

シノニムは、USER02ユーザー上で付与する。その手順は以下の通り。

1) sysユーザーでログイン
シノニムの作成1

2) 下記GRANT文を発行し、USER02ユーザーに、シノニムの作成権限を付与

シノニムの作成2

3) USER02ユーザーでログイン
シノニムの作成3

4) 下記CREATE SYNONYM文を発行し、シノニムを作成

シノニムの作成4

5) シノニムを作成した後は、以下のように、スキーマ名を付与しなくても、USER02ユーザーからUSER01ユーザーのテーブルにアクセスできる

シノニムの作成5

要点まとめ

  • Oracleの別ユーザーのテーブルに、スキーマ名無しでアクセスできるようにするには、テーブルアクセス権限付与とシノニムの作成を行えばよい。