8000 Small images are now configurable (PDB/non-PDB) using Dockerfile ENV … · utPLSQL/docker-scripts@a7edf6d · GitHub
[go: up one dir, main page]

Skip to content

Commit a7edf6d

Browse files
committed
Small images are now configurable (PDB/non-PDB) using Dockerfile ENV variable CREATE_PDB="false"
Added cheat-sheet.
1 parent 9804b2e commit a7edf6d

File tree

11 files changed

+191
-142
lines changed

11 files changed

+191
-142
lines changed

12.2.0.1-small/Dockerfile

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,9 @@ ENV ORACLE_BASE=/opt/oracle \
5151
CHECK_SPACE_FILE="checkSpace.sh" \
5252
INSTALL_DB_BINARIES_FILE="installDBBinaries.sh" \
5353
ORACLE_PWD="oracle" \
54-
ORACLE_PDB="ORCLPDB1"
54+
ORACLE_PDB="ORCLPDB1" \
55+
ORACLE_SID="ORCLCDB" \
56+
CREATE_PDB="false"
5557

5658
# Use second ENV so that variable get substituted
5759
ENV INSTALL_DIR=$ORACLE_BASE/install \

12.2.0.1-small/cleanupDB.sh

Lines changed: 12 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,5 @@
11
#!/bin/bash
2-
ORACLE_SID=$1
3-
# Check whether ORACLE_SID is passed on
4-
if [ "$ORACLE_SID" == "" ]; then
5-
ORACLE_SID=ORCLCDB
6-
fi;
7-
export ORACLE_SID
2+
83

94
sqlplus / as sysdba << EOF
105
exec dbms_lock.sleep(30);
@@ -32,10 +27,6 @@ begin
3227
end;
3328
/
3429
35-
--Shrink TEMP and UNDO in CDB and PDBSEED
36-
--CDBROOT
37-
ALTER SESSION SET CONTAINER = CDB\$ROOT;
38-
3930
EXEC EXECUTE IMMEDIATE :kill_sess_holding_rollback;
4031
--minimize size of UNDO TS
4132
CREATE UNDO TABLESPACE undotbs0 DATAFILE '$ORACLE_BASE/oradata/$ORACLE_SID/undotbs00.dbf' SIZE 1M AUTOEXTEND ON NEXT 1M;
@@ -69,6 +60,16 @@ end;
6960
ALTER DATABASE DROP LOGFILE GROUP 2;
7061
ALTER DATABASE DROP LOGFILE GROUP 3;
7162
63+
exit;
64+
EOF
65+
66+
rm -f $ORACLE_BASE/oradata/$ORACLE_SID/redo01.log
67+
rm -f $ORACLE_BASE/oradata/$ORACLE_SID/redo02.log
68+
rm -f $ORACLE_BASE/oradata/$ORACLE_SID/redo03.log
69+
70+
if [ "$CREATE_PDB" == "true" ]; then
71+
72+
sqlplus / as sysdba << EOF
7273
--PDBSEED
7374
ALTER PLUGGABLE DATABASE PDB\$SEED CLOSE;
7475
ALTER PLUGGABLE DATABASE PDB\$SEED OPEN READ WRITE;
@@ -89,6 +90,4 @@ end;
8990
exit;
9091
EOF
9192

92-
rm -f $ORACLE_BASE/oradata/$ORACLE_SID/redo01.log
93-
rm -f $ORACLE_BASE/oradata/$ORACLE_SID/redo02.log
94-
rm -f $ORACLE_BASE/oradata/$ORACLE_SID/redo03.log
93+
fi;

12.2.0.1-small/createDB.sh

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -5,20 +5,11 @@
55
#
66
# Since: November, 2016
77
# Author: gerald.venzl@oracle.com
8-
# Description: Creates an Oracle Database based on following parameters:
9-
# $ORACLE_SID: The Oracle SID and CDB name
10-
# $ORACLE_PDB: The PDB name
118
#
129
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
1310
#
1411

1512

