Skip to main content

Command Palette

Search for a command to run...

[23ai] Instalación de Oracle23ai en OraLinux9

Updated
8 min read
[23ai] Instalación de Oracle23ai en OraLinux9

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 :)