sql >> データベース >  >> RDS >> Oracle

Oracle:別のユーザーのスキーマへの読み取り専用アクセス?

    アプリケーションの接続方法(接続プールの初期化ステートメントなど)を制御できる場合は、次のコマンドを実行するだけです。

    ALTER SESSION SET CURRENT_SCHEMA = PRODUCTS;
    

    その時点以降(セッションの存続期間中)、修飾されていないオブジェクト名はPRODUCTSで検索されます。 スキーマ。

    PRODUCTS_READONLYに与えられたすべての助成金 有効になります。セッションは、ログインに使用された元のユーザーの資格情報(およびセキュリティ制限)の下で実行されます。

    接続の確立または初期化の方法を変更できない場合は、ログオントリガーもこれを実行する必要があります。

    create or replace trigger logon_trg
      after logon on database
    begin
        if (user = 'PRODUCTS_READONLY') then
          execute immediate 'alter session set current_schema = products';
        end if;
    exception
      when others then null; -- prevent a login failure due to an exception
    end logon_trg;
    /
    

    すべてをトラップすることが重要であることに注意してください 例外です。そうしないと、実行されたSQLで潜在的なエラーが発生し、データベースから全員が事実上ログアウトするためです。したがって、慎重に使用し、本番環境に移行する前に十分にテストしてください。



    1. MAX(db_timestamp)クエリの検索

    2. Mamplocalhostの解決が非常に遅い

    3. Hekatonサンプルに関するいくつかの小さな問題

    4. TSQL電子メール検証(正規表現なし)