Oracle Fusion Middleware & Application Server

Tuesday, May 14, 2019

Flexible Patching Concept for Optimized WebLogic Image on Docker

In the last days I was publishing my Optimized WebLogic Image on Docker Solution, see following links:

The previous version of my Optimized WebLogic Image was based on fixed patch numbers, so not really flexible.

My latest update contains now the possibility to apply during the Image build multiple WebLogic Patches, just the OPatch Patch 28186730 is mandatory.

The latest sources you can find under my GitHub Repository https://github.com/DirkNachbar/Docker/tree/master/OracleWebLogic

The flexible patching concept is mainly based on Gerald Venzl's Patch Apply Solution for Oracle Database Docker Images https://github.com/oracle/docker-images/tree/master/OracleDatabase/SingleInstance/samples/applypatch, I took his solution as base and modified it for the usage for WebLogic 12.2.1.3.0 and aligned as well my Dockerfile.

Now you just have to download your desired patches and place them into the folder dockerfiles/12.2.1.3/patches/00n

For example you want to apply directly at the Image build the Oracle CPU April 2019 (29016089) and the WebLogic Patch 29637821, just download the 2 patches plus the mandatory OPatch Patch 28186730. Place the OPatch Patch 28186730 into the directory dockerfiles/12.2.1.3/patches. The Oracle CPU April 2019 (29016089) you place into dockerfiles/12.2.1.3/patches/001 and the WebLogic Patch 29637821 you place into dockerfiles/12.2.1.3/patches/002

#
cd dockerfiles/12.2.1.3/patches
tree
├── 001
│   └── p29016089_122130_Generic.zip
├── 002
│   └── p29637821_122130_Generic.zip
├── applyPatches.sh
└── p28186730_139400_Generic.zip

In case you want to add a 3rd patch, simply create the folder dockerfiles/12.2.1.3/patches/003 and place your patch zip file there.
The applyPatches.sh script, which is executed while the Image build will take care of anything ;-)

Finally follow the instructions on how to build the image and how to start your Container from my GitHub Repository https://github.com/DirkNachbar/Docker/tree/master/OracleWebLogic

After you have started your WebLogic Server Container, you can verify the patch apply with following steps:

#
$ docker exec -it <Your Container Name> /bin/bash
[root@b08c600a5766 oracle]$ su - oracle
[oracle@b08c600a5766 ~]$ cd /u01/oracle/
[oracle@b08c600a5766 ~]$ export ORACLE_HOME=`pwd`
[oracle@b08c600a5766 ~]$ $ORACLE_HOME/OPatch/opatch lsinv
Oracle Interim Patch Installer version 13.9.4.2.0
Copyright (c) 2019, Oracle Corporation.  All rights reserved.
. . .
. . .
Interim patches (6) :

Patch  29637821     : applied on Tue May 14 12:53:46 UTC 2019
Unique Patch ID:  22888395
Patch description:  "One-off"
   Created on 24 Apr 2019, 22:39:34 hrs PST8PDT
   Bugs fixed:
     29637821

Patch  29016089     : applied on Tue May 14 12:53:14 UTC 2019
Unique Patch ID:  22640288
Patch description:  "WLS PATCH SET UPDATE 12.2.1.3.190416"
   Created on 31 Jan 2019, 00:50:49 hrs PST8PDT
   Bugs fixed:
     23076695, 23103220, 25387569, 25488428, 25580220, 25665727, 25750303
     25800186, 25987400, 25993295, 26026959, 26080417, 26098043, 26144830
     26145911, 26248394, 26267487, 26268190, 26353793, 26439373, 26473149
     26499391, 26502060, 26547016, 26589850, 26608537, 26624375, 26626528
     26731253, 26791760, 26806438, 26828499, 26835012, 26929163, 26936500
     26943614, 26985581, 27033250, 27055227, 27086845, 27111664, 27117282
     27118731, 27131483, 27187631, 27213775, 27234961, 27272911, 27284496
     27397287, 27411153, 27417245, 27445260, 27469756, 27486993, 27516977
     27561226, 27603087, 27617877, 27693510, 27803728, 27819370, 27912485
     27927071, 27928833, 27934864, 27947832, 27948303, 27988175, 28071913
     28103938, 28110087, 28138954, 28140800, 28142116, 28149607, 28166483
     28171852, 28172380, 28311332, 28313163, 28319690, 28360225, 28375173
     28375702, 28409586, 28503638, 28550962, 28559579, 28594324, 28626991
     28632521, 28651365, 28748179, 28774974, 28874066, 28891448, 28895280
     28958819, 28984617, 29140508, 29140516, 29140540, 29140549, 29140551
     29140555
. . .
. . .
--------------------------------------------------------------------------------

OPatch succeeded.



Thursday, May 9, 2019

Updated Version of Optimized WebLogic Image on Docker

