DBZ-7439 [ci] Add Oracle 23 initialisation scripts

* Create oracle-init dir with SQL init scripts
* Create init-db.sh to set default password and run init scripts
* Update test.sh to run init-db.sh for oracle-23
This commit is contained in:
Ondrej Babec 2024-01-21 10:12:57 +01:00 committed by Ondrej Babec
parent 3d22ed30a3
commit c806a04531
10 changed files with 114 additions and 1 deletions

View File

@ -328,6 +328,7 @@ jobs:
environments: environments:
- variables: - variables:
ORACLE_VERSION: 23.3.0.0 ORACLE_VERSION: 23.3.0.0
ORACLE_PROFILE_ARGS: "-Poracle-23 -pl debezium-connector-oracle"
TEST_PROFILE: oracle TEST_PROFILE: oracle
############################################################################################### ###############################################################################################

View File

@ -85,6 +85,7 @@ public OracleConnection(JdbcConfiguration config, ConnectionFactory connectionFa
public OracleConnection(JdbcConfiguration config, ConnectionFactory connectionFactory, boolean showVersion) { public OracleConnection(JdbcConfiguration config, ConnectionFactory connectionFactory, boolean showVersion) {
super(config, connectionFactory, QUOTED_CHARACTER, QUOTED_CHARACTER); super(config, connectionFactory, QUOTED_CHARACTER, QUOTED_CHARACTER);
LOGGER.trace("JDBC connection string: " + connectionString(config));
this.databaseVersion = resolveOracleDatabaseVersion(); this.databaseVersion = resolveOracleDatabaseVersion();
if (showVersion) { if (showVersion) {
LOGGER.info("Database Version: {}", databaseVersion.getBanner()); LOGGER.info("Database Version: {}", databaseVersion.getBanner());
@ -93,6 +94,7 @@ public OracleConnection(JdbcConfiguration config, ConnectionFactory connectionFa
public OracleConnection(JdbcConfiguration config, boolean showVersion) { public OracleConnection(JdbcConfiguration config, boolean showVersion) {
super(config, resolveConnectionFactory(config), QUOTED_CHARACTER, QUOTED_CHARACTER); super(config, resolveConnectionFactory(config), QUOTED_CHARACTER, QUOTED_CHARACTER);
LOGGER.trace("JDBC connection string: " + connectionString(config));
this.databaseVersion = resolveOracleDatabaseVersion(); this.databaseVersion = resolveOracleDatabaseVersion();
if (showVersion) { if (showVersion) {
LOGGER.info("Database Version: {}", databaseVersion.getBanner()); LOGGER.info("Database Version: {}", databaseVersion.getBanner());

View File

@ -306,6 +306,11 @@ private static Configuration getDatabaseConfig(String prefix) {
public static OracleConnection testConnection() { public static OracleConnection testConnection() {
Configuration config = testConfig().build(); Configuration config = testConfig().build();
Configuration jdbcConfig = config.subset(DATABASE_PREFIX, true); 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); return createConnection(config, JdbcConfiguration.adapt(jdbcConfig), false);
} }

View File

@ -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

View File

@ -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;

View File

@ -0,0 +1,3 @@
ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;
ALTER PROFILE DEFAULT LIMIT FAILED_LOGIN_ATTEMPTS UNLIMITED;
exit;

View File

@ -0,0 +1,2 @@
CREATE TABLESPACE logminer_tbs DATAFILE '/opt/oracle/oradata/FREE/logminer_tbs.dbf' SIZE 25M REUSE AUTOEXTEND ON MAXSIZE UNLIMITED;
exit;

View File

@ -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;

View File

@ -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;

View File

@ -27,15 +27,26 @@ elif [ "$TEST_PROFILE" = "oracle" ]
then then
source ${HOME}/install-oracle-driver.sh source ${HOME}/install-oracle-driver.sh
export LD_LIBRARY_PATH=$ORACLE_ARTIFACT_DIR 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 \ mvn clean verify -U -pl debezium-connector-oracle -am -fae \
-Poracle-tests \ -Poracle-tests \
${ORACLE_PROFILE_ARGS:-} \
${ORACLE_ARG:-} \ ${ORACLE_ARG:-} \
${EXECUTION_ARG:-} \ ${EXECUTION_ARG:-} \
-Ddatabase.hostname=0.0.0.0 \ -Ddatabase.hostname=0.0.0.0 \
-Ddatabase.admin.hostname=0.0.0.0 \ -Ddatabase.admin.hostname=0.0.0.0 \
-Ddatabase.port=1521 \
-Dinstantclient.dir=${ORACLE_ARTIFACT_DIR} \ -Dinstantclient.dir=${ORACLE_ARTIFACT_DIR} \
-Dinsecure.repositories=WARN \
-Ddatabase.user="c##dbzuser" \ -Ddatabase.user="c##dbzuser" \
-Dinsecure.repositories=WARN \
${ORACLE_CONNECTION:-} \
-Papicurio -Papicurio
elif [ "$TEST_PROFILE" = "sqlserver" ] elif [ "$TEST_PROFILE" = "sqlserver" ]
then then