This is a step-by-step guide for setting up an Oracle Database Development Environment on OCI. It will use the Base Database Service instead of an Autonomous Database, so an OCI account where a DB Base Service can be set up is required. In addition to the database, all necessary tools like ORDS and APEX will be set up, similar to my 'The Oracle Database Developer VM Project' series. And same as my older series, this is a work-in-progress, continuously updates when I find something new to cover.
Monday, 12 May 2025
Thursday, 8 May 2025
Use your Oracle Athenticator on Android via your Garmin smartwatch
In fact, this is a generic feature of the Garmin integration with Android smartphones. If you use the Oracle Authenticator to log into your Oracle Cloud account, you can use your Android smartphone for two-factor authentication. When logging into your account, you will get a notification on your phone.
Luckily, Oracle included the Allow and Deny options directly into the notification, so you can make your choice without opening the app. I know other authenticators, that are not so smart (hello PayPal).That will bring up the same choices as in the phone notification. So choose your option here and you are done.
Thursday, 20 March 2025
How to connect via ssh to Database from the Oracle SQL Developer Extension for VSCode
This post is inspired by a LinkedIn posting from Kris Rice, so kudos to him. Based on that, this post will show how to connect from your Windows host to a VirtualBox VM running Oracle Linux via ssh from the Oracle SQL Developer Extension for VSCode.
First check if the sshd in your VM is running
sudo systemctl status sshd
sudo vi ~oracle/.ssh/authorized_keys
Host 192.168.56.11 User "oracle" IdentityFile c:\Users\Arne\.ssh\abruenin-lap
Wednesday, 10 July 2024
How to import Outlook Contact Groups into Thunderbird Mailing Lists
Importing Outlook contacts into the Thunderbird address book is quick and easy, but if you also want to transfer your contact groups into TB's mailing lists, there are some extra steps required. But if you have Contact Groups with thousands of entries, re-creating them im TB is probably not an option.
Start with any given Contact Group. Click File|Save As, choose Text Only (*.txt) as type and save that file to a location of your choice.
Start Excel and click Open|BrowseIn the import wizard, make sure to pick the correct character set. Scroll in the Preview region to check that the national character set is chosen correctly. For the rest we can go with the defaults, so just click Finish.
Now we have the Outlook Contact Group as new Address Book in Thunderbird.To get a Thunderbird Mailing List from these contacts, mark all and click New List.
Friday, 7 June 2024
Running the Oracle 23ai Autonomous Database Free Container Image
With the Oracle Database 23ai comes a new deployment option, the free Autonomous Database Free Container Image. It gives developers the option to develop with an Autonomous Database even when not connected to the internet, eg. when travelling. This post shows how to set it up on Oracle Linux 9.4, in my case it is running in a VirtualBox VM on my Windows desktop PC. For details, see the official documentation, this is only meant as a quick runthrough.
Following the documentation, start with
podman machine init
podman machine set --cpus 4 --memory 8192
podman machine start
Maybe it is just my system, but when running podman machine init I get the error qemu-system-x86_64: executable file not found in $PATH. A post on forums.oracle.com described the following solution, which worked on my system:
sudo ln -s /usr/libexec/qemu-kvm /usr/bin/qemu-system-x86_64
The podman command should run now, so follow the steps from the documentation.
podman pull container-registry.oracle.com/database/adb-free:latest-23ai podman images container-registry.oracle.com/database/adb-free:latest-23ai
podman logs adb-free.podman run -d \ -p 1521:1522 \ -p 1522:1522 \ -p 8443:8443 \ -p 27017:27017 \ -e WORKLOAD_TYPE='ATP' \ -e WALLET_PASSWORD=*** \ -e ADMIN_PASSWORD=*** \ --cap-add SYS_ADMIN \ --device /dev/fuse \ --name adb-free \ container-registry.oracle.com/database/adb-free:latest-23ai
podman cp adb-free:/u01/app/oracle/wallets/tls_wallet ~/tls_wallet zip adb-free-wallet.zip tls_wallet/*
Tuesday, 30 April 2024
Oracle on Windows: out-of-place Patching with Virtual Account
This guide shows a way, how a Gold Image can be created from an Oracle Home on Windows and how that can be used to patch other Oracle Homes. This worked for me, but is not meant to be the only, best or officially recommended Oracle way.
Prepare the image source home
Say we have an unpatched 19.3 installed in c:\oracle\product\19.0.0\dbhome_1 with a database ORCL (non-PDB), installed with the option to use a Virtual Account, which is the default from the Oracle installer.
So the owner for the Oracle software home and datafiles has been created as ORA_OraDB19Home1_SVCACCTS by the installer.There is no standard oraenv.sh under Windows. As some tasks have to be done from the old and some from the new home, it helps to create two different oraenv scripts, eg. old-oraenv.cmd and new-oraenv.cmd , like in my environment:
old-oraenv.cmd
set ORACLE_BASE=C:\Oracle
set ORACLE_HOME=%ORACLE_BASE%\Product\19.0.0\dbhome_1 set PATH=%ORACLE_HOME%\bin;%PATH% set PATH=%ORACLE_HOME%\perl\bin;%PATH% set PATH=%ORACLE_HOME%\OPatch\;%PATH% set PATH=%ORACLE_HOME%\jdk\bin\;%PATH%
new-oraenv.cmd
set ORACLE_BASE=C:\Oracle set OLDORA_HOME=%ORACLE_BASE%\Product\19.0.0\dbhome_1 set ORACLE_HOME=%ORACLE_BASE%\Product\19.21\dbhome_3 set PATH=%ORACLE_HOME%\bin;%PATH% set PATH=%ORACLE_HOME%\perl\bin;%PATH% set PATH=%ORACLE_HOME%\OPatch\;%PATH% set PATH=%ORACLE_HOME%\jdk\bin\;%PATH%
Run your oraenv.cmd, unpack the software (you can use tar xfz under Windows for unzip) and run setup.bat, see the Database Installation Guide 19c for Microsoft Windows.
C:\app>oraenv.cmd
C:\app>mkdir %ORACLE_HOME% C:\app>cd %ORACLE_HOME% C:\app\oracle\product\19.0.0\dbhome_2>tar xfz z:\Install\Windows\WINDOWS.X64_193000_db_home.zip C:\app\oracle\product\19.0.0\dbhome_2>setup.bat
We only need to setup the software only and this is a single instance installation. Under Linux, we would just apply the RU and one-offs from the setup, but the options '-applyRU 'and '-applyOneOffs' are not available under Windows (see the comments on https://mikedietrichde.com/2022/05/17/simple-database-installation-with-applyru-and-applyoneoffs/, search for Windows).
Update opatch by following Doc ID 274526.1 from Oracle Support, in this case using opatch 12.2.0.1.41.
For the Gold Image, we will patch the 19.3 dbhome_2 up to 19.21 plus two one-off patches for the JVM. So download and unpack the patches to a given directory, in this example c:\app\oracle\patches. The patch numbers are 35638318, 35648110 and 35681552, these have to be applied manually by running opatch apply in every patch directory, starting with 35681552 which is the Bundle Patch 19.21.
Now the dbhome_2 is on 19.21 with two additional one-off patches and will serve as source for our Gold Image.
Create the Gold Image
Next, from the patched Oracle Home, we create a Gold Image following the documentation.
setup.exe -createGoldImage -destinationLocation c:\oracle\images
Wait for the installer to finish, then you should have the newly created image in the directory stated by -destinationLocation. The dbhome_2 can be deleted with Oracle's deinstall program.
Out-of-place patching using the Gold Image
We now have an unpatched Oracle 19.3 home in dbhome_1 with the database ORCL and a gold image with version version 19.21 and two one-off patches.
For out-of-place patching, we need to create a new Oracle Home, where we unpack the Gold Image.
C:\app>new-oraenv.cmd C:\app>mkdir %ORACLE_HOME% C:\app>cd %ORACLE_HOME% C:\app\oracle\product\19.21\dbhome_3>tar xfz c:\app\oracle\images\db_home_2024-02-21_05-21-14PM.zip C:\app\oracle\product\19.21\dbhome_3>setup
rem --- Copy spfile and pwdfile to new ORACLE_HOME copy %OLDORA_HOME%\database\SPFILEORCL.ORA %ORACLE_HOME%\database copy %OLDORA_HOME%\database\PWDorcl.ora %ORACLE_HOME%\database
set OLDORA_HOME=%ORACLE_BASE%\product\19.0.0\dbhome_1
rem --- use oradim to delete Oracle services ---oradim -DELETE -SID orcl
rem --- stop remaining Oracle services ---
sc stop OracleOraDB19Home1MTSRecoveryService sc config OracleOraDB19Home1MTSRecoveryService start= disabled
sc stop OracleOraDB19Home1TNSListener
sc config OracleOraDB19Home1TNSListener start=disabled
rem --- create new services for new Oracle home
oradim -NEW -SID orcl -STARTMODE auto -SRVCSTART system -SPFILE -PFILE %ORACLE_HOME%\database\SPFILEORCL.ORA
rem --- recreate remaining services %ORACLE_HOME%\bin\oramtsctl -new %ORACLE_HOME%\bin\lsnrctl start sc config "OracleOraDB19Home3TNSListener" start= auto
rem --- start the database and run datapatch rem --- not needed with service auto start --- @echo startup | sqlplus / as sysdba rem --- @echo alter pluggable database all open | sqlplus / as sysdba rem --- @echo show pdbs | sqlplus / as sysdba
@echo @?/rdbms/admin/utlrp.sql | sqlplus / as sysdba %ORACLE_HOME%\OPatch\datapatch
rem --- apply optimizer fixes for every PDB
@echo @?/rdbms/admin/dbmsoptim.sql | sqlplus / as sysdba
@echo @?/rdbms/admin/prvtoptim.plb | sqlplus / as sysdba
@echo execute dbms_optim_bundle.enable_optim_fixes('ON','BOTH', 'YES'); | sqlplus / as sysdba
Tuesday, 27 February 2024
Oracle on Windows: create 19.21 Gold Image and use it for out-of-place patching
This guide shows a way, how a Gold Image can be created from an Oracle Home on Windows and how that can be used to patch other Oracle Homes. This worked for me, but is not meant to be the only, best or officially recommended Oracle way.
Prepare the image source home
Start with a fresh installed Oracle Home, in this case under D:\app\oracle\product\19.0.0\dbhome_1\.
There is no standard oraenv.sh under Windows, a minimal oraenv.cmd could look like that:
set ORACLE_BASE=C:\app\oracle set ORACLE_HOME=%ORACLE_BASE%\product\19.0.0\dbhome_1 set PATH=%ORACLE_HOME%\bin;%PATH% set PATH=%ORACLE_HOME%\perl\bin;%PATH% set PATH=%ORACLE_HOME%\OPatch\;%PATH%
Run your oraenv.cmd, unpack the software (you can use tar xfz under Windows for unzip) and run setup.bat, see the Database Installation Guide 19c for Microsoft Windows.
C:\app>mkdir c:\app\oracle\product\19.0.0\dbhome_1 C:\app>oraenv.cmd C:\app>cd %ORACLE_HOME% C:\app\oracle\product\19.0.0\dbhome_2>tar xfz z:\Install\Windows\WINDOWS.X64_193000_db_home.zip C:\app\oracle\product\19.0.0\dbhome_2>setup.bat
In this example, we use an existing user oracle instead of a virtual account, which would be the default from the oracle installer. This makes directory handling easier for out-of-place-patching. Also we only need to setup the software only and this is a single instance installation. Under Linux, we would just apply the RU and one-offs from the setup, but the options '-applyRU 'and '-applyOneOffs' are not available under Windows (see the comments on https://mikedietrichde.com/2022/05/17/simple-database-installation-with-applyru-and-applyoneoffs/, search for Windows).
Update opatch by following Doc ID 274526.1 from Oracle Support, in this case using opatch 12.2.0.1.41.
For the Gold Image, we will patch the 19.03 dbhome_1 up to 19.21 plus two one-off patches for the JVM. So download and unpack the patches to a given directory, in this example c:\app\oracle\patches. The patch numbers are 35638318, 35648110 and 35681552, these have to be applied manually by running opatch apply in every patch directory, starting with 35681552 which is the Bundle Patch 19.21.
Now the dbhome_1 is on 19.21 with two additional one-off patches and will serve as source for our Gold Image.
Create the Gold Image
Next, from the patched Oracle Home, we create a Gold Image following the documentation.
setup.exe -createGoldImage -destinationLocation c:\app\oracle\images
Wait for the installer to finish, then you should have the newly created image in the directory stated by -destinationLocation.
Create new Oracle Home and database
Next we create a new Oracle Home and a Database ORCL/ORCLPDB under dbhome_2. Create the new directory, change the ORACLE_HOME variable in oraenv.cmd to point to dbhome_2 and run it. Then unpack the 19.03 software to that directory the same way as dbhome_1 before.
C:\app>mkdir c:\app\oracle\product\19.0.0\dbhome_2 C:\app>oraenv.cmd C:\app>cd %ORACLE_HOME% C:\app\oracle\product\19.0.0\dbhome_2>tar xfz z:\Install\Windows\WINDOWS.X64_193000_db_home.zip C:\app\oracle\product\19.0.0\dbhome_2>setup.bat
Run setup.exe in dbhome_2 and this time also create a database ORCL with a PDB ORCLPDB.
So now we have a patched dbhome_1 as source for the Gold Image and an unpatched dbhome_2 running the database ORCL with the PDB ORCLPDB.Out-of-place patching using the Gold Image
For out-of-place patching, we need to create a new Oracle Home, where we unpack the Gold Image. Change the ORACLE_HOME in oraenv.cmd to dbhome_3 and run it.
C:\app>oraenv.cmd C:\app>mkdir c:\app\oracle\product\19.0.0\dbhome_3 C:\app>cd %ORACLE_HOME% C:\app\oracle\product\19.0.0\dbhome_3>tar xfz c:\app\oracle\images\db_home_2024-02-21_05-21-14PM.zip C:\app\oracle\product\19.0.0\dbhome_3>setup
set OLDORA_HOME=%ORACLE_BASE%\product\19.0.0\dbhome_2
rem --- stop all Oracle services first --- net stop OracleOraDB19Home2MTSRecoveryService net stop OracleOraDB19Home2TNSListener net stop OracleServiceORCL net stop OracleVssWriterORCL
rem --- Copy spfile and pwdfile to new ORACLE_HOME copy %OLDORA_HOME%\database\SPFILEORCL.ORA %ORACLE_HOME%\database copy %OLDORA_HOME%\database\PWDorcl.ora %ORACLE_HOME%\database
rem -- Delete old services %OLDORA_HOME%\bin\oramtsctl -delete sc delete OracleOraDB19Home2TNSListener
rem --- Point services to new ORACLE_HOME sc config OracleServiceORCL binPath="c:\app\oracle\product\19.0.0\dbhome_3\bin\ORACLE.EXE ORCL" sc config OracleJobSchedulerORCL binPath="c:\app\oracle\product\19.0.0\dbhome_3\bin\extjob.exe ORCL" sc config OracleVssWriterORCL binPath="c:\app\oracle\product\19.0.0\dbhome_3\bin\OraVSSW.exe ORCL"
rem --- create new services %ORACLE_HOME%\bin\oramtsctl -new %ORACLE_HOME%\bin\lsnrctl start sc config "OracleOraDB19Home3TNSListener" start= auto
rem --- start new services oradim -EDIT -SID ORCL -STARTMODE auto -SRVCSTART system net start OracleServiceORCL
rem --- start the database and run datapatch rem --- not needed with service auto start --- @echo startup | sqlplus / as sysdba @echo alter pluggable database all open | sqlplus / as sysdba @echo show pdbs | sqlplus / as sysdba %ORACLE_HOME%\OPatch\datapatch
rem --- apply optimizer fixes for every PDB
@echo @?/rdbms/admin/dbmsoptim.sql | sqlplus / as sysdba
@echo @?/rdbms/admin/prvtoptim.plb | sqlplus / as sysdba
@echo execute dbms_optim_bundle.enable_optim_fixes('ON','BOTH', 'YES'); | sqlplus / as sysdba


%20%5BRunning%5D%20-%20Oracle%20VirtualBox.png)
%20%5BRunning%5D%20-%20Oracle%20VirtualBox.png)


























%20%5BRunning%5D%20-%20Oracle%20VM%20VirtualBox.png)
%20%5BRunning%5D%20-%20Or.png)
%20%5BRunning%5D%20-%20Oracle%20VM%20VirtualBox.png)
%20%5BRunning%5D%20-%20Oracle%20VM%20VirtualBox.png)
%20%5BRunning%5D%20-%20Oracle%20VM%20VirtualBox.png)
%20%5BRunning%5D%20-%20Oracle%20VM%20VirtualBox.png)
%20%5BRunning%5D%20-%20Oracle%20VM%20VirtualBox.png)
%20%5BRunning%5D%20-%20Oracle%20VM%20VirtualBox.png)
%20%5BRunning%5D%20-%20Oracle%20VM%20VirtualBox.png)
%20%5BRunning%5D%20-%20Oracle%20VM%20VirtualBox.png)
%20%5BRunning%5D%20-%20Oracle%20VM%20VirtualBox.png)
%20%5BRunning%5D%20-%20Oracle%20VM%20VirtualBox.png)
%20%5BRunning%5D%20-%20Oracle%20VM%20VirtualBox.png)
%20%5BRunning%5D%20-%20Oracle%20VM%20VirtualBox.png)
%20%5BRunning%5D%20-%20Oracle%20VM%20VirtualBox.png)
%20%5BRunning%5D%20-%20Oracle%20VM%20VirtualBox.png)
%20%5BRunning%5D%20-%20Oracle%20VM%20VirtualBox.png)