Instalación de Oracle
Índice
- 1. Instalación del software de base de datos
- 2. Creación de una instancia de base de datos
- 3. Instancia / listener / base de datos
- 4. Creación de un listener
- 5. Conexión remota
- 6. Dirección IP
- 7. Arrancar y parar la base de datos
- 8. Cosas que hemos aprendido de pasada
- 9. Diagrama resumen
- 10. Referencias
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 en127.0.0.1
::1
- Por ejemplo
- 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/
- Sugerencia: línea de comandos
- Para hacer sitio, podemos borrar los ficheros
zip
una vez descomprimidos
1.4.2. Arrancar el instalador
- Se arranca con
./runInstaller
- Puede que falte una librería:
sudo yum install libnsl
- Puede que falte una librería:
- Instalar sólo el software de la base de datos
- Elegir Single instance database
- Edición Enterprise
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
- Dejamos el grupo a
1.4.4. Grupos de Linux
- Elegir
wheel
- Es un grupo administrador en Centos
- El usuario
alumno
ya pertenece a él
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
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)
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
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 elPATH
- También se puede usar el comando
oraenv
para definir estas variables
1.4.10. Relación entre ficheros de inicio de shell
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, conoraenv
) - Utilizad la configuración típica
- Nombre:
asir
- Es obligatorio que sea una container database
- Pluggable database:
pdasir
- Recordad la contraseña
- Nombre:
- Guardad la información de la página de resumen (por si acaso)
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
delSID
- 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
3.2. Ejemplo (I) de listener
3.3. Ejemplo (II) de listener
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
- Es el
- 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
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
- Si luego falla, revisar
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 ficherotnsnames.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
- El cliente sqlplus viene en la instalación de oracle
- Pero también puede instalarse por separado:
- http://www.oracle.com/technetwork/topics/linuxx86-64soft-092277.html
- https://download.oracle.com/otn_software/linux/instantclient/193000/instantclient-basic-linux.x64-19.3.0.0.0dbru.zip
- https://download.oracle.com/otn_software/linux/instantclient/193000/instantclient-sqlplus-linux.x64-19.3.0.0.0dbru.zip
- Tras descomprimir, hay que definir las variables
ORACLE_HOME
yLD_LIBRARY_PATH
al directorio de instalación - Puede ser necesaria la libería
libaio
See the Instant Client Home Page for more information.
- Installation of ZIP files:
- Download the desired Instant Client ZIP files. All installations require the Basic or Basic Light package.
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
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
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.
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.
To use supplied binaries such as SQL*Plus, update your PATH environment variable, for example:
export PATH=/opt/oracle/instantclient_12_2:$PATH
- 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
- Se definen manualmente con ayuda del script
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
- Variable
- 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
10. Referencias
- Formatos:
- Creado con:
- Alojado en Github