16-
# Check whether ORACLE_SID is passed on
17-
export ORACLE_SID=${1:-ORCLCDB}
18-
19-
# Check whether ORACLE_PDB is passed on
20-
export ORACLE_PDB=${2:-ORCLPDB1}
21-
2213
# Auto generate ORACLE PWD
2314
#ORACLE_PWD="`openssl rand -base64 8`1"
2415
echo "ORACLE AUTO GENERATED PASSWORD FOR SYS, SYSTEM AND PDBAMIN: $ORACLE_PWD";
@@ -29,6 +20,7 @@ sed -i -e "s|###ORACLE_SID###|$ORACLE_SID|g" $ORACLE_BASE/dbca.rsp
2920
sed -i -e "s|###ORACLE_PDB###|$ORACLE_PDB|g" $ORACLE_BASE/dbca.rsp
3021
sed -i -e "s|###ORACLE_PWD###|$ORACLE_PWD|g" $ORACLE_BASE/dbca.rsp
3122
sed -i -e "s|###ORACLE_CHARACTERSET###|$ORACLE_CHARACTERSET|g" $ORACLE_BASE/dbca.rsp
23+
sed -i -e "s|###CREATE_PDB###|$CREATE_PDB|g" $ORACLE_BASE/dbca.rsp
3224

3325
# Create network related config files (sqlnet.ora, tnsnames.ora, listener.ora)
3426
mkdir -p $ORACLE_HOME/network/admin

12.2.0.1-small/dbca.rsp.tmpl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ sid=###ORACLE_SID###
4949
# Default value : false
5050
# Mandatory : No
5151
#-----------------------------------------------------------------------------
52-
createAsContainerDatabase=true
52+
createAsContainerDatabase=###CREATE_PDB###
5353

5454
#-----------------------------------------------------------------------------
5555
# Name : numberOfPDBs

12.2.0.1-small/runOracle.sh

Lines changed: 23 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -106,28 +106,18 @@ trap _term SIGTERM
106106
# Set SIGKILL handler
107107
trap _kill SIGKILL
108108

109-
# Default for ORACLE SID
110-
if [ "$ORACLE_SID" == "" ]; then
111-
export ORACLE_SID=ORCLCDB
112-
else
113-
# Check whether SID is no longer than 12 bytes
114-
# Github issue #246: Cannot start OracleDB image
115-
if [ "${#ORACLE_SID}" -gt 12 ]; then
116-
echo "Error: The ORACLE_SID must only be up to 12 characters long."
117-
exit 1;
118-
fi;
119-
120-
# Check whether SID is alphanumeric
121-
# Github issue #246: Cannot start OracleDB image
122-
if [[ "$ORACLE_SID" =~ [^a-zA-Z0-9] ]]; then
123-
echo "Error: The ORACLE_SID must be alphanumeric."
124-
exit 1;
125-
fi;
109+
# Check whether SID is no longer than 12 bytes
110+
# Github issue #246: Cannot start OracleDB image
111+
if [ "${#ORACLE_SID}" -gt 12 ]; then
112+
echo "Error: The ORACLE_SID must only be up to 12 characters long."
113+
exit 1;
126114
fi;
127115

128-
# Default for ORACLE PDB
129-
if [ "$ORACLE_PDB" == "" ]; then
130-
export ORACLE_PDB=ORCLPDB1
116+
# Check whether SID is alphanumeric
117+
# Github issue #246: Cannot start OracleDB image
118+
if [[ "$ORACLE_SID" =~ [^a-zA-Z0-9] ]]; then
119+
echo "Error: The ORACLE_SID must be alphanumeric."
120+
exit 1;
131121
fi;
132122

133123
# Default for ORACLE CHARACTERSET
@@ -138,24 +128,20 @@ fi;
138128
# Start database
139129
$ORACLE_BASE/$START_FILE;
140130

