Instalación de Oracle

Índice

1. Instalación del software de base de datos

1.1. Prerequisitos

  • Será una máquina virtual de VirtualBox
    • En clase puede bajarse desde el NAS (más rápido)
  • El fichero OVA del profesor ya tiene:
    • Oracle Linux 9 instalado instalado (inglés)
  • Se debe bajar también el ZIP de instalación: LINUX.X64.213000_db_home.zip
  • Se necesita java
    • sudo yum install java-11-openjdk

1.2. Resolver el propio nombre

  • Cambiar el nombre de la máquina
    • Por ejemplo nombrealumnoASGBD
    • Fichero /etc/hostname
    • Fichero /etc/hosts: Hay que añadir el nombre de la máquina en
      • 127.0.0.1
      • ::1
  • Reiniciar la máquina
  • Después de eso, se debería encontrar por nombre: ping nombrealumnoASGBD.local

(referencia em https://oracle-base.com/blog/2015/03/26/oracle-linux-7-1-preinstall-packages-available-for-11gr2-and-12cr1/)

1.3. Entorno gráfico

  • El instalador más cómodo de Oracle necesita un sistema de ventanas
  • Hay varias opciones:
    • Arrancar el modo gráfico en la máquina virtual

          startx
      
    • Conexión ssh con redirección de protocolo X11

          ssh -X alumno@servidor
      
    • Arrancar un servidor vnc

          sudo yum install tigervnc-server
          vncserver :0
      

1.4. Oracle 21c

1.4.1. Descomprimir el instalador

  • Descomprimiremos sus ficheros en el directorio /opt/oracle-install
    • Sugerencia: línea de comandos unzip
    • Directorio /opt/oracle-install/
  • Para hacer sitio, podemos borrar los ficheros zip una vez descomprimidos

1.4.2. Arrancar el instalador

  1. Se arranca con ./runInstaller
    • Puede que falte una librería: sudo yum install libnsl
  2. Instalar sólo el software de la base de datos
  3. Elegir Single instance database
  4. Edición Enterprise

1.png

2.png

3.png

1.4.3. Directorios de Oracle

Dejamos los directorios por defecto:

  • Oracle Base: /opt/app/alumno
  • Software en /opt/oracle-install
  • Inventory en /opt/app/oraInventory
    • Dejamos el grupo a alumno

4.png

5.png

1.4.4. Grupos de Linux

  • Elegir wheel
    • Es un grupo administrador en Centos
    • El usuario alumno ya pertenece a él

6.png

1.4.5. Ejecución de scripts como root

  • La instalación necesitará modificar el sistema, pero se ha lanzado como alumno
  • No dejaremos que el instalador ejecute nada como root, lo haremos manualmente

7.png

1.4.6. Comprobaciones

  • Ignoramos la falta de memoria
  • El instalador detectará algunos errores, pero genera unos scripts de fix
    • Son parámetros del kernel de Linux
    • Los scripts se ejecutan como administrador
    • sudo bash runfixup.sh
  • Se necesitan instalar varios paquetes de software
    • sudo yum install paquete
    • Es necesario que la máquina virtual tenga acceso a internet (debería estar en Bridged, pero también funciona NAT)

8.png

sudo yum install sudo yum install sysstat ksh make glibc-devel

1.4.7. Resumen

  • Se debe grabar la información de la hoja de resumen

9.png

1.4.8. scripts de configuración

  • /opt/home/alumno//oraInventory/orainstRoot.sh
[alumno@centos7 oraInventory]$ sudo ./orainstRoot.sh 
[sudo] password for alumno: 
Changing permissions of /home/alumno/oraInventory.
Adding read,write permissions for group.
Removing read,write,execute permissions for world.

Changing groupname of /home/alumno/oraInventory to alumno.
The execution of the script is complete.
  • /home/alumno/oracle-install/root.sh
[alumno@centos7 oracle-install-18c]$ sudo ./root.sh
Performing root user operation.

The following environment variables are set as:
    ORACLE_OWNER= alumno
    ORACLE_HOME=  /opt/oracle-install

Enter the full pathname of the local bin directory: [/usr/local/bin]: 
   Copying dbhome to /usr/local/bin ...
   Copying oraenv to /usr/local/bin ...
   Copying coraenv to /usr/local/bin ...


Creating /etc/oratab file...
Entries will be added to the /etc/oratab file as needed by
Database Configuration Assistant when a database is created
Finished running generic part of root script.
Now product-specific root actions will be performed.
Do you want to setup Oracle Trace File Analyzer (TFA) now ? yes|[no] : 

Oracle Trace File Analyzer (TFA - Non Daemon Mode) is available at :
    /opt//oracle-install/suptools/tfa/release/tfa_home/bin/tfactl

Note :
1. tfactl will use TFA Daemon Mode if TFA already running in Daemon Mode and user has access to TFA
2. tfactl will configure TFA Non Daemon Mode only if user has no access to TFA Daemon mode or TFA Daemon mode is not installed

OR

Oracle Trace File Analyzer (TFA - Daemon Mode) can be installed by running this script :
    /opt//oracle-install/suptools/tfa/release/tfa_home/install/roottfa.sh

1.4.9. Finalización

  • Necesitamos definir algunas variables de entorno (ficheros ~/.profile, ~/.bash_profile, ~/.bashrc)
    • ORACLE_HOME: /opt/oracle-install
    • Incluir $ORACLE_HOME/bin en el PATH
  • También se puede usar el comando oraenv para definir estas variables

1.4.10. Relación entre ficheros de inicio de shell

ficheros-inicio-bash.svg

1.4.11. Reiniciar

  • En un servidor real no se hace, pero aquí es lo más cómodo para que funcionen las nuevas variables de entorno
  • Después, podemos ver que los programas están, pero no hacen nada
 [alumno@fedora-64-26 ~]$ sqlplus / as sysdba

 SQL*Plus: Release 12.1.0.2.0 Production on Thu Sep 14 11:58:09 2017

 Copyright (c) 1982, 2014, Oracle.  All rights reserved.

 ERROR:
 ORA-12162: TNS:net service name is incorrectly specified


 Enter user-name: 

2. Creación de una instancia de base de datos

  • Comando dbca
  • No estará en el PATH si no se ha incluido (por ejemplo, con oraenv)
  • Utilizad la configuración típica
    • Nombre: asir
    • Es obligatorio que sea una container database
    • Pluggable database: pdasir
    • Recordad la contraseña
  • Guardad la información de la página de resumen (por si acaso)

1.png

2.png

3.png

4.png

2.1. Password management

  • Lista de usuarios
  • Se puede
    • Bloquearse o desbloquearse
    • Cambiar su contraseña

2.2. ¡Ya se puede conectar!

  • Es necesario informar a sqlplus del SID
  • Pero solo se puede conectar desde la máquina local
[alumno@oraclelinux-r8 ~]$ ORACLE_SID=asir sqlplus / as sysdba                            

SQL*Plus: Release 21.0.0.0.0 - Production on Thu Sep 7 13:48:47 2023                                       
Version 21.3.0.0.0

Copyright (c) 1982, 2021, Oracle.  All rights reserved.                                                    


Connected to:
Oracle Database 21c Enterprise Edition Release 21.0.0.0.0 - Production                                     
Version 21.3.0.0.0

SQL> show pdbs;

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED                                            
---------- ------------------------------ ---------- ----------                                            
         2 PDB$SEED                       READ ONLY  NO                                                    
         3 PDASIR                         READ WRITE NO                                                    
SQL> alter session set container=PDASIR
  2  ;

Session altered.

SQL> select * from dual;

D
-
X

SQL>

3. Instancia / listener / base de datos

  • Instancia:
    • Varios procesos funcionando
    • Permite manipular una o varias base de datos (En Oracle solo una)
  • Base de datos
    • Varios ficheros
    • Contienen datos, índices, esquema,…
  • Listener
    • Proceso que admite conexiones de clientes
    • En otros SGBD (MySQL) la instancia es su propio listener
    • Conecta los clientes con la instancia pedida

3.1. Instancias y bases de DATOS

diagrama-instancias-bbdd.png

3.2. Ejemplo (I) de listener

cliente-listener-instancia.png

3.3. Ejemplo (II) de listener

cliente-listener-instancia-complejo.png

3.4. Pluggable databases de Oracle

  • Desde la versión ¿21?, la base de datos de Oracle es obligatoriamente Container database
    • Es el ORACLE_SID
    • Se pueden definir usuarios globales
    • Pero los datos deben estar en pluggable databases
  • Una pluggable database
    • Depende de una Container database
    • Tiene sus propios usuarios y tablas
    • No es un SID, es un servicio
  • Nombre oficial: Oracle multitenant

With-PDB.png

Fuente

3.5. Cambiar de pluggable database

ALTER SESSION SET container=CDB$ROOT;
ALTER SESSION SET container=NOMBREDEPLUGGABLEDATABASE;

4. Creación de un listener

  • Permiten las conexiones de clientes remotos
  • Comando netca
    • Listener configuration
    • Nombre del listener: LISTENER
    • Protocolo TCP
    • Puerto 1521
  • Comprobar la configuración creada en el fichero listener.ora
    • Si luego falla, revisar ADR_BASE_LISTENER

4.1. Arrancar y parar el listener

  • Arrancar:

      lsnrctl start
    
  • Parar:

      lsnrctl stop
    
  • Comprobar si la instancia se ha conectado

      lsnrctl status
    

5. Conexión remota

5.1. Acceso por redes

  • Es necesario conocer la IP de nuestro servidor
    • ifconfig
    • hostname -I
  • Es necesario que el ordenador cliente pueda acceder al servidor
    • Tipo de conexión de la máquina virtual: mejor bridged
    • ping
    • Firewall:
      • systemctl disable firewalld
      • sudo firewall-cmd --permanent --add-port=1521/tcp

5.1.1. Conexión remota

  • Es necesario conocer la IP o el nombre del ordenador remoto
  • Si nos fiamos de DHCP, cada día puede ser una IP distinta
  • Es mejor usar un nombre
    • DNS: muy difícil
    • Nombres netbios de Windows
    • Nombres zeroconf/avahi de Linux/Mac (preferido)

5.2. Configuración de las conexiones (sqlplus)

  • El cliente sqlplus utiliza las conexiones definidas en el fichero tnsnames.ora
  • Con el comando netca
    • Elegir los nombres locales (Local net service name configuration)
  • Se puede usar también una cadena de conexión

        sqlplus username/password@host:port/service
    
        sqlplus sys/alumno@centosprofe.local/asir as sysdba
    
        sqlplus sys@\"host:port/service\" as sysdba
    

5.3. Instalación de sqlplus

See the Instant Client Home Page for more information.

  • Installation of ZIP files:
    1. Download the desired Instant Client ZIP files. All installations require the Basic or Basic Light package.
    2. Unzip the packages into a single directory such as /opt/oracle/instantclient122 that is accessible to your application. For example:

           cd /opt/oracle                     
           unzip instantclient-basic-linux.x64-12.2.0.1.0.zip
      
    3. Create the appropriate libclntsh.so and libocci.so links for the version of Instant Client. For example:

           cd /opt/oracle/instantclient_12_2
           ln -s libclntsh.so.12.1 libclntsh.so
           ln -s libocci.so.12.1 libocci.so
      
    4. Install the libaio package, for example on Oracle Linux, run this as the root user:

           yum install libaio
      

      On some Linux distributions the package is called libaio1.

    5. Set the environment variable LDLIBRARYPATH to the directory created in Step 2, for example:

           export LD_LIBRARY_PATH=/opt/oracle/instantclient_12_2:$LD_LIBRARY_PATH
      

      Alternatively, add this path to an ldconfig configuration file if there is no other Oracle software that will be impacted.

    6. To use supplied binaries such as SQL*Plus, update your PATH environment variable, for example:

           export PATH=/opt/oracle/instantclient_12_2:$PATH
      
    7. Start your application.

6. Dirección IP

  • Pondremos IP estática
    • etc/sysconfig/network-scripts/ifcfg-enp0s3

          BOOTPROTO=none
          PREFIX=16
          IPADDR=10.1.35.xxx
      
    • Lista de direcciones
  • También se puede usar sudo nmtui

7. Arrancar y parar la base de datos

  • Se necesitan las variables ORACLE_HOME, ORACLE_SID, PATH, ORACLE_BASE.

    • Se definen manualmente con ayuda del script oraenv:
      source oraenv
    
  • Arrancar y parar la base de datos

      dbstart $ORACLE_HOME
      dbshut $ORACLE_HOME
    
  • Arrancar y parar el listener. Comprobar que se admiten conexiones

      lsnrctl start
      lsnrctl stop
      lsnrctl status
    

7.1. A mí dbstart y dbshut no me funcionan

Se puede hacer a mano. Lo veremos en el próximo tema.

[alumno@centos7 ~]$ export ORACLE_SID=asir
[alumno@centos7 ~]$ sqlplus / as sysdba

SQL*Plus: Release 12.1.0.2.0 Production on Tue Sep 19 10:40:54 2017

Copyright (c) 1982, 2014, Oracle.  All rights reserved.

Connected to an idle instance.

SQL> startup open
ORACLE instance started.

Total System Global Area 1207959552 bytes
Fixed Size                  2923776 bytes
Variable Size             822084352 bytes
Database Buffers          369098752 bytes
Redo Buffers               13852672 bytes
Database mounted.
Database opened.
SQL> 

8. Cosas que hemos aprendido de pasada

  • Variables de entorno
    • Variable PATH
  • Conexiones remotas
    • ssh con redirección del Xserver
    • Con vnc
  • Edición de ficheros de texto
  • Instalación de paquetes en Centos
  • Conexiones de red (bridged, NAT)
  • Elevación de permisos con sudo
  • Descompresión de ficheros zip

Nada de esto es directamente bases de datos…

… pero ha sido necesario para instalar Oracle

8.1. Comandos

cd Cambia el directorio actual
echo Escribe los parámetros pasados
df Espacio de disco usado
unzip Descomprime un zip
updatedb Actualiza la lista de ficheros del disco para locate
locate, whereis Busca un fichero por nombre
ssh Conexión remota
grep Busca líneas con un texto
nano Editor de ficheros
netstat Ver conexiones de red
nc Conectarse por TCP o UDP
systemctl Activa y desactiva servicios (firewall)
nmtui Control de conexiones de red

8.2. Comandos, shell y variables

$variable Valor de una variable (de export y env )
| Manda la salida de un programa a la entrada de otro
$HOME/.bashrc script de inicio del usuario
source Ejecuta un script dentro de la shell actual
export Define una variable
env Lista de variables
PATH Lista de directorios donde se buscan comandos
history Lista de comandos introducidos en la shell

9. Diagrama resumen

diagrama-instalacion-oracle.svg

10. Referencias

Autor: Álvaro González Sotillo

Created: 2024-09-28 sáb 18:11

Validate