How to Install Oracle 23c on Proxmox VE 8?


Oracle 23c offers the following installation methods:

Docker Container: Pull the container image directly from the Oracle Container Registry using `docker pull container-registry.oracle.com/database/free:latest`.

Oracle VM VirtualBox: Import the 23c Free `.ova` file into your local Oracle VM VirtualBox setup.

Package Manager: Configure the software repository source and install online using a package manager like `dnf/yum`, or download the RPM package to a compatible OS distribution (such as Oracle Linux 8, Rocky 8) and install using a package manager (`yum` or `rpm`).

Since Oracle 23c can be installed on Oracle’s VirtualBox, it should also be possible to install it on Proxmox VE (hereafter referred to as PVE).

Preparation

Log in to the PVE 8 Web management interface through your browser, create a virtual machine, and allocate resources. You can skip assigning a hard disk or using any installation media. Note down the virtual machine ID number “104” for later use.

Virtual Machine Restoration

Log in to the PVE 8 host system Debian 12 using an SSH client, and download the VirtualBox image file `Oracle_Database_23c_Free_Developer_Appliance.ova` using `wget` or `curl`. The official download link is [https://download.oracle.com/otn_software/virtualbox/dd/Oracle_Database_23c_Free_Developer_Appliance.ova](https://download.oracle.com/otn_software/virtualbox/dd/Oracle_Database_23c_Free_Developer_Appliance.ova). This is a compressed archive file, which can be unpacked using the following command:

tar xvf Oracle_Database_23c_Free_Developer_Appliance.ova

After executing the command, three files will be generated: two virtual machine disk image files with the `.vmdk` extension and one text file with the `.ovf` extension.

Only the two disk image files need to be processed. Based on experience with deploying various Oracle versions, the two disk images are likely a system disk and a data disk (an assumption).

Continue by executing the following command to convert the first disk image format:

qm disk import 104 ‘Oracle Database 23c Free Developer-disk001.vmdk’ local-lvm –format qcow2

Since the disk image file name contains spaces, use single quotes to treat it as a whole when executing the command. If you prefer, you can rename it in advance to something simpler, such as `disk001-vmdk` (using the `mv` command).

The number “104” is the ID of the pre-created virtual machine, and the converted format is `qcow2`.

Repeat the above operation to convert the second disk image `Oracle Database 23c Free Developer-disk001.vmdk` to `qcow2` format. Once the operation is successfully completed, switch to the PVE 8 Web management interface. In the hardware configuration of the virtual machine with ID “104”, two “Unused Disks” will be added.

Double-click the “Unused Disk 0” to add the disk to the virtual machine and make it usable.

Similarly, add the other “Unused Disk 1” to the virtual machine. Alternatively, you can add the “Unused Disk” to the virtual machine using the command line with the following commands:

root@pve99:~/oracle# qm set 104 –scsi1 local-lvm:vm-104-disk-1

update VM 104: -scsi1 local-lvm:vm-104-disk-1

root@pve99:~/oracle# qm set 104 –scsi2 local-lvm:vm-104-disk-2

update VM 104: -scsi2 local-lvm:vm-104-disk-2

When executing these commands, make sure that the “scsi” option numbers do not conflict.

In the PVE 8 Web management interface, modify the boot order of the target virtual machine. Since both recovered disks are 30GB, and it’s unclear which one is the system disk, select both disks, and exclude other irrelevant boot items.

Switch to the “104” virtual machine console menu and click the “Start Now” button to start the virtual machine.

Observing the Console Output

If everything goes well, Oracle Linux Server 8 will boot normally and log in automatically as the `oracle` user without a password. If the system boots but you can’t log in, don’t panic. Press the `Ctrl + Alt + F2` key combination, enter the username `root`, and use the default password `oracle` to log in. Take this opportunity to change Oracle Linux Server’s network address (the default address is 192.168.122.1) to your actual network environment’s address, restart the network service, and ensure the system can be accessed via an SSH client remotely.

Verifying the Correct Installation of Oracle 23c

First, verify the assumption of “a system disk and a data disk” by executing `df -h` at the command prompt. The result confirms it, with the system disk `/dev/sda` and the data disk `/dev/sdb1` mounted to the directory `/opt/oracle`.

Navigate to the directory `/opt/oracle`, where the familiar directory structure is clearly visible:

[root@localhost ~]# cd /opt/oracle/

[root@localhost oracle]# ll

Under the system directory `/etc/init.d`, look for Oracle 23c startup scripts. There are three shell scripts, all named starting with “oracle”.

To verify, manually execute the command `sh oracle-free-23c status` to confirm whether it’s the startup script for Oracle 23c services (instance and listener). The command execution and output are as follows:

[root@localhost init.d]# sh oracle-free-23c status

Status of the Oracle FREE 23c service:

LISTENER status: RUNNING

FREE Database status: RUNNING

Check the system processes, and you’ll find many processes running under the oracle account, prefixed with “db_”. This preliminary indication suggests that the Oracle instance has started automatically at boot.

Switch to the `oracle` account and execute the following command to check the listener status:

[root@localhost init.d]# su – oracle

[oracle@localhost ~]$ lsnrctl status

The output shows that the listener is indeed running.

Further, use the Oracle client `sqlplus` to log in and check the instance status. Unlike previous versions, Oracle 23c does not allow login using `sqlplus / as sysdba`; instead, it requires a username and password (all accounts in Oracle 23c Free, including the Oracle Linux Server 8 OS, have the password “oracle”). The complete login command and output are as follows:

[oracle@localhost ~]$ sqlplus sys/oracle as sysdba

The instance is also running normally.

Switch back to the root account and execute the command `/etc/init.d/oracle-free-23c stop`. Check the Oracle instance processes, listener status, and `sqlplus` login. The Oracle instance processes are no longer present, the listener status shows “Cannot connect” (TNS-12541: Cannot connect. No listener at host localhost port 1521), and the client `sqlplus` cannot log in. This confirms that the script `oracle-free-23c` is indeed the startup script for Oracle 23c services.

The above process also verifies the correct installation of Oracle 23c.


Leave a Reply

Your email address will not be published. Required fields are marked *