@@ -566,6 +566,85 @@ grant all privileges to hibernate_orm_test;
566
566
EOF\" "
567
567
}
568
568
569
+ oracle_free_setup () {
570
+ HEALTHSTATUS=
571
+ until [ " $HEALTHSTATUS " == " healthy" ];
572
+ do
573
+ echo " Waiting for Oracle Free to start..."
574
+ sleep 5;
575
+ # On WSL, health-checks intervals don't work for Podman, so run them manually
576
+ if command -v podman > /dev/null; then
577
+ $PRIVILEGED_CLI $CONTAINER_CLI healthcheck run oracle > /dev/null
578
+ fi
579
+ HEALTHSTATUS=" ` $PRIVILEGED_CLI $CONTAINER_CLI inspect -f $HEALTCHECK_PATH oracle` "
580
+ HEALTHSTATUS=${HEALTHSTATUS## +( )} # Remove longest matching series of spaces from the front
581
+ HEALTHSTATUS=${HEALTHSTATUS%% +( )} # Remove longest matching series of spaces from the back
582
+ done
583
+ sleep 2;
584
+ echo " Oracle successfully started"
585
+ # We increase file sizes to avoid online resizes as that requires lots of CPU which is restricted in XE
586
+ $PRIVILEGED_CLI $CONTAINER_CLI exec oracle bash -c " source /home/oracle/.bashrc; bash -c \"
587
+ cat <<EOF | \$ ORACLE_HOME/bin/sqlplus / as sysdba
588
+ set timing on
589
+ -- Remove DISABLE_OOB parameter from Listener configuration and restart it
590
+ !echo Enabling OOB for Listener...
591
+ !echo NAMES.DIRECTORY_PATH=\(EZCONNECT,TNSNAMES\) > /opt/oracle/oradata/dbconfig/FREE/sqlnet.ora
592
+ !lsnrctl reload
593
+ -- Increasing redo logs
594
+ alter database add logfile group 4 '\$ ORACLE_BASE/oradata/FREE/redo04.log' size 500M reuse;
595
+ alter database add logfile group 5 '\$ ORACLE_BASE/oradata/FREE/redo05.log' size 500M reuse;
596
+ alter database add logfile group 6 '\$ ORACLE_BASE/oradata/FREE/redo06.log' size 500M reuse;
597
+ alter system switch logfile;
598
+ alter system switch logfile;
599
+ alter system switch logfile;
600
+ alter system checkpoint;
601
+ alter database drop logfile group 1;
602
+ alter database drop logfile group 2;
603
+ alter database drop logfile group 3;
604
+ !rm \$ ORACLE_BASE/oradata/FREE/redo01.log
605
+ !rm \$ ORACLE_BASE/oradata/FREE/redo02.log
606
+ !rm \$ ORACLE_BASE/oradata/FREE/redo03.log
607
+
608
+ -- Increasing SYSAUX data file
609
+ alter database datafile '\$ ORACLE_BASE/oradata/FREE/sysaux01.dbf' resize 600M;
610
+
611
+ -- Modifying database init parameters
612
+ alter system set open_cursors=1000 sid='*' scope=both;
613
+ alter system set session_cached_cursors=500 sid='*' scope=spfile;
614
+ alter system set db_securefile=ALWAYS sid='*' scope=spfile;
615
+ alter system set dispatchers='(PROTOCOL=TCP)(SERVICE=FREEXDB)(DISPATCHERS=0)' sid='*' scope=spfile;
616
+ alter system set recyclebin=OFF sid='*' SCOPE=SPFILE;
617
+
618
+ -- Comment the 2 next lines to be able to use Diagnostics Pack features
619
+ alter system set sga_target=0m sid='*' scope=both;
620
+ -- alter system set statistics_level=BASIC sid='*' scope=spfile;
621
+
622
+ -- Restart the database
623
+ SHUTDOWN IMMEDIATE;
624
+ STARTUP MOUNT;
625
+ ALTER DATABASE OPEN;
626
+
627
+ -- Switch to the FREEPDB1 pluggable database
628
+ alter session set container=freepdb1;
629
+
630
+ -- Modify FREEPDB1 datafiles and tablespaces
631
+ alter database datafile '\$ ORACLE_BASE/oradata/FREE/FREEPDB1/system01.dbf' resize 320M;
632
+ alter database datafile '\$ ORACLE_BASE/oradata/FREE/FREEPDB1/sysaux01.dbf' resize 360M;
633
+ alter database datafile '\$ ORACLE_BASE/oradata/FREE/FREEPDB1/undotbs01.dbf' resize 400M;
634
+ alter database datafile '\$ ORACLE_BASE/oradata/FREE/FREEPDB1/undotbs01.dbf' autoextend on next 16M;
635
+ alter database tempfile '\$ ORACLE_BASE/oradata/FREE/FREEPDB1/temp01.dbf' resize 400M;
636
+ alter database tempfile '\$ ORACLE_BASE/oradata/FREE/FREEPDB1/temp01.dbf' autoextend on next 16M;
637
+ alter database datafile '\$ ORACLE_BASE/oradata/FREE/FREEPDB1/users01.dbf' resize 100M;
638
+ alter database datafile '\$ ORACLE_BASE/oradata/FREE/FREEPDB1/users01.dbf' autoextend on next 16M;
639
+ alter tablespace USERS nologging;
640
+ alter tablespace SYSTEM nologging;
641
+ alter tablespace SYSAUX nologging;
642
+
643
+ create user hibernate_orm_test identified by hibernate_orm_test quota unlimited on users;
644
+ grant all privileges to hibernate_orm_test;
645
+ EOF\" "
646
+ }
647
+
569
648
oracle_setup_old () {
570
649
HEALTHSTATUS=
571
650
until [ " $HEALTHSTATUS " == " healthy" ];
700
779
}
701
780
702
781
oracle () {
703
- oracle_21
782
+ oracle_23
704
783
}
705
784
706
785
oracle_11 () {
@@ -731,6 +810,20 @@ oracle_21() {
731
810
oracle_setup
732
811
}
733
812
813
+ oracle_23 () {
814
+ $PRIVILEGED_CLI $CONTAINER_CLI rm -f oracle || true
815
+ disable_userland_proxy
816
+ # We need to use the defaults
817
+ # SYSTEM/Oracle18
818
+ $PRIVILEGED_CLI $CONTAINER_CLI run --name oracle -d -p 1521:1521 -e ORACLE_PASSWORD=Oracle18 \
819
+ --health-cmd healthcheck.sh \
820
+ --health-interval 5s \
821
+ --health-timeout 5s \
822
+ --health-retries 10 \
823
+ docker.io/gvenzl/oracle-free:23-full
824
+ oracle_free_setup
825
+ }
826
+
734
827
hana () {
735
828
temp_dir=$( mktemp -d)
736
829
echo ' {"master_password" : "H1bernate_test"}' > $temp_dir /password.json
@@ -985,6 +1078,7 @@ if [ -z ${1} ]; then
985
1078
echo -e " \tmysql_8_0"
986
1079
echo -e " \tmysql_5_7"
987
1080
echo -e " \toracle"
1081
+ echo -e " \toracle_23"
988
1082
echo -e " \toracle_21"
989
1083
echo -e " \toracle_11"
990
1084
echo -e " \tpostgresql"
0 commit comments