Skip to content

Instantly share code, notes, and snippets.

@hguerrero
Last active March 29, 2021 14:26
Show Gist options
  • Save hguerrero/f85b3995a5e54fd15bff23e3151f5402 to your computer and use it in GitHub Desktop.
Save hguerrero/f85b3995a5e54fd15bff23e3151f5402 to your computer and use it in GitHub Desktop.
Database configuration Oracle Connector for Debezium
-- Create and populate our products using a single insert with many rows
CREATE TABLE products (
id NUMBER(4) GENERATED BY DEFAULT ON NULL AS IDENTITY (START WITH 101) NOT NULL PRIMARY KEY,
name VARCHAR2(255) NOT NULL,
description VARCHAR2(512),
weight FLOAT
);
GRANT SELECT ON products to c##dbzuser;
ALTER TABLE products ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;
INSERT INTO products
VALUES (NULL,'scooter','Small 2-wheel scooter',3.14);
INSERT INTO products
VALUES (NULL,'car battery','12V car battery',8.1);
INSERT INTO products
VALUES (NULL,'12-pack drill bits','12-pack of drill bits with sizes ranging from #40 to #3',0.8);
INSERT INTO products
VALUES (NULL,'hammer','12oz carpenter''s hammer',0.75);
INSERT INTO products
VALUES (NULL,'hammer','14oz carpenter''s hammer',0.875);
INSERT INTO products
VALUES (NULL,'hammer','16oz carpenter''s hammer',1.0);
INSERT INTO products
VALUES (NULL,'rocks','box of assorted rocks',5.3);
INSERT INTO products
VALUES (NULL,'jacket','water resistent black wind breaker',0.1);
INSERT INTO products
VALUES (NULL,'spare tire','24 inch spare tire',22.2);
-- Create and populate the products on hand using multiple inserts
CREATE TABLE products_on_hand (
product_id NUMBER(4) NOT NULL PRIMARY KEY,
quantity NUMBER(4) NOT NULL,
FOREIGN KEY (product_id) REFERENCES products(id)
);
GRANT SELECT ON products_on_hand to c##dbzuser;
ALTER TABLE products_on_hand ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;
INSERT INTO products_on_hand VALUES (101,3);
INSERT INTO products_on_hand VALUES (102,8);
INSERT INTO products_on_hand VALUES (103,18);
INSERT INTO products_on_hand VALUES (104,4);
INSERT INTO products_on_hand VALUES (105,5);
INSERT INTO products_on_hand VALUES (106,0);
INSERT INTO products_on_hand VALUES (107,44);
INSERT INTO products_on_hand VALUES (108,2);
INSERT INTO products_on_hand VALUES (109,5);
-- Create some customers ...
CREATE TABLE customers (
id NUMBER(4) GENERATED BY DEFAULT ON NULL AS IDENTITY (START WITH 1001) NOT NULL PRIMARY KEY,
first_name VARCHAR2(255) NOT NULL,
last_name VARCHAR2(255) NOT NULL,
email VARCHAR2(255) NOT NULL UNIQUE
);
GRANT SELECT ON customers to c##dbzuser;
ALTER TABLE customers ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;
INSERT INTO customers
VALUES (NULL,'Sally','Thomas','[email protected]');
INSERT INTO customers
VALUES (NULL,'George','Bailey','[email protected]');
INSERT INTO customers
VALUES (NULL,'Edward','Walker','[email protected]');
INSERT INTO customers
VALUES (NULL,'Anne','Kretchmar','[email protected]');
-- Create some very simple orders
CREATE TABLE debezium.orders (
id NUMBER(6) GENERATED BY DEFAULT ON NULL AS IDENTITY (START WITH 10001) NOT NULL PRIMARY KEY,
order_date DATE NOT NULL,
purchaser NUMBER(4) NOT NULL,
quantity NUMBER(4) NOT NULL,
product_id NUMBER(4) NOT NULL,
FOREIGN KEY (purchaser) REFERENCES customers(id),
FOREIGN KEY (product_id) REFERENCES products(id)
);
GRANT SELECT ON orders to c##dbzuser;
ALTER TABLE orders ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;
INSERT INTO orders
VALUES (NULL, '16-JAN-2016', 1001, 1, 102);
INSERT INTO orders
VALUES (NULL, '17-JAN-2016', 1002, 2, 105);
INSERT INTO orders
VALUES (NULL, '19-FEB-2016', 1002, 2, 106);
INSERT INTO orders
VALUES (NULL, '21-FEB-2016', 1003, 1, 107);
#!/bin/sh
# Set archive log mode and enable GG replication
ORACLE_SID=ORCLCDB
export ORACLE_SID
sqlplus /nolog <<- EOF
CONNECT sys/Oradoc_db1 AS SYSDBA
alter system set db_recovery_file_dest_size = 10G;
alter system set db_recovery_file_dest = '/ORCL/u02/app/oracle/oradata/recovery_data' scope=spfile;
shutdown immediate
startup mount
alter database archivelog;
alter database open;
-- Should show "Database log mode: Archive Mode"
archive log list
exit;
EOF
# Enable LogMiner required database features/settings
sqlplus sys/Oradoc_db1@//localhost:1521/ORCLCDB.localdomain as sysdba <<- EOF
ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;
ALTER PROFILE DEFAULT LIMIT FAILED_LOGIN_ATTEMPTS UNLIMITED;
exit;
EOF
# Create Log Miner Tablespace and User
sqlplus sys/Oradoc_db1@//localhost:1521/ORCLCDB.localdomain as sysdba <<- EOF
CREATE TABLESPACE LOGMINER_TBS DATAFILE '/ORCL/u02/app/oracle/oradata/ORCLCDB/logminer_tbs.dbf' SIZE 25M REUSE AUTOEXTEND ON MAXSIZE UNLIMITED;
exit;
EOF
sqlplus sys/Oradoc_db1@//localhost:1521/ORCLPDB1.localdomain as sysdba <<- EOF
CREATE TABLESPACE LOGMINER_TBS DATAFILE '/ORCL/u02/app/oracle/oradata/ORCLCDB/ORCLPDB1/logminer_tbs.dbf' SIZE 25M REUSE AUTOEXTEND ON MAXSIZE UNLIMITED;
exit;
EOF
sqlplus sys/Oradoc_db1@//localhost:1521/ORCLCDB.localdomain as sysdba <<- EOF
CREATE USER c##dbzuser IDENTIFIED BY dbz DEFAULT TABLESPACE LOGMINER_TBS QUOTA UNLIMITED ON LOGMINER_TBS CONTAINER=ALL;
GRANT CREATE SESSION TO c##dbzuser CONTAINER=ALL;
GRANT SET CONTAINER TO c##dbzuser CONTAINER=ALL;
GRANT SELECT ON V_\$DATABASE TO c##dbzuser CONTAINER=ALL;
GRANT FLASHBACK ANY TABLE TO c##dbzuser CONTAINER=ALL;
GRANT SELECT ANY TABLE TO c##dbzuser CONTAINER=ALL;
GRANT SELECT_CATALOG_ROLE TO c##dbzuser CONTAINER=ALL;
GRANT EXECUTE_CATALOG_ROLE TO c##dbzuser CONTAINER=ALL;
GRANT SELECT ANY TRANSACTION TO c##dbzuser CONTAINER=ALL;
GRANT SELECT ANY DICTIONARY TO c##dbzuser CONTAINER=ALL;
GRANT LOGMINING TO c##dbzuser CONTAINER=ALL;
GRANT CREATE TABLE TO c##dbzuser CONTAINER=ALL;
GRANT ALTER ANY TABLE TO c##dbzuser CONTAINER=ALL;
GRANT LOCK ANY TABLE TO c##dbzuser CONTAINER=ALL;
GRANT CREATE SEQUENCE TO c##dbzuser CONTAINER=ALL;
GRANT EXECUTE ON DBMS_LOGMNR TO c##dbzuser CONTAINER=ALL;
GRANT EXECUTE ON DBMS_LOGMNR_D TO c##dbzuser CONTAINER=ALL;
GRANT SELECT ON V_\$LOGMNR_LOGS TO c##dbzuser CONTAINER=ALL;
GRANT SELECT ON V_\$LOGMNR_CONTENTS TO c##dbzuser CONTAINER=ALL;
GRANT SELECT ON V_\$LOGFILE TO c##dbzuser CONTAINER=ALL;
GRANT SELECT ON V_\$ARCHIVED_LOG TO c##dbzuser CONTAINER=ALL;
GRANT SELECT ON V_\$ARCHIVE_DEST_STATUS TO c##dbzuser CONTAINER=ALL;
exit;
EOF
sqlplus sys/Oradoc_db1@//localhost:1521/ORCLPDB1.localdomain as sysdba <<- EOF
CREATE USER debezium IDENTIFIED BY dbz;
GRANT CONNECT TO debezium;
GRANT CREATE SESSION TO debezium;
GRANT CREATE TABLE TO debezium;
GRANT CREATE SEQUENCE to debezium;
ALTER USER debezium QUOTA 100M on users;
exit;
EOF
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment