0% encontró este documento útil (0 votos)
125 vistas120 páginas

Practicas 12C

El documento describe los pasos para revisar la configuración y procesos de una base de datos Oracle, incluyendo la ubicación de archivos, tamaños de memoria, y procesos en ejecución.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
125 vistas120 páginas

Practicas 12C

El documento describe los pasos para revisar la configuración y procesos de una base de datos Oracle, incluyendo la ubicación de archivos, tamaños de memoria, y procesos en ejecución.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

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

También podría gustarte