Oracleで参照用のユーザを作成する方法
テーブルのデータを参照したいけど間違ってテーブルのデータに変更をできないようにして欲しい!って場合に参照用ユーザを作成することがあると思います!ないかな?\(^o^)/以下、参照用のユーザの作成方法です。
CREATE USER文でユーザを作成します。
ユーザ名とかパスワードは好きなものでOKです。表領域とか一時表領域、プロファイルは省略可能だけど指定することをおすすめします。
CREATE USER REFERENCE_USER IDENTIFIED BY PASSWORD DEFAULT TABLESPACE USERS TEMPORARY TABLESPACE TEMP PROFILE DEFAULT ;
SQL> CREATE USER 2 REFERENCE_USER 3 IDENTIFIED BY 4 PASSWORD 5 DEFAULT TABLESPACE 6 USERS 7 TEMPORARY TABLESPACE 8 TEMP 9 PROFILE 10 DEFAULT 11 ; ユーザーが作成されました。
コネクションロールを付与する。
データベースに接続するためにコネクションロールの設定をします。コネクションロールをつける前に接続しようとすると以下のような「ORA-01045」エラーが発生します。
C:\Users\oracle>sqlplus REFERENCE_USER/PASSWORD ERROR: ORA-01045: user REFERENCE_USER lacks CREATE SESSION privilege; logon denied
「GRANT」文でコネクションの権限を付与します。これでデータベースに接続できるようになりました。
GRANT CONNECT TO REFERENCE_USER;
SQL> GRANT CONNECT TO 2 REFERENCE_USER; 権限付与が成功しました。
SELECT権限をつける。
いまのままだとコネクションの権限しかないのでテーブルの情報が見れません。以下のSQLを発行することで他のユーザのテーブルをSELECTすることが可能になります。
GRANT SELECT ANY TABLE TO REFERENCE_USER;
SQL> GRANT SELECT ANY TABLE TO 2 REFERENCE_USER; 権限付与が成功しました。
スキーマ名を指定しないとテーブルがないとエラーが発生するので注意が必要です。下記の例は、ADMINスキーマのEMPテーブルをSELECTした結果になります。
SQL> SELECT COUNT(*) FROM EMP; SELECT COUNT(*) FROM EMP * 行1でエラーが発生しました。: ORA-00942: 表またはビューが存在しません。 SQL> SELECT COUNT(*) FROM ADMIN.EMP; COUNT(*) ---------- 14
コメント