Yesterday I published my solution for an optimized WebLogic Image on Docker (https://dirknachbar.blogspot.com/2019/05/optimized-weblogic-image-on-docker.html). The yesterdays version was limited to the usage of Oracle Server JRE 8u152, due to an Oracle Bug 27117282.

So I updated my Optimized Solution, that you can integrate the necessary patches (Patch for OPatch Util and the latest CPU April 2019 for WebLogic 12.2.1.3.0), in order that you are able to use an actual Oracle Server JRE, e.g. Oracle Server JRE 8u202. But this requires that you have a My Oracle Support Login in order to download the 2 required patches.

The new Sources can be found under my GitHub Repo https://github.com/DirkNachbar/Docker/tree/master/OracleWebLogic

You just have to download the following 2 patches from My Oracle Support:

Place the 2 zip files in the subdirectory dockerfiles/12.2.1.3

After that you can start to build your Oracle Server JRE Image as described in my yesterdays blogpost or in the README.md on my GitHub Repo, followed by the Docker Image build for the Oracle WebLogic Server 12.2.1.3.0 including the Patches.
This time you have to use instead of the option "-o" (stands for optimized) the option "-p" (stands for patch). This will update your OPatch Utility with the OPatch Patch 28186730 and apply afterwards the latest CPU April 2019 on your WebLogic Server 12.2.1.3.0 Software Home, so that you can use an actual Oracle Server JRE (e.g. 8u202) to create your WebLogic Domain without errors.


Wednesday, May 8, 2019

Optimized WebLogic Image on Docker

As I am currently busy with optimizing Docker Images for Oracle stuff, I want to share with you my latest optimization for Oracle WebLogic Server 12.2.1.3.0 as Docker Image.

Under the Oracle GitHub Repository https://github.com/oracle/docker-images/tree/master/OracleWebLogic you can find all necessary files to build a Docker Image for Oracle WebLogic 12.2.1.x, which are quite useful, but the disadvantage of this image is the size. The Docker Image will be 2.93 GB !
So I spent some time and optimized the Docker build and my optimized Docker image is only 1.4 GB, so more than 50% space savings ;-)

 # Docker Images
$ docker images
REPOSITORY           TAG                  IMAGE ID            CREATED             SIZE
oracle/weblogic      12.2.1.3-optimized   854be1c2bbb9        7 minutes ago       1.4GB
oracle/weblogic      12.2.1.3-generic     ba0d1c2dc430        25 minutes ago      2.93GB

The complete showcase you can find under my GitHub Repository https://github.com/DirkNachbar/Docker/tree/master/OracleWebLogic, just clone the Repo and perform following steps.

Download at first following software from Oracle Technology Network:

After the download of the required installation files, build at first the Oracle Server JRE Image

#
$ cd dockerfiles/12.2.1.3/serverjre
$ ./buildDockerImage.sh
$ docker images | grep serverjre
REPOSITORY           TAG                  IMAGE ID            CREATED             SIZE
oracle/serverjre     8                    63b4768f6557        About an hour ago   387MB

As next you can build the Oracle WebLogic Server 12.2.1.3.0 Image

#
cd dockerfiles
$ ./buildDockerImage.sh -v 12.2.1.3 -o

Checking if required packages are present and valid...
fmw_12.2.1.3.0_wls_Disk1_1of1.zip: OK
=====================
Building image 'oracle/weblogic:12.2.1.3-optimized' ...
Sending build context to Docker daemon    839MB
Step 1/17 : FROM oracle/serverjre:8 as base
 ---> 63b4768f6557
Step 2/17 : LABEL maintainer="dirk.nachbar@trivadis.com"
 ---> Running in 9bfcf5aaa1d4
Removing intermediate container 9bfcf5aaa1d4
 ---> 6cff4f8712d8
. . .
. . .
Step 13/17 : FROM base
 ---> 718f0506dfb8
Step 14/17 : COPY --chown=oracle:oracle --from=builder $ORACLE_HOME $ORACLE_HOME
 ---> 46ee0e3fd822
Step 15/17 : COPY --chown=oracle:oracle --from=builder $JAVA_HOME $JAVA_HOME
 ---> bddc30cf710e
Step 16/17 : WORKDIR ${ORACLE_HOME}
 ---> Running in b7a122dc521b
Removing intermediate container b7a122dc521b
 ---> 1b2aa03acef6
Step 17/17 : CMD ["/u01/oracle/createAndStartEmptyDomain.sh"]
 ---> Running in 296506a7fc03
Removing intermediate container 296506a7fc03
 ---> 854be1c2bbb9
Successfully built 854be1c2bbb9
Successfully tagged oracle/weblogic:12.2.1.3-optimized

  WebLogic Docker Image for 'optimized' version 12.2.1.3 is ready to be extended:

    --> oracle/weblogic:12.2.1.3-optimized

  Build completed in 258 seconds.

$ docker images
REPOSITORY           TAG                  IMAGE ID            CREATED             SIZE
oracle/weblogic      12.2.1.3-optimized   854be1c2bbb9        24 minutes ago      1.4GB

Now create and run your Oracle WebLogic Server 12.2.1.3.0 Container:

