気軽に楽しくプログラムと遊ぶ

自分が興味があってためになるかもって思う情報を提供しています。

Oracle テーブル権限、スキーマ確認コマンド

多くのシステムが連携する場合かつ、一つのDBを参照する場合は、システムごとに DBアカウントを設け、アカウントごとの権限設定をしていたりする。

もしくは、アカウントごとにスキーマを用意して、そこにテーブル追加することで参照、更新可能なテーブルを制限したりする。

このような場合に、テーブルの権限設定を確認したり、スキーマを確認するが、その際のコマンドを記載しておく。

テーブル権限

システムテーブルを参照することで、テーブルに付与された参照、更新、削除権限を確認する

select GRANTEE,GRANTOR,OWNER,TABLE_NAME,PRIVILEGE from dba_tab_privs
where OWNER='BBB' and TABLE_NAME='COUPON'

|GRANTEE|GRANTOR|OWNER|TABLE_NAME|PRIVILEGE|
|-------|-------|-----|----------|---------|
|COUPON_A|BBB|BBB|COUPON|DELETE|
|COUPON_A|BBB|BBB|COUPON|INSERT|
|ORDER_A|BBB|BBB|COUPON|SELECT|
|COUPON_A|BBB|BBB|COUPON|SELECT|
|SHOP_A|BBB|BBB|COUPON|SELECT|
|COUPON_A|BBB|BBB|COUPON|UPDATE|

スキーマ

DBが保有する全スキーマを参照する

SELECT * FROM all_synonyms
WHERE owner = 'AAA'

|OWNER|SYNONYM_NAME|TABLE_OWNER|TABLE_NAME|DB_LINK|ORIGIN_CON_ID|
|-----|------------|-----------|----------|-------|-------------|
|AAA|APP|BBB|APPEAL||4|
|AAA|HISTORY|BBB|HISTORY||4|
|AAA|HISTORY_SEQ|BBB|HISTORY_SEQ||4|

DBA_OBJECTSの検索で確認する方法

SELECT OWNER, OBJECT_NAME
FROM
    DBA_OBJECTS
WHERE
    OWNER = 'XXX_SERVICE'
AND
    OBJECT_NAME = 'TEST_SHOP'

|OWNER|OBJECT_NAME|
|-----|------------|
|XXX_SERVICE|TEST_SHOP|