141-
# Check whether database already exists
142-
if [ -d $PDB_BASE_DIR/$ORACLE_PDB ]; then
143-
symLinkFiles;
144-
145-
# Make sure audit file destination exists
146-
if [ ! -d $ORACLE_BASE/admin/$ORACLE_SID/adump ]; then
147-
mkdir -p $ORACLE_BASE/admin/$ORACLE_SID/adump
148-
fi;
149-
150-
151-
152-
else
153-
154-
# Create database
155-
$ORACLE_BASE/$CREATE_PDB_FILE
156-
131+
if [ "$CREATE_PDB" == "true" ]; then
132+
# Check whether database already exists
133+
if [ -d $PDB_BASE_DIR/$ORACLE_PDB ]; then
134+
symLinkFiles;
135+
136+
# Make sure audit file destination exists
137+
if [ ! -d $ORACLE_BASE/admin/$ORACLE_SID/adump ]; then
138+
mkdir -p $ORACLE_BASE/admin/$ORACLE_SID/adump
139+
fi;
140+
else
141+
# Create database
142+
$ORACLE_BASE/$CREATE_PDB_FILE
143+
fi;
157144
fi;
158-
159145
# Check whether database prepare was already executed
160146
if [ ! -f $ORACLE_BASE/oradata/$ORACLE_SID/redo03.log ]; then
161147
# Prepare database

18.3-small/Dockerfile

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,9 @@ ENV ORACLE_BASE=/opt/oracle \
5050
CHECK_SPACE_FILE="checkSpace.sh" \
5151
INSTALL_DB_BINARIES_FILE="installDBBinaries.sh" \
5252
ORACLE_PWD="oracle" \
53-
ORACLE_PDB="ORCLPDB1"
53+
ORACLE_PDB="ORCLPDB1" \
54+
ORACLE_SID="ORCLCDB" \
55+
CREATE_PDB="false"
5456

5557
# Use second ENV so that variable get substituted
5658
ENV INSTALL_DIR=$ORACLE_BASE/install \

18.3-small/cleanupDB.sh

Lines changed: 27 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,10 @@
11
#!/bin/bash
2-
ORACLE_SID=$1
3-
# Check whether ORACLE_SID is passed on
4-
if [ "$ORACLE_SID" == "" ]; then
5-
ORACLE_SID=ORCLCDB
6-
fi;
7-
export ORACLE_SID
2+
83

94
sqlplus / as sysdba << EOF
105
exec dbms_lock.sleep(30);
11-
--Kill sessions holding rollback segments
126
7+
--Kill sessions holding rollback segments
138
var kill_sess_holding_rollback varchar2(4000);
149
1510
begin
@@ -32,10 +27,6 @@ begin
3227
end;
3328
/
3429
35-
--Shrink TEMP and UNDO in CDB and PDBSEED
36-
--CDBROOT
37-
ALTER SESSION SET CONTAINER = CDB\$ROOT;
38-
3930
EXEC EXECUTE IMMEDIATE :kill_sess_holding_rollback;
4031
--minimize size of UNDO TS
4132
CREATE UNDO TABLESPACE undotbs0 DATAFILE '$ORACLE_BASE/oradata/$ORACLE_SID/undotbs00.dbf' SIZE 1M AUTOEXTEND ON NEXT 1M;
@@ -69,26 +60,34 @@ end;
6960
ALTER DATABASE DROP LOGFILE GROUP 2;
7061
ALTER DATABASE DROP LOGFILE GROUP 3;
7162
72-
--PDBSEED
73-
ALTER PLUGGABLE DATABASE PDB\$SEED CLOSE;
74-
ALTER PLUGGABLE DATABASE PDB\$SEED OPEN READ WRITE;
75-
76-
ALTER SESSION SET CONTAINER = PDB\$SEED;
77-
--Initialize XDB in PDBSEED
78-
CREATE TABLE TEMP_XDB_INIT(DUMMY XMLTYPE);
79-
DROP TABLE TEMP_XDB_INIT;
80-
81-
EXEC EXECUTE IMMEDIATE :kill_sess_holding_rollback;
82-
--minimize size of UNDO TS
83-
CREATE UNDO TABLESPACE undotbs0 DATAFILE '$ORACLE_BASE/oradata/$ORACLE_SID/pdbseed/undotbs00.dbf' SIZE 1M AUTOEXTEND ON NEXT 1M;
84-
ALTER SYSTEM SET UNDO_TABLESPACE=undotbs0;
85-
DROP TABLESPACE undotbs1 INCLUDING CONTENTS AND DATAFILES;
86-
--minimize size of TEMP
87-
ALTER TABLESPACE temp SHRINK SPACE;
88-
8963
exit;
9064
EOF
9165

