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

ODP.NETのOracleParameterを介して渡されたバインディング変数のトレース情報を取得するにはどうすればよいですか?

    オプションの1つとして、セッションのレベル12または4の10046イベントを手動または自動で(たとえば、ユーザーのログオントリガーで)設定することにより、バインド変数ダンプを使用してSQLトレースをオンにすることができます。

    alter session set events '10046 trace name context forever, level 12';
    

    その後、トレースファイルはuser_dump_destで指定されたディレクトリに生成されます。 パラメータ。

    SQL> show parameter user_dump_dest;
    
    NAME                                 TYPE        VALUE                          
    ------------------------------------ ----------- ------------------------------ 
    user_dump_dest                       string      D:\...\diag\rdbms\cdb\cdb 
                                                     \trace   
    

    次に例を示します。

    SQL> alter session set events '10046 trace name context forever, level 12';
      2 variable var number;
      3 exec :var := 1234567;     -- our bind variable
      4 select 1 from dual where 1234567 = :var ;
    

    新しく生成されたトレースファイルに表示される他の情報の中には、クエリ、バインド変数、およびその値に関する情報があります。

    Oracle 10g以降では、v$sql_bind_captureにクエリを実行することもできます。 バインド変数とその値に関する情報を取得するための動的パフォーマンスビュー:

    select t.parsing_user_id
         , t.sql_fulltext         -- text of a query
         , bc.name                -- name of a bind variable
         , bc.value_string        -- value of a bind variable
      from v$sqlarea t
      join v$sql_bind_capture bc
        on (bc.sql_id = t.sql_id)
      join v$session s
        on (s.user# = t.parsing_schema_id)
      where s.username = user
        and bc.name in (':VAR') -- name of a bind variable(s), 
                                -- value(s) of which we want to know
    

    結果:

    PARSING_USER_ID   SQL_FULLTEXT                      NAME    VALUE_STRING   
     ------------------------------------------------------------------------ 
               103   select 1 from dual where 1 =:var  :VAR     1234567
    



    1. ORA-00942:schema.tableから選択できますが、tableから選択できませんか?

    2. 🆕SQLServer2022First Look-トップ5の新機能(ボーナス5の機能)

    3. Puppetを使用したPostgreSQLの展開と構成

    4. コース完了時に外部データベースを更新します