SYSTEMとしてつながる役割を作りたいです。しかし、私には多くの役割を持つスキーマがたくさんあり、それらはすべてこの方法で作成されるため、作成された役割がSYSTEMに付与されることは望ましくありません(そうしないと、最終的に148の役割の制限を超えます)。
=>作成者の自動付与を無効にすることは可能ですか?
注意:今のところ、私はOracle 9iで作業していますが、まもなく11gにアップグレードされます。
私の答えには2つの部分があります:
Oracleのロールは、キーリングのキーに少し似ています。キーリングにあるからといって、常にそれらを使用しているわけではありません。Oracleにはデフォルトのロールの概念があります。これらのロールは、セッションの作成時に自動的にアクティブ化されます。ユーザーが希望する場合は、他の役割を後で有効にすることができます。
148の役割制限は、アクティブな役割に適用されます。たとえば、Oracle 10gの次のドキュメントリンクを参照してください:http://docs.oracle.com/cd/B19306_01/server.102/b14200/statements_6012.htm#sthref7227
ロールがデフォルトになるのを無効にするには、ALTER USER ... DEFAULT ROLE...を使用します。http://docs.oracle.com/cd/B19306_01/server.102/b14200/statements_4003.htm#sthref5717を参照してください。
SYSTEMとして接続されている場合は、オブジェクト(ロールも含む)を作成しないでください。代わりに、通常のユーザーを使用してロールを作成し、そのユーザーのスキーマのオブジェクトに適したオブジェクトをロールに追加する必要があります。オブジェクトを所有し、それらのロールを持つ必要があるユーザーにCREATE ROLEシステム権限を付与する必要がありますが、それはすべてOracleセキュリティモデルの一部です。
1人のユーザーに対して一度に有効にできるユーザー定義の役割の最大数は148です。
必要な数のロールを作成できます。一度にすべてを有効にしないでください。
ロール(ユーザーロール以外)を作成すると、暗黙的に付与され、デフォルトのロールとして追加されます。MAX_ENABLED_ROLESを超える場合、ログイン時にエラーが発生します。ユーザーのデフォルトの役割をMAX_ENABLED_ROLES未満に変更することで、このエラーを回避できます。したがって、ユーザーロールを作成する前に、SYSおよびSYSTEMのDEFAULTROLE設定を変更する必要があります。
http://docs.oracle.com/cd/B10500_01/server.920/a96521/privs.htm#15539
例えば
ALTER USER SYSTEM DEFAULT ROLE DBA