9266
rm -f $ORACLE_BASE/oradata/$ORACLE_SID/redo01.log
9367
rm -f $ORACLE_BASE/oradata/$ORACLE_SID/redo02.log
9468
rm -f $ORACLE_BASE/oradata/$ORACLE_SID/redo03.log
69+
70+
if [ "$CREATE_PDB" == "true" ]; then
71+
72+
sqlplus / as sysdba << EOF
73+
--PDBSEED
74+
ALTER PLUGGABLE DATABASE PDB\$SEED CLOSE;
75+
ALTER PLUGGABLE DATABASE PDB\$SEED OPEN READ WRITE;
76+
77+
ALTER SESSION SET CONTAINER = PDB\$SEED;
78+
--Initialize XDB in PDBSEED
79+
CREATE TABLE TEMP_XDB_INIT(DUMMY XMLTYPE);
80+
DROP TABLE TEMP_XDB_INIT;
81+
82+
EXEC EXECUTE IMMEDIATE :kill_sess_holding_rollback;
83+
--minimize size of UNDO TS
84+
CREATE UNDO TABLESPACE undotbs0 DATAFILE '$ORACLE_BASE/oradata/$ORACLE_SID/pdbseed/undotbs00.dbf' SIZE 1M AUTOEXTEND ON NEXT 1M;
85+
ALTER SYSTEM SET UNDO_TABLESPACE=undotbs0;
86+
DROP TABLESPACE undotbs1 INCLUDING CONTENTS AND DATAFILES;
87+
--minimize size of TEMP
88+
ALTER TABLESPACE temp SHRINK SPACE;
89+
90+
exit;
91+
EOF
92+
93+
fi;

18.3-small/createDB.sh

Lines changed: 3 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -5,22 +5,11 @@
55
#
66
# Since: November, 2016
77
# Author: gerald.venzl@oracle.com
8-
# Description: Creates an Oracle Database based on following parameters:
9-
# $ORACLE_SID: The Oracle SID and CDB name
10-
# $ORACLE_PDB: The PDB name
11-
# $ORACLE_PWD: The Oracle password
12-
#
8+
#
139
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
1410
#
1511

1612
set -e
17-
18-
# Check whether ORACLE_SID is passed on
19-
export ORACLE_SID=${1:-ORCLCDB}
20-
21-
# Check whether ORACLE_PDB is passed on
22-
export ORACLE_PDB=${2:-ORCLPDB1}
23-
2413
# Auto generate ORACLE PWD
2514
#ORACLE_PWD="`openssl rand -base64 8`1"
2615
echo "ORACLE AUTO GENERATED PASSWORD FOR SYS, SYSTEM AND PDBAMIN: $ORACLE_PWD";
@@ -31,6 +20,7 @@ sed -i -e "s|###ORACLE_SID###|$ORACLE_SID|g" $ORACLE_BASE/dbca.rsp
3120
sed -i -e "s|###ORACLE_PDB###|$ORACLE_PDB|g" $ORACLE_BASE/dbca.rsp
3221
sed -i -e "s|###ORACLE_PWD###|$ORACLE_PWD|g" $ORACLE_BASE/dbca.rsp
3322
sed -i -e "s|###ORACLE_CHARACTERSET###|$ORACLE_CHARACTERSET|g" $ORACLE_BASE/dbca.rsp
23+
sed -i -e "s|###CREATE_PDB###|$CREATE_PDB|g" $ORACLE_BASE/dbca.rsp
3424

3525
# If there is greater than 8 CPUs default back to dbca memory calculations
3626
# dbca will automatically pick 40% of available memory for Oracle DB
@@ -60,12 +50,11 @@ DIAG_ADR_ENABLED = off
6050

6151
# Start LISTENER and run DBCA
6252
lsnrctl start &&
63-
dbca -silent -createDatabase -responseFile $ORACLE_BASE/dbca.rsp selected_languages=en ||
53+
dbca -silent -createDatabase -responseFile $ORACLE_BASE/dbca.rsp ||
6454
cat /opt/oracle/cfgtoollogs/dbca/$ORACLE_SID/$ORACLE_SID.log ||
6555
cat /opt/oracle/cfgtoollogs/dbca/$ORACLE_SID.log
6656

