6.7 KiB
title | date | draft | image | categories | tags | |||||
---|---|---|---|---|---|---|---|---|---|---|
Instalación Oracle 19c en Rocky linux 8 | 2022-10-26T08:33:15+02:00 | false | featured.png |
|
|
Se va a realizar la instalación de Oracle 19c en Rocky linux 8, debido a su mayor compatibilidad con el programa y menor número de fallos que con Debian 11.
Pasos previos
Los siguientes pasos se deben ejecutar como usuario root. Actualizamos el sistema:
dnf makecache
dnf update -y
Si al ejecutarlo se actualiza el kernel, deberíamos reiniciar la máquina.
como indica la documentación, instalamos los requisitos previos. Sin embargo, al no estar en centos 7, tenemos que instalar manualmente unos paquetes
dnf install -y bc binutils compat-openssl10 elfutils-libelf glibc glibc-devel ksh libaio libXrender libX11 libXau libXi libXtst libgcc libnsl libstdc++ libxcb libibverbs make policycoreutils policycoreutils-python-utils smartmontools sysstat libnsl2 net-tools nfs-utils unzip
dnf install -y http://mirror.centos.org/centos/7/os/x86_64/Packages/compat-libcap1-1.10-7.el7.x86_64.rpm
dnf install -y http://mirror.centos.org/centos/7/os/x86_64/Packages/compat-libstdc++-33-3.2.3-72.el7.x86_64.rpm
Después descargamos los requisitos previos y los instalamos:
curl -o oracle-database-preinstall-19c-1.0-1.el7.x86_64.rpm https://yum.oracle.com/repo/OracleLinux/OL7/latest/x86_64/getPackage/oracle-database-preinstall-19c-1.0-1.el7.x86_64.rpm
yum -y localinstall oracle-database-preinstall-19c-1.0-1.el7.x86_64.rpm
Configuramos el firewall
firewall-cmd --permanent --add-port=1521/tcp
firewall-cmd --reload
configuramos el target mode de SELinux a permisivo:
sed -i 's/^SELINUX=.*/SELINUX=permissive/g' /etc/selinux/config
setenforce permissive
Instalación
Ahora descargamos el paquete rpm de la página oficial de oracle:
yum -y localinstall oracle-database-ee-19c-1.0-1.x86_64.rpm
Como nos indica al final de la instalación, creamos la base de datos de pruebas ejecutando el siguiente script:
/etc/init.d/oracledb_ORCLCDB-19c configure
Tras la ejecución, tenemos que iniciar sesión con el usuario oracle que se ha creado durante la misma, Y añadirle las siguientes variables al fichero .bash_profile
{{< highlight bash "linenos=table" >}} umask 022 export ORACLE_SID=ORCLCDB export ORACLE_BASE=/opt/oracle/oradata export ORACLE_HOME=/opt/oracle/product/19c/dbhome_1 export PATH=$PATH:$ORACLE_HOME/bin {{< / highlight >}}
Recargamos el fichero para que las variables tengan efecto:
source ~/.bash_profile
Tras este paso ya está instalado oracle, Ahora sigue crear la base de datos. Primero activamos el listener:
lsnrctl start
Para facilitar la utilización de sqlplus
vamos a instalar el paquete rlwrap
, que permite que utilicemos el cursor, tanto para desplazarnos por las líneas como para rescatar comandos.
dnf install epel-release
dnf install rlwrap -y
ahora creamos el siguiente alias en ~/.bashrc
:
alias sqlplus='rlwrap sqlplus'
Configuración
Primero nos conectamos a la base de datos como sysdba:
sqlplus / as sysdba
y podemos comprobar la versión de oracle con la siguiente consulta:
SELECT instance_name, host_name, version, startup_time FROM v$instance;
Creación de usuario con privilegios
Vamos a crear un usuario para poder acceder a la base de datos sin utilizar el sysdba, con los siguientes comandos. Antes de crear el usuario, tenemos que activar _ORACLE_SCRIPT
para que se puedan ejecutar sin errores los siguientes comandos:
alter session set "_ORACLE_SCRIPT"=true;
CREATE USER roberto IDENTIFIED BY roberto;
GRANT ALL PRIVILEGES TO roberto;
Una vez creado el usuario podemos conectarnos con él utilizando el siguiente comando:
sqlplus roberto/roberto
Creación de tablas
Vamos a introducir a modo de prueba, el esquema scott:
CREATE TABLE DEPT
(
DEPTNO NUMBER(2),
DNAME VARCHAR2(14),
LOC VARCHAR2(13),
CONSTRAINT PK_DEPT PRIMARY KEY (DEPTNO)
);
CREATE TABLE EMP
(
EMPNO NUMBER(4),
ENAME VARCHAR2(10),
JOB VARCHAR2(9),
MGR NUMBER(4),
HIREDATE DATE,
SAL NUMBER(7, 2),
COMM NUMBER(7, 2),
DEPTNO NUMBER(2),
CONSTRAINT FK_DEPTNO FOREIGN KEY (DEPTNO) REFERENCES DEPT (DEPTNO),
CONSTRAINT PK_EMP PRIMARY KEY (EMPNO)
);
INSERT INTO DEPT VALUES (10, 'ACCOUNTING', 'NEW YORK');
INSERT INTO DEPT VALUES (20, 'RESEARCH', 'DALLAS');
INSERT INTO DEPT VALUES (30, 'SALES', 'CHICAGO');
INSERT INTO DEPT VALUES (40, 'OPERATIONS', 'BOSTON');
INSERT INTO EMP VALUES(7369, 'SMITH', 'CLERK', 7902,TO_DATE('17-DIC-1980', 'DD-MON-YYYY'), 800, NULL, 20);
INSERT INTO EMP VALUES(7499, 'ALLEN', 'SALESMAN', 7698,TO_DATE('20-FEB-1981', 'DD-MON-YYYY'), 1600, 300, 30);
INSERT INTO EMP VALUES(7521, 'WARD', 'SALESMAN', 7698,TO_DATE('22-FEB-1981', 'DD-MON-YYYY'), 1250, 500, 30);
INSERT INTO EMP VALUES(7566, 'JONES', 'MANAGER', 7839,TO_DATE('2-ABR-1981', 'DD-MON-YYYY'), 2975, NULL, 20);
INSERT INTO EMP VALUES(7654, 'MARTIN', 'SALESMAN', 7698,TO_DATE('28-SEP-1981', 'DD-MON-YYYY'), 1250, 1400, 30);
INSERT INTO EMP VALUES(7698, 'BLAKE', 'MANAGER', 7839,TO_DATE('1-MAY-1981', 'DD-MON-YYYY'), 2850, NULL, 30);
INSERT INTO EMP VALUES(7782, 'CLARK', 'MANAGER', 7839,TO_DATE('9-JUN-1981', 'DD-MON-YYYY'), 2450, NULL, 10);
INSERT INTO EMP VALUES(7788, 'SCOTT', 'ANALYST', 7566,TO_DATE('09-DIC-1982', 'DD-MON-YYYY'), 3000, NULL, 20);
INSERT INTO EMP VALUES(7839, 'KING', 'PRESIDENT', NULL,TO_DATE('17-NOV-1981', 'DD-MON-YYYY'), 5000, NULL, 10);
INSERT INTO EMP VALUES(7844, 'TURNER', 'SALESMAN', 7698,TO_DATE('8-SEP-1981', 'DD-MON-YYYY'), 1500, 0, 30);
INSERT INTO EMP VALUES(7876, 'ADAMS', 'CLERK', 7788,TO_DATE('12-ENE-1983', 'DD-MON-YYYY'), 1100, NULL, 20);
INSERT INTO EMP VALUES(7900, 'JAMES', 'CLERK', 7698,TO_DATE('3-DIC-1981', 'DD-MON-YYYY'), 950, NULL, 30);
INSERT INTO EMP VALUES(7902, 'FORD', 'ANALYST', 7566,TO_DATE('3-DIC-1981', 'DD-MON-YYYY'), 3000, NULL, 20);
INSERT INTO EMP VALUES(7934, 'MILLER', 'CLERK', 7782,TO_DATE('23-ENE-1982', 'DD-MON-YYYY'), 1300, NULL, 10);
COMMIT;
Las tablas se crean sin errores y se introducen los valores. Podemos realizar una consulta sencilla:
SELECT ename
FROM emp
WHERE deptno = (SELECT deptno
FROM dept
WHERE dname = 'SALES');