Oracle XE Linux

Oracle XE en Oracle+RedHat Linux 8

2 de mayo de 2021

Oracle XE 11g en Oracle+RedHat Linux 8.3 (howto)

Databases... Esto no es sino una serie de capturas de consola en el momento de realizar la operación (a modo de referencia, con los datos reales modificados; no es un manual, son solo "mis notas"). Si te resulta útil, perfecto (esa es la idea). Si no es suficiente, tienes abundante documentación en la web de Oracle y recursos como stackoverflow o el mismo buscador de Google :-)

A finales de 2020 se anunció la discontinuidad de CentOS (con CentOS 8) tal como se venía distribuyendo, de modo que después de diciembre de 2021 solo estaría disponible como distribución Stream. Al poco tiempo Red Hat anunciaba la disponibilidad, a partir de febrero de 2021, de Red Hat Enterprise Linux de forma gratuita para equipos de desarrollo (y hasta 16 servidores en producción). Antes de que se hiciera ese anuncio por parte de RedHat, como alternativa, cambié a Oracle Linux (también gratuito) uno de los servidores... ese que después ha sido el primer destinatario de un Oracle XE. Posteriormente, una vez disponible la versión de RedHat, la instalé en otro servidor... que es el segundo destinatario de un Oracle XE. Voy a intentar componer un mix de las dos veces a modo de guía con los pasos seguidos en el equipo con Oracle Linux y los correspondientes, posteriormente, en el equipo con RedHat.

Download & install...

En primer lugar hay que descargar una versión XE (gratuita) de Oracle. En el momento de instalar, la última versión de XE disponible me daba problemas con la última versión de Oracle Linux del servidor en que pretendía instalarla. Como solo se trataba de contar con una base Oracle para hacer algunas pruebas, finalmente opté por una versión más antigua, Oracle XE 11g: Oracle Database Express Edition (XE) Release 11.2.0.2.0 (11gR2) (instalo la misma versión en Red Hat).

Empezamos pues. Básicamente descomprimir e instalar...

(referencia "howto"; valores reales de captura de consola modificados)

[root@HPSERVER3 oracle]# unzip oracle-xe-11.2.0-1.0.x86_64.rpm.zip 
Archive:  oracle-xe-11.2.0-1.0.x86_64.rpm.zip
   creating: Disk1/
   creating: Disk1/upgrade/
  inflating: Disk1/upgrade/gen_inst.sql  
   creating: Disk1/response/
  inflating: Disk1/response/xe.rsp   
  inflating: Disk1/oracle-xe-11.2.0-1.0.x86_64.rpm  
[root@HPSERVER3 oracle]# cd Disk1/
[root@HPSERVER3 Disk1]# ll
total 309884
-‍rw-rw-r--. 1 root root 317320273 ago 29  2011 oracle-xe-11.2.0-1.0.x86_64.rpm
d‍rwxr-xr-x. 2 root root        20 ago 29  2011 response
d‍rwxrwxr-x. 2 root root        26 ago 29  2011 upgrade
[root@HPSERVER3 Disk1]# yum install oracle-xe-11.2.0-1.0.x86_64.rpm
Última comprobación de caducidad de metadatos hecha hace 0:11:55, el mar 23 feb 2021 23:38:55 CET.
Dependencias resueltas.
===============================================================================================
 Paquete                                Arquitectura   Versión           Repositorio      Tam.
===============================================================================================
Instalando:
 oracle-xe                              x86_64         11.2.0-1.0        @commandline    303 M

Resumen de la transacción
===============================================================================================
Instalar  1 Paquete

Tamaño total: 303 M
Tamaño instalado: 564 M
¿Está de acuerdo [s/N]?: s
Descargando paquetes:
Ejecutando verificación de operación
Verificación de operación exitosa.
Ejecutando prueba de operaciones
Prueba de operación exitosa.
Ejecutando operación
  Preparando          :                                                                    1/1 
  Ejecutando scriptlet: oracle-xe-11.2.0-1.0.x86_64                                        1/1 
  Instalando          : oracle-xe-11.2.0-1.0.x86_64                                        1/1 
  Ejecutando scriptlet: oracle-xe-11.2.0-1.0.x86_64                                        1/1 
Executing post-install steps...

You must run '/etc/init.d/oracle-xe configure' as the root user to configure the database.


  Verificando         : oracle-xe-11.2.0-1.0.x86_64                                        1/1 

Instalado:
  oracle-xe-11.2.0-1.0.x86_64                                                                                                                                       

¡Listo!

"You must run '/etc/init.d/oracle-xe configure' as the root user...", vamos pues...

[root@HPSERVER3 oracle]# /etc/init.d/oracle-xe configure

Oracle Database 11g Express Edition Configuration
-------------------------------------------------
This will configure on-boot properties of Oracle Database 11g Express 
Edition.  The following questions will determine whether the database should 
be starting upon system boot, the ports it will use, and the passwords that 
will be used for database accounts.  Press  to accept the defaults. 
Ctrl-C will abort.

Specify the HTTP port that will be used for Oracle Application Express [8080]:

Specify a port that will be used for the database listener [1521]:

Specify a password to be used for database accounts.  Note that the same
password will be used for SYS and SYSTEM.  Oracle recommends the use of 
different passwords for each database account.  This can be done after 
initial configuration: ***********
Confirm the password: ***********

Do you want Oracle Database 11g Express Edition to be started on boot (y/n) [y]:y

