diff --git a/.packit.yaml b/.packit.yaml index 370861611..018809da6 100644 --- a/.packit.yaml +++ b/.packit.yaml @@ -328,6 +328,7 @@ jobs: environments: - variables: ORACLE_VERSION: 23.3.0.0 + ORACLE_PROFILE_ARGS: "-Poracle-23 -pl debezium-connector-oracle" TEST_PROFILE: oracle ############################################################################################### \ No newline at end of file diff --git a/debezium-connector-oracle/src/main/java/io/debezium/connector/oracle/OracleConnection.java b/debezium-connector-oracle/src/main/java/io/debezium/connector/oracle/OracleConnection.java index d13920320..d7aab2983 100644 --- a/debezium-connector-oracle/src/main/java/io/debezium/connector/oracle/OracleConnection.java +++ b/debezium-connector-oracle/src/main/java/io/debezium/connector/oracle/OracleConnection.java @@ -85,6 +85,7 @@ public OracleConnection(JdbcConfiguration config, ConnectionFactory connectionFa public OracleConnection(JdbcConfiguration config, ConnectionFactory connectionFactory, boolean showVersion) { super(config, connectionFactory, QUOTED_CHARACTER, QUOTED_CHARACTER); + LOGGER.trace("JDBC connection string: " + connectionString(config)); this.databaseVersion = resolveOracleDatabaseVersion(); if (showVersion) { LOGGER.info("Database Version: {}", databaseVersion.getBanner()); @@ -93,6 +94,7 @@ public OracleConnection(JdbcConfiguration config, ConnectionFactory connectionFa public OracleConnection(JdbcConfiguration config, boolean showVersion) { super(config, resolveConnectionFactory(config), QUOTED_CHARACTER, QUOTED_CHARACTER); + LOGGER.trace("JDBC connection string: " + connectionString(config)); this.databaseVersion = resolveOracleDatabaseVersion(); if (showVersion) { LOGGER.info("Database Version: {}", databaseVersion.getBanner()); diff --git a/debezium-connector-oracle/src/test/java/io/debezium/connector/oracle/util/TestHelper.java b/debezium-connector-oracle/src/test/java/io/debezium/connector/oracle/util/TestHelper.java index 9ca4c335c..7c918ae99 100644 --- a/debezium-connector-oracle/src/test/java/io/debezium/connector/oracle/util/TestHelper.java +++ b/debezium-connector-oracle/src/test/java/io/debezium/connector/oracle/util/TestHelper.java @@ -306,6 +306,11 @@ private static Configuration getDatabaseConfig(String prefix) { public static OracleConnection testConnection() { Configuration config = testConfig().build(); Configuration jdbcConfig = config.subset(DATABASE_PREFIX, true); + LOGGER.info("JDBC config: "); + for (var entry : jdbcConfig.asMap().entrySet()) { + LOGGER.info(entry.getKey() + "------" + entry.getValue()); + } + return createConnection(config, JdbcConfiguration.adapt(jdbcConfig), false); } diff --git a/debezium-testing/tmt/tests/debezium/init-db.sh b/debezium-testing/tmt/tests/debezium/init-db.sh new file mode 100755 index 000000000..3f57e0912 --- /dev/null +++ b/debezium-testing/tmt/tests/debezium/init-db.sh @@ -0,0 +1,44 @@ +#!/bin/bash +set -x + +docker exec -d oracledb /bin/bash /opt/oracle/setPassword.sh top_secret + +docker exec oracledb /bin/bash -l -c 'mkdir /opt/oracle/oradata/recovery_area' + +sleep 5 + +docker exec -i oracledb sqlplus /nolog <<- EOF + CONNECT sys/top_secret AS SYSDBA + alter system set db_recovery_file_dest_size = 5G; + alter system set db_recovery_file_dest = '/opt/oracle/oradata/recovery_area' scope=spfile; + shutdown immediate + startup mount + alter database archivelog; + alter database open; + archive log list + exit; +EOF + +pushd debezium-testing/tmt/tests/debezium + +sleep 10 + +sqlplus64 sys/top_secret@//localhost:1521/FREE as sysdba @oracle-init/log-init.sql + +sleep 10 + +sqlplus64 sys/top_secret@//localhost:1521/FREE as sysdba @oracle-init/oracle-free-logminer-init.sql + +sleep 10 + +sqlplus64 sys/top_secret@//localhost:1521/FREEPDB1 as sysdba @oracle-init/oracle-free-logminer-pdb.sql + +sleep 10 + +sqlplus64 sys/top_secret@//localhost:1521/FREE as sysdba @oracle-init/oracle-init.sql + +sleep 10 + +sqlplus64 sys/top_secret@//localhost:1521/FREEPDB1 as sysdba @oracle-init/common-user.sql + +popd diff --git a/debezium-testing/tmt/tests/debezium/oracle-init/common-user.sql b/debezium-testing/tmt/tests/debezium/oracle-init/common-user.sql new file mode 100644 index 000000000..e36e0201d --- /dev/null +++ b/debezium-testing/tmt/tests/debezium/oracle-init/common-user.sql @@ -0,0 +1,7 @@ +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; diff --git a/debezium-testing/tmt/tests/debezium/oracle-init/log-init.sql b/debezium-testing/tmt/tests/debezium/oracle-init/log-init.sql new file mode 100644 index 000000000..997127bdf --- /dev/null +++ b/debezium-testing/tmt/tests/debezium/oracle-init/log-init.sql @@ -0,0 +1,3 @@ +ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS; +ALTER PROFILE DEFAULT LIMIT FAILED_LOGIN_ATTEMPTS UNLIMITED; +exit; \ No newline at end of file diff --git a/debezium-testing/tmt/tests/debezium/oracle-init/oracle-free-logminer-init.sql b/debezium-testing/tmt/tests/debezium/oracle-init/oracle-free-logminer-init.sql new file mode 100644 index 000000000..65d36c537 --- /dev/null +++ b/debezium-testing/tmt/tests/debezium/oracle-init/oracle-free-logminer-init.sql @@ -0,0 +1,2 @@ +CREATE TABLESPACE logminer_tbs DATAFILE '/opt/oracle/oradata/FREE/logminer_tbs.dbf' SIZE 25M REUSE AUTOEXTEND ON MAXSIZE UNLIMITED; +exit; \ No newline at end of file diff --git a/debezium-testing/tmt/tests/debezium/oracle-init/oracle-free-logminer-pdb.sql b/debezium-testing/tmt/tests/debezium/oracle-init/oracle-free-logminer-pdb.sql new file mode 100644 index 000000000..79a0cb7d0 --- /dev/null +++ b/debezium-testing/tmt/tests/debezium/oracle-init/oracle-free-logminer-pdb.sql @@ -0,0 +1,2 @@ +CREATE TABLESPACE logminer_tbs DATAFILE '/opt/oracle/oradata/FREE/FREEPDB1/logminer_tbs.dbf' SIZE 25M REUSE AUTOEXTEND ON MAXSIZE UNLIMITED; +exit; \ No newline at end of file diff --git a/debezium-testing/tmt/tests/debezium/oracle-init/oracle-init.sql b/debezium-testing/tmt/tests/debezium/oracle-init/oracle-init.sql new file mode 100644 index 000000000..be264b2fa --- /dev/null +++ b/debezium-testing/tmt/tests/debezium/oracle-init/oracle-init.sql @@ -0,0 +1,36 @@ +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 LOGMINING TO c##dbzuser CONTAINER=ALL; + +GRANT CREATE 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_$LOG TO c##dbzuser CONTAINER=ALL; +GRANT SELECT ON V_$LOG_HISTORY 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_$LOGMNR_PARAMETERS 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; +GRANT SELECT ON V_$TRANSACTION TO c##dbzuser CONTAINER=ALL; +GRANT SELECT ON V_$VERSION TO c##dbzuser CONTAINER=ALL; + +GRANT SELECT ON V_$MYSTAT TO c##dbzuser CONTAINER=ALL; +GRANT SELECT ON V_$STATNAME TO c##dbzuser CONTAINER=ALL; + +GRANT CREATE TABLE TO c##dbzuser CONTAINER=ALL; +GRANT ALTER ANY TABLE TO c##dbzuser CONTAINER=ALL; +exit; diff --git a/debezium-testing/tmt/tests/debezium/test.sh b/debezium-testing/tmt/tests/debezium/test.sh index c54a8b216..a2c09b7bf 100755 --- a/debezium-testing/tmt/tests/debezium/test.sh +++ b/debezium-testing/tmt/tests/debezium/test.sh @@ -27,15 +27,26 @@ elif [ "$TEST_PROFILE" = "oracle" ] then source ${HOME}/install-oracle-driver.sh export LD_LIBRARY_PATH=$ORACLE_ARTIFACT_DIR + if [ "$ORACLE_VERSION" = "23.3.0.0" ] + then + export ORACLE_HOME=/usr/lib/oracle/21/client64 + export PATH=$ORACLE_HOME/bin:$PATH + export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH + export ORACLE_CONNECTION="-Ddatabase.dbname=FREEPDB1 -Ddatabase.pdb.name=FREEPDB1" + debezium-testing/tmt/tests/debezium/init-db.sh + fi mvn clean verify -U -pl debezium-connector-oracle -am -fae \ -Poracle-tests \ + ${ORACLE_PROFILE_ARGS:-} \ ${ORACLE_ARG:-} \ ${EXECUTION_ARG:-} \ -Ddatabase.hostname=0.0.0.0 \ -Ddatabase.admin.hostname=0.0.0.0 \ + -Ddatabase.port=1521 \ -Dinstantclient.dir=${ORACLE_ARTIFACT_DIR} \ + -Ddatabase.user="c##dbzuser" \ -Dinsecure.repositories=WARN \ - -Ddatabase.user="c##dbzuser" \ + ${ORACLE_CONNECTION:-} \ -Papicurio elif [ "$TEST_PROFILE" = "sqlserver" ] then