Oracleでは、DBA_ROLES
ビューを記述した場合、3つの列しか取得できません。
SQL> describe dba_roles;
Name Null Type
------------------------------------------------
ROLE NOT NULL VARCHAR2(30)
PASSWORD_REQUIRED VARCHAR2(8)
AUTHENTICATION_TYPE VARCHAR2(11)
特定のロールがSET_CATALOG_ROLE
のようなRDBMSに組み込まれている組み込みロールの1つであるかどうか、またはLEMONADE_STAND_MANAGER
のようなユーザーが作成したロールであるかどうかを教えてくれる列はありません。
Oracle 12cの事前定義されたロールのリストは、 セキュリティガイド にあります。また、Oracle 12cでは、ビューdba_rolesにOracle_MAINTAINED列があります。この列の「Y」は、これがOracleインストールスクリプトによって作成されたロールであることを示します。 12cより前のOracleバージョンの場合、この列は存在しません。したがって、12cより前のOracleバージョンの場合は、マニュアルを確認するか、インターネットでOracleの事前定義されたロールのリストを検索する必要があります。
注
すべてのロールとユーザーを含むディクショナリテーブルSYS.USER $があります。このビューは、非dbaユーザーには表示されません。
select user#,type#,name from user$ order by user#;
内部Iduser#
で注文されたすべてのユーザーとロールを一覧表示します。 type
is 0の場合、アイテムはロールです。ほとんどの場合、これらのIDは順次作成されるため、インストール中に作成されるロールとユーザーのIDは低くなります。しかし、多くのOracleが作成した12cデータベースが高いIDで作成されたことがわかりました。また、データベースをアップグレードする場合、ユーザーが作成したロールよりも高いIDを持つOracleスクリプトによって作成されたロールがあります。したがって、user#は信頼できる基準ではありません。
ここにインストールされているロールを参照してください http://www.morganslibrary.org/reference/roles.html
インストールされたロールを持つテーブルを作成します。次に、作成したテーブルから存在しないdba_rolesから選択します。