1
1
#! /bin/bash
2
2
# Copyright (c) 2021 Oracle and/or its affiliates.
3
3
# Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl.
4
-
5
- COMPARTMENT=" oracleAQ" ;
6
- DB_NAME=" aqdatabase" ;
7
- export PLSQL_DB_USER1=" admin" ;
8
- export JAVA_DB_USER=" javaUser" ;
4
+
5
+ COMPARTMENT=" oracleAQ"
6
+ DB_NAME=" aqdatabase"
7
+ export PLSQL_DB_USER1=" admin"
8
+ export JAVA_DB_USER=" javaUser"
9
9
10
10
# set all language paths
11
- export ORACLEAQ_HOME=${HOME} /${COMPARTMENT} ;
11
+ export ORACLEAQ_HOME=${HOME} /${COMPARTMENT}
12
12
13
- export ORACLEAQ_PLSQL_AQ=${ORACLEAQ_HOME} /aqPlsql/aq;
14
- export ORACLEAQ_PLSQL_TEQ=${ORACLEAQ_HOME} /aqPlsql/teq;
15
- export ORACLEAQ_PYTHON_AQ=${ORACLEAQ_HOME} /aqPython/aq;
16
- export ORACLEAQ_PYTHON_TEQ=${ORACLEAQ_HOME} /aqPython/teq;
17
- export ORACLEAQ_JAVA=${ORACLEAQ_HOME} /aqJava;
13
+ export ORACLEAQ_PLSQL_AQ=${ORACLEAQ_HOME} /aqPlsql/aq
14
+ export ORACLEAQ_PLSQL_TEQ=${ORACLEAQ_HOME} /aqPlsql/teq
15
+ export ORACLEAQ_PYTHON_AQ=${ORACLEAQ_HOME} /aqPython/aq
16
+ export ORACLEAQ_PYTHON_TEQ=${ORACLEAQ_HOME} /aqPython/teq
17
+ export ORACLEAQ_JAVA=${ORACLEAQ_HOME} /aqJava
18
18
19
19
export TNS_ADMIN=$ORACLEAQ_HOME /wallet
20
20
export USER_DEFINED_WALLET=${TNS_ADMIN} /user_defined_wallet
21
21
export TNS_ADMIN_FOR_JAVA=$ORACLEAQ_HOME /wallet_java
22
22
export JAVA_HOME=$( readlink -f /usr/bin/javac | sed " s:/bin/javac::" )
23
23
TNS_WALLET_STR=" (MY_WALLET_DIRECTORY=" $TNS_ADMIN " )"
24
24
25
- # fetch user's OCID
25
+ # Create compartment
26
26
ROOT_COMPARTMENT_OCID=$( oci iam compartment list --all --compartment-id-in-subtree true --access-level ACCESSIBLE --include-root --raw-output --query " data[?contains(\" id\" ,'tenancy')].id | [0]" )
27
27
28
- # Create compartment
29
- oci iam compartment create --name ${COMPARTMENT} -c ${ROOT_COMPARTMENT_OCID} --description " Oracle Advanced Queue workflow" --wait-for-state ACTIVE
28
+ if [[ -z $( oci iam compartment list --all | jq -r " .data[] | select(.name == \" ${COMPARTMENT} \" ) | .id" ) ]]; then
29
+ oci iam compartment create --name ${COMPARTMENT} -c ${ROOT_COMPARTMENT_OCID} --description " Oracle Advanced Queue workflow" --wait-for-state ACTIVE
30
+ echo " COMPARTMENT '${COMPARTMENT} ' CREATED."
31
+ else
32
+ echo " Compartment '${COMPARTMENT} ' already exists."
33
+ fi
34
+
30
35
export COMPARTMENT_OCID=$( oci iam compartment list --all | jq -r " .data[] | select(.name == \" ${COMPARTMENT} \" ) | .id" )
31
-
32
- create_db () {
36
+
37
+ create_db () {
33
38
# Get the database password
34
- echo " ENTER THE DATABASE PASSWORD: " ;
39
+
35
40
echo " NOTE: Password must contain:"
36
41
echo " * 12 to 30 characters"
37
42
echo " * at least one uppercase letter"
38
43
echo " * at least one lowercase letter"
39
44
echo " * at least one number"
40
- echo " * The password cannot contain the double quote character or the username 'admin' " ;
45
+ echo " * The password cannot start with a numeric letter"
46
+ echo " * The password cannot contain the double quote character or the username 'admin' "
41
47
while true ; do
42
- read -s -r -p " Please enter the password to be used for the database users: " db_pwd
43
- if [[ ${# db_pwd} -ge 12 && ${# db_pwd} -le 30 && " $db_pwd " =~ [A-Z] && " $db_pwd " =~ [a-z] && " $db_pwd " =~ [0-9] && " $db_pwd " != * admin* && " $db_pwd " != * ' "' * ]]; then
48
+ read -s -r -p " ENTER THE DATABASE PASSWORD: " db_pwd
49
+ if [[ ${# db_pwd} -ge 12 && ${# db_pwd} -le 30 &&
50
+ " $db_pwd " =~ [A-Z] && " $db_pwd " =~ [a-z] && " $db_pwd " =~ [0-9] &&
51
+ " $db_pwd " =~ ^[^0-9] && " $db_pwd " != * admin* && " $db_pwd " != * ' "' * ]]; then
44
52
echo
45
53
break
46
54
else
47
55
echo " Invalid Password, please retry"
48
56
fi
49
57
done
50
- umask 177
58
+ umask 177
51
59
DB_PASSWORD=" $db_pwd "
52
60
WALLET_PASSWORD=" $db_pwd "
53
61
umask 22
54
62
55
63
# Create ATP- #21c always free
56
64
umask 177
57
- echo ' {"adminPassword": "' " $DB_PASSWORD " ' "}' > temp_params
65
+ echo ' {"adminPassword": "' " $DB_PASSWORD " ' "}' > temp_params
58
66
umask 22
59
67
oci db autonomous-database create -c ${COMPARTMENT_OCID} --db-name ${DB_NAME} --display-name ${DB_NAME} --db-workload OLTP --is-free-tier true --cpu-core-count 1 --data-storage-size-in-tbs 1 --db-version " 21c" --wait-for-state AVAILABLE --wait-interval-seconds 5 --from-json " file://temp_params"
60
- rm temp_params;
68
+ rm temp_params
61
69
}
62
70
63
71
export DB_ID=$( oci db autonomous-database list -c ${COMPARTMENT_OCID} --query " data[?\" db-name\" =='aqdatabase'].id | [0]" --raw-output)
64
72
if [[ -z " ${DB_ID} " ]]; then
65
- create_db;
73
+ create_db
66
74
else
67
- echo " ATP '${DB_NAME} ' already exists."
68
- while true ; do
69
- read -p " Database '${DB_NAME} ' already exists. Do you remember the password ?" yn
75
+ echo " ATP '${DB_NAME} ' already exists."
76
+ while true ; do
77
+ read -p " Database '${DB_NAME} ' already exists. Do you want to delete the existing ATP database [y/n] ?" yn
70
78
case $yn in
71
- [Yy]* ) read -s -r -p " Enter the password used to create ATP: " db_pwd
72
- break ;;
73
- [Nn]* ) echo " Creating new database." ; create_db; break ;;
74
- * ) echo " Please answer y or n." ;;
79
+ [Yy]* )
80
+ echo " Deleting existing database. Please wait..."
81
+ oci db autonomous-database delete --autonomous-database-id ${DB_ID} --force --wait-for-state SUCCEEDED
82
+ echo " Creating new database."
83
+ create_db
84
+ break
85
+ ;;
86
+ [Nn]* )
87
+ read -s -r -p " " db_pwd
88
+ while true ; do
89
+ read -s -r -p " Enter the password used to create existing ATP: " db_pwd
90
+ if [[ ${# db_pwd} -ge 12 && ${# db_pwd} -le 30 &&
91
+ " $db_pwd " =~ [A-Z] && " $db_pwd " =~ [a-z] && " $db_pwd " =~ [0-9] &&
92
+ " $db_pwd " =~ ^[^0-9] && " $db_pwd " != * admin* && " $db_pwd " != * ' "' * ]]; then
93
+ echo
94
+ break
95
+ else
96
+ echo " Invalid Password, please retry"
97
+ fi
98
+ done
99
+ ;;
75
100
esac
76
101
done
77
102
fi
78
103
79
104
# Get connection string
80
105
DB_OCID=$( oci db autonomous-database list -c ${COMPARTMENT_OCID} --query " data [?\" db-name\" =='${DB_NAME} '] | [0].id" --raw-output)
81
- export DB_ALIAS=` oci db autonomous-database get --autonomous-database-id " $DB_OCID " --query ' data."connection-strings".profiles[?"consumer-group"==' " 'TP'" ' ]."display-name" | [0]' --raw-output`
82
-
106
+ export DB_ALIAS=$( oci db autonomous-database get --autonomous-database-id " $DB_OCID " --query ' data."connection-strings".profiles[?"consumer-group"==' " 'TP'" ' ]."display-name" | [0]' --raw-output)
83
107
84
108
# Generating wallet
85
109
mkdir -p $TNS_ADMIN
86
110
mkdir -p $TNS_ADMIN_FOR_JAVA
87
111
cd $TNS_ADMIN
88
112
umask 177
89
- echo ' {"password": "' " $DB_PASSWORD " ' "}' > temp_params
113
+ echo ' {"password": "' " $DB_PASSWORD " ' "}' > temp_params
90
114
umask 22
91
115
oci db autonomous-database generate-wallet --autonomous-database-id " $DB_OCID " --file ' wallet.zip' --from-json " file://temp_params"
92
116
rm temp_params
@@ -102,7 +126,7 @@ WALLET_LOCATION = (SOURCE = (METHOD = file) (METHOD_DATA = (DIRECTORY="$TNS_ADMI
102
126
SQLNET.WALLET_OVERRIDE = TRUE
103
127
SSL_SERVER_DN_MATCH = yes
104
128
!
105
-
129
+
106
130
# Configure sqlnet.ora for ADMIN
107
131
cd $TNS_ADMIN
108
132
cat > sqlnet.ora << !
@@ -112,7 +136,7 @@ SSL_SERVER_DN_MATCH = yes
112
136
!
113
137
114
138
rm -rf $USER_DEFINED_WALLET
115
- mkdir -p $USER_DEFINED_WALLET
139
+ mkdir -p $USER_DEFINED_WALLET
116
140
117
141
# Add the admin credential to the wallet
118
142
# set classpath for mkstore - align this to your local SQLcl installation
@@ -138,7 +162,7 @@ tns_alias=$(grep "$DB_ALIAS " $TNS_ADMIN/tnsnames.ora)
138
162
tns_alias=${tns_alias/ security=/ security= $TNS_WALLET_STR }
139
163
tns_alias1=${tns_alias/ $DB_ALIAS / ${DB_ALIAS} _${PLSQL_DB_USER1} }
140
164
141
- echo $tns_alias1 >> $TNS_ADMIN /tnsnames.ora
165
+ echo $tns_alias1 >> $TNS_ADMIN /tnsnames.ora
142
166
143
167
# Print names of the newly created TNS Aliases
144
168
echo " Added TNS Alias: ${DB_ALIAS} _${PLSQL_DB_USER1} "
@@ -147,6 +171,7 @@ sqlplus /@${DB_ALIAS}_${PLSQL_DB_USER1} <<!
147
171
SET VERIFY OFF;
148
172
149
173
CREATE USER ${JAVA_DB_USER} IDENTIFIED BY $DB_PASSWORD ;
174
+ SET echo off;
150
175
GRANT execute on DBMS_AQ TO ${JAVA_DB_USER} ;
151
176
GRANT CREATE SESSION TO ${JAVA_DB_USER} ;
152
177
GRANT RESOURCE TO ${JAVA_DB_USER} ;
@@ -166,6 +191,11 @@ GRANT EXECUTE ON sys.dbms_aq TO ${JAVA_DB_USER};
166
191
EXIT;
167
192
!
168
193
194
+ cd $ORACLEAQ_HOME
195
+ export TNS_ADMIN=${TNS_ADMIN_FOR_JAVA}
196
+ sqlplus /@" ${DB_ALIAS} " << !
197
+ Show user;
198
+ !
169
199
# Java Setup
170
200
171
201
# Add JavaUser Credentials to the ATP Wallet
@@ -181,29 +211,28 @@ export JDBC_URL=jdbc:oracle:thin:@${DB_ALIAS}?TNS_ADMIN=${TNS_ADMIN_FOR_JAVA}
181
211
182
212
# Build java code
183
213
cd ../
184
- cd aqJava;
185
- mvn clean install -Dmaven.wagon.http.ssl.insecure=true -Dmaven.test.skip=true;
186
- cd target;
187
- nohup java -jar aqJava-0.0.1-SNAPSHOT.jar &
188
-
189
- cd $ORACLEAQ_HOME ;
190
- export TNS_ADMIN=${TNS_ADMIN_FOR_JAVA}
191
- sqlplus /@" ${DB_ALIAS} " << !
192
- Show user;
193
- !
214
+ cd aqJava
215
+ {
216
+ mvn clean install -Dmaven.wagon.http.ssl.insecure=true -Dmaven.test.skip=true
217
+ cd target
218
+ nohup java -jar aqJava-0.0.1-SNAPSHOT.jar &
219
+ } & > /dev/null
220
+ echo " Java setup completed."
194
221
195
222
# Node.js setup
223
+ cd $ORACLEAQ_HOME
196
224
npm install oracledb debug
225
+ echo " node.js setup completed."
197
226
198
- echo " ORACLEAQ_HOME : " $ORACLEAQ_HOME ;
227
+ echo " ORACLEAQ_HOME : " $ORACLEAQ_HOME
199
228
echo " COMPARTMENT NAME : " ${COMPARTMENT}
200
229
echo " COMPARTMENT OCID : " ${COMPARTMENT_OCID}
201
230
echo " DATABASE NAME : " ${DB_NAME}
202
231
echo " ATP OCID : " ${DB_OCID}
203
232
echo " TNS ALIAS- USER1 : ${DB_ALIAS} _${PLSQL_DB_USER1} "
204
233
echo " TNS ALIAS- USER2 : " ${DB_ALIAS}
205
234
echo " JDBC URL : " ${JDBC_URL}
206
- echo
235
+ echo
207
236
echo " -------------------------------"
208
237
echo " SETUP COMPLETED "
209
- echo " -------------------------------"
238
+ echo " -------------------------------"
0 commit comments