[23ai] Instalación de Oracle23ai en OraLinux9
![[23ai] Instalación de Oracle23ai en OraLinux9](/_next/image?url=https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1756902043196%2Fa3251e0e-4419-4358-9cbc-a5fb6dab4624.jpeg&w=3840&q=75)
El artículo también se encuentra publicado en Ingles English version.
En este pequeño artículo, vamos a ver a definir una base de datos 23ai con Oracle Database Configuration Assistant (DBCA).
Para poder hacer este laboratorio me he creado un IaaS en OCI con Oracle Linux 9. Es un entorno nuevo con lo que el primer paso que vamos a realizar es la instalación de Oracle 23ai, así que vamos a ello.
[root@~]# grep PRETTY_NAME /etc/os-release
PRETTY_NAME="Oracle Linux Server 9.6"
Para poder realizar la instalación de esta versión, nos vamos apoyar en los siguientes rpm:
[root@test1 tmp]# ls -lac *rpm
-rw-r--r--. 1 root root 1412957372 Sep 2 09:47 oracle-database-free-23ai-23.9-1.el9.x86_64.rpm
-rw-r--r--. 1 root root 30688 Sep 2 09:30 oracle-database-preinstall-23c-1.0-0.5.el8.x86_64.rpm
Dejo a continuación donde podemos descargar cada uno de ellos:
oracle-database-preinstall-23c-1.0-0.5.el8.x86_64.rpm, lo podemos descargar desde aquí.
oracle-database-free-23ai-23.9-1.el9.x86_64.rpm. Este rpm lo podemos descargar desde aquí.
Instalación y Configuración
- Instalación del RPM oracle-database-preinstall-23c-1.0-0.5.el8.x86_64.rpm:
[root@tmp]# dnf install oracle-database-preinstall-23c-1.0-0.5.el8.x86_64.rpm -y
Last metadata expiration check: 1:54:40 ago on Tue 02 Sep 2025 07:46:07 AM GMT.
Dependencies resolved.
....
....
Complete!
- Instalación del RPM oracle-database-free-23ai-23.9-1.el9.x86_64.rpm:
[root@test1 tmp]# wget https://objectstorage.....
[root@test1 tmp]# dnf install oracle-database-free-23ai-23.9-1.el9.x86_64.rpm -y
Last metadata expiration check: 2:06:18 ago on Tue 02 Sep 2025 07:46:07 AM GMT.
Dependencies resolved.
....
.... 3/3
Installed:
oracle-database-free-23ai-23.9-1.x86_64 oracle-database-preinstall-23ai-1.0-3.el9.x86_64
Complete!
Gracias a la instalación de ambos rpm, tendremos el siguiente script oracle-free-23ai en /etc/init.d para poder crear nuestra bbdd 23ai. Antes de ejecutar el script, debemos setear la variable DB_PASSWORD.
[root@test1 tmp]# export DB_PASSWORD=oracle
[root@test1 tmp]# (echo "${DB_PASSWORD}"; echo "${DB_PASSWORD}";) | /etc/init.d/oracle-free-23ai configure
Specify a password to be used for database accounts. Oracle recommends that the password entered should be at least 8 characters in length, contain at least 1 uppercase character, 1 lower case character and 1 digit [0-9]. Note that the same password will be used for SYS, SYSTEM and PDBADMIN accounts:
Confirm the password:
Configuring Oracle Listener.
Listener configuration succeeded.
Configuring Oracle Database FREE.
Enter SYS user password:
*****
Enter SYSTEM user password:
********
Enter PDBADMIN User Password:
*********
Prepare for db operation
7% complete
Copying database files
29% complete
Creating and starting Oracle instance
30% complete
33% complete
36% complete
39% complete
43% complete
Completing Database Creation
47% complete
49% complete
50% complete
Creating Pluggable Databases
54% complete
71% complete
Executing Post Configuration Actions
93% complete
Running Custom Scripts
100% complete
Database creation complete. For details check the logfiles at:
/opt/oracle/cfgtoollogs/dbca/FREE.
Database Information:
Global Database Name:FREE
System Identifier(SID):FREE
Look at the log file "/opt/oracle/cfgtoollogs/dbca/FREE/FREE.log" for further details.
Connect to Oracle Database using one of the connect strings:
Pluggable database: test1/FREEPDB1
Multitenant container database: test1
Listo, en este punto tendríamos una 23ai lista para poder trabajar. Vamos a configurar los ficheros .bashrc y .bash_profile para que sea más sencillo interactuar con los binarios de Oracle, como por ejemplo sqlplus, dbca, o tkproff.
Abajo podemos ver el .bashrc después de actualizarlo:
# .bashrc
# Source global definitions
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi
# User specific environment
if ! [[ "$PATH" =~ "$HOME/.local/bin:$HOME/bin:" ]]
then
PATH="$HOME/.local/bin:$HOME/bin:$PATH"
fi
export PATH
# Uncomment the following line if you don't like systemctl's auto-paging feature:
# export SYSTEMD_PAGER=
# User specific aliases and functions
if [ -d ~/.bashrc.d ]; then
for rc in ~/.bashrc.d/*; do
if [ -f "$rc" ]; then
. "$rc"
fi
done
fi
ORACLE_HOME=/opt/oracle/product/23ai/dbhomeFree; export ORACLE_HOME
PATH=/bin:/usr/bin:/usr/local/sbin:/usr/sbin:$ORACLE_HOME/bin:$ORACLE_HOME/lib:$ORACLE_HOME/OPatch/:$ORACLE_HOME/lib; export PATH
LD_LIBRARY_PATH=${ORACLE_HOME}/lib; export LD_LIBRARY_PATH
ORACLE_SID=FREE; export ORACLE_SID
PDB_NAME=FREEPDB1; export PDB_NAME
Nuestra idea inicial no es trabajar con esta versión, sino testear dbca para realizar lo siguiente:
Generar el template de la actual 23ai
Eliminar esta base de datos que hemos creado previamente.
Crear una nueva basa de datos usando el fichero response junto con el template.
Todo estos puntos se ejecutaran en modo -silent. Essta opción nos permitirá ejecutarr dbca en silent mode.
Generar el template
[oracle@test1 ~]$ dbca -silent \
-createTemplateFromDB \
-sourceDB FREE \
-templateName FREE.template \
-sysDBAUserName SYS \
-sysDBAPassword oracle
Prepare for db operation
33% complete
Creating a template from the database
37% complete
40% complete
43% complete
47% complete
50% complete
53% complete
57% complete
60% complete
63% complete
67% complete
Creating template
100% complete
The template "/opt/oracle/product/23ai/dbhomeFree/assistants/dbca/templates/FREE.template.dbt" creation completed.
Look at the log file "/opt/oracle/cfgtoollogs/dbca/silent.log_2025-09-02_12-09-54PM_170638" for further details.
Eliminar la BBDD
Eliminamos la BBDD previamente habiendo hecho un shutdown.
[oracle@test1 ~]$ dbca -silent \
-deleteDatabase \
-sourceDB FREE \
-sysDBAUserName sys \
-sysDBAPassword oracle
[WARNING] [DBT-11503] The instance (FREE) is not running on the local node. This may result in partial delete of Oracle database.
CAUSE: A locally running instance is required for complete deletion of Oracle database instance and database files.
ACTION: Specify a locally running database, or execute DBCA on a node where the database instance is running.
[WARNING] [DBT-19202] The Database Configuration Assistant will delete the Oracle instances and datafiles for your database. All information in the database will be destroyed.
Prepare for db operation
32% complete
Connecting to database
35% complete
39% complete
42% complete
45% complete
48% complete
52% complete
65% complete
Updating network configuration files
68% complete
Deleting instance and datafiles
84% complete
100% complete
Database deletion completed.
Look at the log file "/opt/oracle/cfgtoollogs/dbca/FREE/FREE0.log" for further details.
Creación de la BBDD
Para la creación de la BBDD vamos a trabajar con los siguientes ficheros:
[oracle@test1 ~]$ ls -lac config/
total 52
drwxr-xr-x. 2 oracle oinstall 49 Sep 3 06:35 .
drwx------. 3 oracle oinstall 127 Sep 2 15:47 ..
-rw-r-----. 1 oracle oinstall 20942 Sep 2 15:47 FREE.template.dbt
-rw-r-----. 1 oracle oinstall 25378 Sep 3 06:35 shadow.rsp
- FREE.template.dbt, el template que hemos generado en el paso previo. Lo vamos a editar porque solo queremos que nos defina la seed. Para ello, procedemos a eliminar todas las referencias de FREEPDB1:

shadow.rsp. Es el fichero response para automatizar el dbca. Es una copia del fichero $ORACLE_HOME/assistants/dbca/dbca.rsp modificado para nuestro caso.
Los valores que contiene el response son los siguientes:
[oracle@test1 ~]$ more config/shadow.rsp | grep -v ^$ | grep -v ^# responseFileVersion=/oracle/assistants/rspfmt_dbca_response_schema_v23.0.0 gdbName=FREE sid=FREE createAsContainerDatabase=true numberOfPDBs=0 templateName=/home/oracle/config/FREE.template.dbt sysPassword=********* systemPassword=********
Una vez modificado ambos ficheros, lanzamos la creación de nuestra 23ai vía dbca en silent mode:
[oracle@test1 ~]$ dbca -createDatabase -silent -responseFile /home/oracle/config/shadow.rsp
Prepare for db operation
4% complete
Creating and starting Oracle instance
5% complete
6% complete
8% complete
Creating database files
12% complete
Creating data dictionary views
13% complete
16% complete
17% complete
18% complete
24% complete
Oracle JVM
30% complete
36% complete
42% complete
44% complete
Oracle Text
46% complete
48% complete
Oracle OLAP
52% complete
Oracle Spatial
53% complete
60% complete
Oracle Label Security
68% complete
Oracle Database Vault
76% complete
Creating cluster database views
77% complete
84% complete
Completing Database Creation
86% complete
88% complete
Executing Post Configuration Actions
100% complete
Database creation complete. For details check the logfiles at:
/opt/oracle/cfgtoollogs/dbca/FREE.
Database Information:
Global Database Name:FREE
System Identifier(SID):FREE
Look at the log file "/opt/oracle/cfgtoollogs/dbca/FREE/FREE10.log" for further details
Nos conectamos a la base de datos como SYS:
[oracle@test1 ~]$ sqlplus /nolog
SQL*Plus: Release 23.0.0.0.0 - Production on Wed Sep 3 09:57:09 2025
Version 23.9.0.25.07
Copyright (c) 1982, 2025, Oracle. All rights reserved.
SQL>
SQL> conn / as sysdba
Connected.
SQL> show pdbs
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
La base de datos se encuentra levantada y solo nos ha creado la seed, tal y como habíamos configurado en nuestro template.
Vamos hacer una prueba más jugando con el parámetro numberOfPDBs. Este parámetro indica el número de PDBs que se deben crear. Si nos fijamos, el fichero response que hemos usado tenía especificado que el número de PDB es cero, acorde a nuestro template.
[oracle@test1 ~]$ grep numberOfPDBs config/shadow.rsp
# Name : numberOfPDBs
numberOfPDBs=0
Pero, ¿Qué sucede si usamos el template original? ¿Hará caso al parámetro del response o hará caso al template?
Vamos a probarlo:
Eliminamos la base de datos:
[oracle@test1 ~]$ dbca -silent \ -deleteDatabase \ -sourceDB FREE \ -sysDBAUserName sys \ -sysDBAPassword ****** [WARNING] [DBT-11503] The instance (FREE) is not running on the local node. This may result in partial delete of Oracle database. CAUSE: A locally running instance is required for complete deletion of Oracle database instance and database files. ACTION: Specify a locally running database, or execute DBCA on a node where the database instance is running. [WARNING] [DBT-19202] The Database Configuration Assistant will delete the Oracle instances and datafiles for your database. All information in the database will be destroyed. Prepare for db operation 32% complete Connecting to database 35% complete 39% complete 42% complete 45% complete 48% complete 52% complete 65% complete Updating network configuration files 68% complete Deleting instance and datafiles 84% complete 100% complete Database deletion completed. Look at the log file "/opt/oracle/cfgtoollogs/dbca/FREE/FREE11.log" for further details.Creamos la bbdd:
[oracle@test1 ~]$ dbca -createDatabase -silent -responseFile /home/oracle/config/shadow.rsp Enter PDBADMIN User Password: Prepare for db operation 4% complete Creating and starting Oracle instance 5% complete 6% complete 8% complete Creating database files 12% complete Creating data dictionary views 13% complete 16% complete 17% complete 18% complete 24% complete Oracle JVM 30% complete 36% complete 42% complete 44% complete Oracle Text 46% complete 48% complete Oracle OLAP 52% complete Oracle Spatial 53% complete 60% complete Oracle Label Security 68% complete Oracle Database Vault 76% complete Creating cluster database views 77% complete 84% complete Completing Database Creation 86% complete 88% complete Executing Post Configuration Actions 100% complete Database creation complete. For details check the logfiles at: /opt/oracle/cfgtoollogs/dbca/FREE. Database Information: Global Database Name:FREE System Identifier(SID):FREE Look at the log file "/opt/oracle/cfgtoollogs/dbca/FREE/FREE13.log" for further details.
Nos conectamos a la base de datos como SYS:
[oracle@test1 ~]$ sqlplus /nolog
SQL*Plus: Release 23.0.0.0.0 - Production on Wed Sep 3 12:02:06 2025
Version 23.9.0.25.07
Copyright (c) 1982, 2025, Oracle. All rights reserved.
SQL> conn / as sysdba
Connected.
SQL> show pdbs
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
SQL>! grep pdb_dbid /home/oracle/config/FREE.template.dbt
<PluggableDatabase pdb_name="PDB$SEED" con_id="2" pdb_dbid="3172087764"/>
<PluggableDatabase pdb_name="FREEPDB1" con_id="3" pdb_dbid="302716810"/>
No tenemos PDBs creadas, solo tenemos la seed.
Aunque nuestro template si que tiene definida la creación de una PDB "FREEPDB1", el fichero response indica a DBCA que el número de PDBs debe ser 0.
Podéis descargar tanto el template como el response que he usado desde aquí.
Espero que os sirva :)
![[26ai] Hybrid Read-Only Mode PDB](/_next/image?url=https%3A%2F%2Fcdn.hashnode.com%2Fuploads%2Fcovers%2F65605419d28f19cc44df7ef1%2Fde208bd2-5e24-4fd3-acf7-8e5394d95283.png&w=3840&q=75)
![[26ai] ALERT_LOG_MAX_SIZE](/_next/image?url=https%3A%2F%2Fcdn.hashnode.com%2Fuploads%2Fcovers%2F65605419d28f19cc44df7ef1%2Fcbb365d0-4428-4a41-930d-516ce59e3355.jpg&w=3840&q=75)
![[26ai] ConnStr Tool](/_next/image?url=https%3A%2F%2Fcdn.hashnode.com%2Fuploads%2Fcovers%2F65605419d28f19cc44df7ef1%2F5005f06e-946c-49ba-bfe8-7fe18d1075d9.png&w=3840&q=75)
![[26ai] Instalación de Oracle26ai en Linux 9](/_next/image?url=https%3A%2F%2Fcdn.hashnode.com%2Fuploads%2Fcovers%2F65605419d28f19cc44df7ef1%2Fd9a6ba10-eb2d-4fee-8a0c-f4957cbdc676.png&w=3840&q=75)
![[OCI] Montaje de un Bucket como un FS](/_next/image?url=https%3A%2F%2Fcdn.hashnode.com%2Fuploads%2Fcovers%2F65605419d28f19cc44df7ef1%2F05595570-0fbd-46ce-9db4-d2f0e9f09003.png&w=3840&q=75)