1 PACKAGE dbms_cdc_utility
2 IS
3 PROCEDURE qccgetee
4 (
5 edition_o OUT binary_integer
6 );
7
8 PROCEDURE qccgscn
9 (
10 scnbase_o OUT binary_integer,
11 scnwrap_o OUT binary_integer
12 );
13
14 FUNCTION get_current_scn
15 RETURN NUMBER;
16
17 PROCEDURE lock_change_set
18 (
19 change_set_name IN VARCHAR2
20 );
21
22 --
23 -- perform extra steps to CREATE a sync. change table
24 --
25 PROCEDURE setup_sync_table
26 (
27 owner IN VARCHAR2,
28 table_name IN VARCHAR2
29 );
30
31 --
32 -- perform extra steps to ALTER a sync. change table
33 --
34 PROCEDURE fixup_sync_table
35 (
36 owner IN VARCHAR2,
37 table_name IN VARCHAR2
38 );
39
40 --
41 -- perform extra steps to DROP a sync. change table
42 --
43 PROCEDURE cleanup_sync_table
44 (
45 owner IN VARCHAR2,
46 table_name IN VARCHAR2
47 );
48
49 --
50 -- implementation of EXTEND_WINDOW_LIST()
51 --
52 PROCEDURE extend_window_list
53 (
54 subscription_list IN VARCHAR2,
55 source_schema_list IN VARCHAR2,
56 source_table_list IN VARCHAR2,
57 rollback_segment_list IN VARCHAR2,
58 check_source IN BOOLEAN,
59 read_consistency IN BOOLEAN,
60 timestamp_scn_list OUT VARCHAR2,
61 tablemod_scn_list OUT VARCHAR2,
62 read_consistent_scn OUT NUMBER
63 );
64
65 --
66 -- Determine if a column name is a CDC control column,
67 --
68 FUNCTION is_control_column
69 ( column_name IN VARCHAR2 )
70 RETURN NUMBER;
71
72 --
73 -- Determine if a column name is a CDC control column for MVs,
74 --
75 FUNCTION is_control_columnmv
76 ( column_name IN VARCHAR2 )
77 RETURN NUMBER;
78
79
80 -- Next 2 are for dynamic ChangeTable echo/debug
81 PROCEDURE qccgelvl
82 (
83 event IN binary_integer,
84 level OUT binary_integer
85 );
86
87 FUNCTION get_event_level
88 (
89 event IN NUMBER
90 )
91 RETURN NUMBER;
92
93
94 --
95 -- Returns 1 if this is Oracle Enterprise Edition, else return 0
96 --
97 FUNCTION get_oracle_edition
98 RETURN NUMBER;
99
100 --
101 -- Set subscription window starting SCN (EARLIEST)
102 --
103 PROCEDURE set_window_start
104 ( subscription_handle IN NUMBER );
105
106
107 --
108 -- Convert an Oracle number to a hex string
109 --
110 FUNCTION numtohex
111 ( num IN NUMBER)
112 RETURN VARCHAR2;
113
114 --
115 -- Verify user has access to a specified change table
116 --
117 PROCEDURE chk_security (owner IN VARCHAR2,
118 ownerl IN binary_integer,
119 table_name IN VARCHAR2,
120 table_namel IN binary_integer,
121 mvlog IN binary_integer,
122 success OUT binary_integer);
123
124 --
125 -- allocate a unique lock for CDC use
126 --
127 PROCEDURE cdc_allocate_lock (lockname IN VARCHAR2,
128 lockhandle OUT VARCHAR2,
129 expiration_secs IN integer default 864000);
130 --
131 -- do a logical purge of data from all change tables that are MV logs
132 -- related to a subscription.
133 --
134 -- PARAMETERS
135 --
136 -- subscription_handle: A unique identifier for a subscription
137 --
138 -- purge_this_subscription: a flag indicating whether or not the
139 -- subscription is going away. 'Y' means
140 -- ignore this subscription when computing
141 -- the purge point.
142 -- returns 0 if nothing to do else > 0
143 --
144 PROCEDURE purgeMVLogLogical ( subscription_handle IN NUMBER,
145 purge_this_subscription IN CHAR,
146 updated_something OUT NUMBER );
147
148 --
149 -- do a physical purge of a change table that is an MV log
150 --
151 PROCEDURE purgeMVLogPhysical ( schema_name IN VARCHAR2,
152 table_name IN VARCHAR2,
153 rows_purged OUT NUMBER );
154
155
156 --
157 -- produce an IMPORT_CHANGE_TABLE call during export
158 --
159 FUNCTION export_change_table
160 (
161 schema_comma_table IN VARCHAR2
162 )
163 RETURN VARCHAR2;
164
165 --
166 -- Produce metadata for a Change Table during IMPORT
167 --
168 PROCEDURE import_change_table
169 (
170 change_table_type IN VARCHAR2,
171 major_version IN VARCHAR2,
172 minor_version IN VARCHAR2,
173 database_name IN VARCHAR2,
174 owner IN VARCHAR2,
175 change_table_name IN VARCHAR2,
176 change_set_name IN VARCHAR2,
177 source_schema IN VARCHAR2,
178 source_table IN VARCHAR2,
179 created_scn IN VARCHAR2,
180 lowest_scn IN VARCHAR2,
181 highest_scn IN VARCHAR2,
182 column_type_list IN VARCHAR2,
183 col_created IN VARCHAR2,
184 capture_values IN VARCHAR2,
185 rs_id IN CHAR,
186 row_id IN CHAR,
187 user_id IN CHAR,
188 timestamp IN CHAR,
189 object_id IN CHAR,
190 source_colmap IN CHAR,
191 target_colmap IN CHAR,
192 ddl_markers IN CHAR,
193 opt_created IN VARCHAR2
194 );
195
196
197 --
198 -- check for purge job in job queue. if none, then submit one.
199 -- If submits one returns TRUE otherwise FALSE.
200 --
201 FUNCTION check_purge RETURN BOOLEAN;
202
203 --
204 -- (next 2 are for getting next "batch" SCN for SYNC)
205 -- get the next "batch" SCN for a SYNC change table.
206 --
207 PROCEDURE qccsgnbs
208 (
209 highest_scn IN NUMBER,
210 highest_len IN binary_integer,
211 next_scn OUT NUMBER
212 );
213
214 FUNCTION getSyncSCN
215 (
216 highest_scn IN NUMBER,
217 highest_len IN NUMBER
218 )
219 RETURN NUMBER;
220
221
222 --
223 -- Drop Change Tables in schema when doing DROP USER CASCADE
224 --
225 PROCEDURE drop_user
226 (
227 user_name IN VARCHAR2
228 );
229
230 -- set the purge boundary using SPLIT PARTITION
231 PROCEDURE set_purgeBoundary
232 (
233 subscription_handle IN binary_integer
234 );
235
236 --
237 -- To get database name, major version, and minor version
238 --
239 PROCEDURE get_instance
240 (
241 major_version OUT NUMBER,
242 minor_version OUT NUMBER,
243 db_name OUT VARCHAR2
244 );
245
246 --
247 -- To get table object number
248 --
249 PROCEDURE get_table_objn(owner IN VARCHAR2,
250 tabnam IN VARCHAR2,
251 tabobjn OUT BINARY_INTEGER);
252
253 --
254 -- To count the number of purge job
255 --
256 PROCEDURE count_purge_job(purge_job IN VARCHAR2,
257 job_cnt OUT BINARY_INTEGER);
258
259 --
260 -- To count the number of subscribers on a change table
261 --
262 PROCEDURE count_subscribers(change_table_objn IN BINARY_INTEGER,
263 num_of_subscribers OUT BINARY_INTEGER);
264
265 --
266 -- To count the number of object columns
267 --
268 PROCEDURE count_object_col(owner IN VARCHAR2,
269 tabnam IN VARCHAR2,
270 colcount OUT BINARY_INTEGER);
271
272 --
273 -- To count if a column exists in a table
274 --
275 PROCEDURE count_existing_col(tabobjn IN BINARY_INTEGER,
276 colnam IN VARCHAR2,
277 colcount OUT BINARY_INTEGER);
278
279 --
280 -- To delete the export action associated with the change table
281 --
282 PROCEDURE delete_export_action(change_table_owner IN VARCHAR2,
283 change_table_name IN VARCHAR2);
284
285 -- paramter max string length
286 CDC_DB_NAME_MAX CONSTANT INTEGER := 128;
287 CDC_ID_NAME_MAX CONSTANT INTEGER := 30;
288 CDC_DESC_MAX CONSTANT INTEGER := 255;
289 CDC_VARCHAR_MAX CONSTANT INTEGER := 32767;
290 CDC_SINGLE_CHAR CONSTANT INTEGER := 1;
291 CDC_JOB_NAME_MAX CONSTANT INTEGER := 4000;
292 CDC_DML_TYPE_MAX CONSTANT INTEGER := 6;
293 CDC_ROOT_DIR_MAX CONSTANT INTEGER := 2000;
294 --
295 -- Verify the varchar/char parameter does not exceed the limit
296 --
297 PROCEDURE verify_varchar_param(param_name IN VARCHAR2,
298 param_value IN VARCHAR2,
299 param_max IN BINARY_INTEGER);
300
301 -- VERIFY_CDC_NAME
302 -- Verify the param_value parameter does not exceed the limit
303 -- and it conforms to the naming rules for CDC identifiers.
304 -- All Change Data Capture (CDC) identifiers must have at most 30
305 -- characters, and must start with a letter that is followed
306 -- by any combination of letters, numerals, and the signs
307 -- '$', '_', and '#'. Other characters cannot be used in identifiers.
308 -- The rules for CDC identifiers are the same as for PL/SQL identifiers.
309 --
310 PROCEDURE verify_cdc_name(param_name IN VARCHAR2,
311 param_value IN VARCHAR2,
312 param_max IN BINARY_INTEGER);
313 END dbms_cdc_utility;