#
$ docker run -d --name <ContainerName> \
             -p 7001:7001 -p 9002:9002 \
             -v <Host Path to subdirectory properties>:/u01/oracle/properties \
             -e ADMINISTRATION_PORT_ENABLED=true -e DOMAIN_NAME=<DomainName> \
             oracle/weblogic:12.2.1.3-optimized

$ docker logs -f <ContainerName>

# For Example:

$ docker run -d --name wls12213optimized \
             -p 7001:7001 -p 9002:9002 \
             -v /work/OracleWebLogic/dockerfiles/12.2.1.3/properties:/u01/oracle/properties \
             -e ADMINISTRATION_PORT_ENABLED=true -e DOMAIN_NAME=OptimizedDomain \
             oracle/weblogic:12.2.1.3-optimized

$ docker logs -f wls12213optimized
. . .
. . .
<May 8, 2019 8:56:16,862 AM UTC> <Notice> <WebLogicServer> <BEA-000329> <Started the WebLogic Server Administration Server "AdminServer" for domain "OptimizedDomain" running in production mode.> 
<May 8, 2019 8:56:16,864 AM UTC> <Notice> <Server> <BEA-002613> <Channel "DefaultSecure[1]" is now listening on 127.0.0.1:7002 for protocols iiops, t3s, ldaps, https.> 
<May 8, 2019 8:56:16,865 AM UTC> <Notice> <Server> <BEA-002613> <Channel "DefaultSecure" is now listening on 172.17.0.2:7002 for protocols iiops, t3s, ldaps, https.> 
<May 8, 2019 8:56:16,865 AM UTC> <Notice> <Server> <BEA-002613> <Channel "Default" is now listening on 172.17.0.2:7001 for protocols iiop, t3, ldap, snmp, http.> 
<May 8, 2019 8:56:16,866 AM UTC> <Notice> <Server> <BEA-002613> <Channel "Default[1]" is now listening on 127.0.0.1:7001 for protocols iiop, t3, ldap, snmp, http.> 
<May 8, 2019 8:56:16,866 AM UTC> <Notice> <Server> <BEA-002613> <Channel "DefaultSecure[1]" is now listening on 127.0.0.1:7002 for protocols iiops, t3s, ldaps, https.> 
<May 8, 2019 8:56:16,866 AM UTC> <Notice> <Server> <BEA-002613> <Channel "DefaultSecure" is now listening on 172.17.0.2:7002 for protocols iiops, t3s, ldaps, https.> 
<May 8, 2019 8:56:16,867 AM UTC> <Notice> <Server> <BEA-002613> <Channel "Default" is now listening on 172.17.0.2:7001 for protocols iiop, t3, ldap, snmp, http.> 
<May 8, 2019 8:56:16,867 AM UTC> <Notice> <Server> <BEA-002613> <Channel "Default[1]" is now listening on 127.0.0.1:7001 for protocols iiop, t3, ldap, snmp, http.> 
<May 8, 2019 8:56:16,881 AM UTC> <Notice> <WebLogicServer> <BEA-000360> <The server started in RUNNING mode.> 
<May 8, 2019 8:56:16,911 AM UTC> <Notice> <WebLogicServer> <BEA-000365> <Server state changed to RUNNING.> 

With a little bit work of adding multi stage build in the Dockerfile, you are able to save more than 50% of the space in your Docker Image ;-)


No Metrics visible for Standalone Oracle HTTP Server in Cloud Control 13c

Currently I had the problem within Oracle Cloud Control 13c (13.3), that when I added an Oracle HTTP Server Standalone 12.2.1.x, Cloud Control 13c was not able to display any kinds of metrics from the Oracle HTTP Server.


As you can see from the above screenshot, Cloud Control was able to show me the correct status (UP), but Cloud Control could not see any metrics or even no configured Virtual Hosts.

The problem is within the Oracle HTTP Server 12.2.1.x, as the Oracle HTTP Server doesn't contain all required dms jar files.

To solve this problem, simply apply the patch 22860384, which is available for following Oracle HTTP Server Releases:
  • 12.2.1.0.0
  • 12.2.1.1.0
  • 12.2.1.2.0


Download the patch for your Oracle HTTP Server Release, copy the patch to the server on which your Oracle HTTP Server is running and apply the patch:

# Stop your Oracle HTTP Server
$ cd $DOMAIN_HOME/bin
$ ./stopComponent <OHS Component Name>

# extract the zip file and go into the subdirectory 22860384
$ cd 22860384
$ $ORACLE_HOME/OPatch/opatch apply

Oracle Interim Patch Installer version 13.9.1.0.0
Copyright (c) 2019, Oracle Corporation.  All rights reserved.


Oracle Home       : /appl/oracle/product/fmw-webtier-12.2.1.2.0
Central Inventory : /appl/oracle/oraInventory
   from           : /appl/oracle/product/fmw-webtier-12.2.1.2.0/oraInst.loc
OPatch version    : 13.9.1.0.0
OUI version       : 13.9.1.0.0
Log file location : /appl/oracle/product/fmw-webtier-12.2.1.2.0/cfgtoollogs/opatch/opatch2019-05-08_13-21-31PM_1.log


