クエリの記録
ストアドプロシージャで実行された、履歴DBへのクエリのロギングについて説明します。
Netezza Performance Serverでは、ストアド・プロシージャとそのネストされたストアド・プロシージャから実行されるクエリを記録できます。 クエリーはクエリー履歴データベースに記録される。
この機能を使用するには、グローバルまたはセッションレベルで 'enable_sproc_hist_loggingpostgres設定パラメータを設定します。 この機能は、デフォルトで無効になっています。
enable_sproc_hist_logging有効にすると、ストアドプロシージャで実行される内部クエリが記録される。 例えば、以下のストアドプロシージャの場合:
CREATE OR REPLACE PROCEDURE test_proc()
RETURNS INT4 LANGUAGE NZPLSQL AS
BEGIN_PROC
declare c integer;
BEGIN
RAISE NOTICE 'The customer name is beta';
create table netezza(i int);
insert into netezza values(10);
select count(*) into c from netezza;
END;
END_PROC;
enable_sproc_hist_logging有効なシステムでこのストアド プロシージャを実行すると、ストアド プロシージャ定義の太字の行が履歴データベースに記録される。
HISTDB.QUERYOWNER(ADMIN)=> select opid, sessionid, dbname, query from "$v_hist_queries" where sessionid=298716 and dbname='SYSTEM' order by opid;
OPID | SESSIONID | DBNAME | QUERY
---------+-----------+--------+-----------------------------------------------------------
2279850 | 298716 | SYSTEM | select version(), 'OS Platform: Linux', 'OS Username: nz'
2279851 | 298716 | SYSTEM | SET CLIENT_VERSION = 'Release 7.2.1.6-P1 [Build 0]'
2279852 | 298716 | SYSTEM | select current_catalog, current_schema, current_user
2279981 | 298716 | SYSTEM | set enable_sproc_hist_logging=1
2280102 | 298716 | SYSTEM | show enable_sproc_hist_logging
2280202 | 298716 | SYSTEM | call test_proc()
2280203 | 298716 | SYSTEM | create table netezza(i int)
2280207 | 298716 | SYSTEM | insert into netezza values(10)
2280209 | 298716 | SYSTEM | SELECT count(*) from netezza
注意:通常のストアド・プロシージャと暗号化され難読化されたストアド・プロシージャでは動作が異なります。
例
- 通常のストアドプロシージャ呼び出し
すべての内部クエリとネストされたストアドプロシージャの実行が記録される。 ネストされたストアドプロシージャが暗号化され、難読化されている場合、そのクエリは記録されない。
- 難読化および暗号化されたストアプロシージャ呼び出し
内部クエリやネストされたストアプロシージャ(正規または難読)は、クエリ履歴データベースには取り込まれません。