Starting Oracle Net Listener...Done
Configuring database...Done
Starting Oracle Database 11g Express Edition instance...Done
Installation completed successfully.
[root@HPSERVER3 oracle]# 

Nota: en Red Hat después me he encontrado que faltaba algo más... sqlplus: error while loading shared libraries: libnsl.so.1: cannot open shared object file: No such file or directory

Así que...

[root@HPSERVER2 Disk1]# yum install libnsl 
...
Instalando:
 libnsl         x86_64    2.28-127.el8_3.2   rhel-8-for-x86_64-baseos-rpms  99 k
...
Descargando paquetes:
libnsl-2.28-127.el8_3.2.x86_64.rpm                   322 kB/s |  99 kB     00:00    

Interesa poder acceder desde otra máquina con SQLdeveloper. Hay que abrir el puerto en el firewall...

[root@HPSERVER2 Disk1]# firewall-cmd --permanent --add-port=1521/tcp
success
[root@HPSERVER2 Disk1]# firewall-cmd --reload
success

(idem con el puerto de la consola para Oracle Application Express, por defecto 8080, si queremos usar la consola en navegador desde otro equipo, p.ej. http://192.168.25.200:8080/apex/)


Usuario oracle

Unos pocos cambios, por comodidad... Cambiamos la clave del usuario oracle (con el que vamos a operar), comprobamos cual es su home y creamos un link en /home ... (por lo que veo ahora, en la máquina con Oracle Linux creé el directorio oracle en /home y dentro metí un link al directorio bin; a los efectos es lo mismo...)

[root@HPSERVER2 Disk1]# passwd oracle
Cambiando la contraseña del usuario oracle.
Nueva contraseña: **********
Vuelva a escribir la nueva contraseña: **********
passwd: todos los tokens de autenticación se actualizaron exitosamente.
[root@HPSERVER2 Disk1]# grep oracle /etc/passwd
oracle:x:1003:1003::/u01/app/oracle:/bin/bash
[root@HPSERVER2 Disk1]# ln -s /u01/app/oracle /home/oracle

Fichero .bashrc en la home de oracle, con ORACLE_HOME y ORACLE_SID definidos...

[root@HPSERVER2 Disk1]# vi /home/oracle/.bashrc
# .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
export ORACLE_HOME="/u01/app/oracle/product/11.2.0/xe"
export ORACLE_SID="XE"
...
:wq -- salvar y salir...

OK, asignamos el mismo usuario y grupo que tiene /u01/app/oracle ... (oracle.dba)

[root@HPSERVER2 Disk1]# chown oracle.dba /home/oracle/.bashrc

Podemos pues iniciar sesión como oracle... "su oracle"... y vamos a crear un link a bin...

[root@HPSERVER2 Disk1]# su oracle -
[oracle@HPSERVER2 Disk1]$ cd
[oracle@HPSERVER2 ~]$ ln -s /u01/app/oracle/product/11.2.0/xe/bin bin  
[oracle@HPSERVER2 ~]$ ll
total 0
d‍rwxr-x---. 4 oracle dba  35 may  1 22:36 admin
l‍rwxrwxrwx. 1 oracle dba  37 may  1 22:47 bin -> /u01/app/oracle/product/11.2.0/xe/bin
d‍rwxr-x---. 3 oracle dba  16 may  1 22:36 fast_recovery_area
d‍rwxr-x---. 3 oracle dba  16 may  1 22:36 oradata
d‍rwxr-xr-x. 3 root   root 20 may  1 22:28 product
[oracle@HPSERVER2 ~]$ 

Deshabilitar caducidad de password de SYSTEM

Se trata de un entorno de desarrollo; por comodidad, vamos a hacer que el pass de SYSTEM no caduque... (comprobar perfil, hacer que no expire el password para ese perfil y, seguidamente, cambiar el password)

[oracle@HPSERVER2 bin]$ sqlplus / as SYSDBA
...
Connected to:
Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Production

SQL> select username, profile from dba_users where username in ('SYS','SYSTEM');

USERNAME                       PROFILE
------------------------------ ------------------------------
SYSTEM                         DEFAULT
SYS                            DEFAULT

SQL> alter profile DEFAULT limit password_life_time UNLIMITED;

Profile altered.

SQL> alter user SYSTEM identified by "pass99Sys";

User altered.

SQL> alter user SYS identified by "pass99Sys";

User altered.

SQL> 

(nota: en versiones más recientes de XE, habría que indicar "container=ALL" en el cambio de pass: alter user system identified by "pass" container=ALL;)


Usuario nuevo...

Podemos ya crear usuarios, dar permisos, etc...

[oracle@HPSERVER2 bin]$ sqlplus / as SYSDBA
...
Connected to:
Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Production

SQL> create user developer identified by "devPass01"
  2  default tablespace users
  3  quota 100m on users
  4  password expire;

User created.

SQL> create role developer_role;

Role created.

SQL> grant create session, create table, create sequence, create view to developer_role;

Grant succeeded.

SQL> grant developer_role to developer;

Grant succeeded.

SQL> alter user developer identified by "devPass01";

User altered.

SQL> 

Conexión con SQLdeveloper

Por último vamos a comprobar conectando desde otro equipo usando SQLdeveloper... (solo conectar y crear una tabla; para el alcance que pretende este post, suficiente...)

Conectar con SQLdeveloper

Conexión...


Crear tabla con SQLdeveloper

Create table...


Ver tabla con SQLdeveloper

Tabla creada...

Esta web utiliza cookies. Si continuas navegando por ella estás aceptando su uso.