OPatch detects the Middleware Home as "/appl/oracle/product/fmw-webtier-12.2.1.2.0"

Verifying environment and performing prerequisite checks...
OPatch continues with these patches:   22860384

Do you want to proceed? [y|n]
y
User Responded with: Y
All checks passed.

Please shutdown Oracle instances running out of this ORACLE_HOME on the local system.
(Oracle Home = '/appl/oracle/product/fmw-webtier-12.2.1.2.0')


Is the local system ready for patching? [y|n]
y
User Responded with: Y
Backing up files...
Applying interim patch '22860384' to OH '/appl/oracle/product/fmw-webtier-12.2.1.2.0'
ApplySession: Optional component(s) [ oracle.jmx, 12.2.1.0.0, higher version 12.2.1.2.0 found. ]  not present in the Oracle Home or a higher version is found.

Patching component oracle.jrf.thirdparty.jee, 12.2.1.2.0...

Patching component oracle.jrf.thirdparty.jee, 12.2.1.2.0...
Patch 22860384 successfully applied.
Log file location: /appl/oracle/product/fmw-webtier-12.2.1.2.0/cfgtoollogs/opatch/opatch2019-05-08_13-21-31PM_1.log

OPatch succeeded.

# Startup your Oracle HTTP Server
$ cd $DOMAIN_HOME/bin
$ ./startComponent <OHS Component Name>

Now wait some minutes or if you are not really patient, perform on the Oracle Cloud Control Agent 13 multiple times "emctl upload agent"

After some time you should be able now to see in your configured Oracle HTTP Server Target in the Oracle Cloud Control 13c all metrics and even configured Virtual Hosts.



Friday, May 3, 2019

WildFly 16 Docker Image with Oracle JDBC Driver

Today some a bit off-topic blogpost from my usual classic Oracle blogpost, but with a bit of Oracle :-)

As more and more of my customers are moving away from Oracle WebLogic Server to JBoss/WildFly, I have create a small Docker Image with WildFly 16 including the Oracle JDBC Driver and a DataSource based on the Oracle JDBC Driver (18.3).

The full showcase you can find in my GitHub Repository https://github.com/DirkNachbar/Docker/tree/master/WildFly

Simply clone the repository to your machine hosting your Docker.

At first you will need to align the oracle-driver.cli script to reflect your required DataSource settings to connect to your Oracle Database

# Snippet from oracle-driver.cli
data-source add --name=<DataSourceName> --driver-name="oracle" --jndi-name="java:<JNDI Lookup Name>" --statistics-enabled="true" --user-name="<Oracle Username>" --password="<Oracle User Password>" --initial-pool-size="<Initial Pool Size>" --max-pool-size="<Max Pool Size>" --min-pool-size="<Minimal Pool Size>" --connection-url="jdbc:oracle:thin:@<Oracle Database Servername>:<Listener Port>/<Database ServiceName>" --check-valid-connection-sql="select 1 from dual"

# For example:
data-source add --name=testDS --driver-name="oracle" --jndi-name="java:/jdbc/testDS" --statistics-enabled="true" --user-name="soe" --password="soe" --initial-pool-size="25" --max-pool-size="50" --min-pool-size="20" --connection-url="jdbc:oracle:thin:@oraxe18c:1521/XEPDB1" --check-valid-connection-sql="select 1 from dual"
#

Now you can build the WildFly 16 Image:

In case you dont provide the --build-arg WILDFLY_ADMIN_PWD, the admin user of your WildFly will get the default password admin.

$ docker build [--build-arg WILDFLY_ADMIN_PWD=<your admin password>] -t wildfly .
# For Example:
$ docker build --build-arg WILDFLY_ADMIN_PWD=Oracle18c -t wildfly .

After the build is completed you can start your WildFly 16 Container with following command:

$ docker run -d --name wildfly \
      [--network=<Your bridged network>] \
      -p <Your Host Port>:8080 -p <Your Host Port>:9990 \
      -e TZ=<Your Timezone> \
      wildfly

Now you can access the HAL Management Console of your WildFly 16 with your forwarded port of the Docker Container Port 9990, login with admin and your provided password in the --build-arg WILDFLY_ADMIN_PWD or if you didnt used the --build-arg you the password "admin"



After the Login, click on the option "Configuration"



On the Configuration screen navigate to "Subsystems / Datasources & Drivers / JDBC Drivers / oracle" to check your deployed JDBC Driver



On the Configuration screen navigate to "Subsystems / Datasources & Drivers / Datasources / testDS" to check your created DataSource





Optimizing the Optimized Docker Image for Oracle XE 18c (18.4.0) including Archivelog

