Oracle 19c in Docker
You can download all the files I have used from the following locations:
The goals:
Part I
- Install and Patch Oracle 19c Enterprise Edition in Docker
- With Oracle's Approach
- With RPMs
- Create a script to start Oracle 19c in Docker
- Create Transparently Data Encryption(TDE) for TNS as well as Database Files
- Create Pluggable Databases in Oracle 19c in Docker
- Create encrypted tablespaces in Oracle 19c Pluggable Database
Part I - Install and Patch Oracle 19c Enterprise Edition in Docker
1. With Oracle's Docker Files.
[oracle@dockerhost withoutrpms]$ pwd/opt/dockerOracle19c/withoutrpms[oracle@dockerhost withoutrpms]$ ./buildDockerImage.sh -v 19.3.0 -eChecking Docker version.Checking if required packages are present and valid...
Oracle Image: oracle/database:19.3.0-ee-original
B. Apply 19.9.0.0 patch
[oracle@dockerhost applypatch]$ pwd
/opt/dockerOracle19c/withoutrpms/applypatch
[oracle@dockerhost applypatch]$
Oracle Image: oracle/database:19.3.0.0-ee-Patch
[oracle@dockerhost applypatch]$ docker run -it oracle/database:19.3.0.0-ee-Patch bash
[oracle@25aafd35a6c5 ~]$ sqlplus
SQL*Plus: Release 19.0.0.0.0 - Production on Sat Jan 2 01:18:43 2021
Version 19.9.0.0.0
Copyright (c) 1982, 2020, Oracle. All rights reserved.
Enter user-name:
[oracle@dockerhost ~]$ echo $ORACLE_HOME/opt/oracle/product/19c/dbhome_1/
SQL*Plus: Release 19.0.0.0.0 - Production on Fri Jan 1 16:07:49 2021Version 19.9.0.0.0Copyright (c) 1982, 2020, Oracle. All rights reserved.Enter user-name:
[oracle@dockerhost oracle]$ lscheckpoints diag oraInventory product[oracle@dockerhost oracle]$ cd ..[oracle@dockerhost opt]$ tar -cvzf /opt/dockerOracle19c/withrpms/19.3.0/oracle19c.tar.gz oracle
[oracle@localhost withrpms]$ pwd/opt/dockerOracle19c/withrpms[oracle@localhost withrpms]$ ./buildDockerImage.sh -v 19.3.0 -e
[oracle@localhost withrpms]$ docker run -it oracle/database:19.3.0-ee bash[oracle@7a5bd2ff1a96 /]$ sqlplusSQL*Plus: Release 19.0.0.0.0 - Production on Sat Jan 2 00:54:48 2021Version 19.9.0.0.0Copyright (c) 1982, 2020, Oracle. All rights reserved.Enter user-name:
- Create a script to start Oracle 19c in Docker
[root@dockerhost ~]# cat /etc/passwdoracle:x:65535:65535::/home/oracle:/bin/bash[root@dockerhost ~]# cat /etc/group
.........
oinstall:x:65535:oracledba:x:65536:oracleoper:x:65537:oraclebackupdba:x:65538:oracledgdba:x:65539:oraclekmdba:x:65540:oracleracdba:x:65541:oracle
[oracle@f3ff58203196 /]$ cat /etc/passwd
oracle:x:54321:54321::/home/oracle:/bin/bash
[oracle@f3ff58203196 /]$ cat /etc/group
oinstall:x:54321:oracle
dba:x:54322:oracle
oper:x:54323:oracle
backupdba:x:54324:oracle
dgdba:x:54325:oracle
kmdba:x:54326:oracle
racdba:x:54330:oracle
[oracle@localhost dockerOracle19c]$ cat createNetwork.shdocker network create \--driver=bridge \--subnet=172.19.0.0/16 \--ip-range=172.19.5.0/24 \--gateway=172.19.5.254 \oracledb
docker rm -f oracle19cdocker run -dt --network=oracledb --name oracle19c --hostname dockerdb --user oracle --ip 172.19.5.10 \-p 192.168.1.45:1521:1521 -p 192.168.1.45:5500:5500 \-e ORACLE_SID=UNKIND \-e ORACLE_PDB=UNKINDPDB \-v /oradrive/oradata:/opt/oracle/oradata \oracle/database:19.3.0-ee
- Create Transparently Data Encryption(TDE) for TNS as well as Database Files
[oracle@localhost ~]$ docker exec -it oracle19c bash[oracle@dockerdb /]$
[oracle@dockerdb ~]$ orapki wallet create -wallet $wallet -auto_login_localOracle PKI Tool Release 21.0.0.0.0 - ProductionVersion 21.0.0.0.0Copyright (c) 2004, 2020, Oracle and/or its affiliates. All rights reserved.Enter password:Enter password again:Operation is successfully completed.
[oracle@dockerdb ~]$ orapki wallet add -wallet $wallet -dn "CN=dockerdb.hqsft.com" -keysize 4096 -self_signed -validity 3650
Oracle PKI Tool Release 21.0.0.0.0 - Production
Version 21.0.0.0.0
Copyright (c) 2004, 2020, Oracle and/or its affiliates. All rights reserved.
Cannot modify auto-login (sso) wallet
Enter wallet password:
Operation is successfully completed.
[oracle@dockerdb ~]$ cat /opt/oracle/product/19c/dbhome_1/network/admin/listener.ora
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
(ADDRESS = (PROTOCOL = TCP)(HOST = 172.19.5.10 )(PORT = 1521))
(ADDRESS = (PROTOCOL = TCPS)(HOST = 172.19.5.10 )(PORT = 2484))
)
)
DEDICATED_THROUGH_BROKER_LISTENER=ON
DIAG_ADR_ENABLED = off
WALLET_LOCATION =
(SOURCE =
(METHOD = FILE)
(METHOD_DATA =
(DIRECTORY = /opt/oracle/wallet)
)
)
SQLNET.AUTHENTICATION_SERVICES = (TCPS,NTS,BEQ)
SSL_CLIENT_AUTHENTICATION = FALSE
SSL_CIPHER_SUITES = (SSL_RSA_WITH_AES_256_CBC_SHA, SSL_RSA_WITH_3DES_EDE_CBC_SHA)
[oracle@dockerdb ~]$ cat /opt/oracle/product/19c/dbhome_1/network/admin/sqlnet.ora
NAME.DIRECTORY_PATH= (TNSNAMES, EZCONNECT, HOSTNAME)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
(ADDRESS = (PROTOCOL = TCP)(HOST = 172.19.5.10 )(PORT = 1521))
(ADDRESS = (PROTOCOL = TCPS)(HOST = 172.19.5.10 )(PORT = 2484))
)
)
DEDICATED_THROUGH_BROKER_LISTENER=ON
DIAG_ADR_ENABLED = off
WALLET_LOCATION =
(SOURCE =
(METHOD = FILE)
(METHOD_DATA =
(DIRECTORY = /opt/oracle/wallet)
)
)
SQLNET.AUTHENTICATION_SERVICES = (TCPS,NTS,BEQ)
SSL_CLIENT_AUTHENTICATION = FALSE
SSL_CIPHER_SUITES = (SSL_RSA_WITH_AES_256_CBC_SHA, SSL_RSA_WITH_3DES_EDE_CBC_SHA)
[oracle@dockerdb ~]$ cat /opt/oracle/product/19c/dbhome_1/network/admin/tnsnames.ora
UNKINDPDB=
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 172.19.5.10)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = UNKINDPDB)
)
)
UNKIND=
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 172.19.5.10)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = UNKIND)
)
)
UNKINDSSL=
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCPS)(HOST = 172.19.5.10)(PORT = 2484))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = UNKIND)
)
)
[oracle@dockerdb ~]$ tnsping unkindssl
TNS Ping Utility for Linux: Version 19.0.0.0.0 - Production on 03-JAN-2021 02:50:05
Copyright (c) 1997, 2020, Oracle. All rights reserved.
Used parameter files:
/opt/oracle/product/19c/dbhome_1/network/admin/sqlnet.ora
Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCPS)(HOST = 172.19.5.10)(PORT = 2484)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = UNKIND)))
OK (30 msec)
- Create encrypted tablespaces in Oracle 19c Pluggable Database
SQL> alter system set db_create_file_dest='/opt/oracle/oradata/UNKIND/' scope=both;
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup mount;
ORACLE instance started.
Total System Global Area 1610610568 bytes
Fixed Size 9136008 bytes
Variable Size 452984832 bytes
Database Buffers 1140850688 bytes
Redo Buffers 7639040 bytes
Database mounted.
SQL> ADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN IDENTIFIED BY MyKeyPassword1234;
keystore altered.
SQL> alter database open;
Database altered.
SQL> ADMINISTER KEY MANAGEMENT SET KEY IDENTIFIED BY MyKeyPassword1234 WITH BACKUP ;
keystore altered.
SQL> show pdbs;
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 UNKINDPDB READ WRITE NO
SQL> alter session set container=UNKINDPDB;
Session altered.
SQL> ADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN IDENTIFIED BY
MyKeyPassword1234;keystore altered.
SQL> ADMINISTER KEY MANAGEMENT SET KEY IDENTIFIED BY covid192020 WITH BACKUP;
keystore altered.
SQL> create tablespace test datafile '/opt/oracle/oradata/UNKIND/test01.dbf' size 2g autoextend on ENCRYPTION USING 'AES256' default storage(encrypt);
Tablespace created.
SQL>
SQL> select tablespace_name from dba_tablespaces;
TABLESPACE_NAME
------------------------------
SYSTEM
SYSAUX
UNDOTBS1
TEMP
USERS
TEST
Comments
Post a Comment