6757
echo "$ORACLE_SID=localhost:1521/$ORACLE_SID" >> $ORACLE_HOME/network/admin/tnsnames.ora
6858

6959
# Remove temporary response file
7060
rm $ORACLE_BASE/dbca.rsp
71-

18.3-small/dbca.rsp.tmpl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ sid=###ORACLE_SID###
4949
# Default value : false
5050
# Mandatory : No
5151
#-----------------------------------------------------------------------------
52-
createAsContainerDatabase=true
52+
createAsContainerDatabase=###CREATE_PDB###
5353

5454
#-----------------------------------------------------------------------------
5555
# Name : numberOfPDBs

18.3-small/runOracle.sh

Lines changed: 24 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -116,52 +116,40 @@ trap _term SIGTERM
116116
# Set SIGKILL handler
117117
trap _kill SIGKILL
118118

119-
# Default for ORACLE SID
120-
if [ "$ORACLE_SID" == "" ]; then
121-
export ORACLE_SID=ORCLCDB
122-
else
123-
# Check whether SID is no longer than 12 bytes
124-
# Github issue #246: Cannot start OracleDB image
125-
if [ "${#ORACLE_SID}" -gt 12 ]; then
126-
echo "Error: The ORACLE_SID must only be up to 12 characters long."
127-
exit 1;
128-
fi;
129-
130-
# Check whether SID is alphanumeric
131-
# Github issue #246: Cannot start OracleDB image
132-
if [[ "$ORACLE_SID" =~ [^a-zA-Z0-9] ]]; then
133-
echo "Error: The ORACLE_SID must be alphanumeric."
134-
exit 1;
135-
fi;
119+
# Check whether SID is no longer than 12 bytes
120+
# Github issue #246: Cannot start OracleDB image
121+
if [ "${#ORACLE_SID}" -gt 12 ]; then
122+
echo "Error: The ORACLE_SID must only be up to 12 characters long."
123+
exit 1;
136124
fi;
137125

138-
# Default for ORACLE PDB
139-
export ORACLE_PDB=${ORACLE_PDB:-ORCLPDB1}
126+
# Check whether SID is alphanumeric
127+
# Github issue #246: Cannot start OracleDB image
128+
if [[ "$ORACLE_SID" =~ [^a-zA-Z0-9] ]]; then
129+
echo "Error: The ORACLE_SID must be alphanumeric."
130+
exit 1;
131+
fi;
140132

141133
# Default for ORACLE CHARACTERSET
142134
export ORACLE_CHARACTERSET=${ORACLE_CHARACTERSET:-AL32UTF8}
143135

144136
# Start database
145137
$ORACLE_BASE/$START_FILE;
146138

147-
# Check whether database already exists
148-
if [ -d $PDB_BASE_DIR/$ORACLE_PDB ]; then
149-
symLinkFiles;
150-
151-
# Make sure audit file destination exists
152-
if [ ! -d $ORACLE_BASE/admin/$ORACLE_SID/adump ]; then
153-
mkdir -p $ORACLE_BASE/admin/$ORACLE_SID/adump
154-
fi;
155-
156-
157-
158-
else
159-
160-
# Create database
161-
$ORACLE_BASE/$CREATE_PDB_FILE
162-
139+
if [ "$CREATE_PDB" == "true" ]; then
140+
# Check whether database already exists
141+
if [ -d $PDB_BASE_DIR/$ORACLE_PDB ]; then
142+
symLinkFiles;
143+
144+
# Make sure audit file destination exists
145+
if [ ! -d $ORACLE_BASE/admin/$ORACLE_SID/adump ]; then
146+
mkdir -p $ORACLE_BASE/admin/$ORACLE_SID/adump
147+
fi;
148+
else
149+
# Create database
150+
$ORACLE_BASE/$CREATE_PDB_FILE
151+
fi;
163152
fi;
164-
165153
# Check whether database prepare was already executed
166154
if [ ! -f $ORACLE_BASE/oradata/$ORACLE_SID/redo03.log ]; then
167155
# Prepare database

0 commit comments

Comments
 (0)
0