Oracle PL/SQLでデータベースリンクを使用する方法について質問があります。現在のデータベースで作成されたデータベースリンク(Database2)があり、それを使用して2番目のデータベースにアクセスしているとしましょう。例:Oracleデータベースがロールの付与/取り消しを行うリンク
select *from [email protected];
Update [email protected]
set Comment = 'Hello world!'
where CustomerID = 123;
これらはすべて正常に動作します。
ただし、Database2のユーザーにロールを付与したり、ロールを取り消したいとします。それは私のデータベースリンクを通して行うことができますか?もしそうなら、構文は何ですか?私は、データベース2でPL/SQLセッションを開くと
することは、その後の構文は次のようになります。
REVOKE some_role FROM bsmith;
GRANT some_other_role TO rjones;
私のデータベース・リンクを使用して、私の元のデータベースからこれを実行する方法はありますか?
データベース・リンクを介してDDLをしたいと思うのはなぜ?それは一般に許可されておらず、一般的には悪い考えです。データベースDDLに必要なDDLを実行するストアドプロシージャを作成し、データベースリンクユーザーにそのプロシージャに対する実行アクセス権を与えることができます。あるいは、実際には手間がかかり、データベース2上で実行されるジョブをスケジューリングすると、実際にはグラントを実行することができますが、それはかなり複雑なアーキテクチャです。 –
私は、本番データベースからいくつかの特定のレコードとアクセス権を取得し、それらを開発用データベースまたはテスト用データベースにコピーするストアドプロシージャを作成しています。私はレコードを問題なくコピーすることができますが、パーミッションを付与することはもっと難解です。 – MrMike