On 1st May 2019 I was publishing a solution on how to optimize the Docker image for Oracle XE 18c from 8.7 GB down to 5.41 GB (https://dirknachbar.blogspot.com/2019/05/optimized-docker-image-for-oracle-xe.html).

In the last 2 days I was playing a bit more with my optimized Docker image for Oracle XE 18c and I was able to downsize the Docker image once again to a current size of 4.02 GB. So its more than 50% of savings from the original Docker image size.

$ docker images
REPOSITORY           TAG                 IMAGE ID            CREATED             SIZE
oracle/database      18.4.0-xe           2018ad58d2f3        16 hours ago        4.02GB
$

I mainly removed unnecessary directories from the $ORACLE_HOME and several binaries, which are not required in my opinion and I strip some of the big binaries to remove the comments from them.

You can find the optimized optimized Docker Image for Oracle XE 18c (18.4) in my GitHub Repository https://github.com/DirkNachbar/Docker/tree/master/OracleXE

Here is the list of directories and binaries which I removed from the image in order to come down to 4.02 GB:

# Snippet from Dockerfile.xe
RUN cd $INSTALL_DIR && \
    yum -y install $INSTALL_FILE_1 && \
    rm -rf /var/cache/yum && \
    rm -f $INSTALL_FILE_1 && \
    rm -rf $ORACLE_HOME/demo && \
    rm -rf $ORACLE_HOME/dmu && \
    rm -rf $ORACLE_HOME/javavm && \
    rm -rf $ORACLE_HOME/md && \
    rm -rf $ORACLE_HOME/nls/demo && \
    rm -rf $ORACLE_HOME/odbc && \
    rm -rf $ORACLE_HOME/rdbms/demo && \
    rm -rf $ORACLE_HOME/R && \
    rm -rf $ORACLE_HOME/instantclient && \
    rm -rf $ORACLE_HOME/inventory && \
    rm -rf $ORACLE_HOME/deinstall && \
    rm -r  $ORACLE_HOME/lib/ra_aix_ppc64.zip && \
    rm -r  $ORACLE_HOME/lib/ra_hpux_ia64.zip && \
    rm -r  $ORACLE_HOME/lib/ra_solaris*.zip && \
    rm -f  $ORACLE_HOME/lib/ra_windows64.zip && \
    rm -f  $ORACLE_HOME/lib/ra_zlinux64.zip && \
    rm -rf $ORACLE_HOME/crs && \
    rm -f  $ORACLE_HOME/bin/asmcmd && \
    rm -f  $ORACLE_HOME/bin/asmcmdcore && \
    rm -f  $ORACLE_HOME/bin/bdschecksw && \
    rm -f  £ORACLE_HOME/bin/dbv && \
    rm -f  $ORACLE_HOME/bin/ldap* && \
    rm -f  $ORACLE_HOME/bin/dbfs_client && \
    rm -f  $ORACLE_HOME/bin/afdboot && \
    rm -f  $ORACLE_HOME/bin/exp && \
    rm -f  $ORACLE_HOME/bin/imp && \
    rm -f  $ORACLE_HOME/bin/*.exe && \
    rm -f  $ORACLE_HOME/bin/lcsscan && \
    rm -f  $ORACLE_HOME/bin/dgmgrl && \
    rm -f  $ORACLE_HOME/bin/nid && \
    rm -f  $ORACLE_HOME/bin/orion && \
    rm -f  $ORACLE_HOME/bin/procob && \
    rm -f  $ORACLE_HOME/bin/setasmgid && \
    rm -f  $ORACLE_HOME/bin/wrap && \
    rm -f  $ORACLE_HOME/bin/*0 && \
    rm -f  $ORACLE_HOME/bin/tnsping && \
    rm -f  $ORACLE_HOME/bin/tkprof && \
    rm -f  $ORACLE_HOME/bin/srvctl && \
    rm -f  $ORCALE_HOME/bin/wrc && \
    rm -rf $ORACLE_HOME/sdk && \
    strip --remove-section=.comment $ORACLE_HOME/bin/oracle && \
    strip --remove-section=.comment $ORACLE_HOME/bin/rman && \
    strip --remove-section=.comment $ORACLE_HOME/bin/tnslsnr

I will continue to try to downsize the Docker image for Oracle XE 18c a bit more within the next days and will post updates on these topic.


Thursday, May 2, 2019

Oracle 19c for Solaris available

After the availability of the latest Oracle 19c Database for Linux platforms, Oracle has released now the Oracle 19c (19.3) Database for Solaris.

The software can be found under Oracle Technology Network: https://www.oracle.com/technetwork/database/enterprise-edition/downloads/oracle19c-solarisx86-5466166.html



Currently there is only the SPARC (64-bit) version available.


Wednesday, May 1, 2019

Optimized Docker Image for Oracle XE 18c (18.4.0) including Archivelog

In my current project I am mainly working with Oracle XE 18c (18.4.0) under Docker.

One pain point is size of the Docker Image for Oracle XE 18c, in case you will use the Scripts from https://github.com/oracle/docker-images/tree/master/OracleDatabase/SingleInstance for the build of Oracle XE 18c you will have an image size of 8.7 GB, which is not quite handy :-)

So I invested some time and have done some modifications on the Dockerfile.xe from the Oracle GitHub Repository, which is mainly to adopt multi stage and to remove some unnecessary directories from the $ORACLE_HOME, so that I finally come to an image size of 5.41 GB instead of 8.7 GB.

On top I have added some volumes to the Dockerfile.xe for fast recovery area and some tools (which are containing RMAN backup scripts) and a post setup script which will turn on the archivelog mode and flashback.

The full showcase you can find in my GitHub Repository https://github.com/DirkNachbar/Docker/tree/master/OracleXE

Just clone my above mentioned GitHub Repo, download the Oracle XE 18c rpm file from Oracle Technology Network https://www.oracle.com/technetwork/database/database-technologies/express-edition/downloads/index.html and place it in the subdirectory 18.4.0.

On top you will need to create 4 directories on your Docker host, which will be the target directories for the following volume mapping:

  • /opt/oracle/oradata
  • /opt/oracle/diag
  • /opt/oracle/fast_recovery_area
  • /opt/oracle/tools

$ groupadd -g 54321 oinstall
$ useradd -d /home/oracle -m -g oinstall [-G docker] -u 54321 oracle
# Depending on your disk layout you will need to create 4 directories
# e.g. you have one mount point called u01, create the following 4 directories below and switch the ownership to the oracle user
$ mkdir -p /u01/diag
$ mkdir -p /u01/oradata
$ mkdir -p /u01/fast_recovery_area
$ mkdir -p /u01/tools
$ chown -R oracle:oinstall /u01/diag
$ chown -R oracle:oinstall /u01/oradata
$ chown -R oracle:oinstall /u01/fast_recovery_area
$ chown -R oracle:oinstall /u01/tools

Now you can execute the build of your Docker Image for Oracle XE 18c

$ ./buildDockerImage.sh -v 18.4.0 -x
. . .
Successfully built ac71812fa9d3
Successfully tagged oracle/database:18.4.0-xe


  Oracle Database Docker Image for 'xe' version 18.4.0 is ready to be extended: 
    
    --> oracle/database:18.4.0-xe

  Build completed in 697 seconds.

$ docker images
REPOSITORY           TAG                 IMAGE ID            CREATED             SIZE
oracle/database      18.4.0-xe           ac71812fa9d3        About an hour ago   5.41GB

Finally create your Docker Container:

docker run -d --name oraxe18c \
              -p 1521:1521
              -e ORACLE_PWD=[your password] \
              -e ORACLE_CHARACTERSET=[your characterset] \
              -e TZ=[your timezone] \
              -v [host directory for oradata]:/opt/oracle/oradata \
              -v [host directory for diag]:/opt/oracle/diag \
              -v [host directory for fast_recovery_area]:/opt/oracle/fast_recovery_area \
              -v [host directory for tools]:/opt/oracle/tools \
              [--network [your bridged network] \
              oracle/database:18.4.0-xe

# For Example
docker run -d --name oraxe18c \
              -p 1521:1521
              -e ORACLE_PWD=Oracle18c \
              -e ORACLE_CHARACTERSET=AL32UTF8 \
              -e TZ=Europe/Zurich \
              -v /u01/oradata:/opt/oracle/oradata \
              -v /u01/diag:/opt/oracle/diag \
              -v /u01/fast_recovery_area:/opt/oracle/fast_recovery_area \
              -v /u01/tools:/opt/oracle/tools \
              --network mynet \
              oracle/database:18.4.0-xe

Now you have a running Oracle XE 18c Container, your oradata, diag, fast_recovery_area and tools directories are mounted on your Docker Host and you can perform standard backups with RMAN against your Oracle XE 18c.

vi /u01/tools/full_bkp.rman

connect target sys/[your password]
run {
    backup database plus archivelog;
}

# For Example
connect target sys/Oracle18c
run {
    backup database plus archivelog;
}

# Now perform your RMAN Backup
docker exec -it oraxe18c rman @/opt/oracle/tools/full_bkp.rman


Friday, April 26, 2019

Oracle 19c for Linux x86-64 available

Since last night the lastest Oracle Database Release 19c (19.3) is for On-Prem  available.


Currently only the Linux x86-64 version is for download available in Oracle Technology Network, the other platforms should follow in the coming days.


For the download checkout following link: https://www.oracle.com/technetwork/database/enterprise-edition/downloads/oracle19c-linux-5462157.html




The documentation can be found under following link: https://docs.oracle.com/en/database/oracle/oracle-database/index.html


On top Gerald Venzl also updated in the Oracle GitHub Repository the Docker Images for Oracle 19c already :-) https://github.com/oracle/docker-images/tree/master/OracleDatabase/SingleInstance/dockerfiles




Happy download and happy testing :-)

Thursday, April 4, 2019

Enterprise Manager 13c - Database Usage Tracking Report Bug with FTP destination

Within Oracle Enterprise Manager 13c you have a nice Feature under the BI Publisher Reports to generate Database Usage Tracking Reports and to deliver them to a FTP Server, called BurstToFTP.


Unfortunatelly if you follow the very good official step-by-step documentation on how to setup and to configure the Database Usage Tracking Report you will not be able to get your Database Usage Tracking Reports under your FTP Server :-(


After you are done with the above setup and configuration steps and you perform an execution of the Database Usage Tracking Report, you will receive following error:

[INSTANCE_ID=.1515472353767] [DELIVERY_ID=1075]Error deliver document to FTP::Exception happened when calling deliver API::Error deliver document to FTP::FILE=[::Exception happened when calling deliver API::oracle.xdo.delivery.DeliveryException: oracle.xdo.delivery.DeliveryException: SFTP Client cannot be openedoracle.xdo.service.delivery.DeliveryException: oracle.xdo.delivery.DeliveryException: oracle.xdo.delivery.DeliveryException: SFTP Client cannot be op 

If you are checking the corresponding bipublisher.log under gc_inst/user_projects/domains/GCDomain/servers/BIP/logs/bipublisher you will find following error messages:

[2019-02-01T09:24:22.148+01:00] [BIP] [WARNING] [] [oracle.xdo] [tid: 168606] [userId: BISystemUser] [ecid: cdc36ce1-e46c-486e-93a8-cee32db72219-00000004,0:1070] [APP: bipublisher#11.1.1]  !!!!!!! GenericDeliveryListener.onMessage :: DeliveryProcessor.processDelivery exception::[INSTANCE_JOB_ID=1529]::[JOB_ID=1583]::[OUTPUT_ID=1402]::[DELIVERY_ID=1391]::[STATUS=FAILED_DELIVERY]::Error deliver document to FTP::Exception happened when calling deliver API::Error deliver document to FTP::FILE=[::Exception happened when calling deliver API::oracle.xdo.delivery.DeliveryException: oracle.xdo.delivery.DeliveryException: SFTP Client cannot be openedoracle.xdo.service.delivery.DeliveryException: oracle.xdo.delivery.DeliveryException: oracle.xdo.delivery.DeliveryException: SFTP Client cannot be opened[[
        at oracle.xdo.service.delivery.impl.DeliveryServiceImpl.deliverToSFTP(DeliveryServiceImpl.java:810)
        at oracle.xdo.enterpriseScheduler.delivery.FTPProcessor.deliver(FTPProcessor.java:255)
        at oracle.xdo.enterpriseScheduler.delivery.FTPProcessor.processDelivery(FTPProcessor.java:123)
        at oracle.xdo.enterpriseScheduler.util.GenericDeliveryListener.onMessage(GenericDeliveryListener.java:120)
        at oracle.xdo.enterpriseScheduler.util.CheckpointEnabledListener.onMessage(CheckpointEnabledListener.java:25)
        at oracle.xdo.enterpriseScheduler.jmswrapper.client.JMSMessageConsumer.processMessage(JMSMessageConsumer.java:231)
        at oracle.xdo.enterpriseScheduler.jmswrapper.client.ThreadedMessageDispatcher$DispatchWorker.run(ThreadedMessageDispatcher.java:157)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
        at java.lang.Thread.run(Thread.java:745)
Caused by: oracle.xdo.delivery.DeliveryException: oracle.xdo.delivery.DeliveryException: SFTP Client cannot be opened
        at oracle.xdo.delivery.ssh2.SFTPDeliveryRequestHandler.submitRequest(SFTPDeliveryRequestHandler.java:528)
        at oracle.xdo.delivery.AbstractDeliveryRequest.submit(AbstractDeliveryRequest.java:1513)
        at oracle.xdo.service.delivery.impl.DeliveryServiceImpl.deliverToSFTP(DeliveryServiceImpl.java:804)
        ... 9 more

The Problem occurs under Oracle Enterprise Linux and Redhat Enterprise Linux.

This is a know bug and luckily there has been a Patch released for this issue.

You will need to download the Patch 23233792: FTP DELIVERY FAILS WITH ORACLE.XDO.DELIVERY.SSH2.SSHEXCEPTION for 12.1.3.0




After you applied the Patch to your Oracle Cloud Control 13c, the BurstToFTP Feature will work without problems.
 



Monday, March 18, 2019

Enterprise Manager 13c - Resolve Pending Status of Systems Infrastructure Server Components

From time to time you can observe, that some Systems Infrastructure Server Components are turning into a "Pending Status". Mostly the reason for this status change is not clear, a restart of the underlying Oracle Agents also doesn't resolve this pending state.


 The simplest solution to get rid of the pending state is to remove the Systems Infrastructure Server Component and to re-add it.

For this just connect with the oracle user to your server on which your Oracle Cloud Control 13c is running and perform following emcli commands:

# At first login with sysman to your emcli
oracle@server> emcli login -username=sysman
Enter password :

Login successful

# Perform a sync
oracle@server> emcli sync
Synchronized successfully

# Remove the Systems Infrastructure Server Component which is in pending state
oracle@server> emcli delete_target \
                  -name="<yourserver>.<domainname>/server" \
                  -type=oracle_si_server_map

# For example:
oracle@server> emcli delete_target \
                  -name="dbserver1.mydomain.com/server" \
                  -type=oracle_si_server_map

Target "dbserver1.mydomain.com/server:oracle_si_server_map" deleted successfully

# Add the above remove Systems Infrastructure Server Component once again
oracle@server> emcli add_target -name='<yourserver>.<domainname>/server' \
                  -type='oracle_si_server_map' \
                  -host='<yourserver>.<domainname>' \
                  -access_point_name='<yourserver>.<domainname>/server_os' \
                  -access_point_type=oracle_si_server_os \
                  -properties='dispatch.url!local://localhost' \
                  -subseparator=properties='!'

# For example:
oracle@server> emcli add_target -name='dbserver1.mydomain.com/server' \
                  -type='oracle_si_server_map' \
                  -host='dbserver1.mydomain.com' \
                  -access_point_name='dbserver1.mydomain.com/server_os' \
                  -access_point_type=oracle_si_server_os \
                  -properties='dispatch.url!local://localhost' \
                  -subseparator=properties='!'

Target "dbserver1.mydomain.com/server_os:oracle_si_server_os" added successfully

After that wait some moments and check once again the status of your Systems Infrastructure Server Component in Enterprise Manager 13c and you will see that the status turned to be ok.



Thursday, February 21, 2019

Oracle XE 18.4.0.0.0 (18c) for Windows

The Oracle Database Express Edition (XE) 18.4.0.0.0 (18c) is since yesterday available for Windows x64 on Oracle Technology Networks:


For the download of the latest Oracle XE 18c for Windows x64 checkout following link: https://www.oracle.com/technetwork/database/database-technologies/express-edition/downloads/index.html




Happy Download ...

Tuesday, January 8, 2019

Enterprise Manager 13.3 - Customize Login Page

Since Oracle Enterprise Manager 13.3 you have the option to customize the Login Page with your own logo image (size of the image is fixed with width of 200px and height of 70px) and a free text field.

In order to customize your login page you have to perform following steps.

At first you will need to activate the http port for your WebLogic Admin Server of your Enterprise Manager 13.3 environment.

Connect with a browser to your WebLogic Server Console, normally https://<yourserver>:7102/console and login with the weblogic user.

Select your EMGC_ADMINSERVER under the Domain Structure "GCDomain/Environment/Servers"


Go to the "Configuration/General" and activate under the Change Center the Lock & Edit button


Set the checkbox in front of "Listen Port Enabled", leave the defined http port to the pre-filled value of 7001 and click the "Save" button to save your changes.


Finally click in the Change Center the "Active Changes" button, there is no restart required, the http port 7001 will be immediately available.


As next you will have to create on the server hosting your Enterprise Manager 13.3 a directory for your image file (possible formats are: jpeg, jpg, png and gif) and a simple web.xml file.

# Create the required directory for your image file
mkdir -p /u00/app/oracle/admin/oms/logo/WEB-INF

# Place your image file into the folder /u00/app/oracle/admin/oms/logo
# Create under /u00/app/oracle/admin/oms/logo/WEB-INF a web.xml
# with following content

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" 
"http://java.sun.com/j2ee/dtds/web-app_2_3.dtd">
<web-app>
</web-app>

Get back to your WebLogic Console and navigate in the Domain Structure to "GCDomain/Environment/Deployments" and click in the Change Center the "Lock & Edit" button.


Click the "Install" button in order to install the above create folder structure as application


Place under Path your above created directory, which contains the image file and the subdirectory WEB-INF with the web.xml, in my case /u00/app/oracle/admin/oms/logo and click the "Next" button


In the next deployment screen leave the defaults and click the "Next" button.


In the following deployment screen choose the EMGC_ADMINSERVER as deployment target and proceed with the "Next" button.


In the following deployment screen leave the defaults and finish the deployment with the "Finish" button.
Hint: the context of your deployment will the same as your created directory name, in my case "logo"


To activate the deployment click under the Change Center the "Activate Changes" button.


Now you have to validate if your deployment is already active or still in prepared state, under the list of deployments scroll down to your deployment, in my case it's named logo (derived from the directory name you have created.

Normally the state will be "prepared", so click on the deployed application


Navigate to the "Control" tab, set the checkbox in front of logo and start the application

After a successful start of your application you should see the state as Active.


Now you can test if you can access with a browser the image file under your deployed application.

http://<yourserver>:7001/logo/<your_image_file>

Next step is to set with the emctl utility the property oracle.sysman.core.uifwk.loginPageLogo, login to your server hosting the Enterprise Manager 13.3 and execute following command:

emctl set property -name oracle.sysman.core.uifwk.loginPageLogo –value 'http://<yourserver>:7001/<context>/<image_file>' -sysman_pwd <sysman_password>

# For example
emctl set property -name oracle.sysman.core.uifwk.loginPageLogo –value 'http://oraem13c.domain.com:7001/logo/logo.png' -sysman_pwd Oracle13c

After the above command is no restart of your OMS required.

In case you want to set the free text for your login page you will need to execute following command on your server hosting the Enterprise Manager 13.3 to set the property oracle.sysman.core.uifwk.loginPageInformationText

emctl set property -name oracle.sysman.core.uifwk.loginPageInformationText -value 'You are connected to the Demo Cloud Control 13c (13.3)'

When you access your Enterprise Manager 13.3 Login Page now, you will see on the top left your logo image and beside the Login Button your defined free text field.