Skip to content

Instantly share code, notes, and snippets.

@ahoy-jon
Created October 24, 2020 09:40
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ahoy-jon/7e5aae82505cbda6432210e2133ab587 to your computer and use it in GitHub Desktop.
Save ahoy-jon/7e5aae82505cbda6432210e2133ab587 to your computer and use it in GitHub Desktop.
#docker rm dbz_oracle
#docker volume rm ORCL
docker volume create ORCL
docker run \
--name dbz_oracle -p 1521:1521 \
--env DB_DOMAIN="" \
--volume ORCL:/ORCL \
container-registry.oracle.com/database/enterprise:12.2.0.1-slim
#!/bin/sh
#cat setupDbzOnOracle.sh | docker exec -i dbz_oracle bash -x
source /home/oracle/.bashrc
#sqlplus sys/Oradoc_db1 AS SYSDBA
set -euo pipefail
IFS=$'\n\t'
mkdir -p /u02/app/oracle/oradata/recovery_area
chgrp 54321 /u02/app/oracle/oradata/recovery_area
chown 54321 /u02/app/oracle/oradata/recovery_area
# Set archive log mode and enable GG replication
export ORACLE_SID=ORCLCDB
export ORACLE_PDB=ORCLPDB1
export PASSWORD=Oradoc_db1
echo "Enable GoldenGate replication and archive log mode"
sqlplus /nolog <<-EOF
CONNECT sys/Oradoc_db1 AS SYSDBA
alter system set db_recovery_file_dest_size = 5G;
alter system set db_recovery_file_dest = '/u02/app/oracle/oradata/recovery_area' scope=spfile;
alter system set enable_goldengate_replication=true;
shutdown immediate
exit;
EOF
sqlplus /nolog <<-EOF
CONNECT sys/Oradoc_db1 AS SYSDBA
startup mount
alter database archivelog;
alter database open;
-- Should show "Database log mode: Archive Mode"
archive log list
exit;
EOF
echo "Create XStream admin user"
# ALTER SESSION SET CONTAINER = CDB$ROOT;
sqlplus sys/Oradoc_db1@//localhost:1521/ORCLCDB as sysdba <<-EOF
CREATE TABLESPACE xstream_adm_tbs DATAFILE '/u02/app/oracle/oradata/ORCLCDB/xstream_adm_tbs.dbf'
SIZE 25M REUSE AUTOEXTEND ON MAXSIZE UNLIMITED;
ALTER SESSION SET CONTAINER = ORCLPDB1;
CREATE TABLESPACE xstream_adm_tbs DATAFILE '/u02/app/oracle/oradata/ORCLCDB/orclpdb1/xstream_adm_tbs.dbf'
SIZE 25M REUSE AUTOEXTEND ON MAXSIZE UNLIMITED;
ALTER SESSION SET CONTAINER = CDB\$ROOT;
CREATE USER c##xstrmadmin IDENTIFIED BY xsa
DEFAULT TABLESPACE xstream_adm_tbs
QUOTA UNLIMITED ON xstream_adm_tbs
CONTAINER=ALL;
GRANT CREATE SESSION, SET CONTAINER TO c##xstrmadmin CONTAINER=ALL;
BEGIN
DBMS_XSTREAM_AUTH.GRANT_ADMIN_PRIVILEGE(
grantee => 'c##xstrmadmin',
privilege_type => 'CAPTURE',
grant_select_privileges => TRUE,
container => 'ALL'
);
END;
/
EXIT;
EOF
#sys/Oradoc_db1@//localhost:1521/ORCLCDB as sysdba
echo "xstream_tbs"
sqlplus sys/Oradoc_db1@//localhost:1521/ORCLCDB as sysdba <<-EOF
CREATE TABLESPACE xstream_tbs DATAFILE '/u02/app/oracle/oradata/ORCLCDB/xstream_tbs.dbf'
SIZE 25M REUSE AUTOEXTEND ON MAXSIZE UNLIMITED;
ALTER SESSION SET CONTAINER = ORCLPDB1;
CREATE TABLESPACE xstream_tbs DATAFILE '/u02/app/oracle/oradata/ORCLCDB/orclpdb1/xstream_tbs.dbf'
SIZE 25M REUSE AUTOEXTEND ON MAXSIZE UNLIMITED;
ALTER SESSION SET CONTAINER = CDB\$ROOT;
CREATE USER c##xstrm IDENTIFIED BY xs
DEFAULT TABLESPACE xstream_tbs
QUOTA UNLIMITED ON xstream_tbs
CONTAINER=ALL;
GRANT CREATE SESSION TO c##xstrm CONTAINER=ALL;
GRANT SET CONTAINER TO c##xstrm CONTAINER=ALL;
GRANT SELECT ON V_\$DATABASE to c##xstrm CONTAINER=ALL;
GRANT FLASHBACK ANY TABLE TO c##xstrm CONTAINER=ALL;
EXIT;
EOF
echo "create debezium test user"
sqlplus sys/Oradoc_db1@//localhost:1521/ORCLPDB1 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
echo "create table from debezium test account"
sqlplus /nolog <<-EOF
CONN debezium/dbz@//localhost:1521/ORCLPDB1
CREATE TABLE testDbzTbl(id int,name varchar2(20), CONSTRAINT testDbzTbl_pk PRIMARY KEY (id));
INSERT INTO testDbzTbl (id, name) VALUES (1, 'A');
EXIT;
EOF
echo "xstrmadmin + c##debezium"
sqlplus c##xstrmadmin/xsa@//localhost:1521/ORCLCDB <<-EOF
DECLARE
tables DBMS_UTILITY.UNCL_ARRAY;
schemas DBMS_UTILITY.UNCL_ARRAY;
BEGIN
tables(1) := NULL;
schemas(1) := 'debezium';
DBMS_XSTREAM_ADM.CREATE_OUTBOUND(
server_name => 'dbzxout',
table_names => tables,
schema_names => schemas);
END;
/
EXIT;
EOF
echo "xstrm"
sqlplus sys/Oradoc_db1@//localhost:1521/ORCLCDB as sysdba <<-EOF
BEGIN
DBMS_XSTREAM_ADM.ALTER_OUTBOUND(
server_name => 'dbzxout',
connect_user => 'c##xstrm');
END;
/
EXIT;
EOF
sqlplus sys/Oradoc_db1@//localhost:1521/ORCLCDB as sysdba <<-EOF
GRANT execute on sys.dbms_metadata to public;
GRANT select_catalog_role TO c##xstrm;
EXIT;
EOF
sqlplus sys/Oradoc_db1@//localhost:1521/ORCLPDB1 as sysdba <<- EOF
GRANT SELECT, UPDATE, INSERT, DELETE ON debezium.testDbzTbl TO c##xstrm;
EXIT;
EOF
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment