Для быстрого старта Integrated Replicat или Extract в Oracle GG применяли такую оптимизацию internal SQL с помощью SQLPatch
DECLARE
sql_text clob := 'SELECT
c.capture_name, xo.queue_owner || ''.'' ||
xo.queue_name
FROM
all_xstream_outbound xo,all_capture c WHERE xo.capture_name =
c.capture_name
AND server_name = SUBSTR(UPPER(''OGG$EXIEKS''),1,
30)'
;
hints
VARCHAR2(1000) := 'PARALLEL(4)';
description VARCHAR2(100) := 'GG sql
patch for IE';
name VARCHAR2(100) :=
'GG_IE_SQL_PATCH';
output
VARCHAR2(100);
sqlpro_attr sys.sqlprof_attr;
BEGIN
sqlpro_attr := sys.sqlprof_attr(
hints
);
output :=
sys.dbms_sqltune_internal.i_create_sql_profile(
sql_text => sql_text,
profile_xml =>
dbms_smb_internal.varr_to_hints_xml(
sqlpro_attr
),
name => name,
description =>
description,
category => 'DEFAULT',
creator => 'SYS',
validate => true,
type => 'PATCH',
force_match => true,
is_patch => true
);
dbms_output.put_line(
output
);
END;
/
В итоге все запрос теперь выполняются с применением патча.
SELECT
c.capture_name, xo.queue_owner || '.' ||
xo.queue_name FROM all_xstream_outbound xo, all_capture c
WHERE xo.capture_name = c.capture_name
AND server_name = SUBSTR(UPPER('OGG$EXIEKS123'), 1, 30)
|
2017-01-15/11:43:21
|
GG_IE_SQL_PATCH
|
SELECT
c.capture_name, xo.queue_owner || '.' ||
xo.queue_name FROM all_xstream_outbound xo, all_capture c
WHERE xo.capture_name = c.capture_name
AND server_name = SUBSTR(UPPER('OGG$EXIEKS124'), 1, 30)
|
2017-01-15/11:43:52
|
GG_IE_SQL_PATCH
|
SELECT
c.capture_name, xo.queue_owner || '.' ||
xo.queue_name FROM all_xstream_outbound xo, all_capture c
WHERE xo.capture_name = c.capture_name AND
server_name = SUBSTR(UPPER('OGG$EXIEKS125'), 1, 30)
|
2017-01-15/11:43:58
|
GG_IE_SQL_PATCH
|
Старт IExtract вместо 30 минут выполняется за 2 минуты после создания SQLPatch.
Комментариев нет:
Отправить комментарий