DOCUMENTO DE PRACTICAS
ADMINISTRACIÓN Y OPTIMIZACIÓN DE BASES DE DATOS
CHRISTIAM ALEJANDRO NIÑO PEÑA
INTRODUCCIÓN
Las siguientes unidades contienen las prácticas generales de administración de
base de datos que servirán de fundamento práctico en la ejecución del módulo.
Se debe tener en cuenta las convenciones de ejecución de comandos e
instrucciones ya sean de sistema operativo, RMAN o SQL PLUS
CONVENCIONES
$> Sistema operativo
SQL> SQL PLUS
RMAN> RMAN (Recovery Manager)
CHRISTIAM ALEJANDRO NIÑO PEÑA - 3202321711
ADMINISTRACIÓN Y OPTIMIZACIÓN DE BASES DE DATOS - 2019
DOCUMENTO DE PRACTICAS
1. EJERCICIOS MÓDULO 1
Esta práctica podrá realizarse tanto con SQL*PLUS o SQL Developer.
Antes de comenzar a realizar los ejercicios hay que conectarse a la base de
datos con usuario system/oracle123@TEST
1.1. BUSCAR LOS ARCHIVOS DE LA BASE DE DATOS
1.1.1. Consultar donde se encuentran los controlfiles:
SQL> SELECT name FROM v$controlfile;
NAME
---------------------------------------------------------------------
/u01/data/TEST/control01.ctl
/u01/fra/TEST/control02.ctl
1.1.2. Consultar donde se encuentran los redo log files:
SQL> SELECT member FROM v$logfile;
MEMBER
----------------------------------------------------------------------
----------
/u01/data/TEST/redo03.log
/u01/data/TEST/redo02.log
/u01/data/TEST/redo01.log
1.1.3. Consultar donde se encuentran los datafiles y cuál es su tamaño en MB:
SQL> column name format a40
SQL> SELECT name, bytes/1024/1024 MB FROM v$datafile;
NAME MB
---------------------------------------- ----------
/u01/data/TEST/system01.dbf 800
/u01/data/TEST/sysaux01.dbf 440
/u01/data/TEST/undotbs01.dbf 45
/u01/data/TEST/users01.dbf 5
CHRISTIAM ALEJANDRO NIÑO PEÑA - 3202321711
ADMINISTRACIÓN Y OPTIMIZACIÓN DE BASES DE DATOS - 2019
DOCUMENTO DE PRACTICAS
1.2. INVESTIGAR LAS ESTRUCTURAS DE MEMORIA DE LA INSTANCIA
1.2.1. Consultar el tamaño actual, mínimo y máximo de los componentes de la
SGA que pueden cambiar su tamaño dinámicamente:
SQL> set linesize 200
SQL> column component format a40
SQL> SELECT component,current_size,min_size,max_size
FROM v$sga_dynamic_components;
COMPONENT CURRENT_SIZE MIN_SIZE MAX_SIZE
---------------------------------------- ------------ ---------- ----------
shared pool 234881024 201326592 234881024
large pool 16777216 16777216 150994944
java pool 16777216 16777216 16777216
streams pool 0 0 0
DEFAULT buffer cache 587202560 536870912 654311424
KEEP buffer cache 0 0 0
RECYCLE buffer cache 0 0 0
DEFAULT 2K buffer cache 0 0 0
DEFAULT 4K buffer cache 0 0 0
DEFAULT 8K buffer cache 0 0 0
DEFAULT 16K buffer cache 0 0 0
COMPONENT CURRENT_SIZE MIN_SIZE MAX_SIZE
---------------------------------------- ------------ ---------- ----------
DEFAULT 32K buffer cache 0 0 0
Shared IO Pool 50331648 0 50331648
Data Transfer Cache 0 0 0
In-Memory Area 0 0 0
In Memory RW Extension Area 0 0 0
In Memory RO Extension Area 0 0 0
ASM Buffer Cache 0 0 0
18 filas seleccionadas.
1.2.2. Determinar cuál ha sido la máxima memoria asignada para la PGA y el
tamaño actual de la misma:
SQL> SELECT name,value/1024/1024 MB
FROM v$pgastat
WHERE name IN ('maximum PGA allocated','total PGA allocated');
NAME MB
---------------------------------------- ----------
total PGA allocated 139,533203
maximum PGA allocated 173,963867
CHRISTIAM ALEJANDRO NIÑO PEÑA - 3202321711
ADMINISTRACIÓN Y OPTIMIZACIÓN DE BASES DE DATOS - 2019
DOCUMENTO DE PRACTICAS
1.3. INVESTIGAR LOS PROCESOS BACKGROUND
1.3.1. Determinar los procesos que están corriendo en la base actualmente:
SQL> SELECT program FROM v$session ORDER BY program;
PROGRAM
------------------------------------------------
[email protected] (AQPC)
[email protected] (CJQ0)
[email protected] (CKPT)
[email protected] (CLMN)
[email protected] (DBRM)
[email protected] (DBW0)
[email protected] (DIAG)
[email protected] (DIA0)
[email protected] (GEN0)
[email protected] (GEN1)
[email protected] (LGWR)
PROGRAM
------------------------------------------------
[email protected] (LREG)
[email protected] (MMAN)
[email protected] (MMNL)
[email protected] (MMON)
[email protected] (OFSD)
[email protected] (PMAN)
[email protected] (PMON)
[email protected] (PSP0)
[email protected] (PXMN)
[email protected] (QM02)
[email protected] (Q001)
PROGRAM
------------------------------------------------
[email protected] (Q003)
[email protected] (RECO)
[email protected] (SCMN)
[email protected] (SCMN)
[email protected] (SMCO)
[email protected] (SMON)
[email protected] (SVCB)
[email protected] (S000)
[email protected] (S000)
[email protected] (S001)
[email protected] (S004)
PROGRAM
------------------------------------------------
[email protected] (TMON)
[email protected] (TT00)
[email protected] (TT01)
[email protected] (TT02)
[email protected] (VKRM)
[email protected] (VKTM)
[email protected] (W000)
[email protected] (W001)
[email protected] (W004)
[email protected] (W007)
CHRISTIAM ALEJANDRO NIÑO PEÑA - 3202321711
ADMINISTRACIÓN Y OPTIMIZACIÓN DE BASES DE DATOS - 2019
DOCUMENTO DE PRACTICAS
SQL Developer
PROGRAM
------------------------------------------------
SQL Developer
[email protected] (TNS V1-V3)
46 filas seleccionadas.
SQL> SELECT program FROM v$process ORDER BY program;
PROGRAM
------------------------------------------------
[email protected]
[email protected]
[email protected] (AQPC)
[email protected] (CJQ0)
[email protected] (CKPT)
[email protected] (CLMN)
[email protected] (DBRM)
[email protected] (DBW0)
[email protected] (DIAG)
[email protected] (DIA0)
[email protected] (D000)
PROGRAM
------------------------------------------------
[email protected] (GEN0)
[email protected] (GEN1)
[email protected] (LGWR)
[email protected] (LREG)
[email protected] (MMAN)
[email protected] (MMNL)
[email protected] (MMON)
[email protected] (OFSD)
[email protected] (PMAN)
[email protected] (PMON)
[email protected] (PSP0)
PROGRAM
------------------------------------------------
[email protected] (PXMN)
[email protected] (P000)
[email protected] (P001)
[email protected] (P002)
[email protected] (P003)
[email protected] (QM02)
[email protected] (Q001)
[email protected] (Q003)
[email protected] (RECO)
[email protected] (SCMN)
[email protected] (SCMN)
PROGRAM
------------------------------------------------
[email protected] (SMCO)
[email protected] (SMON)
[email protected] (SVCB)
[email protected] (S000)
[email protected] (TMON)
[email protected] (TNS V1-V3)
CHRISTIAM ALEJANDRO NIÑO PEÑA - 3202321711
ADMINISTRACIÓN Y OPTIMIZACIÓN DE BASES DE DATOS - 2019
DOCUMENTO DE PRACTICAS
[email protected] (TT00)
[email protected] (TT01)
[email protected] (TT02)
[email protected] (VKRM)
[email protected] (VKTM)
PROGRAM
------------------------------------------------
[email protected] (W000)
[email protected] (W001)
[email protected] (W004)
[email protected] (W007)
PSEUDO
49 filas seleccionadas.
1.3.2. En una terminal de Linux ejecutar este comando para ver los procesos
corriendo de la instancia desde el sistema operativo
[oracle@TEST ~]$ ps -ef|grep oracle
root 2785 2745 0 11:26 pts/0 00:00:00 su - oracle
oracle 2786 2785 0 11:26 pts/0 00:00:00 -bash
oracle 2866 1 0 11:26 ? 00:00:00 /u01/oracle/12.2/bin/tnslsnr
TEST -inherit
oracle 2874 1 0 11:27 ? 00:00:00 ora_pmon_TEST
oracle 2876 1 0 11:27 ? 00:00:00 ora_clmn_TEST
oracle 2878 1 0 11:27 ? 00:00:00 ora_psp0_TEST
oracle 2880 1 1 11:27 ? 00:00:49 ora_vktm_TEST
oracle 2884 1 0 11:27 ? 00:00:00 ora_gen0_TEST
oracle 2888 1 0 11:27 ? 00:00:00 ora_mman_TEST
oracle 2890 1 0 11:27 ? 00:00:00 ora_gen1_TEST
oracle 2894 1 0 11:27 ? 00:00:00 ora_diag_TEST
oracle 2896 1 0 11:27 ? 00:00:00 ora_ofsd_TEST
oracle 2900 1 0 11:27 ? 00:00:00 ora_dbrm_TEST
oracle 2902 1 0 11:27 ? 00:00:00 ora_vkrm_TEST
oracle 2904 1 0 11:27 ? 00:00:00 ora_svcb_TEST
oracle 2906 1 0 11:27 ? 00:00:00 ora_pman_TEST
oracle 2908 1 0 11:27 ? 00:00:01 ora_dia0_TEST
oracle 2910 1 0 11:27 ? 00:00:00 ora_dbw0_TEST
oracle 2912 1 0 11:27 ? 00:00:00 ora_lgwr_TEST
oracle 2914 1 0 11:27 ? 00:00:00 ora_ckpt_TEST
oracle 2916 1 0 11:27 ? 00:00:00 ora_smon_TEST
oracle 2918 1 0 11:27 ? 00:00:00 ora_smco_TEST
oracle 2920 1 0 11:27 ? 00:00:00 ora_reco_TEST
oracle 2922 1 0 11:27 ? 00:00:00 ora_w000_TEST
oracle 2924 1 0 11:27 ? 00:00:00 ora_lreg_TEST
oracle 2926 1 0 11:27 ? 00:00:00 ora_w001_TEST
oracle 2928 1 0 11:27 ? 00:00:00 ora_pxmn_TEST
oracle 2932 1 0 11:27 ? 00:00:05 ora_mmon_TEST
oracle 2934 1 0 11:27 ? 00:00:00 ora_mmnl_TEST
oracle 2936 1 0 11:27 ? 00:00:00 ora_d000_TEST
oracle 2938 1 0 11:27 ? 00:00:15 ora_s000_TEST
oracle 2940 1 0 11:27 ? 00:00:00 ora_tmon_TEST
oracle 2948 1 0 11:27 ? 00:00:00 ora_tt00_TEST
oracle 2950 1 0 11:27 ? 00:00:00 ora_tt01_TEST
oracle 2952 1 0 11:27 ? 00:00:00 ora_tt02_TEST
oracle 2954 1 0 11:27 ? 00:00:00 ora_aqpc_TEST
oracle 2958 1 0 11:27 ? 00:00:00 ora_p000_TEST
oracle 2960 1 0 11:27 ? 00:00:00 ora_p001_TEST
oracle 2962 1 0 11:27 ? 00:00:00 ora_p002_TEST
oracle 2964 1 0 11:27 ? 00:00:00 ora_p003_TEST
oracle 2966 1 0 11:27 ? 00:00:01 ora_cjq0_TEST
oracle 3132 1 0 11:27 ? 00:00:00 ora_qm02_TEST
oracle 3134 1 0 11:27 ? 00:00:00 ora_q001_TEST
oracle 3138 1 0 11:27 ? 00:00:00 ora_q003_TEST
CHRISTIAM ALEJANDRO NIÑO PEÑA - 3202321711
ADMINISTRACIÓN Y OPTIMIZACIÓN DE BASES DE DATOS - 2019
DOCUMENTO DE PRACTICAS
oracle 3193 1 0 11:27 ? 00:00:02 oracleTEST (LOCAL=NO)
oracle 3472 1 0 11:40 ? 00:00:00 ora_w007_TEST
root 4057 4018 0 12:06 pts/1 00:00:00 su - oracle
oracle 4058 4057 0 12:06 pts/1 00:00:00 -bash
oracle 4116 1 0 12:07 ? 00:00:00 oracleTEST (LOCAL=NO)
oracle 4120 1 0 12:07 ? 00:00:00 ora_w004_TEST
oracle 4363 4058 0 12:20 pts/1 00:00:00 ps -ef
oracle 4364 4058 0 12:20 pts/1 00:00:00 grep --color=auto oracle
CHRISTIAM ALEJANDRO NIÑO PEÑA - 3202321711
ADMINISTRACIÓN Y OPTIMIZACIÓN DE BASES DE DATOS - 2019
DOCUMENTO DE PRACTICAS
1.4. INVESTIGAR ESTRUCTURA LÓGICA DE LA BASE DE DATOS
1.4.1. Crear una tabla llamada tabla1 con el siguiente script:
[oracle@TEST ~]$ sqlplus / as sysdba;
SQL*Plus: Release 12.2.0.1.0 Production on Mon Jul 17 12:23:11 2017
Copyright (c) 1982, 2016, Oracle. All rights reserved.
Conectado a:
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit
Production
SQL> CREATE TABLE tabla1 (c1 VARCHAR2(10)) TABLESPACE SYSTEM;
Tabla creada.
1.4.2. Verificar que el SEGMENT tabla1 reside en el tablespace SYSTEM, el
tamaño del EXTENT que lo conforma, en que file_id se encuentra el
extent y en qué número de bloque empieza el extent dentro del datafile:
SQL> SELECT tablespace_name, extent_id, bytes, file_id, block_id
FROM dba_extents
WHERE owner='SYSTEM'
AND segment_name='TABLA1';
TABLESPACE_NAME EXTENT_ID BYTES FILE_ID BLOCK_ID
------------------------------ ---------- ---------- ---------- ----------
SYSTEM 0 65536 1 47440
1.4.3. Identificar el nombre del datafile sustituyendo con el valor de file_id
obtenido en la query anterior:
SQL> SELECT name FROM v$datafile WHERE file#=&file_id;
Introduzca un valor para file_id: 1
antiguo 1: SELECT name FROM v$datafile WHERE file#=&file_id
nuevo 1: SELECT name FROM v$datafile WHERE file#=1
NAME
------------------------------------------------------------------------------
/u01/data/TEST/system01.dbf
1.4.4. Crear una tabla llamada tabla2 con el siguiente script:
SQL> CREATE TABLE tabla2 (c1 VARCHAR2(10))
TABLESPACE SYSTEM
STORAGE(MINEXTENTS 4);
Tabla creada.
CHRISTIAM ALEJANDRO NIÑO PEÑA - 3202321711
ADMINISTRACIÓN Y OPTIMIZACIÓN DE BASES DE DATOS - 2019
DOCUMENTO DE PRACTICAS
1.4.5. Verificar extents, en que file_id se encuentra cada extent y en qué
número de bloque empieza cada extent dentro del datafile:
SQL> SELECT tablespace_name, extent_id, bytes, file_id, block_id
FROM dba_extents
WHERE owner='SYSTEM'
AND segment_name='TABLA2';
TABLESPACE_NAME EXTENT_ID BYTES FILE_ID BLOCK_ID
------------------------------ ---------- ---------- ---------- ----------
SYSTEM 0 1048576 1 101376
SYSTEM 1 1048576 1 101504
SYSTEM 2 1048576 1 101632
SYSTEM 3 1048576 1 101760
1.4.6. Verificar el tamaño de bloque del tablespace SYSTEM:
SQL> SELECT block_size
FROM dba_tablespaces
WHERE tablespace_name='SYSTEM';
BLOCK_SIZE
----------
8192
CHRISTIAM ALEJANDRO NIÑO PEÑA - 3202321711
ADMINISTRACIÓN Y OPTIMIZACIÓN DE BASES DE DATOS - 2019
DOCUMENTO DE PRACTICAS
2. EJERCICIOS MÓDULO 2
2.1. INSTALACIÓN DE SOFTWARE ORACLE 12C
CHRISTIAM ALEJANDRO NIÑO PEÑA - 3202321711
ADMINISTRACIÓN Y OPTIMIZACIÓN DE BASES DE DATOS - 2019
DOCUMENTO DE PRACTICAS
3. EJERCICIOS MÓDULO 3
3.1. CREACIÓN DE UN LISTENER CON EL NETCA
3.1.1. Chequear que en la máquina virtual ya está creado el LISTENER
llamado TEST configurado en el puerto 1521. Desde una terminal de
Unix (línea de comandos) hacer:
[oracle@TEST ~]$ ps -ef | grep tnslsnr
oracle 2866 1 0 11:26 ? 00:00:00 /u01/oracle/12.2/bin/tnslsnr
TEST -inherit
oracle 4687 4058 0 12:35 pts/1 00:00:00 grep --color=auto tnslsnr
[oracle@TEST ~]$ lsnrctl status
LSNRCTL for Linux: Version 12.2.0.1.0 - Production on 17-JUL-2017 12:36:12
Copyright (c) 1991, 2016, Oracle. All rights reserved.
Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
STATUS of the LISTENER
------------------------
Alias TEST
Version TNSLSNR for Linux: Version 12.2.0.1.0 - Production
Start Date 17-JUL-2017 11:26:48
Uptime 0 days 1 hr. 9 min. 24 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /u01/oracle/12.2/network/admin/listener.ora
Listener Log File /u01/oracle/diag/tnslsnr/TEST/TEST/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=TEST.test.domain)(PORT=1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcps)(HOST=TEST.test.domain)(PORT=5500))(Secur
ity=(my_wallet_directory=/u01/oracle/admin/TEST/xdb_wallet))(Presentation=HTTP
)(Session=RAW))
Services Summary...
Service "TEST" has 2 instance(s).
Instance "TEST", status UNKNOWN, has 1 handler(s) for this service...
Instance "TEST", status READY, has 1 handler(s) for this service...
Service "TESTXDB" has 1 instance(s).
Instance "TEST", status READY, has 1 handler(s) for this service...
The command completed successfully
3.1.2. Crear nuevo LISTENER llamado TEST_NEW que escuche en el puerto
1535 y verificar su estado:
[oracle@TEST ~]$ export DISPLAY=192.168.56.1:0.0
[oracle@TEST ~]$ netca
Cuando cargue el siguiente mensaje, seleccionar Sí
CHRISTIAM ALEJANDRO NIÑO PEÑA - 3202321711
ADMINISTRACIÓN Y OPTIMIZACIÓN DE BASES DE DATOS - 2019
DOCUMENTO DE PRACTICAS
Paso 1:
Paso 2:
CHRISTIAM ALEJANDRO NIÑO PEÑA - 3202321711
ADMINISTRACIÓN Y OPTIMIZACIÓN DE BASES DE DATOS - 2019
DOCUMENTO DE PRACTICAS
Paso 3:
Paso 4:
CHRISTIAM ALEJANDRO NIÑO PEÑA - 3202321711
ADMINISTRACIÓN Y OPTIMIZACIÓN DE BASES DE DATOS - 2019
DOCUMENTO DE PRACTICAS
Paso 5:
Paso 6:
CHRISTIAM ALEJANDRO NIÑO PEÑA - 3202321711
ADMINISTRACIÓN Y OPTIMIZACIÓN DE BASES DE DATOS - 2019
DOCUMENTO DE PRACTICAS
Paso 7:
Paso 8:
CHRISTIAM ALEJANDRO NIÑO PEÑA - 3202321711
ADMINISTRACIÓN Y OPTIMIZACIÓN DE BASES DE DATOS - 2019
DOCUMENTO DE PRACTICAS
Paso 9:
Paso 10:
Verifique que se inició el listener correctamente, puede notar que donde ejecuto
netca se muestra un mensaje de inicio del listener
[oracle@TEST ~]$ netca
Configuración de Servicios de Red de Oracle:
Configuración del Listener:TEST_NEW
Configuración del listener terminada.
Inicio del Listener de Red de Oracle:
Ejecutando Control del Listener:
/u01/oracle/12.2/bin/lsnrctl start TEST_NEW
Control del Listener Terminado.
El listener se ha iniciado correctamente.
Los Servicios de Red de Oracle se han configurado correctamente. El código de
salida es 0
Ejecute el siguiente comando para validar que el listener este ejecutándose.
[oracle@TEST ~]$ lsnrctl status TEST_NEW
LSNRCTL for Linux: Version 12.2.0.1.0 - Production on 17-JUL-2017 12:51:24
Copyright (c) 1991, 2016, Oracle. All rights reserved.
Connecting to
(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=TEST.test.domain)(PORT=1535)))
STATUS of the LISTENER
------------------------
Alias TEST_NEW
Version TNSLSNR for Linux: Version 12.2.0.1.0 - Production
Start Date 17-JUL-2017 12:47:45
Uptime 0 days 0 hr. 3 min. 39 sec
CHRISTIAM ALEJANDRO NIÑO PEÑA - 3202321711
ADMINISTRACIÓN Y OPTIMIZACIÓN DE BASES DE DATOS - 2019
DOCUMENTO DE PRACTICAS
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /u01/oracle/12.2/network/admin/listener.ora
Listener Log File /u01/oracle/diag/tnslsnr/TEST/TEST_new/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=TEST.test.domain)(PORT=1535)))
The listener supports no services
The command completed successfully
Puede validar la ejecución de los 2 LISTENER por Sistema operativo
[oracle@TEST ~]$ ps -fea | grep tnslsnr
oracle 2866 1 0 11:26 ? 00:00:00 /u01/oracle/12.2/bin/tnslsnr
TEST -inherit
oracle 4951 1 0 12:47 ? 00:00:00 /u01/oracle/12.2/bin/tnslsnr
TEST_NEW -inherit
oracle 5058 4058 0 12:52 pts/1 00:00:00 grep --color=auto tnslsnr
CHRISTIAM ALEJANDRO NIÑO PEÑA - 3202321711
ADMINISTRACIÓN Y OPTIMIZACIÓN DE BASES DE DATOS - 2019
DOCUMENTO DE PRACTICAS
3.2. CREACIÓN DE UNA BASE DE DATOS CON EL DBCA
3.2.1. Crear una instancia llamada PRACTICA
[oracle@TEST ~]$ export DISPLAY=192.168.56.1:0.0
[oracle@TEST ~]$ dbca
Paso 1:
Paso 2:
CHRISTIAM ALEJANDRO NIÑO PEÑA - 3202321711
ADMINISTRACIÓN Y OPTIMIZACIÓN DE BASES DE DATOS - 2019
DOCUMENTO DE PRACTICAS
Paso 3:
Paso 4:
CHRISTIAM ALEJANDRO NIÑO PEÑA - 3202321711
ADMINISTRACIÓN Y OPTIMIZACIÓN DE BASES DE DATOS - 2019
DOCUMENTO DE PRACTICAS
Paso 5:
Paso 6:
CHRISTIAM ALEJANDRO NIÑO PEÑA - 3202321711
ADMINISTRACIÓN Y OPTIMIZACIÓN DE BASES DE DATOS - 2019
DOCUMENTO DE PRACTICAS
Paso 7:
Tamaño FRA: 2900
Paso 8:
CHRISTIAM ALEJANDRO NIÑO PEÑA - 3202321711
ADMINISTRACIÓN Y OPTIMIZACIÓN DE BASES DE DATOS - 2019
DOCUMENTO DE PRACTICAS
Paso 9:
Paso 10:
CHRISTIAM ALEJANDRO NIÑO PEÑA - 3202321711
ADMINISTRACIÓN Y OPTIMIZACIÓN DE BASES DE DATOS - 2019
DOCUMENTO DE PRACTICAS
Paso 11:
Se recomienda dejar valores pequeños de SGA y PGA por cuestión de practica.
Paso 12:
CHRISTIAM ALEJANDRO NIÑO PEÑA - 3202321711
ADMINISTRACIÓN Y OPTIMIZACIÓN DE BASES DE DATOS - 2019
DOCUMENTO DE PRACTICAS
Paso 13:
Paso 14:
CHRISTIAM ALEJANDRO NIÑO PEÑA - 3202321711
ADMINISTRACIÓN Y OPTIMIZACIÓN DE BASES DE DATOS - 2019
DOCUMENTO DE PRACTICAS
Paso 15:
Paso 16:
CHRISTIAM ALEJANDRO NIÑO PEÑA - 3202321711
ADMINISTRACIÓN Y OPTIMIZACIÓN DE BASES DE DATOS - 2019
DOCUMENTO DE PRACTICAS
Paso 17:
Paso 18:
CHRISTIAM ALEJANDRO NIÑO PEÑA - 3202321711
ADMINISTRACIÓN Y OPTIMIZACIÓN DE BASES DE DATOS - 2019
DOCUMENTO DE PRACTICAS
Paso 19:
Paso 20:
CHRISTIAM ALEJANDRO NIÑO PEÑA - 3202321711
ADMINISTRACIÓN Y OPTIMIZACIÓN DE BASES DE DATOS - 2019
DOCUMENTO DE PRACTICAS
Paso 21:
CHRISTIAM ALEJANDRO NIÑO PEÑA - 3202321711
ADMINISTRACIÓN Y OPTIMIZACIÓN DE BASES DE DATOS - 2019
DOCUMENTO DE PRACTICAS
Paso 22:
Paso 23: Comprobar que la instancia este arriba
[oracle@TEST ~]$ export ORACLE_SID=PRACTICA
[oracle@TEST ~]$ sqlplus / as sysdba;
SQL*Plus: Release 12.2.0.1.0 Production on Mon Jul 17 13:25:35 2017
Copyright (c) 1982, 2016, Oracle. All rights reserved.
Conectado a:
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit
Production
SQL> select instance_name,status from v$instance;
INSTANCE_NAME STATUS
---------------- ------------
PRACTICA OPEN
CHRISTIAM ALEJANDRO NIÑO PEÑA - 3202321711
ADMINISTRACIÓN Y OPTIMIZACIÓN DE BASES DE DATOS - 2019
DOCUMENTO DE PRACTICAS
3.3. Otras funciones del DBCA
3.3.1. Borrar la instancia PRACTICA
Desde una terminal de Linux ejecutar:
[oracle@TEST ~]$ export DISPLAY=192.168.56.1:0.0
[oracle@TEST ~]$ export ORACLE_SID=PRACTICA
[oracle@TEST ~]$ dbca
CHRISTIAM ALEJANDRO NIÑO PEÑA - 3202321711
ADMINISTRACIÓN Y OPTIMIZACIÓN DE BASES DE DATOS - 2019
DOCUMENTO DE PRACTICAS
CHRISTIAM ALEJANDRO NIÑO PEÑA - 3202321711
ADMINISTRACIÓN Y OPTIMIZACIÓN DE BASES DE DATOS - 2019
DOCUMENTO DE PRACTICAS
CHRISTIAM ALEJANDRO NIÑO PEÑA - 3202321711
ADMINISTRACIÓN Y OPTIMIZACIÓN DE BASES DE DATOS - 2019
DOCUMENTO DE PRACTICAS
4. EJERCICIOS MÓDULO 4
4.1. DATABASE CONTROL (EM EXPRESS) Y LISTENER
4.1.1. Chequear las variables de entorno ORACLE_HOME y ORACLE_SID, si
no están cargadas realizarlo (en la línea de comandos):
[oracle@TEST ~]$ echo $ORACLE_HOME
/u01/oracle/12.2
[oracle@TEST ~]$ export ORACLE_HOME=/u01/oracle/12.2
[oracle@TEST ~]$ echo $ORACLE_SID
TEST
[oracle@TEST ~]$ export ORACLE_SID=TEST
4.1.2. Chequear el estado del listener y levantarlo si es necesario:
[oracle@TEST ~]$ lsnrctl status
LSNRCTL for Linux: Version 12.2.0.1.0 - Production on 18-JUL-2017
04:51:41
Copyright (c) 1991, 2016, Oracle. All rights reserved.
Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
STATUS of the LISTENER
------------------------
Alias TEST
Version TNSLSNR for Linux: Version 12.2.0.1.0 -
Production
Start Date 17-JUL-2017 11:26:48
Uptime 0 days 17 hr. 24 min. 52 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /u01/oracle/12.2/network/admin/listener.ora
Listener Log File
/u01/oracle/diag/tnslsnr/TEST/TEST/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=TEST.test.domain)(PORT=1521)
))
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcps)(HOST=TEST.test.domain)(PORT=5500
))(Security=(my_wallet_directory=/u01/oracle/admin/TEST/xdb_wallet))(P
resentation=HTTP)(Session=RAW))
Services Summary...
Service "TEST" has 2 instance(s).
Instance "TEST", status UNKNOWN, has 1 handler(s) for this
service...
Instance "TEST", status READY, has 1 handler(s) for this service...
Service "TESTXDB" has 1 instance(s).
Instance "TEST", status READY, has 1 handler(s) for this service...
The command completed successfully
[oracle@TEST ~]$ lsnrctl start TEST
CHRISTIAM ALEJANDRO NIÑO PEÑA - 3202321711
ADMINISTRACIÓN Y OPTIMIZACIÓN DE BASES DE DATOS - 2019
DOCUMENTO DE PRACTICAS
4.1.3. Chequear el estado del Enterprise Manager Express
[oracle@TEST ~]$ lsnrctl status | grep HTTP
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcps)(HOST=TEST.test.domain)(PORT=5500
))(Security=(my_wallet_directory=/u01/oracle/admin/TEST/xdb_wallet))(P
resentation=HTTP)(Session=RAW))
[oracle@TEST ~]$ sqlplus / as sysdba;
SQL*Plus: Release 12.2.0.1.0 Production on Tue Jul 18 04:55:40 2017
Copyright (c) 1982, 2016, Oracle. All rights reserved.
Conectado a:
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit
Production
SQL> select dbms_xdb.getHttpPort() from dual;
DBMS_XDB.GETHTTPPORT()
----------------------
0
SQL> select dbms_xdb_config.getHttpsPort() from dual;
DBMS_XDB_CONFIG.GETHTTPSPORT()
------------------------------
5500
Para dar permisos de uso a EM Express
SQL> grant EM_EXPRESS_BASIC to <user>;
Para iniciar EM Express 12C ejecutar alguno de los dos según el puerto
SQL> exec dbms_xdb_config.sethttpsport(5500);
SQL> exec dbms_xdb_config.sethttpport(8080);
Se ingresa a la URL para comprobar
https://TEST.test.domain:5500/em/login
CHRISTIAM ALEJANDRO NIÑO PEÑA - 3202321711
ADMINISTRACIÓN Y OPTIMIZACIÓN DE BASES DE DATOS - 2019
DOCUMENTO DE PRACTICAS
CHRISTIAM ALEJANDRO NIÑO PEÑA - 3202321711
ADMINISTRACIÓN Y OPTIMIZACIÓN DE BASES DE DATOS - 2019
DOCUMENTO DE PRACTICAS
4.2. BAJAR Y SUBIR LA BASE DE DATOS TEST
4.2.1. Usando SQL*PLUS conectarse como sysdba con autenticación por
sistema operativo:
[oracle@TEST ~]$ sqlplus / as sysdba;
4.2.2. Bajar la base de datos de forma controlada
SQL> SHUTDOWN IMMEDIATE
Base de datos cerrada.
Base de datos desmontada.
Instancia ORACLE cerrada.
4.2.3. Iniciar la base de datos modo NOMOUNT
SQL> STARTUP NOMOUNT
Instancia ORACLE iniciada.
Total System Global Area 1560281088 bytes
Fixed Size 8621088 bytes
Variable Size 1006633952 bytes
Database Buffers 536870912 bytes
Redo Buffers 8155136 bytes
- Comprobar estado
SQL> SELECT instance_name,status FROM v$instance;
INSTANCE_NAME STATUS
---------------- ------------
TEST STARTED
4.2.4. Modificar el estado de la instancia a MOUNT:
SQL> ALTER DATABASE MOUNT;
- Comprobar estado
SQL> SELECT instance_name,status FROM v$instance;
INSTANCE_NAME STATUS
---------------- ------------
TEST MOUNTED
4.2.5. Modificar el estado de la instancia a OPEN
SQL> ALTER DATABASE OPEN;
- Comprobar estado
SQL> SELECT instance_name,status FROM v$instance;
INSTANCE_NAME STATUS
---------------- ------------
TEST OPEN
CHRISTIAM ALEJANDRO NIÑO PEÑA - 3202321711
ADMINISTRACIÓN Y OPTIMIZACIÓN DE BASES DE DATOS - 2019
DOCUMENTO DE PRACTICAS
4.3. ALERT LOG Y ARCHIVOS DE TRACE
4.3.1. Con el SQL*PLUS conectarse como sysdba con autenticación por
sistema operativo:
[oracle@TEST ~]$ sqlplus / as sysdba;
4.3.2. Buscar el valor del directorio trace donde se aloja el alert y trazas
SQL> SELECT VALUE FROM v$diag_info WHERE VALUE like '%trace';
VALUE
-----------------------------------------------------------------------------
/u01/oracle/diag/rdbms/TEST/TEST/trace
4.3.3. Ir al sistema operativo y chequear el alert log y los traces de la base en
el destino obtenido en el parámetro del punto anterior
[oracle@TEST trace]$ cd /u01/oracle/diag/rdbms/TEST/TEST/trace
[oracle@TEST trace]$ ls -lrt alert*
-rw-r-----. 1 oracle oinstall 97880 jul 18 05:09 alert_TEST.log
CHRISTIAM ALEJANDRO NIÑO PEÑA - 3202321711
ADMINISTRACIÓN Y OPTIMIZACIÓN DE BASES DE DATOS - 2019
DOCUMENTO DE PRACTICAS
4.4. DICCIONARIO DE DATOS Y VISTAS DE DESEMPEÑO DINÁMICAS
4.4.1. Ver todas las vistas del diccionario de datos:
SQL> column table_name format a40
SQL> column comments format a40
SQL> set linesize 100
SQL> SELECT * FROM dictionary;
4.4.2. Ver todas las vistas dinámicas existentes:
SQL> column name format a40
SQL> SELECT name,type FROM v$fixed_table;
4.4.3. Usar vistas de desempeño (performance) dinámicas para determinar los
datafiles y tablespaces creados en la base:
SQL> column tablespace format a10
SQL> column datafile format a30
SQL> set linesize 150
SQL> SELECT t.name tablespace,
d.name datafile,
d.bytes/1024/1024 MB
FROM v$tablespace t
JOIN v$datafile d
ON t.ts#=d.ts#
ORDER BY t.name;
TABLESPACE DATAFILE MB
---------- ------------------------------ ----------
SYSAUX /u01/data/TEST/sysaux01.dbf 480
SYSTEM /u01/data/TEST/system01.dbf 820
UNDOTBS1 /u01/data/TEST/undotbs01.dbf 70
USERS /u01/data/TEST/users01.dbf 5
4.4.4. Obtener la misma información, pero desde las vistas del diccionario de
datos:
SQL> column tablespace_name format a30
SQL> column file_name format a30
SQL> SELECT t.tablespace_name,
d.file_name,
d.bytes/1024/1024 MB
FROM dba_tablespaces t
JOIN dba_data_files d
ON t.tablespace_name=d.tablespace_name
ORDER BY tablespace_name;
CHRISTIAM ALEJANDRO NIÑO PEÑA - 3202321711
ADMINISTRACIÓN Y OPTIMIZACIÓN DE BASES DE DATOS - 2019
DOCUMENTO DE PRACTICAS
4.5. PARÁMETROS DE INICIALIZACIÓN
4.5.1. Consultar los parámetros de inicio de la base TEST, usar el comando
show parameters en el SQL*PLUS:
SQL> SHOW PARAMETERS;
4.5.2. Chequear los parámetros de inicio consultando: nombre de parámetro,
valor y si es modificable a nivel sesión o a nivel sistema:
SQL> column name format a40
SQL> column value format a40
SQL> SELECT name,
value,
isses_modifiable m_ses,
issys_modifiable m_sis
FROM v$parameter
ORDER BY name;
4.5.3. Modificar el parámetro NLS_LANGUAGE a nivel de sesión, asignarle el
idioma GERMAN:
- Se verifica si es modificable o no, en el caso que se pueda modificar de
que tipo y qué valor tiene
SQL> column name format a40
SQL> column value format a40
SQL> set linesize 100
SQL> SELECT name,
value,
isses_modifiable m_ses,
issys_modifiable m_sis
FROM v$parameter
WHERE name = 'nls_language'
ORDER BY name;
NAME VALUE M_SES M_SIS
--------------------------------------------------------- ----- ------
nls_language SPANISH TRUE FALSE
Se valida que es modificable únicamente a nivel de sesión
- Se modifica el valor del parámetro
SQL> ALTER SESSION SET nls_language='GERMAN';
Session wurde geandert.
4.5.4. Confirmar que el parámetro tomo el valor:
SQL> SELECT TO_CHAR(sysdate,'day') Dia FROM dual;
DIA
----------
Dienstag
CHRISTIAM ALEJANDRO NIÑO PEÑA - 3202321711
ADMINISTRACIÓN Y OPTIMIZACIÓN DE BASES DE DATOS - 2019
DOCUMENTO DE PRACTICAS
4.5.5. Modificar el parámetro processes, asignarle 500. Tener en cuenta que es
un parámetro estático:
- Se verifica si es modificable o no, en el caso que se pueda modificar de
que tipo y qué valor tiene
SQL> column name format a40
SQL> column value format a40
SQL> set linesize 100
SQL> SELECT name,
value,
isses_modifiable m_ses,
issys_modifiable m_sis
FROM v$parameter
WHERE name = 'processes'
ORDER BY name;
NAME VALUE M_SES M_SIS
----------- ---------------------------------------- ----- ---------
processes 300 FALSE FALSE
- Se valida que no es modificable por sesión, tampoco por sistema
directamente en memoria, se deberá cambiar por archivo de parámetros.
SQL> ALTER SYSTEM SET processes=500 SCOPE=SPFILE;
4.5.6. Chequear que haya modificado el spfile.
[oracle@TEST trace]$ cd $ORACLE_HOME/dbs
[oracle@TEST dbs]$ ls spfile*
spfileTEST.ora
[oracle@TEST dbs]$ strings spfileTEST.ora | grep processes
*.processes=500
4.5.7. Modificar el parámetro optimizer_mode, asignarle FIRST_ROWS. Tener
en cuenta que es un parámetro estático:
SQL> column name format a40
SQL> column value format a40
SQL> set linesize 100
SQL> SELECT name,
value,
isses_modifiable m_ses,
issys_modifiable m_sis
FROM v$parameter
WHERE name = 'optimizer_mode'
ORDER BY name;
NAME VALUE M_SES M_SIS
-------------- ---------------------------------------- ----- --------
optimizer_mode ALL_ROWS TRUE IMMEDIATE
- Cambiar el parámetro
SQL> ALTER SYSTEM SET optimizer_mode=FIRST_ROWS SCOPE=MEMORY;
CHRISTIAM ALEJANDRO NIÑO PEÑA - 3202321711
ADMINISTRACIÓN Y OPTIMIZACIÓN DE BASES DE DATOS - 2019
DOCUMENTO DE PRACTICAS
- Se verifica el cambio
SQL> SHOW PARAMETER optimizer_mode;
NAME TYPE VALUE
------------------------------------ ----------- --------------------
optimizer_mode string FIRST_ROWS
CHRISTIAM ALEJANDRO NIÑO PEÑA - 3202321711
ADMINISTRACIÓN Y OPTIMIZACIÓN DE BASES DE DATOS - 2019
DOCUMENTO DE PRACTICAS
5. EJERCICIOS MÓDULO 5
5.1. ADMINISTRACIÓN DE LISTENERS
5.1.1. Usar el LISTENER del punto 3.1 TEST_NEW, para ello ejecutar el
comando
[oracle@TEST dbs]$ export DISPLAY=192.168.56.1:0.0
[oracle@TEST dbs]$ netmgr
- En la ventana desplegar los listener y verificarlo
- Selecccionar Nomenclatura de nombres y validar el TNSNAMES creado
y probarlo
CHRISTIAM ALEJANDRO NIÑO PEÑA - 3202321711
ADMINISTRACIÓN Y OPTIMIZACIÓN DE BASES DE DATOS - 2019
DOCUMENTO DE PRACTICAS
Cambiar conexión
CHRISTIAM ALEJANDRO NIÑO PEÑA - 3202321711
ADMINISTRACIÓN Y OPTIMIZACIÓN DE BASES DE DATOS - 2019
DOCUMENTO DE PRACTICAS
5.1.2. Ir al listener.ora y comprobar que existe la línea correspondiente al
listener TEST_NEW:
[oracle@TEST dbs]$ more $ORACLE_HOME/network/admin/listener.ora
# listener.ora Network Configuration File:
/u01/oracle/12.2/network/admin/listener.ora
# Generated by Oracle configuration tools.
SID_LIST_TEST =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = TEST)
(ORACLE_HOME = /u01/oracle/12.2)
(SID_NAME = TEST)
)
)
ADR_BASE_TEST = /u01/oracle
TEST_NEW =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = TEST.test.domain)(PORT = 1535))
)
)
TEST =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = TEST.test.domain)(PORT = 1521))
)
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)
)
5.1.3. Bajar y Levantar el listener TEST_NEW:
[oracle@TEST dbs]$ lsnrctl stop TEST_NEW
LSNRCTL for Linux: Version 12.2.0.1.0 - Production on 18-JUL-2017 06:30:00
Copyright (c) 1991, 2016, Oracle. All rights reserved.
Connecting to
(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=TEST.test.domain)(PORT=1535)))
The command completed successfully
[oracle@TEST dbs]$ lsnrctl status TEST_NEW
LSNRCTL for Linux: Version 12.2.0.1.0 - Production on 18-JUL-2017 06:30:07
Copyright (c) 1991, 2016, Oracle. All rights reserved.
Connecting to
(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=TEST.test.domain)(PORT=1535)))
TNS-12541: TNS:no listener
TNS-12560: TNS:protocol adapter error
TNS-00511: No listener
Linux Error: 111: Connection refused
[oracle@TEST dbs]$ lsnrctl start TEST_NEW
LSNRCTL for Linux: Version 12.2.0.1.0 - Production on 18-JUL-2017 06:30:11
Copyright (c) 1991, 2016, Oracle. All rights reserved.
CHRISTIAM ALEJANDRO NIÑO PEÑA - 3202321711
ADMINISTRACIÓN Y OPTIMIZACIÓN DE BASES DE DATOS - 2019
DOCUMENTO DE PRACTICAS
Starting /u01/oracle/12.2/bin/tnslsnr: please wait...
TNSLSNR for Linux: Version 12.2.0.1.0 - Production
System parameter file is /u01/oracle/12.2/network/admin/listener.ora
Log messages written to /u01/oracle/diag/tnslsnr/TEST/TEST_new/alert/log.xml
Listening on:
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=TEST.test.domain)(PORT=1535)))
Connecting to
(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=TEST.test.domain)(PORT=1535)))
STATUS of the LISTENER
------------------------
Alias TEST_NEW
Version TNSLSNR for Linux: Version 12.2.0.1.0 - Production
Start Date 18-JUL-2017 06:30:11
Uptime 0 days 0 hr. 0 min. 0 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /u01/oracle/12.2/network/admin/listener.ora
Listener Log File /u01/oracle/diag/tnslsnr/TEST/TEST_new/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=TEST.test.domain)(PORT=1535)))
The listener supports no services
The command completed successfully
[oracle@TEST dbs]$ lsnrctl status TEST_NEW
LSNRCTL for Linux: Version 12.2.0.1.0 - Production on 18-JUL-2017 06:30:17
Copyright (c) 1991, 2016, Oracle. All rights reserved.
Connecting to
(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=TEST.test.domain)(PORT=1535)))
STATUS of the LISTENER
------------------------
Alias TEST_NEW
Version TNSLSNR for Linux: Version 12.2.0.1.0 - Production
Start Date 18-JUL-2017 06:30:11
Uptime 0 days 0 hr. 0 min. 5 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /u01/oracle/12.2/network/admin/listener.ora
Listener Log File /u01/oracle/diag/tnslsnr/TEST/TEST_new/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=TEST.test.domain)(PORT=1535)))
The listener supports no services
The command completed successfully
- También puede utilizar reload para bajar y subir el listener (restart no
existe)
[oracle@TEST dbs]$ lsnrctl reload TEST_NEW
LSNRCTL for Linux: Version 12.2.0.1.0 - Production on 18-JUL-2017 06:31:55
Copyright (c) 1991, 2016, Oracle. All rights reserved.
Connecting to
(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=TEST.test.domain)(PORT=1535)))
The command completed successfully
CHRISTIAM ALEJANDRO NIÑO PEÑA - 3202321711
ADMINISTRACIÓN Y OPTIMIZACIÓN DE BASES DE DATOS - 2019
DOCUMENTO DE PRACTICAS
5.2. REGISTRO DE LA BASE EN EL LISTENER
5.2.1. Con el SQL*PLUS conectarse como sysdba y registrar la base TEST en
el listener TEST:
- Verificamos el parámetro que tiene la base de datos actualmente
SQL> column name format a40
SQL> column value format a40
SQL> set linesize 100
SQL> SELECT name,
value,
isses_modifiable m_ses,
issys_modifiable m_sis
FROM v$parameter
WHERE name = 'local_listener'
ORDER BY name;
NAME VALUE M_SES M_SIS
------------- --------------------------------------- ----- ---------
local_listener LISTENER_TEST FALSE IMMEDIATE
- Modificar el valor del parámetro
SQL> ALTER SYSTEM SET local_listener='TEST';
Sistema modificado.
SQL> ALTER SYSTEM REGISTER;
Sistema modificado.
SQL> SHOW PARAMETER local_listener;
NAME TYPE VALUE
------------------------------------ ----------- ------------------
local_listener string TEST
5.2.2. Chequear que la instancia TEST se haya registrado:
[oracle@TEST dbs]$ lsnrctl services TEST;
LSNRCTL for Linux: Version 12.2.0.1.0 - Production on 18-JUL-2017
06:39:59
Copyright (c) 1991, 2016, Oracle. All rights reserved.
Connecting to
(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=TEST.test.domain)(PORT=1521)
))
Services Summary...
Service "TEST" has 1 instance(s).
Instance "TEST", status UNKNOWN, has 1 handler(s) for this
service...
Handler(s):
"DEDICATED" established:0 refused:0
LOCAL SERVER
The command completed successfully
CHRISTIAM ALEJANDRO NIÑO PEÑA - 3202321711
ADMINISTRACIÓN Y OPTIMIZACIÓN DE BASES DE DATOS - 2019
DOCUMENTO DE PRACTICAS
5.3. AGREGAR UNA NUEVA ENTRADA DE TNSNAMES.ORA
(MÉTODO LOCAL NAMING)
5.3.1. Crear una entrada de tnsnames llamada TEST_TNS que apunte a la
base TEST y que entre por el puerto 1521 (del listener TEST). Utilizar el
asistente netmgr, opción service naming.
[oracle@TEST dbs]$ export DISPLAY=192.168.56.1:0.0
[oracle@TEST dbs]$ netmgr
- En la ventana desplegar la nomenclatura de nombres
Seleccionar el icono +
Colocar el nombre de Servicios de Red TEST_TNS
CHRISTIAM ALEJANDRO NIÑO PEÑA - 3202321711
ADMINISTRACIÓN Y OPTIMIZACIÓN DE BASES DE DATOS - 2019
DOCUMENTO DE PRACTICAS
CHRISTIAM ALEJANDRO NIÑO PEÑA - 3202321711
ADMINISTRACIÓN Y OPTIMIZACIÓN DE BASES DE DATOS - 2019
DOCUMENTO DE PRACTICAS
CHRISTIAM ALEJANDRO NIÑO PEÑA - 3202321711
ADMINISTRACIÓN Y OPTIMIZACIÓN DE BASES DE DATOS - 2019
DOCUMENTO DE PRACTICAS
CHRISTIAM ALEJANDRO NIÑO PEÑA - 3202321711
ADMINISTRACIÓN Y OPTIMIZACIÓN DE BASES DE DATOS - 2019
DOCUMENTO DE PRACTICAS
5.3.2. Chequear la línea agregada al tnsnames.ora desde la línea de
comandos:
[oracle@TEST dbs]$ more $ORACLE_HOME/network/admin/tnsnames.ora
# tnsnames.ora Network Configuration File:
/u01/oracle/12.2/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.
TEST_TNS =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = TEST.test.domain)(PORT =
1521))
)
(CONNECT_DATA =
(SERVICE_NAME = TEST)
)
)
LISTENER_TEST =
(ADDRESS = (PROTOCOL = TCP)(HOST = TEST.test.domain)(PORT = 1521))
TEST =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = TEST.test.domain)(PORT =
1521))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = TEST)
)
)
CHRISTIAM ALEJANDRO NIÑO PEÑA - 3202321711
ADMINISTRACIÓN Y OPTIMIZACIÓN DE BASES DE DATOS - 2019
DOCUMENTO DE PRACTICAS
5.3.3. Crear la conexión desde el sqlplus usando el TNSNAMES TEST_TNS
[oracle@TEST dbs]$ sqlplus system/oracle123@TEST_TNS
SQL*Plus: Release 12.2.0.1.0 Production on Tue Jul 18 06:50:58 2017
Copyright (c) 1982, 2016, Oracle. All rights reserved.
Hora de Ultima Conexion Correcta: Mar Jul 18 2017 06:47:14 -05:00
Conectado a:
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit
Production
SQL>
CHRISTIAM ALEJANDRO NIÑO PEÑA - 3202321711
ADMINISTRACIÓN Y OPTIMIZACIÓN DE BASES DE DATOS - 2019
DOCUMENTO DE PRACTICAS
5.4. CONFIGURAR SERVIDOR COMPARTIDO:
5.4.1. Setear los parámetros DISPATCHERS y SHARED_SERVERS y
registrarlos en el listener:
Dispatcher: procesos que atienden peticiones de varios clientes, el ejemplo
clásico es el mesero que atiende varias mesas en comparación del mesero que
atiende una y solo una mesa.
Puntos importantes: Los dispatchers toman peticiones de una sola cola una vez
que son procesadas, el resultado se "deposita" en una cola que tiene el
dispatcher (cada dispatcher tiene su propia "response queue").
La base de datos necesita estar en Shared Mode (Por default la base de datos
está en dedicated mode).
- Validar el estado del parámetro DISPATCHERS y SHARED_SERVERS
SQL> column name format a40
SQL> column value format a40
SQL> set linesize 100
SQL> SELECT name,
value,
isses_modifiable m_ses,
issys_modifiable m_sis
FROM v$parameter
WHERE name in ('dispatchers','shared_servers')
ORDER BY name;
NAME VALUE M_SES M_SIS
------------------ ---------------------------------------- ----- ---------
dispatchers (PROTOCOL=TCP) (SERVICE=TESTXDB) FALSE IMMEDIATE
shared_servers 1 FALSE IMMEDIATE
SQL> ALTER SYSTEM SET dispatchers='(pro=tcp) (PROTOCOL=TCP) (SERVICE=TESTXDB)
(dis=2)' SCOPE=memory;
Sistema modificado.
SQL> ALTER SYSTEM SET shared_servers=4 scope=memory;
Sistema modificado.
SQL> ALTER SYSTEM REGISTER;
Sistema modificado.
5.4.2. Confirmar que los dispatchers y los procesos compartidos están
ejecutándose, son los llamados S000, S001, S002, S003, D000 y D001:
SQL> SELECT program
FROM v$process
WHERE program like '%D0%'
OR program like '%S0%'
ORDER BY program;
PROGRAM
------------------------------------------------
[email protected] (D000)
CHRISTIAM ALEJANDRO NIÑO PEÑA - 3202321711
ADMINISTRACIÓN Y OPTIMIZACIÓN DE BASES DE DATOS - 2019
DOCUMENTO DE PRACTICAS
[email protected] (D001)
[email protected] (S000)
[email protected] (S001)
[email protected] (S002)
[email protected] (S003)
5.4.3. Confirmar que los dispatchers se han registrado en el listener:
[oracle@TEST dbs]$ lsnrctl services TEST
LSNRCTL for Linux: Version 12.2.0.1.0 - Production on 18-JUL-2017 07:06:20
Copyright (c) 1991, 2016, Oracle. All rights reserved.
Connecting to
(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=TEST.test.domain)(PORT=1521)))
Services Summary...
Service "TEST" has 2 instance(s).
Instance "TEST", status UNKNOWN, has 1 handler(s) for this service...
Handler(s):
"DEDICATED" established:0 refused:0
LOCAL SERVER
Instance "TEST", status READY, has 1 handler(s) for this service...
Handler(s):
"DEDICATED" established:4 refused:0 state:ready
LOCAL SERVER
Service "TESTXDB" has 1 instance(s).
Instance "TEST", status READY, has 2 handler(s) for this service...
Handler(s):
"D000" established:0 refused:0 current:0 max:1022 state:ready
DISPATCHER <machine: TEST.test.domain, pid: 29135>
(ADDRESS=(PROTOCOL=tcp)(HOST=TEST.test.domain)(PORT=24329))
"D001" established:0 refused:0 current:0 max:1022 state:ready
DISPATCHER <machine: TEST.test.domain, pid: 29803>
(ADDRESS=(PROTOCOL=tcp)(HOST=TEST.test.domain)(PORT=49303))
The command completed successfully
5.4.4. Conectarse a la base TEST con el usuario
system/oracle123@TEST_TNS y confirmar que la conexión se realizó
con mecanismo proceso compartido:
SQL> SELECT d.name,s.name
FROM v$dispatcher d,v$shared_server s,v$circuit c
WHERE d.paddr=c.dispatcher
AND s.paddr=c.server;
NAME NAME
---- ----
D000 S000
Estos parámetros quedan en memoria, al bajar y subir la instancia se borrara
esta configuración.
CHRISTIAM ALEJANDRO NIÑO PEÑA - 3202321711
ADMINISTRACIÓN Y OPTIMIZACIÓN DE BASES DE DATOS - 2019
DOCUMENTO DE PRACTICAS
6. EJERCICIOS MÓDULO 6
6.1. CREACIÓN DE TABLESPACES Y SEGMENTOS
6.1.1. Conectarse a la base TEST como system/oracle123. Crear un
tablespace llamado NEWTBS de 10MB manejado localmente con
tamaño de extent uniforme de 1MB y gestión de espacio de segmentos
automático. Su datafile debe crearse dentro del directorio:
/u01/data/TEST
oracle@TEST admin]$ sqlplus system/oracle123@TEST
SQL*Plus: Release 12.2.0.1.0 Production on Tue Jul 18 07:29:27 2017
Copyright (c) 1982, 2016, Oracle. All rights reserved.
Conectado a:
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit
Production
SQL> CREATE TABLESPACE newtbs
DATAFILE '/u01/data/TEST/newtbs_01.dbf' SIZE 50m
EXTENT MANAGEMENT LOCAL UNIFORM SIZE 1M
SEGMENT SPACE MANAGEMENT AUTO;
Tablespace creado.
6.1.2. Crear una tabla llamada TABLE_1 con un campo c1 de tipo date dentro
del tablespace NEWTBS:
SQL> CREATE TABLE table_1(c1 DATE) TABLESPACE newtbs;
Tabla creada.
6.1.3. Verificar el tamaño del extent alocado para la tabla TABLE_1:
SQL> SELECT extent_id,
bytes
FROM dba_extents
WHERE owner='SYSTEM'
AND segment_name = 'TABLE_1';
EXTENT_ID BYTES
---------- ----------
0 1048576
6.1.4. Crear el tablespace desde el EM12C EXPRESS llamado NEWTBS2 de
20 MB manejado localmente autoallocate y gestión de espacio de
segmentos automático. Su datafile debe crearse dentro del directorio
/u01/data/TEST.
- Ingresar a EM12C Express con la URL:
https://TEST.test.domain:5500/em/login
CHRISTIAM ALEJANDRO NIÑO PEÑA - 3202321711
ADMINISTRACIÓN Y OPTIMIZACIÓN DE BASES DE DATOS - 2019
DOCUMENTO DE PRACTICAS
CHRISTIAM ALEJANDRO NIÑO PEÑA - 3202321711
ADMINISTRACIÓN Y OPTIMIZACIÓN DE BASES DE DATOS - 2019
DOCUMENTO DE PRACTICAS
CHRISTIAM ALEJANDRO NIÑO PEÑA - 3202321711
ADMINISTRACIÓN Y OPTIMIZACIÓN DE BASES DE DATOS - 2019
DOCUMENTO DE PRACTICAS
Valide el SQL que genera
CHRISTIAM ALEJANDRO NIÑO PEÑA - 3202321711
ADMINISTRACIÓN Y OPTIMIZACIÓN DE BASES DE DATOS - 2019
DOCUMENTO DE PRACTICAS
CREATE SMALLFILE TABLESPACE "NEWTBS2"
DATAFILE '/u01/data/TEST/newtbs2.dbf' SIZE 20M AUTOEXTEND ON NEXT 100M
LOGGING
DEFAULT NOCOMPRESS NO INMEMORY
ONLINE
EXTENT MANAGEMENT LOCAL AUTOALLOCATE
SEGMENT SPACE MANAGEMENT AUTO;
6.2. OMF Y VISTAS DEL DICCIONARIO CON INFO DE TABLESPACES
6.2.1. Habilitar el OMF (Oracle Managed Files) seteando el parámetro
db_create_file_dest = '/u01/data';
SQL> ALTER SYSTEM SET db_create_file_dest='/u01/data';
6.2.2. Crear tablespace OMFTBS:
SQL> CREATE TABLESPACE omftbs;
6.2.3. Determinar las características del tablespace OMFTBS:
SQL> column file_name format a30
SQL> SELECT file_name,bytes/1024/1024 MB,
autoextensible,maxbytes/1024/1024 MAX_MB,increment_by/1024 INC_MB
FROM dba_data_files
WHERE tablespace_name='OMFTBS';
FILE_NAME MB AUT MAX_MB INC_MB
------------------------------ ---------- --- ---------- ----------
/u01/data/TEST/datafile/o1_mf 100 YES 32767,9844 12,5
_omftbs_dpw96x5m_.dbf
Notar que el datafile tiene 100MB inicialmente, es autoextensible ilimitado.
CHRISTIAM ALEJANDRO NIÑO PEÑA - 3202321711
ADMINISTRACIÓN Y OPTIMIZACIÓN DE BASES DE DATOS - 2019
DOCUMENTO DE PRACTICAS
6.2.4. Mostrar todos los tablespaces de la base con sus datafiles y tamaño
expresado en MB, note que se creó el tablespace con ruta de OMF.
SQL> column file_name format a30
SQL> SELECT tablespace_name,file_name,bytes/1024/1024 MB FROM dba_data_files;
TABLESPACE_NAME FILE_NAME MB
------------------------------ ------------------------------ ----------
SYSTEM /u01/data/TEST/system01.dbf 820
SYSAUX /u01/data/TEST/sysaux01.dbf 500
UNDOTBS1 /u01/data/TEST/undotbs01.dbf 70
USERS /u01/data/TEST/users01.dbf 5
NEWTBS /u01/data/TEST/newtbs_01.dbf 50
NEWTBS2 /u01/data/TEST/newtbs2.dbf 20
OMFTBS /u01/data/TEST/datafile/o1_mf 100
_omftbs_dpw96x5m_.dbf
6.2.5. Mostrar todos los tablespaces, su tipo de manejo de espacio y el tipo de
gestión de espacio de los segmentos:
SQL> SELECT tablespace_name, extent_management,
segment_space_management FROM dba_tablespaces;
TABLESPACE_NAME EXTENT_MAN SEGMEN
------------------------------ ---------- ------
SYSTEM LOCAL MANUAL
SYSAUX LOCAL AUTO
UNDOTBS1 LOCAL MANUAL
TEMP LOCAL MANUAL
USERS LOCAL AUTO
NEWTBS LOCAL AUTO
NEWTBS2 LOCAL AUTO
OMFTBS LOCAL AUTO
6.3. MODIFICAR TABLESPACES
6.3.1. Reducir de tamaño tablespace newtbs2 a 10MB:
SQL> ALTER DATABASE
DATAFILE '/u01/data/TEST/newtbs2.dbf'
RESIZE 10M;
Base de datos modificada.
- Recuerde que este tablespace tenía inicialmente 20MB
SQL> column file_name format a30
SQL> SELECT tablespace_name,file_name,bytes/1024/1024 MB
FROM dba_data_files
WHERE tablespace_name = 'NEWTBS2';
TABLESPACE_NAME FILE_NAME MB
------------------------------ ------------------------------ ----------
NEWTBS2 /u01/data/TEST/newtbs2.dbf 10
6.3.2. Agregar un datafile al tablespace omftbs y comprobar que se haya
creado;
SQL> ALTER TABLESPACE omftbs ADD DATAFILE;
Tablespace modificado.
CHRISTIAM ALEJANDRO NIÑO PEÑA - 3202321711
ADMINISTRACIÓN Y OPTIMIZACIÓN DE BASES DE DATOS - 2019
DOCUMENTO DE PRACTICAS
SQL> column file_name format a30
SQL> SELECT file_name,
bytes/1024/1024 MB,
autoextensible,
maxbytes/1024/1024 MB,
increment_by/1024
FROM dba_data_files
WHERE tablespace_name='OMFTBS';
FILE_NAME MB AUT MB INCREMENT_BY/1024
------------------------------ ---------- --- ---------- -----------------
/u01/data/TEST/datafile/o1_mf 100 YES 32767,9844 12,5
_omftbs_dpw96x5m_.dbf
/u01/data/TEST/datafile/o1_mf 100 YES 32767,9844 12,5
_omftbs_dpwb2783_.dbf
6.3.3. Borrar tablespace omftbs:
SQL> DROP TABLESPACE omftbs;
Tablespace borrado.
SQL> column file_name format a30
SQL> SELECT tablespace_name,file_name,bytes/1024/1024 MB FROM dba_data_files;
TABLESPACE_NAME FILE_NAME MB
------------------------------ ------------------------------ ----------
SYSTEM /u01/data/TEST/system01.dbf 820
SYSAUX /u01/data/TEST/sysaux01.dbf 500
UNDOTBS1 /u01/data/TEST/undotbs01.dbf 70
USERS /u01/data/TEST/users01.dbf 5
NEWTBS /u01/data/TEST/newtbs_01.dbf 50
NEWTBS2 /u01/data/TEST/newtbs2.dbf 10
CHRISTIAM ALEJANDRO NIÑO PEÑA - 3202321711
ADMINISTRACIÓN Y OPTIMIZACIÓN DE BASES DE DATOS - 2019
DOCUMENTO DE PRACTICAS
7. EJERCICIOS MÓDULO 7
7.1. CREACIÓN DE USUARIOS
7.1.1. Loguearse como system/oracle123 a la base TEST. Crear el usuario
peter con password peter1, tablespace por defecto USERS, tablespace
temporal TEMP, QUOTA de 10M sobre el tablespace users.
[oracle@TEST admin]$ sqlplus system/oracle123@TEST
SQL> CREATE USER peter
IDENTIFIED BY peter1
DEFAULT TABLESPACE users
TEMPORARY TABLESPACE temp
QUOTA 10M ON users;
Usuario creado.
7.1.2. Cambiarle el password al usuario peter, asignarle oracle
SQL> ALTER USER peter IDENTIFIED BY oracle;
Usuario modificado.
7.1.3. Crear el usuario mary desde el EM Express 12C. Password rose,
tablespace por defecto USERS, tablespace temporal TEMP. Quota
ilimitada sobre USERS.
CHRISTIAM ALEJANDRO NIÑO PEÑA - 3202321711
ADMINISTRACIÓN Y OPTIMIZACIÓN DE BASES DE DATOS - 2019
DOCUMENTO DE PRACTICAS
CHRISTIAM ALEJANDRO NIÑO PEÑA - 3202321711
ADMINISTRACIÓN Y OPTIMIZACIÓN DE BASES DE DATOS - 2019
DOCUMENTO DE PRACTICAS
CHRISTIAM ALEJANDRO NIÑO PEÑA - 3202321711
ADMINISTRACIÓN Y OPTIMIZACIÓN DE BASES DE DATOS - 2019
DOCUMENTO DE PRACTICAS
7.2. OTORGAR PRIVILEGIOS
7.2.1. Asignar el privilegio de creación de sesión a los usuarios peter y mary;
[oracle@TEST admin]$ sqlplus system/oracle123@TEST
SQL> GRANT create session TO peter;
Concesion terminada correctamente.
SQL> GRANT create session TO mary;
Concesion terminada correctamente.
7.2.2. Loguearse como hr/hr y otorgar el privilegio de SELECT, INSERT,
DELETE, UPDATE sobre la tabla hr.employees al usuario peter con
grant option:
- Si trata de loguearse encontrara que la cuenta esta bloqueada.
[oracle@TEST admin]$ sqlplus hr/hr@TEST
ERROR:
ORA-28000: la cuenta esta bloqueada
- Desbloquee el usuario con system
[oracle@TEST admin]$ sqlplus system/oracle123@TEST
SQL> alter user hr identified by hr account unlock;
Usuario modificado.
- Ingrese con hr y otórguele permisos de lectura, escritura, actualización y
borrado al usuario peter en la tabla employees.
[oracle@TEST admin]$ sqlplus hr/hr@TEST
SQL> GRANT SELECT, INSERT, DELETE, UPDATE
ON employees
TO peter
WITH GRANT OPTION;
Concesion terminada correctamente.
7.2.3. Loguearse como peter/oracle y asignarle privilegio de SELECT sobre
hr.employees al usuario mary, recuerde que lo puede hacer porque
peter tiene adjudicado WITH GRANT OPTION
[oracle@TEST admin]$ sqlplus peter/oracle@TEST
SQL> GRANT SELECT ON hr.employees TO mary;
Concesion terminada correctamente.
CHRISTIAM ALEJANDRO NIÑO PEÑA - 3202321711
ADMINISTRACIÓN Y OPTIMIZACIÓN DE BASES DE DATOS - 2019
DOCUMENTO DE PRACTICAS
7.2.4. Conectarse como mary/rose y hacer un SELECT sobre la tabla
hr.employees:
[oracle@TEST admin]$ sqlplus mary/rose@TEST
SQL> SELECT FIRST_NAME,LAST_NAME
FROM hr.employees
WHERE SALARY > 10000;
FIRST_NAME LAST_NAME
-------------------- -------------------------
Steven King
Neena Kochhar
Lex De Haan
Nancy Greenberg
Den Raphaely
John Russell
Karen Partners
Alberto Errazuriz
Gerald Cambrault
Eleni Zlotkey
Clara Vishney
FIRST_NAME LAST_NAME
-------------------- -------------------------
Lisa Ozer
Ellen Abel
Michael Hartstein
Shelley Higgins
15 filas seleccionadas.
CHRISTIAM ALEJANDRO NIÑO PEÑA - 3202321711
ADMINISTRACIÓN Y OPTIMIZACIÓN DE BASES DE DATOS - 2019
DOCUMENTO DE PRACTICAS
7.3. ROLES
7.3.1. Crear role hr_lectura y hr_actualiza:
[oracle@TEST admin]$ sqlplus system/oracle123@TEST
SQL> CREATE ROLE hr_lectura;
Rol creado.
SQL> CREATE ROLE hr_actualiza;
Rol creado.
7.3.2. Asignar al role hr_lectura el privilegio de SELECT sobre la tabla
hr.departments y al role hr_actualiza el privilegio UPDATE sobre
hr.departments;
SQL> GRANT SELECT ON hr.departments TO hr_lectura;
Concesion terminada correctamente.
SQL> GRANT update ON hr.departments TO hr_actualiza;
Concesion terminada correctamente.
7.3.3. Asignar role hr_lectura y hr_actualiza al usuarios peter:
SQL> GRANT hr_lectura TO peter;
Concesion terminada correctamente.
SQL> GRANT hr_actualiza TO peter;
Concesion terminada correctamente.
7.3.4. Establecer que el rol hr_lectura se active automáticamente cuando el
usuario peter se conecta:
SQL> ALTER USER peter DEFAULT ROLE hr_lectura;
Usuario modificado.
7.3.5. Conectarse con usuario peter/oracle y probar un SELECT y un update
sobre hr.departments. ¿Que ocurre sobre el update?
[oracle@TEST admin]$ sqlplus peter/oracle@TEST
SQL> SELECT * FROM hr.departments;
DEPARTMENT_ID DEPARTMENT_NAME MANAGER_ID LOCATION_ID
------------- ------------------------------ ---------- -----------
10 Administration 200 1700
20 Marketing 201 1800
30 Purchasing 114 1700
40 Human Resources 203 2400
50 Shipping 121 1500
CHRISTIAM ALEJANDRO NIÑO PEÑA - 3202321711
ADMINISTRACIÓN Y OPTIMIZACIÓN DE BASES DE DATOS - 2019
DOCUMENTO DE PRACTICAS
SQL> UPDATE hr.departments set DEPARTMENT_NAME='Administración' WHERE
DEPARTMENT_ID=10;
UPDATE hr.departments set DEPARTMENT_NAME='Administración' WHERE
DEPARTMENT_ID=10
*
ERROR en linea 1:
ORA-01031: privilegios insuficientes
Da error porque el role hr_actualiza no es un role defaut, debe activarse con
SET ROLE. Activarlo y volver a probar el update.
[oracle@TEST admin]$ sqlplus system/oracle123@TEST
SQL> ALTER USER peter DEFAULT ROLE hr_lectura,hr_actualiza;
[oracle@TEST admin]$ sqlplus peter/oracle@TEST
SQL> UPDATE hr.departments set DEPARTMENT_NAME='Administración' WHERE
DEPARTMENT_ID=10;
1 fila actualizada.
SQL> ROLLBACK;
Rollback terminado.
También puede cambiar el rol directamente desde el usuario
SQL> SET ROLE hr_actualiza;
CHRISTIAM ALEJANDRO NIÑO PEÑA - 3202321711
ADMINISTRACIÓN Y OPTIMIZACIÓN DE BASES DE DATOS - 2019
DOCUMENTO DE PRACTICAS
7.4. PERFILES
7.4.1. Crear el perfil app_user que aplique las siguientes condiciones:
- Después de 3 intentos de conexión erróneos, la cuenta se debería
bloquear indefinidamente
- La contraseña debería vencer después de 30 días.
- La cantidad máxima de sesiones por usuario es 2
- Tiempo de inactividad permitida de la sesión es 60 minutos
[oracle@TEST admin]$ sqlplus system/oracle123@TEST
SQL> CREATE PROFILE app_user
LIMIT FAILED_LOGIN_ATTEMPTS 3
PASSWORD_LOCK_TIME UNLIMITED
PASSWORD_LIFE_TIME 30
SESSIONS_PER_USER 2
IDLE_TIME 60;
7.4.2. Asignar el perfil al usuario peter:
SQL> ALTER USER peter PROFILE app_user;
7.4.3. Probar 3 veces intentos de conexión erróneos, cuando intentamos
realizar un cuarto intento la cuenta se bloqueará:
[oracle@TEST admin]$ sqlplus peter/error@TEST
ERROR:
ORA-01017: nombre de usuario/contrase?a no validos; conexion denegada
[oracle@TEST admin]$ sqlplus peter/error@TEST
ERROR:
ORA-01017: nombre de usuario/contrase?a no validos; conexion denegada
[oracle@TEST admin]$ sqlplus peter/error@TEST
ERROR:
ORA-01017: nombre de usuario/contrase?a no validos; conexion denegada
[oracle@TEST admin]$ sqlplus peter/error@TEST
ERROR:
ORA-28000: la cuenta esta bloqueada
7.4.4. Volver a probar conexión errónea:
[oracle@TEST admin]$ sqlplus peter/oracle@TEST
ERROR:
ORA-28000: la cuenta esta bloqueada
7.4.5. Desbloquear al usuario peter:
[oracle@TEST admin]$ sqlplus system/oracle123@TEST
SQL> ALTER USER peter ACCOUNT UNLOCK;
CHRISTIAM ALEJANDRO NIÑO PEÑA - 3202321711
ADMINISTRACIÓN Y OPTIMIZACIÓN DE BASES DE DATOS - 2019
DOCUMENTO DE PRACTICAS
8. EJERCICIOS MÓDULO 8
8.1. MANEJO DE UNDO
8.1.1. Chequear que mecanismo de manejo de undo utiliza la base TEST:
[oracle@TEST admin]$ sqlplus system/oracle123@TEST
SQL> SELECT value FROM v$parameter WHERE name='undo_management';
VALUE
---------------------------------------------------------------------
AUTO
8.1.2. Chequear que tablespace de UNDO utiliza la base:
SQL> SELECT value FROM v$parameter WHERE name='undo_tablespace';
VALUE
-------------------------------------------------------------------
UNDOTBS1
8.1.3. Chequear los segmentos de UNDO que está utilizando la base TEST:
SQL> column TABLESPACE_NAME format a20
SQL> SELECT tablespace_name,segment_name,segment_id,status
FROM dba_rollback_segs;
TABLESPACE_NAME SEGMENT_NAME SEGMENT_ID STATUS
-------------------- ------------------------------ ---------- -------
---------
SYSTEM SYSTEM 0 ONLINE
UNDOTBS1 _SYSSMU1_762089623$ 1 ONLINE
UNDOTBS1 _SYSSMU2_3062791661$ 2 ONLINE
UNDOTBS1 _SYSSMU3_1499641855$ 3 ONLINE
UNDOTBS1 _SYSSMU4_3564003469$ 4 ONLINE
UNDOTBS1 _SYSSMU5_1728379857$ 5 ONLINE
UNDOTBS1 _SYSSMU6_965511687$ 6 ONLINE
UNDOTBS1 _SYSSMU7_2247632671$ 7 ONLINE
UNDOTBS1 _SYSSMU8_437891266$ 8 ONLINE
UNDOTBS1 _SYSSMU9_3215744559$ 9 ONLINE
UNDOTBS1 _SYSSMU10_2925533193$ 10 ONLINE
11 filas seleccionadas.
8.1.4. Conectarse con usuario hr/hr y hacer el siguiente UPDATE, no hacer
COMMIT
[oracle@TEST admin]$ sqlplus hr/hr@TEST
SQL> UPDATE hr.departments
SET department_name='NUEVO'
WHERE department_id=200;
1 fila actualizada.
CHRISTIAM ALEJANDRO NIÑO PEÑA - 3202321711
ADMINISTRACIÓN Y OPTIMIZACIÓN DE BASES DE DATOS - 2019
DOCUMENTO DE PRACTICAS
8.1.5. En otra sesión de SQLPLUS conectarse como system/oracle123 y
chequear el segmento de UNDO que está utilizando la transacción del
punto anterior.
[oracle@TEST ~]$ sqlplus system/oracle123@TEST
SQL> SELECT xidusn, start_time FROM v$transaction;
XIDUSN START_TIME
---------- --------------------
9 07/19/17 04:37:41
8.1.6. Ir a la conexión de hr/hr y hacer ROLLBACK:
SQL> ROLLBACK;
Rollback terminado.
8.1.7. Volver a chequear v$transaction, notar que la transacción desapareció
SQL> SELECT xidusn, start_time FROM v$transaction;
ninguna fila seleccionada
CHRISTIAM ALEJANDRO NIÑO PEÑA - 3202321711
ADMINISTRACIÓN Y OPTIMIZACIÓN DE BASES DE DATOS - 2019
DOCUMENTO DE PRACTICAS
8.2. PARÁMETRO UNDO_RETENTION Y CREACIÓN DE TABLESPACE
UNDO
8.2.1. Chequear el valor del parámetro undo_retention. Recordar que está
expresado en segundos:
[oracle@TEST ~]$ sqlplus system/oracle123@TEST
SQL> SELECT value FROM v$parameter WHERE name='undo_retention';
VALUE
---------------------------------------------------------------------
900
8.2.2. Crear un tablespace de UNDO llamado UNDO2 de 100mb con retención
garantizada y autoextensible de a 10MB y máximo tamaño 200MB.
SQL> CREATE UNDO TABLESPACE UNDO2
DATAFILE '/u01/data/TEST/undo2.dbf' SIZE 100M
AUTOEXTEND ON NEXT 10M MAXSIZE 200M
RETENTION GUARANTEE;
8.2.3. Chequear los tablespace de la base de datos, notar que hay 2
tablespaces undo
SQL> SELECT tablespace_name,contents,retention
FROM dba_tablespaces;
TABLESPACE_NAME CONTENTS RETENTION
------------------------------ --------------------- -----------
SYSTEM PERMANENT NOT APPLY
SYSAUX PERMANENT NOT APPLY
UNDOTBS1 UNDO NOGUARANTEE
TEMP TEMPORARY NOT APPLY
USERS PERMANENT NOT APPLY
NEWTBS PERMANENT NOT APPLY
NEWTBS2 PERMANENT NOT APPLY
UNDO2 UNDO GUARANTEE
8.2.4. Chequear el estado de los UNDO SEGMENTS de cada tablespace
undo, el tablespace UNDO actual seteado en la instancia tienen
estado online:
SQL> SELECT tablespace_name, segment_name, status
FROM dba_rollback_segs;
TABLESPACE_NAME SEGMENT_NAME STATUS
------------------------------ ------------------------------ --------
SYSTEM SYSTEM ONLINE
UNDOTBS1 _SYSSMU1_762089623$ ONLINE
UNDOTBS1 _SYSSMU2_3062791661$ ONLINE
UNDOTBS1 _SYSSMU3_1499641855$ ONLINE
UNDOTBS1 _SYSSMU4_3564003469$ ONLINE
UNDOTBS1 _SYSSMU5_1728379857$ ONLINE
UNDOTBS1 _SYSSMU6_965511687$ ONLINE
UNDOTBS1 _SYSSMU7_2247632671$ ONLINE
UNDOTBS1 _SYSSMU8_437891266$ ONLINE
CHRISTIAM ALEJANDRO NIÑO PEÑA - 3202321711
ADMINISTRACIÓN Y OPTIMIZACIÓN DE BASES DE DATOS - 2019
DOCUMENTO DE PRACTICAS
UNDOTBS1 _SYSSMU9_3215744559$ ONLINE
UNDOTBS1 _SYSSMU10_2925533193$ ONLINE
TABLESPACE_NAME SEGMENT_NAME STATUS
------------------------------ ------------------------------ --------
UNDO2 _SYSSMU11_30265270$ OFFLINE
UNDO2 _SYSSMU12_887248020$ OFFLINE
UNDO2 _SYSSMU13_2966147360$ OFFLINE
UNDO2 _SYSSMU14_3831038756$ OFFLINE
UNDO2 _SYSSMU15_2022184535$ OFFLINE
UNDO2 _SYSSMU16_373540134$ OFFLINE
UNDO2 _SYSSMU17_3629873386$ OFFLINE
UNDO2 _SYSSMU18_3727269170$ OFFLINE
UNDO2 _SYSSMU19_3115551059$ OFFLINE
UNDO2 _SYSSMU20_193228587$ OFFLINE
8.2.5. Cambiar el tablespace de UNDO a la instancia seteando el
parámetro undo_tablespace con un alter system y que el cambio sea
solo a nivel de memoria:
SQL> ALTER SYSTEM SET undo_tablespace=undo2 SCOPE=memory;
8.2.6. Volver a ejecutar la query de consulta de tablespace, verificar que los
undo segments del tablespace undo2 son los que están online:
SQL> SELECT tablespace_name, segment_name, status
FROM dba_rollback_segs;
TABLESPACE_NAME SEGMENT_NAME STATUS
------------------------------ ------------------------------ --------
SYSTEM SYSTEM ONLINE
UNDOTBS1 _SYSSMU1_762089623$ OFFLINE
UNDOTBS1 _SYSSMU2_3062791661$ OFFLINE
UNDOTBS1 _SYSSMU3_1499641855$ OFFLINE
UNDOTBS1 _SYSSMU4_3564003469$ OFFLINE
UNDOTBS1 _SYSSMU5_1728379857$ OFFLINE
UNDOTBS1 _SYSSMU6_965511687$ OFFLINE
UNDOTBS1 _SYSSMU7_2247632671$ OFFLINE
UNDOTBS1 _SYSSMU8_437891266$ OFFLINE
UNDOTBS1 _SYSSMU9_3215744559$ OFFLINE
UNDOTBS1 _SYSSMU10_2925533193$ OFFLINE
TABLESPACE_NAME SEGMENT_NAME STATUS
------------------------------ ------------------------------ --------
UNDO2 _SYSSMU11_30265270$ ONLINE
UNDO2 _SYSSMU12_887248020$ ONLINE
UNDO2 _SYSSMU13_2966147360$ ONLINE
UNDO2 _SYSSMU14_3831038756$ ONLINE
UNDO2 _SYSSMU15_2022184535$ ONLINE
UNDO2 _SYSSMU16_373540134$ ONLINE
UNDO2 _SYSSMU17_3629873386$ ONLINE
UNDO2 _SYSSMU18_3727269170$ ONLINE
UNDO2 _SYSSMU19_3115551059$ ONLINE
UNDO2 _SYSSMU20_193228587$ ONLINE
CHRISTIAM ALEJANDRO NIÑO PEÑA - 3202321711
ADMINISTRACIÓN Y OPTIMIZACIÓN DE BASES DE DATOS - 2019
DOCUMENTO DE PRACTICAS
9 EJERCICIOS MÓDULO 9
9.1. BUSCAR PROCEDIMIENTOS Y TRIGGERS EN EL ESQUEMA HR:
9.1. Consultar los procedimientos almacenados del esquema hr:
[oracle@TEST ~]$ sqlplus system/oracle123@TEST
SQL> SELECT object_name
FROM dba_objects WHERE owner='HR'
AND object_type='PROCEDURE';
OBJECT_NAME
---------------------------------------------------------------
SECURE_DML
ADD_JOB_HISTORY
9.2. Consultar los disparadores del esquema hr:
SQL> column TRIGGER_NAME format a30
SQL> column TRIGGERING_EVENT format a30
SQL> SELECT trigger_name, triggering_event
FROM dba_triggers
WHERE owner='HR';
TRIGGER_NAME TRIGGERING_EVENT
------------------------------ ------------------------------
SECURE_EMPLOYEES INSERT OR UPDATE OR DELETE
UPDATE_JOB_HISTORY UPDATE
9.3. Chequear el código de los procedimientos almacenados y disparadores
de hr con el SQL DEVELOPER
- Procedimientos
create or replace PROCEDURE add_job_history
( p_emp_id job_history.employee_id%type
, p_start_date job_history.start_date%type
, p_end_date job_history.end_date%type
, p_job_id job_history.job_id%type
, p_department_id job_history.department_id%type
)
IS
BEGIN
INSERT INTO job_history (employee_id, start_date, end_date,
job_id, department_id)
VALUES(p_emp_id, p_start_date, p_end_date, p_job_id,
p_department_id);
END add_job_history;
create or replace PROCEDURE secure_dml
IS
BEGIN
IF TO_CHAR (SYSDATE, 'HH24:MI') NOT BETWEEN '08:00' AND '18:00'
OR TO_CHAR (SYSDATE, 'DY') IN ('SAT', 'SUN') THEN
RAISE_APPLICATION_ERROR (-20205,
'You may only make changes during normal office hours');
END IF;
END secure_dml;
CHRISTIAM ALEJANDRO NIÑO PEÑA - 3202321711
ADMINISTRACIÓN Y OPTIMIZACIÓN DE BASES DE DATOS - 2019
DOCUMENTO DE PRACTICAS
- Disparadores
create or replace TRIGGER secure_employees
BEFORE INSERT OR UPDATE OR DELETE ON employees
BEGIN
secure_dml;
END secure_employees;
create or replace TRIGGER update_job_history
AFTER UPDATE OF job_id, department_id ON employees
FOR EACH ROW
BEGIN
add_job_history(:old.employee_id, :old.hire_date, sysdate,
:old.job_id, :old.department_id);
END;
CHRISTIAM ALEJANDRO NIÑO PEÑA - 3202321711
ADMINISTRACIÓN Y OPTIMIZACIÓN DE BASES DE DATOS - 2019
DOCUMENTO DE PRACTICAS
9.4. LOCKEOS
9.4.1. Conectarse al SQLPLUS con el usuario hr/hr y ejecutar el siguiente
update sobre el empleado 101 sin COMMIT;
[oracle@TEST admin]$ sqlplus hr/hr@TEST
SQL> UPDATE employees SET salary=salary+100 WHERE employee_id=101;
9.4.2. Conectarse a otra sesión de SQLPLUS con el usuario hr/hr y ejecutar
otro update sobre empleado 101, quedara en espera.
[oracle@TEST admin]$ sqlplus hr/hr@TEST
SQL> UPDATE employees SET COMMISSION_PCT=0.6 WHERE employee_id=101;
9.4.3. Ir al EM Express 12c para validar la actividad y bloqueo
9.4.4. Hacer rollback en ambas sesiones y vuelva a analizar la actividad en EM
Express 12C
SQL> ROLLBACK;
CHRISTIAM ALEJANDRO NIÑO PEÑA - 3202321711
ADMINISTRACIÓN Y OPTIMIZACIÓN DE BASES DE DATOS - 2019
DOCUMENTO DE PRACTICAS
10. EJERCICIOS MÓDULO 10
10.1. REMOVER PRIVILEGIOS POTENCIALMENTE PELIGROSOS
10.1.1. Conectarse a la base TEST como system/oracle123.
[oracle@TEST admin]$ sqlplus system/oracle123@TEST
10.1.2. Setear el sqlplus para que no muestre los encabezados de columna y
feedback de filas retornadas durante la ejecución de queries.
SQL> SET HEAD OFF
SQL> SET PAGESIZE 0
SQL> SET FEEDBACK OFF
10.1.3. Una vez realizado los seteos correspondientes ejecutar la siguiente
query direccionando la salida a un spool llamado clear_public_privs.sql.
Crear un script para revokar los permisos sobre los packages UTL.
SQL> spool $HOME/clear_public_privs.sql
SQL> SELECT 'revoke execute on '|| table_name ||' FROM public;'
FROM dba_tab_privs
WHERE table_name LIKE 'UTL_%'
AND grantee='PUBLIC';
revoke execute on UTL_BINARYINPUTSTREAM FROM public;
revoke execute on UTL_BINARYOUTPUTSTREAM FROM public;
revoke execute on UTL_CALL_STACK FROM public;
revoke execute on UTL_CHARACTERINPUTSTREAM FROM public;
revoke execute on UTL_CHARACTEROUTPUTSTREAM FROM public;
revoke execute on UTL_COLL FROM public;
revoke execute on UTL_COMPRESS FROM public;
revoke execute on UTL_ENCODE FROM public;
revoke execute on UTL_FILE FROM public;
revoke execute on UTL_GDK FROM public;
revoke execute on UTL_HTTP FROM public;
revoke execute on UTL_I18N FROM public;
revoke execute on UTL_IDENT FROM public;
revoke execute on UTL_INADDR FROM public;
revoke execute on UTL_LMS FROM public;
revoke execute on UTL_MATCH FROM public;
revoke execute on UTL_NLA FROM public;
revoke execute on UTL_NLA_ARRAY_DBL FROM public;
revoke execute on UTL_NLA_ARRAY_FLT FROM public;
revoke execute on UTL_NLA_ARRAY_INT FROM public;
revoke execute on UTL_RAW FROM public;
revoke execute on UTL_REF FROM public;
revoke execute on UTL_SMTP FROM public;
revoke execute on UTL_TCP FROM public;
revoke execute on UTL_URL FROM public;
revoke execute on UTL_ALL_IND_COMPS FROM public;
SQL> spool off
CHRISTIAM ALEJANDRO NIÑO PEÑA - 3202321711
ADMINISTRACIÓN Y OPTIMIZACIÓN DE BASES DE DATOS - 2019
DOCUMENTO DE PRACTICAS
10.1.4. Revisar el script generado sin salir del sqlplus. Mediante un editor de
texto se podrán eliminar las filas que no correspondan y luego ejecutar
los revokes que sean necesarios.
[oracle@TEST admin]$ more $HOME/clear_public_privs.sql
SQL> SELECT 'revoke execute on '|| table_name ||' FROM public;'
2 FROM dba_tab_privs
3 WHERE table_name LIKE 'UTL_%'
4 AND grantee='PUBLIC';
revoke execute on UTL_BINARYINPUTSTREAM FROM public;
revoke execute on UTL_BINARYOUTPUTSTREAM FROM public;
revoke execute on UTL_CALL_STACK FROM public;
revoke execute on UTL_CHARACTERINPUTSTREAM FROM public;
revoke execute on UTL_CHARACTEROUTPUTSTREAM FROM public;
revoke execute on UTL_COLL FROM public;
revoke execute on UTL_COMPRESS FROM public;
revoke execute on UTL_ENCODE FROM public;
revoke execute on UTL_FILE FROM public;
revoke execute on UTL_GDK FROM public;
revoke execute on UTL_HTTP FROM public;
revoke execute on UTL_I18N FROM public;
revoke execute on UTL_IDENT FROM public;
revoke execute on UTL_INADDR FROM public;
revoke execute on UTL_LMS FROM public;
revoke execute on UTL_MATCH FROM public;
revoke execute on UTL_NLA FROM public;
revoke execute on UTL_NLA_ARRAY_DBL FROM public;
revoke execute on UTL_NLA_ARRAY_FLT FROM public;
revoke execute on UTL_NLA_ARRAY_INT FROM public;
revoke execute on UTL_RAW FROM public;
revoke execute on UTL_REF FROM public;
revoke execute on UTL_SMTP FROM public;
revoke execute on UTL_TCP FROM public;
revoke execute on UTL_URL FROM public;
revoke execute on UTL_ALL_IND_COMPS FROM public;
SQL> spool off
Utilice vi, pulsar dd para borrar las filas que no desee y para guardar presione
la tecla escape luego digite (:wq), dos puntos + wq
Debería quedar
[oracle@TEST admin]$ more $HOME/clear_public_privs.sql
revoke execute on UTL_BINARYINPUTSTREAM FROM public;
revoke execute on UTL_BINARYOUTPUTSTREAM FROM public;
revoke execute on UTL_CALL_STACK FROM public;
revoke execute on UTL_CHARACTERINPUTSTREAM FROM public;
revoke execute on UTL_CHARACTEROUTPUTSTREAM FROM public;
revoke execute on UTL_COLL FROM public;
revoke execute on UTL_COMPRESS FROM public;
revoke execute on UTL_ENCODE FROM public;
revoke execute on UTL_FILE FROM public;
revoke execute on UTL_GDK FROM public;
revoke execute on UTL_HTTP FROM public;
revoke execute on UTL_I18N FROM public;
revoke execute on UTL_IDENT FROM public;
CHRISTIAM ALEJANDRO NIÑO PEÑA - 3202321711
ADMINISTRACIÓN Y OPTIMIZACIÓN DE BASES DE DATOS - 2019
DOCUMENTO DE PRACTICAS
revoke execute on UTL_INADDR FROM public;
revoke execute on UTL_LMS FROM public;
revoke execute on UTL_MATCH FROM public;
revoke execute on UTL_NLA FROM public;
revoke execute on UTL_NLA_ARRAY_DBL FROM public;
revoke execute on UTL_NLA_ARRAY_FLT FROM public;
revoke execute on UTL_NLA_ARRAY_INT FROM public;
revoke execute on UTL_RAW FROM public;
revoke execute on UTL_REF FROM public;
revoke execute on UTL_SMTP FROM public;
revoke execute on UTL_TCP FROM public;
revoke execute on UTL_URL FROM public;
revoke execute on UTL_ALL_IND_COMPS FROM public;
10.1.5. Ejecute el script, puede llegar a obtener error porque estos privilegios
no se han otorgado, no hay problema es major asegurarse que estos
permisos no esten asignados.
[oracle@TEST admin]$ sqlplus system/oracle123@TEST
@$HOME/clear_public_privs.sql
revoke execute on UTL_BINARYINPUTSTREAM FROM public
*
ERROR en linea 1:
ORA-01927: no se puede revocar (REVOKE) privilegios que no se han
otorgado
CHRISTIAM ALEJANDRO NIÑO PEÑA - 3202321711
ADMINISTRACIÓN Y OPTIMIZACIÓN DE BASES DE DATOS - 2019
DOCUMENTO DE PRACTICAS
10.2. HABILITAR AUDITORÍA EN LA BASE DE DATOS
10.2.1. Setear el parámetro audit_trail=DB con un alter system a nivel de spfile
y reiniciar la base para que tome el valor, conectese como sysdba
[oracle@TEST admin]$ sqlplus / as sysdba;
SQL> ALTER SYSTEM SET audit_trail='DB' SCOPE=spfile;
SQL> shutdown immediate;
Base de datos cerrada.
Base de datos desmontada.
Instancia ORACLE cerrada.
SQL> startup
Instancia ORACLE iniciada.
Total System Global Area 1560281088 bytes
Fixed Size 8621088 bytes
Variable Size 1107297248 bytes
Database Buffers 436207616 bytes
Redo Buffers 8155136 bytes
Base de datos montada.
Base de datos abierta.
10.2.2. Configurar auditoría de insert, update y delete sobre la tabla hr.jobs por
sesión para todos los usuarios de la base:
SQL> AUDIT insert, update, delete ON hr.employees BY SESSION;
Auditoria terminada correctamente.
10.2.3. Ejecutar las siguientes sentencias DML conectados como hr/hr:
[oracle@TEST ~]$ sqlplus hr/hr@TEST
SQL> INSERT INTO hr.employees
VALUES (555,'Perez','Juan Carlos','PEREZJC','515.123.8888',
TO_DATE('27-SEP-2010','dd-MON-yyyy'),'PR_REP',10000,NULL,101,70);
SQL> COMMIT;
Confirmación terminada.
SQL> UPDATE hr.employees
SET salary=15000
WHERE employee_id=555;
SQL> COMMIT;
SQL> DELETE FROM hr.employees
WHERE employee_id=555;
SQL> COMMIT;
CHRISTIAM ALEJANDRO NIÑO PEÑA - 3202321711
ADMINISTRACIÓN Y OPTIMIZACIÓN DE BASES DE DATOS - 2019
DOCUMENTO DE PRACTICAS
10.2.4. Chequear los registros de auditoria generados por las sentencias DML
ejecutadas en el punto anterior:
[oracle@TEST admin]$ sqlplus system/oracle123@TEST
SQL> column USERNAME format a10;
SQL> column SQL_TEXT format a20
SQL> column PRIV_USED format a20
SQL> column ACTION_NAME format a20
SQL> SELECT username, sql_text,priv_used,action_name
FROM dba_audit_trail;
USERNAME SQL_TEXT PRIV_USED ACTION_NAME
---------- -------------------- -------------------- -----------------
---
HR SESSION REC
HR SESSION REC
HR SESSION REC
HR SESSION REC
10.2.5. Desactivar auditoria de base de datos:
[oracle@TEST admin]$ sqlplus / as sysdba;
SQL> NOAUDIT INSERT ON hr.employees;
No auditoria terminada correctamente.
SQL> NOAUDIT UPDATE ON hr.employees;
No auditoria terminada correctamente.
SQL> NOAUDIT DELETE ON hr.employees;
No auditoria terminada correctamente.
SQL> ALTER SYSTEM SET audit_trail='NONE' SCOPE=SPFILE;
Sistema modificado.
SQL> SHUTDOWN IMMEDIATE;
Base de datos cerrada.
Base de datos desmontada.
Instancia ORACLE cerrada.
SQL> STARTUP;
Instancia ORACLE iniciada.
Total System Global Area 1560281088 bytes
Fixed Size 8621088 bytes
Variable Size 1107297248 bytes
Database Buffers 436207616 bytes
Redo Buffers 8155136 bytes
Base de datos montada.
Base de datos abierta.
CHRISTIAM ALEJANDRO NIÑO PEÑA - 3202321711
ADMINISTRACIÓN Y OPTIMIZACIÓN DE BASES DE DATOS - 2019
DOCUMENTO DE PRACTICAS
10.3. AUDITORÍA DE GRANO FINO (FGA)
10.3.1. Crear una policy de auditoria FGA que audite la tabla HR.EMPLOYEES
cuando se acceda por la condición de búsqueda department_id=80 o
cuando se accede a la columna salary. La policy se debe llamar
POLITICA_1.
[oracle@TEST admin]$ sqlplus system/oracle123@TEST
SQL> BEGIN
dbms_fga.add_policy(object_schema=>'HR',
object_name=>'EMPLOYEES',
policy_name=>'POLITICA_1',
audit_condition=>'department_id=80',
audit_column=>'SALARY',
enable => TRUE);
END;
/
10.3.2. Loguearse como hr/hr y ejecutar la siguiente query:
[oracle@TEST ~]$ sqlplus hr/hr@TEST
SQL> SELECT FIRST_NAME, LAST_NAME, SALARY
FROM EMPLOYEES
WHERE DEPARTMENT_ID=80;
FIRST_NAME LAST_NAME SALARY
-------------------- ------------------------- ----------
John Russell 14000
Karen Partners 13500
Alberto Errazuriz 12000
Gerald Cambrault 11000
Eleni Zlotkey 10500
Peter Tucker 10000
David Bernstein 9500
Peter Hall 9000
Christopher Olsen 8000
Nanette Cambrault 7500
Oliver Tuvault 7000
FIRST_NAME LAST_NAME SALARY
-------------------- ------------------------- ----------
Janette King 10000
Patrick Sully 9500
Allan McEwen 9000
Lindsey Smith 8000
Louise Doran 7500
Sarath Sewall 7000
Clara Vishney 10500
Danielle Greene 9500
Mattea Marvins 7200
David Lee 6800
Sundar Ande 6400
FIRST_NAME LAST_NAME SALARY
-------------------- ------------------------- ----------
Amit Banda 6200
Lisa Ozer 11500
CHRISTIAM ALEJANDRO NIÑO PEÑA - 3202321711
ADMINISTRACIÓN Y OPTIMIZACIÓN DE BASES DE DATOS - 2019
DOCUMENTO DE PRACTICAS
Harrison Bloom 10000
Tayler Fox 9600
William Smith 7400
Elizabeth Bates 7300
Sundita Kumar 6100
Ellen Abel 11000
Alyssa Hutton 8800
Jonathon Taylor 8600
Jack Livingston 8400
FIRST_NAME LAST_NAME SALARY
-------------------- ------------------------- ----------
Charles Johnson 6200
10.3.3. Consultar la vista DBA_FGA_AUDIT_TRAIL como system para verificar
el registro de auditoría generado por la consulta anterior.
[oracle@TEST admin]$ sqlplus system/oracle123@TEST
SQL> column SESSION_ID format a10;
SQL> column TIMESTAMP format a10;
SQL> column DB_USER format a10;
SQL> column OS_USER format a10;
SQL> column OBJECT_SCHEMA format a10;
SQL> column OBJECT_NAME format a10;
SQL> column POLICY_NAME format a10;
SQL> column SQL_TEXT format a40;
SQL> set linesize 150;
SQL> SELECT SESSION_ID, TIMESTAMP, DB_USER, OS_USER,
OBJECT_SCHEMA,OBJECT_NAME,POLICY_NAME,SQL_TEXT
FROM DBA_FGA_AUDIT_TRAIL;
CHRISTIAM ALEJANDRO NIÑO PEÑA - 3202321711
ADMINISTRACIÓN Y OPTIMIZACIÓN DE BASES DE DATOS - 2019
DOCUMENTO DE PRACTICAS
11. EJERCICIOS MÓDULO 11
11.1. RECOLECTAR ESTADÍSTICAS DEL OPTIMIZADOR
11.1.1. Crear una tabla y un índice en el esquema hr:
[oracle@TEST admin]$ sqlplus hr/hr@TEST
SQL> CREATE TABLE empleados AS SELECT * FROM employees;
Tabla creada.
SQL> CREATE INDEX emp_id_idx ON empleados(employee_id);
Indice creado.
11.1.2. Recolectar las estadísticas de la tabla empleados con el package
DBMS_STATS:
SQL> exec DBMS_STATS.GATHER_TABLE_STATS('HR','EMPLEADOS');
Procedimiento PL/SQL terminado correctamente.
11.1.3. Verificar las estadísticas de la tabla empleados:
SQL> SELECT count(*) FROM empleados;
COUNT(*)
----------
107
SQL> SELECT num_rows,last_analyzed
FROM user_tables
WHERE table_name='EMPLEADOS';
NUM_ROWS LAST_ANA
---------- --------
107 19/07/17
SQL> SELECT distinct_keys,last_analyzed
FROM user_indexes
WHERE index_name='EMP_ID_IDX';
DISTINCT_KEYS LAST_ANA
------------- --------
107 /07/17
11.1.4. Borrar todas las filas de la tabla empleados:
SQL> DELETE FROM empleados;
107 filas suprimidas.
SQL> COMMIT;
Confirmacion terminada.
CHRISTIAM ALEJANDRO NIÑO PEÑA - 3202321711
ADMINISTRACIÓN Y OPTIMIZACIÓN DE BASES DE DATOS - 2019
DOCUMENTO DE PRACTICAS
11.2. AWR AUTOMATIC WORKLOAD REPOSITORY
11.2.1. Ingrese como sysdba y ejecute el script awrrpt.sql para generar el
reporte, escoja un día y 2 fechas de instantáneas, finalmente se le da un
nombre al reporte y se genera en la ruta donde se ejecutó el SQLPLUS,
descárguelo y valídelo.
[oracle@TEST admin]$ sqlplus / as sysdba;
SQL> @$ORACLE_HOME/rdbms/admin/awrrpt.sql
Specify the Report Type
~~~~~~~~~~~~~~~~~~~~~~~
AWR reports can be generated in the following formats. Please enter the
name of the format at the prompt. Default value is 'html'.
'html' HTML format (default)
'text' Text format
'active-html' Includes Performance Hub active report
Introduzca un valor para report_type: html
antiguo 1: select 'Type Specified: ',lower(nvl('&&report_type','html'))
report_type from dual
nuevo 1: select 'Type Specified: ',lower(nvl('html','html')) report_type
from dual
Type Specified: html
antiguo 1: select '&&report_type' report_type_def from dual
nuevo 1: select 'html' report_type_def from dual
antiguo 1: select '&&view_loc' view_loc_def from dual
nuevo 1: select 'AWR_PDB' view_loc_def from dual
Current Instance
~~~~~~~~~~~~~~~~
DB Id DB Name Inst Num Instance Container Name
-------------- -------------- -------------- -------------- --------------
1403272483 TEST 1 TEST TEST
Instances in this Workload Repository schema
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
DB Id Inst Num DB Name Instance Host
------------ ---------- --------- ---------- ------
* 1403272483 1 TEST TEST TEST.test.d
Using 1403272483 for database Id
Using 1 for instance number
Specify the number of days of snapshots to choose from
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Entering the number of days (n) will result in the most recent
(n) days of snapshots being listed. Pressing <return> without
specifying a number lists all completed snapshots.
Introduzca un valor para num_days: 1
Listing the last day's Completed Snapshots
Instance DB Name Snap Id Snap Started Snap Level
------------ ------------ ---------- ------------------ ----------
CHRISTIAM ALEJANDRO NIÑO PEÑA - 3202321711
ADMINISTRACIÓN Y OPTIMIZACIÓN DE BASES DE DATOS - 2019
DOCUMENTO DE PRACTICAS
TEST TEST 37 19 Jul 2017 00:00 1
38 19 Jul 2017 01:00 1
39 19 Jul 2017 02:00 1
40 19 Jul 2017 03:00 1
41 19 Jul 2017 04:00 1
42 19 Jul 2017 05:00 1
43 19 Jul 2017 06:06 1
Specify the Begin and End Snapshot Ids
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Introduzca un valor para begin_snap: 37
Begin Snapshot Id specified: 37
Introduzca un valor para end_snap: 38
End Snapshot Id specified: 38
Specify the Report Name
~~~~~~~~~~~~~~~~~~~~~~~
The default report file name is awrrpt_1_37_38.html. To use this name,
press <return> to continue, otherwise enter an alternative.
Introduzca un valor para report_name: informe_awr.html
Using the report name informe_awr.html
ls /u01/oracle/12.2/network/admin/informe_awr.html
La vista del reporte será la siguiente:
Tambien puede validarlo con el query a continuación donde se debe ingresar el
DBID, el número de días y las instantaneas inicial y final.
SELECT output
FROM TABLE
(dbms_workload_repository.awr_report_text(1403272483,1,37,38));
CHRISTIAM ALEJANDRO NIÑO PEÑA - 3202321711
ADMINISTRACIÓN Y OPTIMIZACIÓN DE BASES DE DATOS - 2019
DOCUMENTO DE PRACTICAS
11.3. OBTENER UN REPORTE DE ADDM
11.3.1. Disparar un snapshot de AWR manualmente con el procedimiento
create_snapshot del package dbms_workload_repository:
[oracle@TEST admin]$ sqlplus system/oracle123@TEST
SQL> EXECUTE DBMS_WORKLOAD_REPOSITORY.CREATE_SNAPSHOT;
11.3.2. Simular una sobrecarga en la base de datos ejecutando el siguiente
bloque de PL/SQL en HR, se demora un poco mientras se crea la tabla.
[oracle@TEST ~]$ sqlplus hr/hr@TEST
CREATE TABLE tmptab as SELECT * FROM all_objects;
BEGIN
FOR i IN 1..10 LOOP
insert into tmptab SELECT * FROM all_objects;
delete FROM tmptab;
end loop;
commit;
end;
/
Procedimiento PL/SQL terminado correctamente.
11.3.3. Volver a disparar manualmente un SNAPSHOT de AWR con system
SQL> EXECUTE DBMS_WORKLOAD_REPOSITORY.CREATE_SNAPSHOT;
Procedimiento PL/SQL terminado correctamente.
11.3.4. Generar el reporte ADDM con usuario system
SQL> @$ORACLE_HOME/rdbms/admin/addmrpt.sql
Current Instance
~~~~~~~~~~~~~~~~
DB Id DB Name Inst Num Instance
----------- ------------ -------- ------------
1403272483 TEST 1 TEST
Instances in this Workload Repository schema
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
DB Id Inst Num DB Name Instance Host
------------ ---------- --------- ---------- ------
* 1403272483 1 TEST TEST TEST.test.d
Using 1403272483 for database Id
Using 1 for instance number
Specify the number of days of snapshots to choose from
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Entering the number of days (n) will result in the most recent
(n) days of snapshots being listed. Pressing <return> without
specifying a number lists all completed snapshots.
CHRISTIAM ALEJANDRO NIÑO PEÑA - 3202321711
ADMINISTRACIÓN Y OPTIMIZACIÓN DE BASES DE DATOS - 2019
DOCUMENTO DE PRACTICAS
Listing the last 3 days of Completed Snapshots
Instance DB Name Snap Id Snap Started Snap Level
------------ ------------ ---------- ------------------ ----------
TEST TEST 1 17 Jul 2017 11:38 1
2 17 Jul 2017 13:00 1
3 17 Jul 2017 14:00 1
4 17 Jul 2017 15:00 1
5 17 Jul 2017 16:00 1
6 17 Jul 2017 17:00 1
7 17 Jul 2017 18:00 1
8 17 Jul 2017 19:00 1
9 17 Jul 2017 20:00 1
10 17 Jul 2017 21:00 1
11 17 Jul 2017 22:00 1
12 17 Jul 2017 23:00 1
13 18 Jul 2017 00:00 1
14 18 Jul 2017 01:00 1
15 18 Jul 2017 02:00 1
16 18 Jul 2017 03:00 1
17 18 Jul 2017 04:00 1
18 18 Jul 2017 05:00 1
19 18 Jul 2017 06:00 1
20 18 Jul 2017 07:00 1
21 18 Jul 2017 08:00 1
22 18 Jul 2017 09:00 1
23 18 Jul 2017 10:00 1
24 18 Jul 2017 11:00 1
25 18 Jul 2017 12:00 1
26 18 Jul 2017 13:00 1
27 18 Jul 2017 14:00 1
28 18 Jul 2017 15:00 1
29 18 Jul 2017 16:00 1
30 18 Jul 2017 17:00 1
31 18 Jul 2017 18:00 1
32 18 Jul 2017 19:00 1
33 18 Jul 2017 20:00 1
34 18 Jul 2017 21:00 1
35 18 Jul 2017 22:00 1
36 18 Jul 2017 23:00 1
37 19 Jul 2017 00:00 1
38 19 Jul 2017 01:00 1
39 19 Jul 2017 02:00 1
40 19 Jul 2017 03:00 1
41 19 Jul 2017 04:00 1
42 19 Jul 2017 05:00 1
43 19 Jul 2017 06:06 1
44 19 Jul 2017 07:00 1
45 19 Jul 2017 07:05 1
46 19 Jul 2017 07:10 1
Specify the Begin and End Snapshot Ids
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Introduzca un valor para begin_snap: 44
Begin Snapshot Id specified: 44
Introduzca un valor para end_snap: 46
End Snapshot Id specified: 46
Specify the Report Name
~~~~~~~~~~~~~~~~~~~~~~~
The default report file name is addmrpt_1_44_46.txt. To use this name,
press <return> to continue, otherwise enter an alternative.
Introduzca un valor para report_name: addm_report.txt
CHRISTIAM ALEJANDRO NIÑO PEÑA - 3202321711
ADMINISTRACIÓN Y OPTIMIZACIÓN DE BASES DE DATOS - 2019
DOCUMENTO DE PRACTICAS
Using the report name addm_report.txt
Running the ADDM analysis on the specified pair of snapshots ...
Generating the ADDM report for this analysis ...
Informe ADDM para la Tarea 'TAREA_304'
--------------------------------------
Periodo de Analisis
-------------------
Rango de instantaneas AWR de 44 a 46.
El periodo de tiempo empieza en 19/07/17 07:00:39 AM
El periodo de tiempo termina en 19/07/17 07:10:29 AM
Destino de Analisis
-------------------
Base de datos 'TEST' con identificador de base de datos 1403272483.
Version de la base de datos 12.2.0.1.0.
ADDM realizo un analisis de la instancia TEST, numerada 1 y alojada en
TEST.test.domain.
Actividad durante Periodo de Analisis
-------------------------------------
El tiempo total de la base de datos fue de 34 segundos.
El numero medio de sesiones activas fue ,06.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
No hay conclusiones de las que informar.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Informacion Adicional
---------------------
Otra Informacion
----------------
No habia suficiente actividad de la base de datos para ejecutar ADDM.
End of Report
Report written to addm_report.txt
CHRISTIAM ALEJANDRO NIÑO PEÑA - 3202321711
ADMINISTRACIÓN Y OPTIMIZACIÓN DE BASES DE DATOS - 2019
DOCUMENTO DE PRACTICAS
12. EJERCICIOS MÓDULO 12
12.1. MONITOREO DE PERFORMANCE CON ENTERPRISE MANAGER:
12.1.1. Conectarse al SQLPLUS con el usuario hr/hr y ejecutar el siguiente
update sobre el empleado 101:
[oracle@TEST admin]$ sqlplus hr/hr@TEST
SQL> UPDATE employees
SET salary=salary+100
WHERE employee_id=101;
1 fila actualizada.
12.1.2. Conectarse a otra sesión de sqlplus con el usuario hr/hr y ejecutar otro
update sobre empleado 101, quedara bloqueada.
[oracle@TEST admin]$ sqlplus hr/hr@TEST
SQL> UPDATE employees
SET COMMISSION_PCT=0.6
WHERE employee_id=101;
12.1.3. Ir al EM12c y chequear en la página de Performance las esperas que
se producen en la instancia:
12.1.4. Hacer rollback en ambas sesiones
SQL> ROLLBACK;
12.1.5. Simular una sobrecarga en la base de datos ejecutando el siguiente
bloque de PL/SQL, se demorara un poco su ejecución:
[oracle@TEST ~]$ sqlplus system/oracle123@TEST
SQL> CREATE TABLE tmptab as SELECT * FROM all_objects;
SQL> BEGIN
FOR i IN 1..12 LOOP
INSERT INTO tmptab SELECT * FROM all_objects;
DELETE FROM tmptab;
END LOOP;
COMMIT;
END;
/
CHRISTIAM ALEJANDRO NIÑO PEÑA - 3202321711
ADMINISTRACIÓN Y OPTIMIZACIÓN DE BASES DE DATOS - 2019
DOCUMENTO DE PRACTICAS
12.1.6. Mientras se está ejecutando el bloque de PL/SQL ir a la página de Hub
de rendimiento del EM12C y chequear las esperas
CHRISTIAM ALEJANDRO NIÑO PEÑA - 3202321711
ADMINISTRACIÓN Y OPTIMIZACIÓN DE BASES DE DATOS - 2019
DOCUMENTO DE PRACTICAS
12.2. MANEJO DE MEMORIA Y MEMORY ADVISORS:
12.2.1. Ejecutar el siguiente query de validación de tamaño de SGA
SQL> select snap_id, sga_size
from dba_hist_sga_target_advice
where sga_size_factor = 1
order by snap_id asc;
SNAP_ID SGA_SIZE
---------- ----------
1 880
2 880
3 880
4 880
5 880
6 880
7 880
8 880
9 880
10 880
11 880
SNAP_ID SGA_SIZE
---------- ----------
12 880
13 880
14 880
15 880
16 880
17 880
18 880
19 880
20 880
21 880
22 880
SNAP_ID SGA_SIZE
---------- ----------
23 880
24 880
25 880
26 880
27 880
28 880
29 880
30 880
31 880
32 880
33 880
SNAP_ID SGA_SIZE
---------- ----------
34 880
35 880
36 880
37 880
38 880
39 880
40 880
CHRISTIAM ALEJANDRO NIÑO PEÑA - 3202321711
ADMINISTRACIÓN Y OPTIMIZACIÓN DE BASES DE DATOS - 2019
DOCUMENTO DE PRACTICAS
41 880
42 880
43 880
44 880
SNAP_ID SGA_SIZE
---------- ----------
45 880
46 880
46 filas seleccionadas.
CHRISTIAM ALEJANDRO NIÑO PEÑA - 3202321711
ADMINISTRACIÓN Y OPTIMIZACIÓN DE BASES DE DATOS - 2019
DOCUMENTO DE PRACTICAS
12.3. OBJETOS INVÁLIDOS E INDICES UNUSABLE
12.3.1. Conectarse como system/oracle123 y crear la tabla valid_t:
[oracle@TEST admin]$ sqlplus system/oracle123@TEST
SQL> CREATE TABLE valid_t AS SELECT * FROM all_users;
Tabla creada.
12.3.2. Crear los siguientes objetos dependientes de la tabla valid_t:
SQL> CREATE TABLE valid_t AS SELECT * FROM all_users;
Tabla creada.
SQL> CREATE TABLE valid_t AS SELECT * FROM all_users;
Tabla creada.
SQL> CREATE INDEX valid_i ON valid_t (username);
Indice creado.
SQL> CREATE VIEW valid_v AS SELECT * FROM valid_t;
Vista creada.
SQL> CREATE PROCEDURE valid_p AS
BEGIN
INSERT INTO valid_t(USERNAME,USER_ID,CREATED)
VALUES ('name',99,sysdate);
END;
/
12.3.3. Confirmar los estados de los objetos:
SQL> column OBJECT_NAME format a20;
SQL> SELECT object_name,object_type,status
FROM user_objects
WHERE object_name LIKE 'VALID%';
OBJECT_NAME OBJECT_TYPE STATUS
-------------------- ----------------------- -------
VALID_I INDEX VALID
VALID_P PROCEDURE VALID
VALID_T TABLE VALID
VALID_V VIEW VALID
SQL> SELECT status
FROM user_indexes
WHERE index_name ='VALID_I';
STATUS
--------
VALID
CHRISTIAM ALEJANDRO NIÑO PEÑA - 3202321711
ADMINISTRACIÓN Y OPTIMIZACIÓN DE BASES DE DATOS - 2019
DOCUMENTO DE PRACTICAS
12.3.4. Ejecutar las siguientes DDL que alteran la tabla valid_t:
SQL> ALTER TABLE valid_t DROP COLUMN created;
Tabla modificada.
SQL> ALTER TABLE valid_t MOVE TABLESPACE users;
Tabla modificada.
12.3.5. Repetir la siguiente consulta para chequear el estado de los objetos e
índice, están INVALID y UNUSABLE respectivamente:
SQL> SELECT object_name,object_type,status
FROM user_objects
WHERE object_name LIKE 'VALID%';
OBJECT_NAME OBJECT_TYPE STATUS
-------------------- ----------------------- -------
VALID_I INDEX VALID
VALID_P PROCEDURE INVALID
VALID_T TABLE VALID
VALID_V VIEW INVALID
SQL> SELECT status
FROM user_indexes
WHERE index_name ='VALID_I';
STATUS
--------
UNUSABLE
12.3.6. Tratar de compilar los objetos y hacer rebuild del índice:
SQL> ALTER VIEW valid_v COMPILE;
Advertencia: Vista modificada con errores de compilacion.
SQL> ALTER PROCEDURE valid_p COMPILE;
Advertencia: Procedimiento modificado con errores de compilacion.
SQL> ALTER INDEX valid_i REBUILD ONLINE NOLOGGING;
Indice modificado.
Volver a agregar la columna borrada:
SQL> ALTER TABLE valid_t ADD(created date);
Tabla modificada.
CHRISTIAM ALEJANDRO NIÑO PEÑA - 3202321711
ADMINISTRACIÓN Y OPTIMIZACIÓN DE BASES DE DATOS - 2019
DOCUMENTO DE PRACTICAS
12.3.7. Ejecutar el procedimiento y acceder a la vista:
SQL> EXECUTE valid_p;
SQL> column DEFAULT_COLLATION format a20
SQL> column USERNAME format a20
SQL> SELECT * FROM valid_v;
USERNAME USER_ID CREATED COM O INH DEFAULT_COLLATION IMP ALL
-------------------- ---------- -------- --- - --- -------------------- --- --
SYS 0 YES Y YES USING_NLS_COMP NO NO
AUDSYS 8 YES Y YES USING_NLS_COMP NO NO
SYSTEM 9 YES Y YES USING_NLS_COMP NO NO
SYSBACKUP 2147483617 YES Y YES USING_NLS_COMP NO NO
SYSDG 2147483618 YES Y YES USING_NLS_COMP NO NO
SYSKM 2147483619 YES Y YES USING_NLS_COMP NO NO
SYSRAC 2147483620 YES Y YES USING_NLS_COMP NO NO
OUTLN 13 YES Y YES USING_NLS_COMP NO NO
XS$NULL 2147483638 YES Y YES USING_NLS_COMP NO NO
GSMADMIN_INTERNAL 21 YES Y YES USING_NLS_COMP NO NO
GSMUSER 22 YES Y YES USING_NLS_COMP NO NO
12.3.8. Ejecutar las siguientes consultas para verificar que los objetos ya se
encuentran válidos, el uso de los objetos fuerza a una recompilación
automática
SQL> column OBJECT_NAME format a20;
SQL> SELECT object_name,object_type,status
FROM user_objects
WHERE object_name LIKE 'VALID%';
OBJECT_NAME OBJECT_TYPE STATUS
-------------------- ----------------------- -------
VALID_I INDEX VALID
VALID_P PROCEDURE VALID
VALID_T TABLE VALID
VALID_V VIEW VALID
SQL> SELECT status
FROM user_indexes
WHERE index_name ='VALID_I';
STATUS
--------
VALID
CHRISTIAM ALEJANDRO NIÑO PEÑA - 3202321711
ADMINISTRACIÓN Y OPTIMIZACIÓN DE BASES DE DATOS - 2019
DOCUMENTO DE PRACTICAS
13. EJERCICIOS MÓDULO 13
13.1. FLASHBACK DROP
13.1.1. Crear la tabla emp a partir de employees con el usuario HR
[oracle@TEST admin]$ sqlplus hr/hr@TEST
SQL> CREATE TABLE emp as SELECT * FROM employees;
13.1.2. Chequear el parámetro recyclebin conectado como system:
[oracle@TEST ~]$ sqlplus system/oracle123@TEST
SQL> SHOW PARAMETER recyclebin;
NAME TYPE VALUE
------------------------------------ ----------- ---------------------
recyclebin string on
13.1.3. Borrar la tabla emp con el usuario HR
SQL> DROP TABLE emp;
13.1.4. Hacer un SELECT y chequear que la tabla emp no existe:
SQL> SELECT * FROM emp;
SELECT * FROM emp
*
ERROR en linea 1:
ORA-00942: la tabla o vista no existe
13.1.5. Recuperar la tabla desde system
SQL> FLASHBACK TABLE hr.emp TO BEFORE DROP;
13.1.6. Verificar que la tabla se ha recuperado en HR
SQL> DESC hr.emp
Nombre ?Nulo? Tipo
----------------------------------------- -------- -----------------
EMPLOYEE_ID NUMBER(6)
FIRST_NAME VARCHAR2(20)
LAST_NAME NOT NULL VARCHAR2(25)
EMAIL NOT NULL VARCHAR2(25)
PHONE_NUMBER VARCHAR2(20)
HIRE_DATE NOT NULL DATE
JOB_ID NOT NULL VARCHAR2(10)
SALARY NUMBER(8,2)
COMMISSION_PCT NUMBER(2,2)
MANAGER_ID NUMBER(6)
DEPARTMENT_ID NUMBER(4)
SQL> SELECT count(*) FROM emp;
COUNT(*)
----------
107
CHRISTIAM ALEJANDRO NIÑO PEÑA - 3202321711
ADMINISTRACIÓN Y OPTIMIZACIÓN DE BASES DE DATOS - 2019
DOCUMENTO DE PRACTICAS
13.2. REDO LOG FILES
13.2.1. Verificar cuantos redo log groups hay en la base TEST:
[oracle@TEST ~]$ sqlplus system/oracle123@TEST
SQL> SELECT GROUP#,SEQUENCE#,BYTES,MEMBERS FROM v$log;
GROUP# SEQUENCE# BYTES MEMBERS
---------- ---------- ---------- ----------
1 7 209715200 1
2 8 209715200 1
3 9 209715200 1
13.2.2. Verificar cuantos miembros tiene cada redo log group de la base TEST:
SQL> column member format a30;
SQL> SELECT *
FROM v$logfile
ORDER BY group#;
GROUP# STATUS TYPE MEMBER IS_ CON_ID
---------- ------- ------- ------------------------------ --- ----------
1 ONLINE /u01/data/TEST/redo01.log NO 0
2 ONLINE /u01/data/TEST/redo02.log NO 0
3 ONLINE /u01/data/TEST/redo03.log NO 0
13.2.3. Agregar un miembro más a cada redo log group:
SQL> ALTER DATABASE ADD LOGFILE MEMBER
'/u01/data/TEST/redo01b.log' TO GROUP 1,
'/u01/data/TEST/redo02b.log' TO GROUP 2,
'/u01/data/TEST/redo03b.log' TO GROUP 3;
Base de datos modificada.
13.2.4. Verificar nuevamente los miembros de cada redo log group:
SQL> alter system switch logfile;
SQL> alter system switch logfile;
SQL> alter system switch logfile;
SQL> column member format a30;
SQL> SELECT *
FROM v$logfile
ORDER BY group#;
GROUP# STATUS TYPE MEMBER IS_ CON_ID
---------- ------- ------- ------------------------------ --- ----------
1 ONLINE /u01/data/TEST/redo01.log NO 0
1 ONLINE /u01/data/TEST/redo01b.log NO 0
2 ONLINE /u01/data/TEST/redo02b.log NO 0
2 ONLINE /u01/data/TEST/redo02.log NO 0
3 ONLINE /u01/data/TEST/redo03b.log NO 0
3 ONLINE /u01/data/TEST/redo03.log NO 0
6 filas seleccionadas.
CHRISTIAM ALEJANDRO NIÑO PEÑA - 3202321711
ADMINISTRACIÓN Y OPTIMIZACIÓN DE BASES DE DATOS - 2019
DOCUMENTO DE PRACTICAS
13.3. FLASH RECOVERY AREA
13.3.1. Verificar si está configurado Flash Recovery Area:
[oracle@TEST ~]$ sqlplus system/oracle123@TEST
SQL> SHOW PARAMETER DB_RECOVERY_FILE_DEST;
NAME TYPE VALUE
------------------------------------ ----------- ---------------------
---------
db_recovery_file_dest string /u01/fra
db_recovery_file_dest_size big integer 8016M
CHRISTIAM ALEJANDRO NIÑO PEÑA - 3202321711
ADMINISTRACIÓN Y OPTIMIZACIÓN DE BASES DE DATOS - 2019
DOCUMENTO DE PRACTICAS
13.4. MODO ARCHIVELOG
13.4.1. Verificar si la base está en modo archivelog o no:
[oracle@TEST ~]$ sqlplus / as sysdba;
SQL> ARCHIVE LOG LIST;
Modo log de la base de datos Modo de No Archivado
Archivado automatico Desactivado
Destino del archivo USE_DB_RECOVERY_FILE_DEST
Secuencia de log en linea mas antigua 10
Secuencia de log actual 12
13.4.2. Configurar la base en modo archivelog
SQL> SHUTDOWN IMMEDIATE;
Base de datos cerrada.
Base de datos desmontada.
Instancia ORACLE cerrada.
SQL> STARTUP MOUNT;
Instancia ORACLE iniciada.
Total System Global Area 1560281088 bytes
Fixed Size 8621088 bytes
Variable Size 1107297248 bytes
Database Buffers 436207616 bytes
Redo Buffers 8155136 bytes
Base de datos montada.
SQL> ALTER DATABASE ARCHIVELOG;
SQL> ALTER DATABASE OPEN;
13.4.3. Verificar que ahora está en modo archivelog:
SQL> ARCHIVE LOG LIST
Modo log de la base de datos Modo de Archivado
Archivado automatico Activado
Destino del archivo USE_DB_RECOVERY_FILE_DEST
Secuencia de log en linea más antigua 10
Siguiente secuencia de log para archivar 12
Secuencia de log actual 12
13.4.4. Forzar manualmente a archivar:
SQL> ALTER SYSTEM ARCHIVE LOG CURRENT;
13.4.5. Confirmar que el archive log file se generó en la Flash Recovery area:
SQL> column name format a40
SQL> SELECT name, is_recovery_dest_file
FROM v$archived_log;
NAME IS_
---------------------------------------- ---
/u01/fra/TEST/archivelog/2017_07_19/o1_ YES
mf_1_12_dpyzo9r8_.arc
CHRISTIAM ALEJANDRO NIÑO PEÑA - 3202321711
ADMINISTRACIÓN Y OPTIMIZACIÓN DE BASES DE DATOS - 2019
DOCUMENTO DE PRACTICAS
14. EJERCICIOS MÓDULO 14
14.1. BACKUP CONSISTENTE (BASE BAJA) CON RMAN
14.1.1. Bajar la base de datos TEST:
[oracle@TEST ~]$ sqlplus / as sysdba;
SQL> SHUTDOWN IMMEDIATE;
Base de datos cerrada.
Base de datos desmontada.
Instancia ORACLE cerrada.
14.1.2. Montar la base TEST (el backup consistente con rman se realiza con la
base montada porque lee la estructura de la base desde los controlfiles):
SQL> STARTUP MOUNT;
Instancia ORACLE iniciada.
Total System Global Area 1560281088 bytes
Fixed Size 8621088 bytes
Variable Size 1107297248 bytes
Database Buffers 436207616 bytes
Redo Buffers 8155136 bytes
Base de datos montada.
14.1.3. Loguearse al RMAN y ejecutar un backup de la base datos con formato
backupset que se almacene en la flash recovery area:
[oracle@TEST ~]$ rman target /
Recovery Manager: Release 12.2.0.1.0 - Production on Wed Jul 19
10:53:51 2017
Copyright (c) 1982, 2017, Oracle and/or its affiliates. All rights
reserved.
connected to target database: TEST (DBID=1403272483, not open)
RMAN> BACKUP DATABASE;
Starting backup at 19-JUL-17
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=41 device type=DISK
channel ORA_DISK_1: starting full datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
input datafile file number=00001 name=/u01/data/TEST/system01.dbf
input datafile file number=00003 name=/u01/data/TEST/sysaux01.dbf
input datafile file number=00004 name=/u01/data/TEST/undotbs01.dbf
input datafile file number=00008 name=/u01/data/TEST/undo2.dbf
input datafile file number=00005 name=/u01/data/TEST/newtbs_01.dbf
input datafile file number=00002 name=/u01/data/TEST/newtbs2.dbf
input datafile file number=00007 name=/u01/data/TEST/users01.dbf
channel ORA_DISK_1: starting piece 1 at 19-JUL-17
channel ORA_DISK_1: finished piece 1 at 19-JUL-17
CHRISTIAM ALEJANDRO NIÑO PEÑA - 3202321711
ADMINISTRACIÓN Y OPTIMIZACIÓN DE BASES DE DATOS - 2019
DOCUMENTO DE PRACTICAS
piece
handle=/u01/fra/TEST/backupset/2017_07_19/o1_mf_nnndf_TAG20170719T1054
07_dpz050g9_.bkp tag=TAG20170719T105407 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:55
Finished backup at 19-JUL-17
Starting Control File and SPFILE Autobackup at 19-JUL-17
piece
handle=/u01/fra/TEST/autobackup/2017_07_19/o1_mf_s_949747793_dpz06rcm_
.bkp comment=NONE
Finished Control File and SPFILE Autobackup at 19-JUL-17
14.1.4. Abrir la base de datos TEST, en 12 se pueden ejecutar comandos SQL
en RMAN
RMAN> ALTER DATABASE OPEN;
14.1.5. Desde el RMAN chequear los backups disponibles:
RMAN> LIST BACKUP OF DATABASE;
List of Backup Sets
===================
BS Key Type LV Size Device Type Elapsed Time Completion Time
------- ---- -- ---------- ----------- ------------ ---------------
1 Full 1.15G DISK 00:00:47 19-JUL-17
BP Key: 1 Status: AVAILABLE Compressed: NO Tag: TAG20170719T105407
Piece Name:
/u01/fra/TEST/backupset/2017_07_19/o1_mf_nnndf_TAG20170719T105407_dpz050g9_.bkp
List of Datafiles in backup set 1
File LV Type Ckp SCN Ckp Time Abs Fuz SCN Sparse Name
---- -- ---- ---------- --------- ----------- ------ ----
1 Full 1589870 19-JUL-17 NO /u01/data/TEST/system01.dbf
2 Full 1589870 19-JUL-17 NO /u01/data/TEST/newtbs2.dbf
3 Full 1589870 19-JUL-17 NO /u01/data/TEST/sysaux01.dbf
4 Full 1589870 19-JUL-17 NO /u01/data/TEST/undotbs01.dbf
5 Full 1589870 19-JUL-17 NO /u01/data/TEST/newtbs_01.dbf
7 Full 1589870 19-JUL-17 NO /u01/data/TEST/users01.dbf
8 Full 1589870 19-JUL-17 NO /u01/data/TEST/undo2.dbf
14.1.6. Ver ubicación de la Flash Recovery Area e ir al disco para chequear
como guarda los backups:
[oracle@TEST ~]$ sqlplus system/oracle123@TEST
SQL> SHOW PARAMETER DB_RECOVERY_FILE_DEST
NAME TYPE VALUE
------------------------------------ ----------- ---------------------
---------
db_recovery_file_dest string /u01/fra
db_recovery_file_dest_size big integer 8016M
14.1.7. Ir al SO e chequear ese directorio
[oracle@TEST ~]$ cd /u01/fra
[oracle@TEST fra]$ cd TEST/
[oracle@TEST fra]$ cd TEST/backupset/2017_07_19/
[oracle@TEST 2017_07_19]$ ls
o1_mf_nnndf_TAG20170719T105407_dpz050g9_.bkp
CHRISTIAM ALEJANDRO NIÑO PEÑA - 3202321711
ADMINISTRACIÓN Y OPTIMIZACIÓN DE BASES DE DATOS - 2019
DOCUMENTO DE PRACTICAS
14.2. BACKUP INCONSISTENTE (BASE OPEN) CON RMAN
14.2.1. Con la base TEST en estado open loguearse al RMAN y ejecutar un
backup de la base datos con formato backupset más los archivelogs:
[oracle@TEST 2017_07_19]$ rman target /
Recovery Manager: Release 12.2.0.1.0 - Production on Wed Jul 19 11:03:50 2017
Copyright (c) 1982, 2017, Oracle and/or its affiliates. All rights reserved.
connected to target database: TEST (DBID=1403272483)
RMAN> BACKUP DATABASE PLUS ARCHIVELOG DELETE ALL INPUT;
Starting backup at 19-JUL-17
current log archived
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=47 device type=DISK
channel ORA_DISK_1: starting archived log backup set
channel ORA_DISK_1: specifying archived log(s) in backup set
input archived log thread=1 sequence=12 RECID=1 STAMP=949747545
input archived log thread=1 sequence=13 RECID=2 STAMP=949748643
channel ORA_DISK_1: starting piece 1 at 19-JUL-17
channel ORA_DISK_1: finished piece 1 at 19-JUL-17
piece
handle=/u01/fra/TEST/backupset/2017_07_19/o1_mf_annnn_TAG20170719T110404_dpz0q
n63_.bkp tag=TAG20170719T110404 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01
channel ORA_DISK_1: deleting archived log(s)
archived log file
name=/u01/fra/TEST/archivelog/2017_07_19/o1_mf_1_12_dpyzo9r8_.arc RECID=1
STAMP=949747545
archived log file
name=/u01/fra/TEST/archivelog/2017_07_19/o1_mf_1_13_dpz0qm1p_.arc RECID=2
STAMP=949748643
Finished backup at 19-JUL-17
Starting backup at 19-JUL-17
using channel ORA_DISK_1
channel ORA_DISK_1: starting full datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
input datafile file number=00001 name=/u01/data/TEST/system01.dbf
input datafile file number=00003 name=/u01/data/TEST/sysaux01.dbf
input datafile file number=00004 name=/u01/data/TEST/undotbs01.dbf
input datafile file number=00008 name=/u01/data/TEST/undo2.dbf
input datafile file number=00005 name=/u01/data/TEST/newtbs_01.dbf
input datafile file number=00002 name=/u01/data/TEST/newtbs2.dbf
input datafile file number=00007 name=/u01/data/TEST/users01.dbf
channel ORA_DISK_1: starting piece 1 at 19-JUL-17
channel ORA_DISK_1: finished piece 1 at 19-JUL-17
piece
handle=/u01/fra/TEST/backupset/2017_07_19/o1_mf_nnndf_TAG20170719T110405_dpz0q
p11_.bkp tag=TAG20170719T110405 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:55
Finished backup at 19-JUL-17
Starting backup at 19-JUL-17
current log archived
using channel ORA_DISK_1
channel ORA_DISK_1: starting archived log backup set
channel ORA_DISK_1: specifying archived log(s) in backup set
input archived log thread=1 sequence=14 RECID=3 STAMP=949748701
channel ORA_DISK_1: starting piece 1 at 19-JUL-17
CHRISTIAM ALEJANDRO NIÑO PEÑA - 3202321711
ADMINISTRACIÓN Y OPTIMIZACIÓN DE BASES DE DATOS - 2019
DOCUMENTO DE PRACTICAS
channel ORA_DISK_1: finished piece 1 at 19-JUL-17
piece
handle=/u01/fra/TEST/backupset/2017_07_19/o1_mf_annnn_TAG20170719T110501_dpz0s
fx2_.bkp tag=TAG20170719T110501 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01
channel ORA_DISK_1: deleting archived log(s)
archived log file
name=/u01/fra/TEST/archivelog/2017_07_19/o1_mf_1_14_dpz0sf93_.arc RECID=3
STAMP=949748701
Finished backup at 19-JUL-17
Starting Control File and SPFILE Autobackup at 19-JUL-17
piece
handle=/u01/fra/TEST/autobackup/2017_07_19/o1_mf_s_949748703_dpz0sjbc_.bkp
comment=NONE
Finished Control File and SPFILE Autobackup at 19-JUL-17
DELETE ALL INPUT: Elimina los registros de log archivados después de
realizar una copia de seguridad
14.2.2. Desde el RMAN chequear todos los backups disponibles:
RMAN> LIST BACKUP;
List of Backup Sets
===================
BS Key Type LV Size Device Type Elapsed Time Completion Time
------- ---- -- ---------- ----------- ------------ ---------------
1 Full 1.15G DISK 00:00:47 19-JUL-17
BP Key: 1 Status: AVAILABLE Compressed: NO Tag: TAG20170719T105407
Piece Name:
/u01/fra/TEST/backupset/2017_07_19/o1_mf_nnndf_TAG20170719T105407_dpz050g9_.bkp
List of Datafiles in backup set 1
File LV Type Ckp SCN Ckp Time Abs Fuz SCN Sparse Name
---- -- ---- ---------- --------- ----------- ------ ----
1 Full 1589870 19-JUL-17 NO /u01/data/TEST/system01.dbf
2 Full 1589870 19-JUL-17 NO /u01/data/TEST/newtbs2.dbf
3 Full 1589870 19-JUL-17 NO /u01/data/TEST/sysaux01.dbf
4 Full 1589870 19-JUL-17 NO /u01/data/TEST/undotbs01.dbf
5 Full 1589870 19-JUL-17 NO /u01/data/TEST/newtbs_01.dbf
7 Full 1589870 19-JUL-17 NO /u01/data/TEST/users01.dbf
8 Full 1589870 19-JUL-17 NO /u01/data/TEST/undo2.dbf
BS Key Type LV Size Device Type Elapsed Time Completion Time
------- ---- -- ---------- ----------- ------------ ---------------
2 Full 10.19M DISK 00:00:01 19-JUL-17
BP Key: 2 Status: AVAILABLE Compressed: NO Tag: TAG20170719T105503
Piece Name: /u01/fra/TEST/autobackup/2017_07_19/o1_mf_s_949747793_dpz06rcm_.bkp
SPFILE Included: Modification time: 19-JUL-17
SPFILE db_unique_name: TEST
Control File Included: Ckp SCN: 1589870 Ckp time: 19-JUL-17
BS Key Size Device Type Elapsed Time Completion Time
------- ---------- ----------- ------------ ---------------
3 2.11M DISK 00:00:00 19-JUL-17
BP Key: 3 Status: AVAILABLE Compressed: NO Tag: TAG20170719T110404
Piece Name:
/u01/fra/TEST/backupset/2017_07_19/o1_mf_annnn_TAG20170719T110404_dpz0qn63_.bkp
List of Archived Logs in backup set 3
Thrd Seq Low SCN Low Time Next SCN Next Time
---- ------- ---------- --------- ---------- ---------
1 12 1588820 19-JUL-17 1589677 19-JUL-17
1 13 1589677 19-JUL-17 1590617 19-JUL-17
BS Key Type LV Size Device Type Elapsed Time Completion Time
------- ---- -- ---------- ----------- ------------ ---------------
4 Full 1.15G DISK 00:00:50 19-JUL-17
BP Key: 4 Status: AVAILABLE Compressed: NO Tag: TAG20170719T110405
CHRISTIAM ALEJANDRO NIÑO PEÑA - 3202321711
ADMINISTRACIÓN Y OPTIMIZACIÓN DE BASES DE DATOS - 2019
DOCUMENTO DE PRACTICAS
Piece Name:
/u01/fra/TEST/backupset/2017_07_19/o1_mf_nnndf_TAG20170719T110405_dpz0qp11_.bkp
List of Datafiles in backup set 4
File LV Type Ckp SCN Ckp Time Abs Fuz SCN Sparse Name
---- -- ---- ---------- --------- ----------- ------ ----
1 Full 1590631 19-JUL-17 NO /u01/data/TEST/system01.dbf
2 Full 1590631 19-JUL-17 NO /u01/data/TEST/newtbs2.dbf
3 Full 1590631 19-JUL-17 NO /u01/data/TEST/sysaux01.dbf
4 Full 1590631 19-JUL-17 NO /u01/data/TEST/undotbs01.dbf
5 Full 1590631 19-JUL-17 NO /u01/data/TEST/newtbs_01.dbf
7 Full 1590631 19-JUL-17 NO /u01/data/TEST/users01.dbf
8 Full 1590631 19-JUL-17 NO /u01/data/TEST/undo2.dbf
BS Key Size Device Type Elapsed Time Completion Time
------- ---------- ----------- ------------ ---------------
5 4.00K DISK 00:00:00 19-JUL-17
BP Key: 5 Status: AVAILABLE Compressed: NO Tag: TAG20170719T110501
Piece Name:
/u01/fra/TEST/backupset/2017_07_19/o1_mf_annnn_TAG20170719T110501_dpz0sfx2_.bkp
List of Archived Logs in backup set 5
Thrd Seq Low SCN Low Time Next SCN Next Time
---- ------- ---------- --------- ---------- ---------
1 14 1590617 19-JUL-17 1590656 19-JUL-17
BS Key Type LV Size Device Type Elapsed Time Completion Time
------- ---- -- ---------- ----------- ------------ ---------------
6 Full 10.19M DISK 00:00:01 19-JUL-17
BP Key: 6 Status: AVAILABLE Compressed: NO Tag: TAG20170719T110503
Piece Name: /u01/fra/TEST/autobackup/2017_07_19/o1_mf_s_949748703_dpz0sjbc_.bkp
SPFILE Included: Modification time: 19-JUL-17
SPFILE db_unique_name: TEST
Control File Included: Ckp SCN: 1590668 Ckp time: 19-JUL-17
RMAN> LIST BACKUP SUMMARY;
List of Backups
===============
Key TY LV S Device Type Completion Time #Pieces #Copies Compressed Tag
------- -- -- - ----------- --------------- ------- ------- ---------- ---
1 B F A DISK 19-JUL-17 1 1 NO
TAG20170719T105407
2 B F A DISK 19-JUL-17 1 1 NO
TAG20170719T105503
3 B A A DISK 19-JUL-17 1 1 NO
TAG20170719T110404
4 B F A DISK 19-JUL-17 1 1 NO
TAG20170719T110405
5 B A A DISK 19-JUL-17 1 1 NO
TAG20170719T110501
6 B F A DISK 19-JUL-17 1 1 NO
TAG20170719T110503
14.2.3. Hacer un backup del controlfile del tipo trace y direccionarlo al
directorio /u01/backups:
[oracle@TEST 2017_07_19]$ mkdir /u01/backups
[oracle@TEST 2017_07_19]$ rman target /
Recovery Manager: Release 12.2.0.1.0 - Production on Wed Jul 19 11:09:53 2017
Copyright (c) 1982, 2017, Oracle and/or its affiliates. All rights reserved.
connected to target database: TEST (DBID=1403272483)
RMAN> ALTER DATABASE BACKUP CONTROLFILE TO TRACE AS
'/u01/backups/backup_controlfile.trc';
using target database control file instead of recovery catalog
Statement processed
CHRISTIAM ALEJANDRO NIÑO PEÑA - 3202321711
ADMINISTRACIÓN Y OPTIMIZACIÓN DE BASES DE DATOS - 2019
DOCUMENTO DE PRACTICAS
14.2.4. Ir al directorio y ver el contenido del trace.
[oracle@TEST 2017_07_19]$ cd /u01/backups/
[oracle@TEST backups]$ ls
backup_controlfile.trc
[oracle@TEST backups]$ less backup_controlfile.trc
CHRISTIAM ALEJANDRO NIÑO PEÑA - 3202321711
ADMINISTRACIÓN Y OPTIMIZACIÓN DE BASES DE DATOS - 2019
DOCUMENTO DE PRACTICAS
14.3. BACKUPS INCREMENTALES
14.3.1. Realizar un backup incremental de la base de datos TEST Level 0:
[oracle@TEST ~]$ rman target /
Recovery Manager: Release 12.2.0.1.0 - Production on Wed Jul 19
11:14:19 2017
Copyright (c) 1982, 2017, Oracle and/or its affiliates. All rights
reserved.
connected to target database: TEST (DBID=1403272483)
RMAN> BACKUP INCREMENTAL LEVEL 0 DATABASE;
Starting backup at 19-JUL-17
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=70 device type=DISK
channel ORA_DISK_1: starting incremental level 0 datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
input datafile file number=00001 name=/u01/data/TEST/system01.dbf
input datafile file number=00003 name=/u01/data/TEST/sysaux01.dbf
input datafile file number=00004 name=/u01/data/TEST/undotbs01.dbf
input datafile file number=00008 name=/u01/data/TEST/undo2.dbf
input datafile file number=00005 name=/u01/data/TEST/newtbs_01.dbf
input datafile file number=00002 name=/u01/data/TEST/newtbs2.dbf
input datafile file number=00007 name=/u01/data/TEST/users01.dbf
channel ORA_DISK_1: starting piece 1 at 19-JUL-17
channel ORA_DISK_1: finished piece 1 at 19-JUL-17
piece
handle=/u01/fra/TEST/backupset/2017_07_19/o1_mf_nnnd0_TAG20170719T1114
27_dpz1c459_.bkp tag=TAG20170719T111427 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:55
Finished backup at 19-JUL-17
Starting Control File and SPFILE Autobackup at 19-JUL-17
piece
handle=/u01/fra/TEST/autobackup/2017_07_19/o1_mf_s_949749323_dpz1dvqt_
.bkp comment=NONE
Finished Control File and SPFILE Autobackup at 19-JUL-17
14.3.2. Luego ejecutar un backup incremental level 1 diferencial:
RMAN> BACKUP INCREMENTAL LEVEL 1 DATABASE;
Starting backup at 19-JUL-17
using channel ORA_DISK_1
channel ORA_DISK_1: starting incremental level 1 datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
input datafile file number=00001 name=/u01/data/TEST/system01.dbf
input datafile file number=00003 name=/u01/data/TEST/sysaux01.dbf
input datafile file number=00004 name=/u01/data/TEST/undotbs01.dbf
input datafile file number=00008 name=/u01/data/TEST/undo2.dbf
input datafile file number=00005 name=/u01/data/TEST/newtbs_01.dbf
input datafile file number=00002 name=/u01/data/TEST/newtbs2.dbf
input datafile file number=00007 name=/u01/data/TEST/users01.dbf
channel ORA_DISK_1: starting piece 1 at 19-JUL-17
channel ORA_DISK_1: finished piece 1 at 19-JUL-17
CHRISTIAM ALEJANDRO NIÑO PEÑA - 3202321711
ADMINISTRACIÓN Y OPTIMIZACIÓN DE BASES DE DATOS - 2019
DOCUMENTO DE PRACTICAS
piece
handle=/u01/fra/TEST/backupset/2017_07_19/o1_mf_nnnd1_TAG20170719T111651_dpz1h
n3o_.bkp tag=TAG20170719T111651 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:25
Finished backup at 19-JUL-17
Starting Control File and SPFILE Autobackup at 19-JUL-17
piece
handle=/u01/fra/TEST/autobackup/2017_07_19/o1_mf_s_949749437_dpz1jfts_.bkp
comment=NONE
Finished Control File and SPFILE Autobackup at 19-JUL-17
14.3.3. Desde el RMAN chequear todos los backups disponibles:
RMAN> LIST BACKUP SUMMARY;
List of Backups
===============
Key TY LV S Device Type Completion Time #Pieces #Copies Compressed Tag
------- -- -- - ----------- --------------- ------- ------- ---------- ---
1 B F A DISK 19-JUL-17 1 1 NO TAG20170719T105407
2 B F A DISK 19-JUL-17 1 1 NO TAG20170719T105503
3 B A A DISK 19-JUL-17 1 1 NO TAG20170719T110404
4 B F A DISK 19-JUL-17 1 1 NO TAG20170719T110405
5 B A A DISK 19-JUL-17 1 1 NO TAG20170719T110501
6 B F A DISK 19-JUL-17 1 1 NO TAG20170719T110503
7 B 0 A DISK 19-JUL-17 1 1 NO TAG20170719T111427
8 B F A DISK 19-JUL-17 1 1 NO TAG20170719T111523
9 B 1 A DISK 19-JUL-17 1 1 NO TAG20170719T111651
10 B F A DISK 19-JUL-17 1 1 NO TAG20170719T111717
CHRISTIAM ALEJANDRO NIÑO PEÑA - 3202321711
ADMINISTRACIÓN Y OPTIMIZACIÓN DE BASES DE DATOS - 2019
DOCUMENTO DE PRACTICAS
14.4. RMAN: REPORTES DE BACKUPS
14.4.1. Loguearse al rman y listar los backups realizados de la base de datos
completa:
[oracle@TEST ~]$ rman target /
Recovery Manager: Release 12.2.0.1.0 - Production on Wed Jul 19 11:20:57 2017
Copyright (c) 1982, 2017, Oracle and/or its affiliates. All rights reserved.
connected to target database: TEST (DBID=1403272483)
RMAN> LIST BACKUP OF DATABASE;
using target database control file instead of recovery catalog
List of Backup Sets
===================
BS Key Type LV Size Device Type Elapsed Time Completion Time
------- ---- -- ---------- ----------- ------------ ---------------
1 Full 1.15G DISK 00:00:47 19-JUL-17
BP Key: 1 Status: AVAILABLE Compressed: NO Tag: TAG20170719T105407
Piece Name:
/u01/fra/TEST/backupset/2017_07_19/o1_mf_nnndf_TAG20170719T105407_dpz050g9_.bk
p
List of Datafiles in backup set 1
File LV Type Ckp SCN Ckp Time Abs Fuz SCN Sparse Name
---- -- ---- ---------- --------- ----------- ------ ----
1 Full 1589870 19-JUL-17 NO
/u01/data/TEST/system01.dbf
2 Full 1589870 19-JUL-17 NO
/u01/data/TEST/newtbs2.dbf
3 Full 1589870 19-JUL-17 NO
/u01/data/TEST/sysaux01.dbf
4 Full 1589870 19-JUL-17 NO
/u01/data/TEST/undotbs01.dbf
5 Full 1589870 19-JUL-17 NO
/u01/data/TEST/newtbs_01.dbf
7 Full 1589870 19-JUL-17 NO
/u01/data/TEST/users01.dbf
8 Full 1589870 19-JUL-17 NO
/u01/data/TEST/undo2.dbf
BS Key Type LV Size Device Type Elapsed Time Completion Time
------- ---- -- ---------- ----------- ------------ ---------------
4 Full 1.15G DISK 00:00:50 19-JUL-17
BP Key: 4 Status: AVAILABLE Compressed: NO Tag: TAG20170719T110405
Piece Name:
/u01/fra/TEST/backupset/2017_07_19/o1_mf_nnndf_TAG20170719T110405_dpz0qp11_.bk
p
List of Datafiles in backup set 4
File LV Type Ckp SCN Ckp Time Abs Fuz SCN Sparse Name
---- -- ---- ---------- --------- ----------- ------ ----
1 Full 1590631 19-JUL-17 NO
/u01/data/TEST/system01.dbf
2 Full 1590631 19-JUL-17 NO
/u01/data/TEST/newtbs2.dbf
3 Full 1590631 19-JUL-17 NO
/u01/data/TEST/sysaux01.dbf
4 Full 1590631 19-JUL-17 NO
/u01/data/TEST/undotbs01.dbf
5 Full 1590631 19-JUL-17 NO
/u01/data/TEST/newtbs_01.dbf
CHRISTIAM ALEJANDRO NIÑO PEÑA - 3202321711
ADMINISTRACIÓN Y OPTIMIZACIÓN DE BASES DE DATOS - 2019
DOCUMENTO DE PRACTICAS
7 Full 1590631 19-JUL-17 NO
/u01/data/TEST/users01.dbf
8 Full 1590631 19-JUL-17 NO
/u01/data/TEST/undo2.dbf
BS Key Type LV Size Device Type Elapsed Time Completion Time
------- ---- -- ---------- ----------- ------------ ---------------
7 Incr 0 1.15G DISK 00:00:48 19-JUL-17
BP Key: 7 Status: AVAILABLE Compressed: NO Tag: TAG20170719T111427
Piece Name:
/u01/fra/TEST/backupset/2017_07_19/o1_mf_nnnd0_TAG20170719T111427_dpz1c459_.bk
p
List of Datafiles in backup set 7
File LV Type Ckp SCN Ckp Time Abs Fuz SCN Sparse Name
---- -- ---- ---------- --------- ----------- ------ ----
1 0 Incr 1591328 19-JUL-17 NO
/u01/data/TEST/system01.dbf
2 0 Incr 1591328 19-JUL-17 NO
/u01/data/TEST/newtbs2.dbf
3 0 Incr 1591328 19-JUL-17 NO
/u01/data/TEST/sysaux01.dbf
4 0 Incr 1591328 19-JUL-17 NO
/u01/data/TEST/undotbs01.dbf
5 0 Incr 1591328 19-JUL-17 NO
/u01/data/TEST/newtbs_01.dbf
7 0 Incr 1591328 19-JUL-17 NO
/u01/data/TEST/users01.dbf
8 0 Incr 1591328 19-JUL-17 NO
/u01/data/TEST/undo2.dbf
BS Key Type LV Size Device Type Elapsed Time Completion Time
------- ---- -- ---------- ----------- ------------ ---------------
9 Incr 1 184.00K DISK 00:00:18 19-JUL-17
BP Key: 9 Status: AVAILABLE Compressed: NO Tag: TAG20170719T111651
Piece Name:
/u01/fra/TEST/backupset/2017_07_19/o1_mf_nnnd1_TAG20170719T111651_dpz1hn3o_.bk
p
List of Datafiles in backup set 9
File LV Type Ckp SCN Ckp Time Abs Fuz SCN Sparse Name
---- -- ---- ---------- --------- ----------- ------ ----
1 1 Incr 1591414 19-JUL-17 NO
/u01/data/TEST/system01.dbf
2 1 Incr 1591414 19-JUL-17 NO
/u01/data/TEST/newtbs2.dbf
3 1 Incr 1591414 19-JUL-17 NO
/u01/data/TEST/sysaux01.dbf
4 1 Incr 1591414 19-JUL-17 NO
/u01/data/TEST/undotbs01.dbf
5 1 Incr 1591414 19-JUL-17 NO
/u01/data/TEST/newtbs_01.dbf
7 1 Incr 1591414 19-JUL-17 NO
/u01/data/TEST/users01.dbf
8 1 Incr 1591414 19-JUL-17 NO
/u01/data/TEST/undo2.dbf
14.4.2. Listar los backups de archivelogs:
RMAN> LIST BACKUP OF ARCHIVELOG ALL;
List of Backup Sets
===================
BS Key Size Device Type Elapsed Time Completion Time
------- ---------- ----------- ------------ ---------------
3 2.11M DISK 00:00:00 19-JUL-17
CHRISTIAM ALEJANDRO NIÑO PEÑA - 3202321711
ADMINISTRACIÓN Y OPTIMIZACIÓN DE BASES DE DATOS - 2019
DOCUMENTO DE PRACTICAS
BP Key: 3 Status: AVAILABLE Compressed: NO Tag: TAG20170719T110404
Piece Name:
/u01/fra/TEST/backupset/2017_07_19/o1_mf_annnn_TAG20170719T110404_dpz0qn63_.bk
p
List of Archived Logs in backup set 3
Thrd Seq Low SCN Low Time Next SCN Next Time
---- ------- ---------- --------- ---------- ---------
1 12 1588820 19-JUL-17 1589677 19-JUL-17
1 13 1589677 19-JUL-17 1590617 19-JUL-17
BS Key Size Device Type Elapsed Time Completion Time
------- ---------- ----------- ------------ ---------------
5 4.00K DISK 00:00:00 19-JUL-17
BP Key: 5 Status: AVAILABLE Compressed: NO Tag: TAG20170719T110501
Piece Name:
/u01/fra/TEST/backupset/2017_07_19/o1_mf_annnn_TAG20170719T110501_dpz0sfx2_.bk
p
List of Archived Logs in backup set 5
Thrd Seq Low SCN Low Time Next SCN Next Time
---- ------- ---------- --------- ---------- ---------
1 14 1590617 19-JUL-17 1590656 19-JUL-17
14.4.3. Listar todos los backups disponibles y que se muestren de manera
resumida:
RMAN> LIST BACKUP SUMMARY;
List of Backups
===============
Key TY LV S Device Type Completion Time #Pieces #Copies Compressed Tag
------- -- -- - ----------- --------------- ------- ------- ---------- ---
1 B F A DISK 19-JUL-17 1 1 NO
TAG20170719T105407
2 B F A DISK 19-JUL-17 1 1 NO
TAG20170719T105503
3 B A A DISK 19-JUL-17 1 1 NO
TAG20170719T110404
4 B F A DISK 19-JUL-17 1 1 NO
TAG20170719T110405
5 B A A DISK 19-JUL-17 1 1 NO
TAG20170719T110501
6 B F A DISK 19-JUL-17 1 1 NO
TAG20170719T110503
7 B 0 A DISK 19-JUL-17 1 1 NO
TAG20170719T111427
8 B F A DISK 19-JUL-17 1 1 NO
TAG20170719T111523
9 B 1 A DISK 19-JUL-17 1 1 NO
TAG20170719T111651
10 B F A DISK 19-JUL-17 1 1 NO
TAG20170719T111717
CHRISTIAM ALEJANDRO NIÑO PEÑA - 3202321711
ADMINISTRACIÓN Y OPTIMIZACIÓN DE BASES DE DATOS - 2019
DOCUMENTO DE PRACTICAS
15. EJERCICIOS MÓDULO 15
15.1. PÉRDIDA DE UN MIEMBRO DE REDO LOG GROUP
15.1.1. Consultar los miembros de redo log group con la vista v$logfile. Borrar
un miembro para hacer la prueba
[oracle@TEST ~]$ sqlplus system/oracle123@TEST
SQL*Plus: Release 12.2.0.1.0 Production on Wed Jul 19 12:22:16 2017
Copyright (c) 1982, 2016, Oracle. All rights reserved.
Hora de Ultima Conexion Correcta: Mie Jul 19 2017 10:59:10 -05:00
Conectado a:
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit
Production
SQL> SELECT member FROM v$logfile ORDER BY group#;
MEMBER
---------------------------------------------------------------------
/u01/data/TEST/redo01.log
/u01/data/TEST/redo01b.log
/u01/data/TEST/redo02b.log
/u01/data/TEST/redo02.log
/u01/data/TEST/redo03b.log
/u01/data/TEST/redo03.log
15.1.2. Ir al sistema operativo y borrar un miembro:
[oracle@TEST ~]$ rm /u01/data/TEST/redo01b.log
15.1.3. Hacer que la base cambie varias veces de redo log group activo:
[oracle@TEST ~]$ sqlplus system/oracle123@TEST
SQL> ALTER SYSTEM SWITCH LOGFILE;
Sistema modificado.
SQL> ALTER SYSTEM SWITCH LOGFILE;
Sistema modificado.
SQL> ALTER SYSTEM SWITCH LOGFILE;
15.1.4. Chequear ubicación del alert y ver en el alert el error del miembro
perdido:
SQL> SELECT VALUE FROM v$diag_info WHERE VALUE like '%trace';
VALUE
-----------------------------------------------------------------------------
/u01/oracle/diag/rdbms/TEST/TEST/trace
CHRISTIAM ALEJANDRO NIÑO PEÑA - 3202321711
ADMINISTRACIÓN Y OPTIMIZACIÓN DE BASES DE DATOS - 2019
DOCUMENTO DE PRACTICAS
Ejecutar por sistema operativo tail para validar el archivo de alertas
[oracle@TEST ~]$ tail -30
/u01/oracle/diag/rdbms/TEST/TEST/trace/alert_TEST.log
ORA-00313: fallo de apertura para miembros del grupo log 1 del thread
1
ORA-00312: log online 1 thread 1: '/u01/data/TEST/redo01b.log'
ORA-27037: no se ha podido obtener el estado del archivo
Linux-x86_64 Error: 2: No such file or directory
Additional information: 7
2017-07-19T12:27:41.088302-05:00
Errors in file
/u01/oracle/diag/rdbms/TEST/TEST/trace/TEST_m000_1045.trc:
ORA-00313: fallo de apertura para miembros del grupo log 1 del thread
1
ORA-00312: log online 1 thread 1: '/u01/data/TEST/redo01b.log'
ORA-27037: no se ha podido obtener el estado del archivo
Linux-x86_64 Error: 2: No such file or directory
Additional information: 7
Checker run found 1 new persistent data failures
2017-07-19T12:27:42.671748-05:00
Thread 1 cannot allocate new log, sequence 18
Checkpoint not complete
15.1.5. Recrear el miembro perdido (borrarlo y crearlo nuevamente):
SQL> ALTER SYSTEM SWITCH LOGFILE;
Sistema modificado.
SQL> ALTER DATABASE DROP LOGFILE MEMBER '/u01/data/TEST/redo01b.log';
Base de datos modificada.
SQL> ALTER DATABASE ADD LOGFILE MEMBER '/u01/data/TEST/redo01b.log' TO
GROUP 1;
Base de datos modificada.
CHRISTIAM ALEJANDRO NIÑO PEÑA - 3202321711
ADMINISTRACIÓN Y OPTIMIZACIÓN DE BASES DE DATOS - 2019
DOCUMENTO DE PRACTICAS
15.2. PÉRDIDA DE UN DATAFILE, BASE EN MODO ARCHIVELOG
15.2.1. Ejecutar un backup de la base más archivelogs:
[oracle@TEST ~]$ rman target /
Recovery Manager: Release 12.2.0.1.0 - Production on Wed Jul 19
12:45:14 2017
Copyright (c) 1982, 2017, Oracle and/or its affiliates. All rights
reserved.
connected to target database: TEST (DBID=1403272483)
RMAN> BACKUP DATABASE PLUS ARCHIVELOG DELETE ALL INPUT;
Starting backup at 19-JUL-17
current log archived
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=27 device type=DISK
channel ORA_DISK_1: starting archived log backup set
channel ORA_DISK_1: specifying archived log(s) in backup set
input archived log thread=1 sequence=15 RECID=4 STAMP=949753657
input archived log thread=1 sequence=16 RECID=5 STAMP=949753660
input archived log thread=1 sequence=17 RECID=6 STAMP=949753664
input archived log thread=1 sequence=18 RECID=7 STAMP=949753666
input archived log thread=1 sequence=19 RECID=8 STAMP=949754550
input archived log thread=1 sequence=20 RECID=9 STAMP=949754724
channel ORA_DISK_1: starting piece 1 at 19-JUL-17
channel ORA_DISK_1: finished piece 1 at 19-JUL-17
piece
handle=/u01/fra/TEST/backupset/2017_07_19/o1_mf_annnn_TAG20170719T1245
25_dpz6oocc_.bkp tag=TAG20170719T124525 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01
channel ORA_DISK_1: deleting archived log(s)
archived log file
name=/u01/fra/TEST/archivelog/2017_07_19/o1_mf_1_15_dpz5n94c_.arc
RECID=4 STAMP=949753657
archived log file
name=/u01/fra/TEST/archivelog/2017_07_19/o1_mf_1_16_dpz5ndnt_.arc
RECID=5 STAMP=949753660
archived log file
name=/u01/fra/TEST/archivelog/2017_07_19/o1_mf_1_17_dpz5nj5q_.arc
RECID=6 STAMP=949753664
archived log file
name=/u01/fra/TEST/archivelog/2017_07_19/o1_mf_1_18_dpz5nllh_.arc
RECID=7 STAMP=949753666
archived log file
name=/u01/fra/TEST/archivelog/2017_07_19/o1_mf_1_19_dpz6j6nw_.arc
RECID=8 STAMP=949754550
archived log file
name=/u01/fra/TEST/archivelog/2017_07_19/o1_mf_1_20_dpz6onhh_.arc
RECID=9 STAMP=949754724
Finished backup at 19-JUL-17
Starting backup at 19-JUL-17
using channel ORA_DISK_1
channel ORA_DISK_1: starting full datafile backup set
CHRISTIAM ALEJANDRO NIÑO PEÑA - 3202321711
ADMINISTRACIÓN Y OPTIMIZACIÓN DE BASES DE DATOS - 2019
DOCUMENTO DE PRACTICAS
channel ORA_DISK_1: specifying datafile(s) in backup set
input datafile file number=00001 name=/u01/data/TEST/system01.dbf
input datafile file number=00003 name=/u01/data/TEST/sysaux01.dbf
input datafile file number=00004 name=/u01/data/TEST/undotbs01.dbf
input datafile file number=00008 name=/u01/data/TEST/undo2.dbf
input datafile file number=00005 name=/u01/data/TEST/newtbs_01.dbf
input datafile file number=00002 name=/u01/data/TEST/newtbs2.dbf
input datafile file number=00007 name=/u01/data/TEST/users01.dbf
channel ORA_DISK_1: starting piece 1 at 19-JUL-17
channel ORA_DISK_1: finished piece 1 at 19-JUL-17
piece
handle=/u01/fra/TEST/backupset/2017_07_19/o1_mf_nnndf_TAG20170719T1245
26_dpz6oq4s_.bkp tag=TAG20170719T124526 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:01:05
Finished backup at 19-JUL-17
Starting backup at 19-JUL-17
current log archived
using channel ORA_DISK_1
channel ORA_DISK_1: starting archived log backup set
channel ORA_DISK_1: specifying archived log(s) in backup set
input archived log thread=1 sequence=21 RECID=10 STAMP=949754792
channel ORA_DISK_1: starting piece 1 at 19-JUL-17
channel ORA_DISK_1: finished piece 1 at 19-JUL-17
piece
handle=/u01/fra/TEST/backupset/2017_07_19/o1_mf_annnn_TAG20170719T1246
32_dpz6qrrz_.bkp tag=TAG20170719T124632 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01
channel ORA_DISK_1: deleting archived log(s)
archived log file
name=/u01/fra/TEST/archivelog/2017_07_19/o1_mf_1_21_dpz6qrk2_.arc
RECID=10 STAMP=949754792
Finished backup at 19-JUL-17
Starting Control File and SPFILE Autobackup at 19-JUL-17
piece
handle=/u01/fra/TEST/autobackup/2017_07_19/o1_mf_s_949754794_dpz6qtvm_
.bkp comment=NONE
Finished Control File and SPFILE Autobackup at 19-JUL-17
15.2.2. Borrar el datafile /u01/data/TEST/users01.dbf desde sistema operativo:
[oracle@TEST ~]$ rm /u01/data/TEST/users01.dbf
15.2.3. Restaurar y recuperar el datafile perdido:
[oracle@TEST ~]$ rman target /
Recovery Manager: Release 12.2.0.1.0 - Production on Wed Jul 19
12:51:59 2017
Copyright (c) 1982, 2017, Oracle and/or its affiliates. All rights
reserved.
connected to target database: TEST (DBID=1403272483)
RMAN> SQL 'ALTER TABLESPACE USERS OFFLINE IMMEDIATE';
using target database control file instead of recovery catalog
sql statement: ALTER TABLESPACE USERS OFFLINE IMMEDIATE
CHRISTIAM ALEJANDRO NIÑO PEÑA - 3202321711
ADMINISTRACIÓN Y OPTIMIZACIÓN DE BASES DE DATOS - 2019
DOCUMENTO DE PRACTICAS
RMAN> RESTORE DATAFILE '/u01/data/TEST/users01.dbf';
Starting restore at 19-JUL-17
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=25 device type=DISK
channel ORA_DISK_1: starting datafile backup set restore
channel ORA_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_DISK_1: restoring datafile 00007 to
/u01/data/TEST/users01.dbf
channel ORA_DISK_1: reading from backup piece
/u01/fra/TEST/backupset/2017_07_19/o1_mf_nnndf_TAG20170719T124526_dpz6
oq4s_.bkp
channel ORA_DISK_1: piece
handle=/u01/fra/TEST/backupset/2017_07_19/o1_mf_nnndf_TAG20170719T1245
26_dpz6oq4s_.bkp tag=TAG20170719T124526
channel ORA_DISK_1: restored backup piece 1
channel ORA_DISK_1: restore complete, elapsed time: 00:00:01
Finished restore at 19-JUL-17
RMAN> RECOVER DATAFILE '/u01/data/TEST/users01.dbf';
Starting recover at 19-JUL-17
using channel ORA_DISK_1
starting media recovery
media recovery complete, elapsed time: 00:00:01
Finished recover at 19-JUL-17
RMAN> SQL 'ALTER TABLESPACE USERS ONLINE';
sql statement: ALTER TABLESPACE USERS ONLINE
CHRISTIAM ALEJANDRO NIÑO PEÑA - 3202321711
ADMINISTRACIÓN Y OPTIMIZACIÓN DE BASES DE DATOS - 2019
DOCUMENTO DE PRACTICAS
16. EJERCICIOS MÓDULO 16
16.1. SQL*LOADER
16.1.1. Conectarse como system/oracle123 a la base TEST y crear la tabla
NAMES:
[oracle@TEST ~]$ sqlplus system/oracle123@TEST
SQL> CREATE TABLE names(first varchar2(10),last varchar2(10));
16.1.2. Con un editor de texto crear un archivo plano llamado names.txt con los
siguientes valores:
[oracle@TEST ~]$ vi names.txt
John,Watson
Roopesh,Ramklass
Sam,Alapati
Juan,Perez
Roberto,Martinez
Jose,Gonzalez
Maria,Lopez
16.1.3. Con un editor de texto crear el archivo de control names.ctl con las
siguientes instrucciones:
[oracle@TEST ~]$ vi names.ctl
LOAD DATA
INFILE 'names.txt'
BADFILE 'names.bad'
TRUNCATE INTO TABLE names
FIELDS TERMINATED BY ','
TRAILING NULLCOLS
(FIRST,LAST)
Este archivo de control truncará la tabla previamente a la carga de datos
16.1.4. Ejecutar el sql*loader para hacer la carga desde sistema operativo:
[oracle@TEST ~]$ sqlldr system/oracle123@TEST control=names.ctl
SQL*Loader: Release 12.2.0.1.0 - Production on Wed Jul 19 13:03:44
2017
Copyright (c) 1982, 2017, Oracle and/or its affiliates. All rights
reserved.
Path used: Conventional
Commit point reached - logical record count 8
Table NAMES:
7 Rows successfully loaded.
Check the log file:
names.log
for more information about the load.
CHRISTIAM ALEJANDRO NIÑO PEÑA - 3202321711
ADMINISTRACIÓN Y OPTIMIZACIÓN DE BASES DE DATOS - 2019
DOCUMENTO DE PRACTICAS
16.1.5. Analizar el archive names.log generado por la ejecución anterior
[oracle@TEST ~]$ less names.log
SQL*Loader: Release 12.2.0.1.0 - Production on Wed Jul 19 13:03:44
2017
Copyright (c) 1982, 2017, Oracle and/or its affiliates. All rights
reserved.
Control File: names.ctl
Data File: names.txt
Bad File: names.bad
Discard File: none specified
(Allow all discards)
Number to load: ALL
Number to skip: 0
Errors allowed: 50
Bind array: 64 rows, maximum of 256000 bytes
Continuation: none specified
Path used: Conventional
Table NAMES, loaded from every logical record.
Insert option in effect for this table: TRUNCATE
TRAILING NULLCOLS option in effect
Column Name Position Len Term Encl Datatype
------------------------------ ---------- ----- ---- ---- ------------
---------
FIRST FIRST * , CHARACTER
LAST NEXT * , CHARACTER
Record 8: Discarded - all columns null.
Table NAMES:
7 Rows successfully loaded.
0 Rows not loaded due to data errors.
0 Rows not loaded because all WHEN clauses were failed.
1 Row not loaded because all fields were null.
16.1.6. Confirmar que los datos se insertaron:
[oracle@TEST ~]$ sqlplus system/oracle123@TEST
SQL> SELECT * FROM names;
FIRST LAST
---------- ----------
John Watson
Roopesh Ramklass
Sam Alapati
Juan Perez
Roberto Martinez
Jose Gonzalez
Maria Lopez
7 filas seleccionadas.
CHRISTIAM ALEJANDRO NIÑO PEÑA - 3202321711
ADMINISTRACIÓN Y OPTIMIZACIÓN DE BASES DE DATOS - 2019
DOCUMENTO DE PRACTICAS
16.2. DATA PUMP
16.2.1. Crear un objeto directorio en la base TEST llamado dpump_dir que
apunte a /u01/exports (crearlo en la máquina virtual previamente), luego
otórguele permisos a system de escritura y lectura sobre el directorio:
[oracle@TEST ~]$ cd /u01/
[oracle@TEST u01]$ mkdir exports
[oracle@TEST u01]$ sqlplus system/oracle123@TEST
SQL> CREATE DIRECTORY dpump_dir AS '/u01/exports';
Directorio creado.
16.2.2. Crear la tabla empleados en el esquema hr a partir de la tabla
employees:
SQL> CREATE TABLE empleado AS SELECT * FROM employees;
Tabla creada.
16.2.3. Exportar la tabla empleados con el datapump por sistema operativo:
[oracle@TEST u01]$ expdp system/oracle123 TABLES=hr.empleado
DIRECTORY=dpump_dir DUMPFILE=empleado.dmp LOGFILE=export_empleado.log
Export: Release 12.2.0.1.0 - Production on Thu Jul 20 04:05:10 2017
Copyright (c) 1982, 2017, Oracle and/or its affiliates. All rights reserved.
Connected to: Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 -
64bit Production
Iniciando "SYSTEM"."SYS_EXPORT_TABLE_01": system/******** TABLES=hr.empleado
DIRECTORY=dpump_dir DUMPFILE=empleado.dmp LOGFILE=export_empleado.log
Procesando el tipo de objeto TABLE_EXPORT/TABLE/TABLE_DATA
Procesando el tipo de objeto TABLE_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
Procesando el tipo de objeto TABLE_EXPORT/TABLE/STATISTICS/MARKER
Procesando el tipo de objeto TABLE_EXPORT/TABLE/TABLE
. . "HR"."EMPLEADO" 17.09 KB 107 filas
exportadas
La tabla maestra "SYSTEM"."SYS_EXPORT_TABLE_01" se ha cargado/descargado
correctamente
******************************************************************************
El juego de archivos de volcado para SYSTEM.SYS_EXPORT_TABLE_01 es:
/u01/exports/empleado.dmp
El trabajo "SYSTEM"."SYS_EXPORT_TABLE_01" ha terminado correctamente en Jue
Jul 20 04:05:40 2017 elapsed 0 00:00:24
16.2.4. Ir al directorio /u01/exports y chequear los archivos creados por el
archivo de exportación
[oracle@TEST u01]$ cd /u01/exports/
[oracle@TEST exports]$ ls
empleado.dmp export_empleado.log
CHRISTIAM ALEJANDRO NIÑO PEÑA - 3202321711
ADMINISTRACIÓN Y OPTIMIZACIÓN DE BASES DE DATOS - 2019
DOCUMENTO DE PRACTICAS
16.2.5. Importar la tabla exportada en el punto anterior en el usuario
(esquema) PETER
[oracle@TEST exports]$ impdp system/oracle123 TABLES=hr.empleado
REMAP_SCHEMA=HR:PETER DIRECTORY=dpump_dir REMAP_TABLESPACE=SYSAUX:USERS
DUMPFILE=empleado.dmp LOGFILE=hr_scott_empleado.log
Import: Release 12.2.0.1.0 - Production on Thu Jul 20 04:13:18 2017
Copyright (c) 1982, 2017, Oracle and/or its affiliates. All rights reserved.
Connected to: Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 -
64bit Production
La tabla maestra "SYSTEM"."SYS_IMPORT_TABLE_01" se ha cargado/descargado
correctamente
Iniciando "SYSTEM"."SYS_IMPORT_TABLE_01": system/******** TABLES=hr.empleado
REMAP_SCHEMA=HR:PETER DIRECTORY=dpump_dir REMAP_TABLESPACE=SYSAUX:USERS
DUMPFILE=empleado.dmp LOGFILE=hr_scott_empleado.log
Procesando el tipo de objeto TABLE_EXPORT/TABLE/TABLE
Procesando el tipo de objeto TABLE_EXPORT/TABLE/TABLE_DATA
. . "PETER"."EMPLEADO" 17.09 KB 107 filas
importadas
Procesando el tipo de objeto TABLE_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
Procesando el tipo de objeto TABLE_EXPORT/TABLE/STATISTICS/MARKER
El trabajo "SYSTEM"."SYS_IMPORT_TABLE_01" ha terminado correctamente en Jue
Jul 20 04:13:38 2017 elapsed 0 00:00:19
16.2.6. Conectarse como peter/oracle y chequear que se importó la tabla:
SQL> SELECT TABLE_NAME FROM USER_TABLES;
TABLE_NAME
---------------------------------------------------------------------
EMPLEADO
FIN DE LAS PRACTICAS
CHRISTIAM ALEJANDRO NIÑO PEÑA - 3202321711
ADMINISTRACIÓN Y OPTIMIZACIÓN DE BASES DE DATOS - 2019