|
| 1 | +#!/bin/bash |
| 2 | +# Create Debezium user with LogMiner privileges + sentinel table. |
| 3 | +# Runs after 01-setup.sh during gvenzl/oracle-xe container initialization. |
| 4 | + |
| 5 | +sqlplus -S / as sysdba <<'SQL' |
| 6 | +-- Create common user for Debezium LogMiner access (CDB level) |
| 7 | +CREATE USER c##dbzuser IDENTIFIED BY dbz |
| 8 | + DEFAULT TABLESPACE USERS |
| 9 | + QUOTA UNLIMITED ON USERS |
| 10 | + CONTAINER=ALL; |
| 11 | +
|
| 12 | +-- Session and container |
| 13 | +GRANT CREATE SESSION TO c##dbzuser CONTAINER=ALL; |
| 14 | +GRANT SET CONTAINER TO c##dbzuser CONTAINER=ALL; |
| 15 | +
|
| 16 | +-- LogMiner specific |
| 17 | +GRANT LOGMINING TO c##dbzuser CONTAINER=ALL; |
| 18 | +GRANT EXECUTE ON DBMS_LOGMNR TO c##dbzuser CONTAINER=ALL; |
| 19 | +GRANT EXECUTE ON DBMS_LOGMNR_D TO c##dbzuser CONTAINER=ALL; |
| 20 | +
|
| 21 | +-- V$ views for log mining |
| 22 | +GRANT SELECT ON V_$DATABASE TO c##dbzuser CONTAINER=ALL; |
| 23 | +GRANT SELECT ON V_$LOG TO c##dbzuser CONTAINER=ALL; |
| 24 | +GRANT SELECT ON V_$LOG_HISTORY TO c##dbzuser CONTAINER=ALL; |
| 25 | +GRANT SELECT ON V_$LOGMNR_LOGS TO c##dbzuser CONTAINER=ALL; |
| 26 | +GRANT SELECT ON V_$LOGMNR_CONTENTS TO c##dbzuser CONTAINER=ALL; |
| 27 | +GRANT SELECT ON V_$LOGFILE TO c##dbzuser CONTAINER=ALL; |
| 28 | +GRANT SELECT ON V_$ARCHIVED_LOG TO c##dbzuser CONTAINER=ALL; |
| 29 | +GRANT SELECT ON V_$ARCHIVE_DEST_STATUS TO c##dbzuser CONTAINER=ALL; |
| 30 | +GRANT SELECT ON V_$TRANSACTION TO c##dbzuser CONTAINER=ALL; |
| 31 | +GRANT SELECT ON V_$THREAD TO c##dbzuser CONTAINER=ALL; |
| 32 | +GRANT SELECT ON V_$PARAMETER TO c##dbzuser CONTAINER=ALL; |
| 33 | +GRANT SELECT ON V_$NLS_PARAMETERS TO c##dbzuser CONTAINER=ALL; |
| 34 | +GRANT SELECT ON V_$TIMEZONE_NAMES TO c##dbzuser CONTAINER=ALL; |
| 35 | +
|
| 36 | +-- General access |
| 37 | +GRANT SELECT ANY TABLE TO c##dbzuser CONTAINER=ALL; |
| 38 | +GRANT SELECT ANY TRANSACTION TO c##dbzuser CONTAINER=ALL; |
| 39 | +GRANT SELECT ANY DICTIONARY TO c##dbzuser CONTAINER=ALL; |
| 40 | +GRANT FLASHBACK ANY TABLE TO c##dbzuser CONTAINER=ALL; |
| 41 | +GRANT SELECT_CATALOG_ROLE TO c##dbzuser CONTAINER=ALL; |
| 42 | +GRANT EXECUTE_CATALOG_ROLE TO c##dbzuser CONTAINER=ALL; |
| 43 | +GRANT LOCK ANY TABLE TO c##dbzuser CONTAINER=ALL; |
| 44 | +GRANT CREATE TABLE TO c##dbzuser CONTAINER=ALL; |
| 45 | +GRANT ALTER ANY TABLE TO c##dbzuser CONTAINER=ALL; |
| 46 | +GRANT CREATE SEQUENCE TO c##dbzuser CONTAINER=ALL; |
| 47 | +
|
| 48 | +-- OLR needs SELECT+FLASHBACK on SYS dictionary base tables (AS OF SCN queries) |
| 49 | +-- These must be granted at PDB level since CONTAINER=ALL doesn't propagate for SYS objects |
| 50 | +ALTER SESSION SET CONTAINER=XEPDB1; |
| 51 | +
|
| 52 | +GRANT SELECT, FLASHBACK ON SYS.CCOL$ TO c##dbzuser; |
| 53 | +GRANT SELECT, FLASHBACK ON SYS.CDEF$ TO c##dbzuser; |
| 54 | +GRANT SELECT, FLASHBACK ON SYS.COL$ TO c##dbzuser; |
| 55 | +GRANT SELECT, FLASHBACK ON SYS.DEFERRED_STG$ TO c##dbzuser; |
| 56 | +GRANT SELECT, FLASHBACK ON SYS.ECOL$ TO c##dbzuser; |
| 57 | +GRANT SELECT, FLASHBACK ON SYS.LOB$ TO c##dbzuser; |
| 58 | +GRANT SELECT, FLASHBACK ON SYS.LOBCOMPPART$ TO c##dbzuser; |
| 59 | +GRANT SELECT, FLASHBACK ON SYS.LOBFRAG$ TO c##dbzuser; |
| 60 | +GRANT SELECT, FLASHBACK ON SYS.OBJ$ TO c##dbzuser; |
| 61 | +GRANT SELECT, FLASHBACK ON SYS.TAB$ TO c##dbzuser; |
| 62 | +GRANT SELECT, FLASHBACK ON SYS.TABCOMPART$ TO c##dbzuser; |
| 63 | +GRANT SELECT, FLASHBACK ON SYS.TABPART$ TO c##dbzuser; |
| 64 | +GRANT SELECT, FLASHBACK ON SYS.TABSUBPART$ TO c##dbzuser; |
| 65 | +GRANT SELECT, FLASHBACK ON SYS.TS$ TO c##dbzuser; |
| 66 | +GRANT SELECT, FLASHBACK ON SYS.USER$ TO c##dbzuser; |
| 67 | +GRANT SELECT, FLASHBACK ON XDB.XDB$TTSET TO c##dbzuser; |
| 68 | +
|
| 69 | +-- OLR also needs FLASHBACK on XDB token tables (dynamic names like X$NMxxxx, X$PTxxxx, X$QNxxxx) |
| 70 | +BEGIN |
| 71 | + FOR t IN (SELECT table_name FROM dba_tables WHERE owner='XDB' |
| 72 | + AND (table_name LIKE 'X$NM%' OR table_name LIKE 'X$PT%' OR table_name LIKE 'X$QN%')) LOOP |
| 73 | + EXECUTE IMMEDIATE 'GRANT SELECT, FLASHBACK ON XDB.' || t.table_name || ' TO c##dbzuser'; |
| 74 | + END LOOP; |
| 75 | +END; |
| 76 | +/ |
| 77 | +
|
| 78 | +GRANT DBA TO c##dbzuser; |
| 79 | +
|
| 80 | +-- Sentinel table for completion detection |
| 81 | +
|
| 82 | +BEGIN |
| 83 | + EXECUTE IMMEDIATE 'CREATE TABLE olr_test.DEBEZIUM_SENTINEL ( |
| 84 | + id NUMBER PRIMARY KEY, |
| 85 | + marker VARCHAR2(100) |
| 86 | + )'; |
| 87 | +EXCEPTION WHEN OTHERS THEN |
| 88 | + IF SQLCODE = -955 THEN NULL; ELSE RAISE; END IF; |
| 89 | +END; |
| 90 | +/ |
| 91 | +
|
| 92 | +ALTER TABLE olr_test.DEBEZIUM_SENTINEL ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS; |
| 93 | +SQL |
0 commit comments