Oracle Database 23c Free – Developer Release is all over since Oracle released it yesterday. See the Official Oracle pages Oracle Database Free or the blog post by Gerald Venzl Introducing Oracle Database 23c Free – Developer Release. Connor McDonald even got a special delivery from Oracle.
A few important web pages related to Oracle Database 23c Free.
- Landing page for Oracle Database Free
- Download page for Oracle Database Free
- Documentation Library Oracle Database 23c Free – Developer Release
- Oracle® Database – Database Release Notes 23c
- Oracle® Database – Oracle Database New Features Release 23c
Ok, so what do we do now in order to be able to use Oracle Database 23c Free on a Mac with Apple Silicon? Setup a Vagrant VM, Docker Container or rather use a cloud based solution? Below I show you how to do this relatively easily using a Docker container that runs reasonably well.
Requirements
Basically, x86-64 based Docker containers also run on Apple Silicon / ARM. However, these are emulated with Rosetta2 and are not as stable / performant. But the whole thing is a bit more complex than described there. Docker and colima can both use Rosetta 2, although Rosetta 2 is always slower than native ARM code but faster than QEMU. Because Rosetta 2 does not know or provide all instructions, it can lead to problems depending on the container. Therefore certain containers are less stable. QEMU on the other hand interprets every instruction. Thus it is more stable but slower. Therefore things are somewhat better when using colima with x86-64. In the end, the performance is not that great. However, it is sufficient for simple tests on the road. Maybe I will find some time to go deeper into the topics of ARM/x86-64 with Rosetta 2, QEMU etc.
- Homebrew package manager for MacOS. Not mandatory, but makes life much easier
- Docker Desktop for MacOS
- Colima a container runtimes for macOS (and Linux) with minimal setup
- Oracle Database 23c Free Docker image from the Oracle Container Registry
- Oracle SQL Developer or SQLCli to access the database
Setup and Run
You can either configure all the stuff mentioned above manual or use brew. I do prever brew whenever possible. So let’s install brew first
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
Update and upgrade your brew installation
brew update brew upgrade
Install colima and Docker for MacOS
brew install colima docker
We are now ready to start colima. See GitHub repository abiosoft/colima for full usage
colima start --arch x86_64 --memory 4
Start up the Oracle Database 23c Free Docker container. As Docker has to pull about 3GB, it will take a while depending on the networkspeed.
docker run -d --name db23c -P container-registry.oracle.com/database/free
As usual, you have to wait a month for an Oracle database to be created. With Docker logs you can check when the database is available.
docker logs -f db23c
Starting Oracle Net Listener. Oracle Net Listener started. Starting Oracle Database instance FREE. Oracle Database instance FREE started. The Oracle base remains unchanged with value /opt/oracle ######################### DATABASE IS READY TO USE! ######################### The following output is now a tail of the alert.log: =========================================================== Dumping current patch information =========================================================== No patches have been applied =========================================================== 2023-04-05T06:35:33.856200+00:00 FREEPDB1(3):Opening pdb with Resource Manager plan: DEFAULT_PLAN 2023-04-05T06:35:40.175165+00:00 Completed: Pluggable database FREEPDB1 opened read write Completed: ALTER DATABASE OPEN
Set a new SYS password using setPassword.sh
docker exec db23c ./setPassword.sh <PASSWORD>
And here we go let’s connect via sqlplus as SYSDBA
docker exec -it db23c sqlplus / as sysdba
SQL*Plus: Release 23.0.0.0.0 - Developer-Release on Wed Apr 5 09:11:04 2023 Version 23.2.0.0.0 Copyright (c) 1982, 2023, Oracle. All rights reserved. Connected to: Oracle Database 23c Free, Release 23.0.0.0.0 - Developer-Release Version 23.2.0.0.0 SQL> select sysdate; SYSDATE --------- 05-APR-23 SQL>
If you prefer, you can also use SQL Developer. Just login to localhost, port and service name. If you started the container with -P like me, docker ps or docker ports shows the corresponding port.
docker port db23c
1521/tcp -> 0.0.0.0:49153 1521/tcp -> :::49153
SQL Developer configuration for the local Docker container. Port must be adjusted accordingly.
And here we go…
First Steops
Installation of the SCOTT schema. But first update the script to connect to the pluggable database.
docker exec db23c sed -i "s|CONNECT SCOTT/tiger$|CONNECT SCOTT/tiger@freepdb1|" \ /opt/oracle/product/23c/dbhomeFree/rdbms/admin/utlsampl.sql
Run SQLPlus to create the SCOTT schema
docker exec -it db23c sqlplus / as sysdba
ALTER SESSION SET CONTAINER=freepdb1; @?/rdbms/admin/utlsampl.sql
Create a new user and grant him read access to the tables of the SCOTT schema.
ALTER SESSION SET CONTAINER=freepdb1; CREATE USER king IDENTIFIED BY tiger; GRANT CREATE SESSION TO king; GRANT READ ANY TABLE ON SCHEMA scott TO king;
And test it as KING
CONNECT king/tiger@freepdb1 SET PAGESIZE 200 SET LINESIZE 120 SET PAGESIZE 200 SELECT * FROM scott.emp;
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO ---------- ---------- --------- ---------- --------- ---------- ---------- ---------- 7369 SMITH CLERK 7902 17-DEC-80 800 20 7499 ALLEN SALESMAN 7698 20-FEB-81 1600 300 30 7521 WARD SALESMAN 7698 22-FEB-81 1250 500 30 7566 JONES MANAGER 7839 02-APR-81 2975 20 7654 MARTIN SALESMAN 7698 28-SEP-81 1250 1400 30 7698 BLAKE MANAGER 7839 01-MAY-81 2850 30 7782 CLARK MANAGER 7839 09-JUN-81 2450 10 7788 SCOTT ANALYST 7566 19-APR-87 3000 20 7839 KING PRESIDENT 17-NOV-81 5000 10 7844 TURNER SALESMAN 7698 08-SEP-81 1500 0 30 7876 ADAMS CLERK 7788 23-MAY-87 1100 20 7900 JAMES CLERK 7698 03-DEC-81 950 30 7902 FORD ANALYST 7566 03-DEC-81 3000 20 7934 MILLER CLERK 7782 23-JAN-82 1300 10 14 rows selected.
Excellent, full READ access to a schema respectively the tables of a schema with only one statement.
Conclusion
The Developer Release of Oracle Database 23c is great. A unique opportunity to test various Oracle features very early without having to join the Oracle Beta Program. But be aware, do not expect light speed when runing an Oracle Database Container on Apple Silicon. This workaround is ideal when you are on the road and want to test nes stuff. For reliable speed, there is no way around running Oracle Database 23c on an x86-64 system. Either you have an old Mac lying around or you build a small environment in the cloud. But who knows, maybe Oracle will surprise us with an ARM version of Oracle Database 23c…