[Home] [Help]
PROCEDURE: SYS.DBMS_FEATURE_GOLDENGATE
Source
1 PROCEDURE dbms_feature_goldengate
2 (feature_boolean OUT NUMBER,
3 aux_count OUT NUMBER,
4 feature_info OUT CLOB)
5 AS
6 -- Based on goldengate usage
7 num_capture NUMBER;
8 num_ds_capture NUMBER;
9 num_apply NUMBER;
10 num_trigger_suppression NUMBER;
11 num_transient_duplicate NUMBER;
12 num_dblogreader NUMBER;
13 num_ggsddltrigopt NUMBER;
14 feature_usage VARCHAR2(4000);
15 total_feature_usage NUMBER;
16 num_dbencryption NUMBER;
17 num_ggsession NUMBER;
18 num_delcascadehint NUMBER;
19 num_suplog NUMBER;
20 BEGIN
21 -- initialize
22 feature_boolean := 0;
23 aux_count := 0;
24 feature_info := NULL;
25 num_capture := 0;
26 num_ds_capture := 0;
27 num_apply := 0;
28 num_trigger_suppression := 0;
29 num_transient_duplicate := 0;
30 num_dblogreader := 0;
31 num_ggsddltrigopt := 0;
32 feature_usage := NULL;
33 total_feature_usage := 0;
34 num_dbencryption := 0;
35 num_ggsession := 0;
36 num_delcascadehint := 0;
37 num_suplog := 0;
38
39 select decode (count(*), 0, 0, 1) into num_capture
40 from dba_capture where UPPER(purpose) = 'GOLDENGATE CAPTURE';
41
42 select decode (count(*), 0, 0, 1) into num_ds_capture
43 from dba_capture where UPPER(purpose) = 'GOLDENGATE CAPTURE' and
44 UPPER(capture_type) = 'DOWNSTREAM';
45
46 select decode (count(*), 0, 0, 1) into num_apply from dba_apply
47 where UPPER(purpose) IN ('GOLDENGATE APPLY', 'GOLDENGATE CAPTURE');
48
49 select sum(count) into num_dblogreader
50 from GV$GOLDENGATE_CAPABILITIES where name like 'DBLOGREADER';
51
52 select sum(count) into num_transient_duplicate
53 from GV$GOLDENGATE_CAPABILITIES where name like 'TRANSIENTDUPLICATE';
54
55 select sum(count) into num_trigger_suppression
56 from GV$GOLDENGATE_CAPABILITIES where name like 'TRIGGERSUPPRESSION';
57
58 select sum(count) into num_ggsddltrigopt
59 from GV$GOLDENGATE_CAPABILITIES where name like 'DDLTRIGGEROPTIMIZATION';
60
61 select sum(count) into num_dbencryption
62 from GV$GOLDENGATE_CAPABILITIES where name like 'DBENCRYPTION';
63
64 select sum(count) into num_ggsession
65 from GV$GOLDENGATE_CAPABILITIES where name like 'GGSESSION';
66
67 select sum(count) into num_delcascadehint
68 from GV$GOLDENGATE_CAPABILITIES where name like 'DELETECASCADEHINT';
69
70 select sum(count) into num_suplog
71 from GV$GOLDENGATE_CAPABILITIES where name like 'SUPPLEMENTALLOG';
72
73 total_feature_usage := num_capture + num_apply + num_dblogreader +
74 num_transient_duplicate + num_ggsddltrigopt + num_trigger_suppression +
75 num_dbencryption + num_ggsession + num_delcascadehint + num_suplog;
76
77 feature_usage := feature_usage ||
78 'tcap:' || num_capture
79 ||' dscap:' || num_ds_capture
80 ||' app:' || num_apply
81 ||' dblogread:' || num_dblogreader
82 ||' tdup:' || num_transient_duplicate
83 ||' suptrig:' || num_trigger_suppression
84 ||' dtrigopt:' || num_ggsddltrigopt
85 ||' dbenc:' || num_dbencryption
86 ||' ggsess:' || num_ggsession
87 ||' delhint:' || num_delcascadehint
88 ||' suplog:' || num_suplog;
89
90 feature_info := to_clob(feature_usage);
91 if (total_feature_usage > 0) THEN
92 feature_boolean := 1;
93 end if;
94 if(num_capture > 0 ) THEN
95 aux_count := aux_count+1;
96 end if;
97 if(num_apply > 0 ) THEN
98 aux_count := aux_count+1;
99 end if;
100 if(num_dblogreader > 0 ) THEN
101 aux_count := aux_count+1;
102 end if;
103 if(num_transient_duplicate > 0 ) THEN
104 aux_count := aux_count+1;
105 end if;
106 if(num_ggsddltrigopt > 0 ) THEN
107 aux_count := aux_count+1;
108 end if;
109 if(num_trigger_suppression > 0 ) THEN
110 aux_count := aux_count+1;
111 end if;
112 if(num_dbencryption > 0) THEN
113 aux_count := aux_count+1;
114 end if;
115 if(num_ggsession > 0) THEN
116 aux_count := aux_count+1;
117 end if;
118 if(num_delcascadehint > 0) THEN
119 aux_count := aux_count+1;
120 end if;
121 if(num_suplog > 0) THEN
122 aux_count := aux_count+1;
123 end if;
124
125 END dbms_feature_goldengate;