DBA Data[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;