curso

Page 1

TEMA 6. NET.

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COMUNICACIONES

1


TEMA 6. NET. • ORACLE NET SERVICES. • ORACLE NET. – ORACLE NET. CLIENTE/SERVIDOR. – ORACLE NET. WEB y APP. SERVER. – ORACLE NET. WEB SIN APP. SERVER. – ORACLE NET. CONNECTION POOLING. • LISTENER. • ORACLE CONNECTION MANAGER. • OTROS COMPONENTES • CONCEPTOS. – SERVICIO. – INSTANCIA. – REGISTRO DE SERVICIO. – CONECTOR. – MAPEOS. Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COMUNICACIONES

2


TEMA 6. NET. • CONFIGURACION. MODELOS. MODELO LOCAL. • TNSNAMES.ORA • LISTENER.ORA – SECCION PROTOCOLO. – SECCION REGISTRO SERVICIO. – PARAMETROS DE CONTROL. – LISTENER.ORA Y JSERVER. – CONTROL DEL “LISTENER”. • SQLNET.ORA • CONFIGURACION BASICA NET. • DATABASE LINK.

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COMUNICACIONES

3


ORACLE NET SERVICES. • “Oracle Net Services” proporciona soluciones de conectividad para entornos distribuidos y heterogéneos. Está integrado por: – Oracle Net. – Listener. – Oracle Connection Manager. – Herramientas de comunicaciones. –

» Oracle Net Configuration Assistant. » Oracle Net Manager. » Oracle Enterprise Manager.

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COMUNICACIONES

4


ORACLE NET. • Es el sw que permite establecer y mantener una sesión de red desde una aplicación cliente a un servidor de bd; así como del intercambio de mensajes entre ambos. Es capaz de hacerlo al estar localizado en cada ordenador de la red. • Existen distintas tipologías de conexión: – Conexiones cliente/servidor (C/S). – Conexiones web cliente. – Conexiones web cliente sin uso de servidor de aplicaciones (Application Server).

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COMUNICACIONES

5


ORACLE NET. CLIENTE/SERVIDOR. • Oracle Net reside en el cliente y en el servidor. Se sitúa en la capa más alta de protocolos de red, que indica como las aplicaciones acceden a la red y como los datos se dividen en paquetes para su transmisión. Oracle Net interactúa con el protocolo TCP/IP -con o sin SSL- pero también puede trabajar con el protocolo SDP (redes “Infiniband”). • Oracle Net se compone a su vez de “Oracle Net foundation layer” (establece y mantiene la conexión) y “Oracle protocol support” (mapea a protocolos estandar desde la tecnología Oracle Net). • Las aplicaciones cliente Java acceden a la bd Oracle empleando además JDBC (Java Database Connectivity Driver). Oracle ofrece dos manejadores “JDBC OCI” -clientes con instalación local Oracle- y “JDBC Thin Driver” -clientes sin instalación local Oracle, por ejemplo “applets”-. Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COMUNICACIONES

6


ORACLE NET. CLIENTE/SERVIDOR.

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COMUNICACIONES

7


ORACLE NET. CLIENTE/SERVIDOR.

• •

OCI: Oracle Call Interface. SW usado por el cliente para interactuar con el servidor de bd (interfaz entre la aplicación cliente y el lenguaje SQL que comprende el servidor). TTC: Two-Task Common. OPI: Oracle Program Interface.

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COMUNICACIONES

8


ORACLE NET. CLIENTE/SERVIDOR.

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COMUNICACIONES

9


ORACLE NET. CLIENTE/SERVIDOR.

• •

El manejador JDBC OCI emplea un esquema de comunicaciones similar al estándar C/S. JDBC Thin driver emplea una implementación Java del Oracle Net Foundation Layer llamada JavaNet y una implementación Java de TTC llamada JavaTTC.

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COMUNICACIONES

10


ORACLE NET. WEB y APP. SERVER. • La conexión de aplicaciones web cliente (con o sin Web Application Server) a una bd es similar al caso C/S.

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COMUNICACIONES

11


ORACLE NET. WEB y APP. SERVER. • El protocolo HTTP, “Hypertext Transport Protocol” permite comunicar entre los navegadores web y los servidores de aplicaciones, estos gestionan datos, controlan el acceso a los mismos y sirven las peticiones de los navegadores. • Un servidor de aplicaciones puede soportar aplicaciones Java y “servlets” también.

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COMUNICACIONES

12


ORACLE NET. WEB y APP. SERVER.

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COMUNICACIONES

13


ORACLE NET. WEB SIN APP. SERVER. • Es posible acceder desde los clientes web directamente a la bd, sin servidor de aplicaciones, como al usar “ Java applet”. Además la bd puede aceptar conexiones con protocolos como HTTP, FTP o WebDAV (conexiones a Oracle XML DB).

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COMUNICACIONES

14


ORACLE NET. CONNECTION POOLING. • Si se ejecutan múltiples aplicaciones web interactivas, algunas de ellas pueden, en un momento dado, estar inactivas. “Connection pooling” permite a la bd interrumpir a nivel físico una sesión inactiva, la sesión lógica permanece abierta, y restablecer la conexión física cuando haya alguna petición.

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COMUNICACIONES

15


LISTENER. • En la bd recibe la conexión inicial. Está configurado con una dirección de protocolo, aquellos clientes configurados con esta dirección pueden enviar peticiones al “listener”. Una vez establecida la conexión, el cliente y la bd comunican directamente entre ellos.

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COMUNICACIONES

16


ORACLE CONNECTION MANAGER. • Permite que múltiples sesiones cliente sean multiplexadas a través de una sola conexión a una bd.

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COMUNICACIONES

17


OTROS COMPONENTES • Oracle Net Configuration Assistant. – Permite configurar los componentes básicos de red después de realizar la instalación de bd. – Oracle Universal Installer lanza esta herramienta durante la instalación del sistema gestor de bd. – En UNIX debe ejecutarse $ORACLE_HOME/bin/netca

• Oracle Net Manager. – Proporciona un entorno integrado de configuración y gestión de Oracle Net Services. – En UNIX debe ejecutarse $ORACLE_HOME/bin/netmgr En Oracle 10g, muchas funcionalidades de Net Manager están integradas en Oracle Enterprise Manager. Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COMUNICACIONES

18


CONCEPTOS BASICOS

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COMUNICACIONES

19


CONCEPTOS. SERVICIO. • Una bd es un “servicio” desde el punto de vista de clientes.

los

• El servicio está identificado por un nombre de servicio que viene determinado por el parámetro de inicialización SERVICE_NAMES. Por defecto es el nombre “global database”, compuesto por el nombre de bd (parámetro DB_NAME) y el nombre de dominio (DB_DOMAIN). Los clientes usan el nombre de servicio para identificar la bd a la que acceden. • Este parámetro también puede ser modificado dinámicamente mediante ALTER SYSTEM.

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COMUNICACIONES

20


CONCEPTOS. SERVICIO. • La bd puede tener uno o más servicios asociados; así puede ser identificada de distintas formas por clientes diferentes, y un administrador puede limitar recursos del sistema.

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COMUNICACIONES

21


CONCEPTOS. SERVICIO. • La información necesaria para una conexión se almacena en un repositorio (local o centralizado -LDAP-).

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COMUNICACIONES

22


CONCEPTOS. INSTANCIA. • Una base de datos tiene al menos una instancia integrada por un área de memoria llamada System Global Area (SGA) y por procesos Oracle. • El nombre de la instancia viene indicado por el parámetro de inicialización INSTANCE_NAME. Por defecto se refiere al Oracle System Identifier (SID) de la instancia.

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COMUNICACIONES

23


CONCEPTOS. REGISTRO DE SERVICIO. • “Service registration” es una utilidad por la que el proceso PMON automáticamente proporciona información al “listener”, de forma que listener.ora no precisa ser configurado con información estática tal como: – Nombres de servicio para cada instancia de la bd. – Nombres de instancia de la bd. – Manejadores de servicio (“dispatcher” disponible para cada instancia.

o

servidor

dedicado)

– Dispatcher, instancia e información “node load” que permite al “listener” determinar qué “dispatcher” puede manejar adecuadamente una petición cliente. Si todos los “dispatchers” están bloqueados, el “listener” puede habilitar un servidor dedicado para la conexión.

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COMUNICACIONES

24


CONCEPTOS. REGISTRO DE SERVICIO. • Para asegurar que el registro de servicio funciona correctamentem el fichero de parámetros de inicialización debería contener los parámetros: SERVICE_NAMES, para el nombre de servicio de la bd INSTANCE_NAME, para el nombre de la instancia • El valor del parámetro SERVICE_NAMES se considera antes que el “global database name” (compuesto por DB_NAME y DB_DOMAIN) y el valor de INSTANCE_NAME se considera antes que el SID indicado durante la instalación o creación de la bd.

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COMUNICACIONES

25


CONCEPTOS. REGISTRO DE SERVICIO. • Los eventos relacionados con el registro de servicio se almacenan en el fichero listener.log: – service_register. Recepción de información de instancia por el “listener”. – service_update. Recepción de información actualizada de una instancia por parte del “listener”. – service_died. El “ listener” ha perdido su conexión con el PMON. Se descarta cualquier información de registro para la instancia, los clientes no podrán conectarse a la istancia hasta un nuevo registro del PMON.

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COMUNICACIONES

26


CONCEPTOS. CONECTOR. • Un cliente usa un descriptor de conexión que indica la localización de la bd y el nombre del servicio de bd. (DESCRIPTION= (ADDRESS=(PROTOCOL=tcp)(HOST=<nombre_host/direccionIP>) (PORT=1521)) (CONNECT_DATA= (SERVICE_NAME=<nombre_de_servicio>))) También puede indicarse la conexión a una instancia específica (Real Application Clusters): (DESCRIPTION= ... (INSTANCE_NAME=<nombre_instancia>)))

• Los manejadores de servicio en el servidor pueden ser un “dispatcher” (modo servidor compartido) o un proceso servidor dedicado. Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COMUNICACIONES

27


CONCEPTOS. CONECTOR. • Puede suceder que un cliente desee usar un manejador de servicio particular, en este caso debe indicarse en el conector: (DESCRIPTION= (ADDRESS=(PROTOCOL=tcp)(HOST=host)(PORT=1521)) (CONNECT_DATA= (SERVICE_NAME=nombre_servicio) (SERVER=shared/dedicated)))

• Si no se indica el valor para el parámetro SERVER se asume por defecto la configuración “shared server”. Si no hay “dispatchers” disponibles, se usarán servidores dedicados.

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COMUNICACIONES

28


CONCEPTOS. MAPEOS. • El establecimiento de la correspondencia entre el nombre de servicio y su conector es posible mediante repositorios de información que permiten dicho mapeo a través de una “naming method”: – “Local Naming”. Usa el fichero “tnsnames.ora”. – “Directory Naming”. Emplea un sistema de directorios LDAP. – “Easy Connect Naming”. No requiere configuración. Permite a los clientes conectar a la bd usando una cadena TCP/IP que incluye el nombre de servidor, un puerto y un nombre de servicio: CONNECT username/password@host[:port][/service_name] – “External Naming”. Emplea un sistema no Oracle.

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COMUNICACIONES

29


TIPOS DE CONFIGURACION

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COMUNICACIONES

30


CONFIGURACION. MODELOS. • Existen dos modelos de configuración de Oracle Net: – Localizado o no centralizado: la información se almacena en un fichero tnsnames.ora local a cada máquina en la red. – Centralizado: la información se guarda en un directorio central (LDAP).

• En la exposición se considera un modelo de configuración no centralizado, donde la información sobre direcciones de red se almacena en el fichero tnsnames.ora de cada sistema.

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COMUNICACIONES

31


CONFIGURACION. MODELO LOCAL. • Existen los siguientes ficheros de configuración: – cman.ora ... Residente en la máquina donde se ejecuta Oracle Connection Manager. – listener.ora ... En el servidor de bd. Con infomación sobre protocolo , dirección de escucha, servicios para los que se escucha y parámetros de control. – sqlnet.ora ... En el cliente y en el servidor bd. Puede contener ruta de conexiones, parámetros de control de acceso a bd, parámetros de Oracle Advanced Security, ... – tnsnames.ora ... En los clientes. Contiene “net service names” -nombre de servicio asociado a un descriptor de conexión-. Usado en los mapeos.

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COMUNICACIONES

32


CONFIGURACION. MODELO LOCAL. • Los ficheros de configuración residen generalmente en “$ORACLE_HOME/network/admin”, aunque pueden hacerlo en otros lugares. • El orden de búsqueda para sqlnet.ora es: – El directorio indicado por la variable TNS_ADMIN – El directorio $ORACLE_HOME/network/admin ●

El orden de búsqueda tnsnames.ora es:

para

cman.ora,

listener.ora

y

– El directorio indicado por la variable TNS_ADMIN – En UNIX, el directorio global de configuración (“global configuration directory”). – El directorio $ORACLE_HOME/network/admin

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COMUNICACIONES

33


TNSNAMES.ORA

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COMUNICACIONES

34


TNSNAMES.ORA • Contiene nombres de servicio de red, usados al establecer una conexión, de red mapeados a descriptores de conexión. Dichos descriptores contienen la localización de un “listener” a través de una dirección de protocolo y el nombre de servicio de la bd al que conecta. • Por defecto, tnsnames.ora reside en $ORACLE_HOME/network/admin aunque también puede estar en el directorio indicado por la variable de entorno TNS_ADMIN o el “global configuration directory”. Su sintaxis básica es: nombre_servicio= (DESCRIPTION= (ADDRESS=(PROTOCOL=tcp)(HOST=host)(PORT=1521)) (CONNECT_DATA= (SERVICE_NAME=nombre_servicio))) Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COMUNICACIONES

35


TNSNAMES.ORA nombre_servicio= (DESCRIPTION_LIST= (DESCRIPTION= (ADDRESS=(protocol_address_information)) (ADDRESS=(protocol_address_information)) (ADDRESS=(protocol_address_information)) (CONNECT_DATA= (SERVICE_NAME=service_name))) (DESCRIPTION= (ADDRESS=(protocol_address_information)) (ADDRESS=(protocol_address_information)) (ADDRESS=(protocol_address_information)) (CONNECT_DATA= (SERVICE_NAME=service_name))))

donde ADDRESS define la localización de CONNECT_DATA define el servicio al cual conectar. Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

“listener”

COMUNICACIONES

y

36


LISTENER.ORA

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COMUNICACIONES

37


LISTENER.ORA • El “listener” es un proceso que corre en la bd. Recibe peticiones de conexión de los clientes y gestiona el tráfico de dichas peticiones a la bd. Su configuración se almacena en un fichero llamado listener.ora y sus mensajes se generan en el fichero listener.log • Dado que todos los parámetros de configuración tienen valores por defecto, es posible arrancar y usar el “listener” sin configurar. El “listener” se llama por defecto LISTENER, no soporta servicios hasta el arranque de la bd, y escucha atendiendo a los siguientes valores: (ADDRESS=(PROTOCOL=tcp)(HOST=host_name)(PORT=1521))

• El puerto por defecto para conexión al “listener” es el 1521 (aunque en futuras versiones puede cambiar al 2483, TCP/IP, y 2484, TCP/IP con SSL). Puertos inferiores a 1024 están reservados para su uso por procesos privilegiados. Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COMUNICACIONES

38


LISTENER.ORA

Cada listener está configurado con una o varias direcciones de protocolo, los clientes configurados con una de estas direcciones pueden enviarle peticiones. Una vez recibida la petición, el listener elige un manejador de servicio apropiado para servir la petición y redirige la misma hacia él.

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COMUNICACIONES

39


LISTENER.ORA • El listener determina si un servicio de la bd y sus manejadores de servicio están disponibles mediante el registro del servicio. Durante el mismo, el proceso PMON proporciona al listener información sobre: – Nombres de los servicios de bd disponibles. – Nombre de la instancia asociada con los servicios. – Manejadores de servicio (dispatchers y servidores dedicados) disponibles para la instancia -tipo, dirección de protocolo y carga actual y máxima-.

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COMUNICACIONES

40


LISTENER.ORA • Si el listener no se está ejecutando cuando arranca la instancia, PMON no puede registrar la información de servicio. PMON intenta conectar periódicamente, no obstante, pueden pasar hasta 60 segundos antes de que PMON registre la información tras el arranque del listener. Para iniciar el registro de información inmediatamente tras el arranque del listener debe emplearse la sentencia SQL: ALTER SYSTEM REGISTER;

• El listener rechaza las peticiones previas al registro. Si la instancia está en modo restringido, PMON ordena al listener bloquear las conexiones y los clientes reciben un error: ORA-12526: TNS:listener: all appropriate instances are in restricted mode ORA-12527: TNS:listener: all appropriate instances are in restricted mode or blocking new connections ORA-12528: TNS:listener: all appropriate instances are blocking new connections Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COMUNICACIONES

41


LISTENER.ORA • Por defecto, PMON registra información del servicio referente al puerto TCP/IP número 1521. Para poder usar un puerto distinto debe configurarse el parámetro de inicialización LOCAL_LISTENER • En un entorno “shared server” puede emplearse el atributo LISTENER del parámetro DISPATCHERS en el fichero de inicialización. Como LOCAL_LISTENER y el atributo LISTENER permiten a PMON registrar información del “dispatcher” con el listener, no es preciso especificar ambos si los valores del listener son los mismos. • Por ejemplo, para configurar el listener en el puerto 1421: LOCAL_LISTENER=listener1 DISPATCHERS="(PROTOCOL=tcp)(LISTENER=listener1)" En el tnsnames.ora: listener1=(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST= host)(PORT=1421))) Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COMUNICACIONES

42


LISTENER.ORA • El registro dinámico de servicios configuración del fichero listener.ora

no

requiere

ninguna

• El “listener” emplea la información dinámica adquirida mediante el registro dinámico antes de usar la información configurada estáticamente en el fichero listener.ora. • Durante la instalación de la bd, Oracle Universal Installer ejecuta el Oracle Net Configuration Assistant; este permite configurar el “listener” con un nombre y una dirección concreta. • También se crea una entrada para escucha del protocolo IPC que se configura de forma automática y sirve a procedimientos externos (escritos en un 3GL que pueden ser llamados desde el código PL/SQL -sólo C-). Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COMUNICACIONES

43


LISTENER.ORA • En la configuración del “listener” se indica: – Nombre. – Dirección que acepta peticiones. – Servicios para los que escucha (la configuración estática es necesaria si se usa Oracle Enterprise Manager). – Parámetros de control. • Pueden configurarse múltiples “listener”, con distintos nombres, en un fichero listener.ora. Sin embargo, se recomienda ejecutar sólo uno por nodo en la mayoría de entornos. • SID_NAME (valor del parámetro de inicialización INSTANCE_NAME), GLOBAL_DBNAME (servicio de bd, generalmente en versiones 8.x -combinación de DB_NAME y DB_DOMAIN-) y ORACLE_HOME son parámetros estáticos definibles en listener.ora Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COMUNICACIONES

44


LISTENER.ORA. SECCION PROTOCOLO. • Define las peticiones.

direcciones

de

las

que

el

“listener”

acepta

LISTENER_NOMBRE= (DESCRIPTION= (ADDRESS_LIST= (ADDRESS=(PROTOCOL=tcp)(HOST=host)(PORT=1521)) (ADDRESS=(PROTOCOL=ipc)(KEY=extproc))))

• El parámetro QUEUESIZE permite indicar el número de peticiones concurrentes que puede aceptar el “listener” via TCP/IP o IPC. Su valor por defecto depende del s.o.. LISTENER_NOMBRE= (DESCRIPTION= (ADDRESS=(PROTOCOL=tcp)(HOST=host) (PORT=1521)(QUEUESIZE=20))) Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COMUNICACIONES

45


LISTENER.ORA. SECCION PROTOCOLO. • El parámetro RECV_BUF_SIZE permite indicar, en bytes, el tamaño del “buffer” para recibir operaciones de sesiones (en TCP/IP, TCP/IP with SSL, y SDP). Su valor depende del s.o. LISTENER_NOMBRE = (DESCRIPTION= (ADDRESS=(PROTOCOL=tcp)(HOST=host)(PORT=1521) (RECV_BUF_SIZE=11784)) (ADDRESS=(PROTOCOL=ipc)(KEY=extproc)(RECV_BUF_SIZE=11784)))

• Mediante SEND_BUF_SIZE puede indicarse, en bytes, el tamaño del “buffer” para enviar operaciones de sesiones (en TCP/IP, TCP/IP with SSL, y SDP). Su valor depende del s.o. LISTENER_NOMBRE=(DESCRIPTION= (ADDRESS_LIST= (ADDRESS=(PROTOCOL=tcp)(HOST=host)(PORT=1521) (SEND_BUF_SIZE=11280)) (ADDRESS=(PROTOCOL=ipc)(KEY=extproc)(SEND_BUF_SIZE=11280)))) Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COMUNICACIONES

46


LISTENER.ORA. SECCION REGISTRO SERVICIO. • La sección SID_LIST se usa para configurar estáticamente el “listener”. Requerida por compatibilidad con bbdd Oracle8.0, procedimientos externos y ciertas herramientas de gestión (Oracle Enterprise Manager). En versiones 9i u 8i está infomación se registra dinámicamente al arrancar la instancia. SID_LIST_<nombre_listener>= (SID_LIST= (SID_DESC= (SDU=2085) (GLOBAL_DBNAME=sales.us.acme.com) (ORACLE_HOME=/oracle9i) (SID_NAME=sales)) (SID_DESC= (SID_NAME=plsextproc) (ORACLE_HOME=/oracle9i) (PROGRAM=extproc))) Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COMUNICACIONES

47


LISTENER.ORA SECCION REGISTRO SERVICIO. • Donde: – SID_LIST ... lista de descripciones. – SID_DESC ... información de servicio. – SDU ... Optimizar la transferencia de datos usando un tamaño indicado de session data unit (SDU). – GLOBAL_DBNAME ... “Global database name” de la bd (el listener comprueba la igualdad entre el valor de este parámetro y el del parámetro SERVICE_NAME en el descriptor de conexión del cliente). Permite identificar el servicio de bd. – ORACLE_HOME ... localización del servicio (opcional en UNIX). – PROGRAM ... Nombre del programa de servicio ejecutable. – SID_NAME ... SID de la instancia (parámetro INSTANCE_NAME).

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COMUNICACIONES

48


LISTENER.ORA. PARAMETROS DE CONTROL. – LOG_DIRECTORY_<nombre_listener> indica el directorio de destino del fichero de log del “listener”. Por defecto el directorio $ORACLE_HOME/network/log – LOG_FILE_<nombre_listener> indica el nombre del fichero de log para el “listener”. Por defecto listener.log – TRACE_DIRECTORY_<nombre_listener> indica el directorio de destino de los ficheros de traza del “listener”. Por defecto $ORACLE_HOME/network/trace – TRACE_FILE_<nombre_listener> indica el nombre del fichero de traza del “listener”. Por defecto listener.trc – TRACE_LEVEL_<n_listener>. Nivel de detalle de la traza (0, sin traza, a 16, máximo nivel de traza). – TRACE_FILELEN_<n_listener>. Tamaño de los ficheros de traza (KB). Al alcanzarlo, traza se escribe en el siguiente fichero. – TRACE_FILENO_<n_listener>. Número de ficheros de traza. Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COMUNICACIONES

49


LISTENER.ORA Y JSERVER. • Clientes acceden a aplicaciones Enterprise JavaBeans (EJBs) y Common Object Request Broker Architecture (CORBA), opción Oracle Jserver, en una bd Oracle8i sobre una conexión InterOrb Protocol (IIOP). IIOP es una implementación de General Inter-Orb Protocol (GIOP) sobre TCP/IP. Debe configurarse el puerto 2481 para TCP/IP o 2482 para TCP/IP con SSL. listener= (DESCRIPTION_LIST= (DESCRIPTION= (ADDRESS=(PROTOCOL=tcp)(HOST=sales1server)(PORT=2481)) (PROTOCOL_STACK= (PRESENTATION=giop) (SESSION=raw)))) Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COMUNICACIONES

50


CONTROL DEL “LISTENER”. • La utilidad para control del “listener” (Listener Control Utility) permite administrar este componente. La sintaxis es: S.O.> LSNRCTL <sentencia> [nombre_listener] • Si no se indica nombre, hace referencia al “listener” de nombre “listener”. Para arrancar el “listener” lsnr: LSNRCTL START lsnr • También pueden ejecutarse sentencias en el “prompt” LSNRCTL (se obtiene tecleando lsnrctl sin argumentos). S.O.> lsnrctl LSNRCTL> START lsnr

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COMUNICACIONES

51


CONTROL DEL “LISTENER”. • Pueden combinarse distintas órdenes en un fichero de texto y ejecutarlas de la forma: lsnrctl @file_name • Para parar el “listener” lsnr: LSNRCTL STOP lsnr • Para obtener información: LSNRCTL STATUS lsnr • Para comprobar los valores actuales: LSNRCTL SHOW • Para activar la traza: lsnrctl trace <nivel> <lsnr>

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COMUNICACIONES

52


CONTROL DEL “LISTENER”. • Mediante la orden SERVICES se obtiene información sobre los servicios e instancias registradas, y los manejadores asociados a cada instancia. LSNRCTL SERVICES lsnr

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COMUNICACIONES

53


SQLNET.ORA

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COMUNICACIONES

54


SQLNET.ORA • Los parámetros de configuración para cliente y servidor, perfil, que permiten especificar preferencias de Oracle Net se almacenan en el fichero sqlnet.ora • Sus mensajes se generan en el fichero sqlnet.log • Permite realizar acciones como: – Priorizar modelos (NAMES.DIRECTORY_PATH).

de

localización

– Permitir o no el acceso a ciertos clientes.

• Acceso denegado. TCP.EXCLUDED_NODES=(<dir_IP>|<servidor>) • Acceso permitido: TCP.INVITED_NODES=(<dir_IP>|<servidor>) • Comprobar valores anteriores . TCP.VALIDNODE_CHECKING = yes/no

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COMUNICACIONES

55


SQLNET.ORA – Indicar el intervalo, en segundos, que media para el envio de una confirmación para verificar que la conexión está activa. SQLNET.EXPIRE_TIME Un valor mayor que 0 asegura que no permanecen sesiones abiertas indefinidamente. Si la confirmación encuentra una sesión que ha terminado o que no está en uso, devuelve un error y fuerza al proceso servidor a terminar. – Indicar un dominio por defecto. Este se añade automáticamente a cualquier nombre de servicio dado en la cadena de conexión y comparado con los nombres de servicio de tnsnames.ora NAMES.DEFAULT_DOMAIN=<nombre_dominio> Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COMUNICACIONES

56


SQLNET.ORA – Indicar el intervalo, en segundos, para completar una operación de envio a los clientes tras el establecimiento de la conexión (recomendable en entornos donde las conexiones con los clientes suelen verse interrumpidas): SQLNET.SEND_TIMEOUT Si el servidor no puede completar el envío en dicho tiempo, se generan en el fichero sqlnet.log los errores: “ORA-12535: TNS:operation timed out” y “ORA-12608: TNS: Send timeout occurred”

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COMUNICACIONES

57


SQLNET.ORA – Indicar el intervalo, en segundos, para el servidor espera por datos de un cliente tras el establecimiento de la conexión (recomendable en entornos donde las conexiones con los clientes suelen verse interrumpidas): SQLNET.RECV_TIMEOUT Si un cliente no envía datos se generan en el fichero sqlnet.log los errores: ORA-12535: TNS:operation timed out y ORA-12609: TNS: Receive timeout occurred

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COMUNICACIONES

58


SQLNET.ORA – Indicar parámetros de control del “log”: • LOG_DIRECTORY_CLIENT. Directorio de destino para el fichero de “log” (por defecto el directorio de trabajo actual). • LOG_FILE_CLIENT. Nombre del fichero de “log” para el cliente (por defecto sqlnet.log). • LOG_DIRECTORY_SERVER. Directorio destino para ficheros de “log” del servidor (por defecto $ORACLE_HOME/network/log). • LOG_FILE_SERVER. No aplicable. Hace referencia al fichero de “log” del servidor: sqlnet.log

– Indicar parámetros de traza: • TRACE_DIRECTORY_CLIENT. Directorio destino para trazas del cliente, por defecto $ORACLE_HOME/network/trace Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COMUNICACIONES

59


SQLNET.ORA • TRACE_DIRECTORY_SERVER. Directorio destino para trazas del servidor, por defecto $ORACLE_HOME/network/trace • TRACE_FILE_CLIENT. Nombre del fichero de traza cliente. Por defecto sqlnet.trc • TRACE_FILE_SERVER. Nombre del fichero de traza servidor. Por defecto svr_pid.trc • TRACE_FILELEN_CLIENT. Tamaño de los ficheros traza cliente (KB). Al alcanzar el tamaño, la traza se escribe al fichero siguiente. El número de ficheros se indica con TRACE_FILENO_CLIENT • TRACE_FILELEN_SERVER. Tamaño de los ficheros traza servidor (KB). Al alcanzar el tamaño, la traza se escribe al fichero siguiente. El número de ficheros se indica con TRACE_FILENO_SERVER • TRACE_LEVEL_CLIENT. Nivel de detalle de la traza (0, sin traza, a 16, nivel máximo de traza). • TRACE_LEVEL_SERVER. Nivel de detalle de la traza (0, sin traza, a 16, nivel máximo de traza). Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COMUNICACIONES

60


SQLNET.ORA • Para configurar un modelo local o no centralizado, el parámetro NAMES.DIRECTORY_PATH del fichero sqlnet.ora -indica el orden de los métodos de configuración que Oracle Net emplea para resolver los identificadores- debe contener en primer lugar el valor tnsnames. NAMES.DIRECTORY_PATH=(tnsnames) • “Easy connect naming” se configura automáticamente en la instalación, es neceasrio que venga especificado EZCONNECT en NAMES.DIRECTORY_PATH NAMES.DIRECTORY_PATH=(ezconnect, tnsnames)

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COMUNICACIONES

61


CONFIGURACION BASICA NET

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COMUNICACIONES

62


CONFIGURACION BASICA NET. • Se muestra la forma de intercomunicar una aplicación cliente con una bd a través de una red TCP/IP. • Se asume que: – Servidor BD y cliente en la misma red. – Servidor BD: Instalada bd y TCP/IP. Configurado un “listener”. – Cliente: Instalado “Oracle Client” y TCP/IP.

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COMUNICACIONES

63


CONFIGURACION BASICA NET. 1.- Confirmar conexión de red. • Realizar un “loopback test” para comprobar que el servidor de bd puede comunicar con si mismo ping <nombre_maquina> o ping <direccion_IP> • Comprobar que existe comunicación entre el cliente y la bd (por ejemplo, con “ping”).

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COMUNICACIONES

64


CONFIGURACION BASICA NET. 2.- Arrancar el”listener” y la bd. • Desde s.o.: lsnrctl LSNRCTL> start <nombre_listener> Nombre_listener debe estar definido en el fichero listener.ora. Debe aparecer un mensaje indicando que el “listener” ha arrancado.

• Arrancar la bd. sqlplus /nolog SQL> CONNECT / as sysdba SQL> STARTUP Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COMUNICACIONES

65


CONFIGURACION BASICA NET. • Comprobar que el “service registration” de la bd ha tenido lugar de forma correcta: LSNRCTL> SERVICES [nombre_listener] • La sentencia “SERVICES” muestra los servicios soportados por la bd y los manejadores de servicio disponibles, al menos uno.

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COMUNICACIONES

66


CONFIGURACION BASICA NET. SERVICIOS.

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COMUNICACIONES

67


CONFIGURACION BASICA NET. SERVICIOS.

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COMUNICACIONES

68


CONFIGURACION BASICA NET. SERVICIOS. Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=net))) Services Summary... Service "sales.us.acme.com" has 1 instance(s). Instance "sales", status READY, has 3 handler(s) for this service... Handler(s): "DEDICATED" established:0 refused:0 state:ready LOCAL SERVER "D000" established:0 refused:0 current:0 max:10000 state:ready DISPATCHER <machine: sales-server, pid: 1689> (ADDRESS=(PROTOCOL=tcp)(HOST=sales-server)(PORT=52414)) ... Service "hr.us.acme.com" has 1 instance(s). Instance "hr", status READY, has 2 handler(s) for this service... Handler(s): "DEDICATED" established:0 refused:0 state:ready LOCAL SERVER "D000" established:0 refused:0 current:0 max:10000 state:ready DISPATCHER <machine: sales-server, pid: 11326> (ADDRESS=(PROTOCOL=tcp)(HOST=sales-server)(PORT=58361)) The command completed successfully Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COMUNICACIONES

69


CONFIGURACION BASICA NET. 3.- Configurar el cliente para usar un nombre de servicio de red (“net service name”). El nombre de servicio se define durante la creación de la bd. Se trata de un nombre para el servicio asociado a un descriptor de conexión. El cliente, para conectarse, indicará un nombre de usuario, una contraseña y una cadena de conexión o nombre de servicio (reside en el fichero tnsnames.ora -modificable manualmente, con NetManager, o con NetCAssistant-). Por ejemplo: sales= (DESCRIPTION= (ADDRESS=(PROTOCOL=tcp)(HOST=sales-server)(PORT=1521)) (CONNECT_DATA= (SERVICE_NAME=sales.us.acme.com)))

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COMUNICACIONES

70


CONFIGURACION BASICA NET. • El descriptor de conexión contiene: – La ruta de red hacia la bd, incluyendo la localización del “listener” a través de un protocolo -sección ADDRESS-. – Nombre de servicio (“service name”) - a partir de bd versión 8i o 9i-.

Puede indicarse una instancia con INSTANCE_NAME. sales= (DESCRIPTION= (ADDRESS=(PROTOCOL=tcp)(HOST=sales-server)(PORT=1521)) (CONNECT_DATA= (SERVICE_NAME=sales.us.acme.com) (INSTANCE_NAME=sales))) Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COMUNICACIONES

71


CONFIGURACION BASICA NET. •

El método “easy connect naming” hace innecesaria la definición de servicios en tnsnames.ora, al permitir indicar directamente al cliente un puerto y nombre de servicio de conexión (Por defecto, el nombre de servicio usado es ORCL): CONNECT username/password@[//]host[:port][/service_name]

Por ejemplo: “CONNECT :1521/sales.us.acme.com”

username/password@sales-server

Este cadena se convierte en el descriptor: (DESCRIPTION= (ADDRESS=(PROTOCOL=tcp)(HOST=sales-server)(PORT=1521)) (CONNECT_DATA=(SERVICE_NAME=sales.us.acme.com))) •

Para conexiones URL o JDBC: CONNECT username/password@[//][host][:port][/service_name]

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COMUNICACIONES

72


CONFIGURACION BASICA NET. 4.- Conectar a bd. • Desde el cliente: – Arrancar SQL*Plus: sqlplus – Conectar a bd: CONNECT username/password@nombre_servicio_red

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COMUNICACIONES

73


DATABASE LINK

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COMUNICACIONES

74


DATABASE LINK. • Es una conexión entre dos bbdd que permite acceder a ellas como una única bd; así como acceder de forma remota. Define una vía de comunicación unidireccional, en un solo sentido, cuya definición se almacena en diccionario de datos. • Pueden ser públicos o privados. • Generalmente tienen el mismo nombre que database name” de la bd remota que referencia.

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COMUNICACIONES

el

“global

75


TEMA 7. ARQUITECTURA “SHARED SERVER”.

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

SHARED SERVER.

76


TEMA 7. SHARED SERVER. • • • • •

MANEJADORES DE SERVICIO. SERVIDOR DEDICADO. SERVIDOR COMPARTIDO. “DISPATCHER”. VENTAJAS “SHARED SERVER”. “DISPATCHER”. – – – – – – – – – –

NUMERO DE “DISPATCHER”. CONFIGURACION DE “DISPATCHER”. PROCESOS SERVIDOR COMPARTIDOS. AJUSTE DEL NUMERO “SHARED SERVER”. OTROS PARAMETROS. CONNECTION POOLING. SERVICIOS Y “DISPATCHER”. AJUSTE DEL NUMERO “DISPATCHERS”. REDUCIR CONTENCION. “DISPATCHERS”. “DISPATCHERS”. CLAUSULA INDEX.

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

SHARED SERVER.

77


TEMA 7. SHARED SERVER. • • • • •

VERIFICAR CONFIGURACION. PARAR “DISPATCHERS”. FORZAR CONFIGURACION. COMPARTIDA. DEDICADA. DESHABILITAR MODO SERVIDOR COMPARTIDO. VISTAS.

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

SHARED SERVER.

78


MANEJADORES DE SERVICIO. • Para cada instancia existen unos “manejadores de servicio” o puntos de conexión a la bd. • Estos pueden ser: – Un servidor dedicado, o – Un “dispatcher”, caso de servidor compartido.

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

SHARED SERVER.

79


MANEJADORES DE SERVICIO. • El tipo de configuración se determinará en el servidor de bd. • Respecto al cliente puede suceder que este desee usar un manejador de servicio particular, en este caso el tipo a utilizar se indicaría en el conector: (DESCRIPTION= (ADDRESS=(PROTOCOL=tcp)(HOST=host)(PORT=1521)) (CONNECT_DATA= (SERVICE_NAME=nombre_servicio) (SERVER=shared/dedicated))) • Si no se indica el valor para el parámetro SERVER se asume por defecto la configuración “shared server”. Si no hay “dispatchers” disponibles, se usarán servidores dedicados. Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COMUNICACIONES

80


SERVIDOR DEDICADO. • El “listener” arranca un proceso dedicado exclusivo para cada petición cliente, que permanece hasta la finalización de la misma. • Pueden darse dos opciones

(seleccionada en función del S.O. y el

protocolo):

– El servidor dedicado hereda la petición de conexión del “listener”. – El servidor dedicado informa al “listener” sobre su dirección de escucha, esta se pasa al cliente. Se cierra la conexión con el “listener” y el cliente se conecta al servidor dedicado directamente.

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

SHARED SERVER.

81


SERVIDOR DEDICADO.

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

SHARED SERVER.

82


SERVIDOR DEDICADO.

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

SHARED SERVER.

83


SERVIDOR DEDICADO. • En ciertas situaciones es preciso conectar obligatoriamente usando servidores dedicados y ha de indicarse de forma explícita: – Trabajos “batch” (en general aquellos en los que no es posible ningún tiempo de espera). – Al usar Recovery Manager (RMAN) para hacer copias, restaurar o recuperar una bd.

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

SHARED SERVER.

84


SERVIDOR COMPARTIDO. • La arquitectura de servidor compartido usa uno o varios procesos “dispatcher” para redirigir las conexiones cliente a una cola de peticiones común. Un proceso servidor compartido desocupado extrae la petición de esta cola. • Permite que un pequeño número de procesos servidor atienda un gran número de clientes, reduciendo así los recursos de sistema necesarios respecto a cuando se usan servidores dedicados. La configuración servidor compartido es recomendable cuando existan una gran número de conexiones puesto que reduce las necesidades de memoria. • El proceso “listener” redirige las peticiones al “dispatcher”. Al llegar una petición, el “listener” la conduce al “dispatcher”, o indica al cliente la dirección de protocolo del “dispatcher” -el cliente termina la sesión con el “listener” y establece una con el “dispatcher”-. Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

SHARED SERVER.

85


SERVIDOR COMPARTIDO.

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

SHARED SERVER.

86


SERVIDOR COMPARTIDO: “DISPATCHER”.

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

SHARED SERVER.

87


SERVIDOR COMPARTIDO: “DISPATCHER”. • Un dispatcher admite múltiples conexiones cliente a la vez. Cada una de ellas se asocia a un circuito virtual, una porción de memoria compartida usada por el dispatcher para las peticiones y respuestas a los clientes.

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

SHARED SERVER.

88


SERVIDOR COMPARTIDO: “DISPATCHER”. La configuración en servidor compartido es compatible con otras soluciones aportadas por Oracle Net y conjuntamente permiten reducir la sobrecarga de los servidores de bd (como, por ejemplo, Oracle Connection Manager).

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

SHARED SERVER.

89


VENTAJAS “SHARED SERVER”. • Permite maximizar el uso de los recursos del sistema y mejorar el rendimiento, incrementando el número de clientes que simultáneamente pueden estar conectados a la bd. • Reduce el número de procesos que corren sobre la instancia. • Incrementa el número de posibles usuarios. • Disminuye el número de procesos servidor ociosos. • Reduce el uso de memoria y la sobrecarga del sistema.

• La configuración en modo compartido resulta adecuada en sistemas con muchos usuarios OLTP realizando transacciones intermitentes o aquellos sistemas con una alta tasa de conexión a la bd (siempre hay un proceso “dispatcher” listo para gestionar la petición entrante). Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

SHARED SERVER.

90


“DISPATCHER”. • El número de procesos “dispatcher” arrancados con la instancia se controla con el parámetro de inicialización DISPATCHERS. Este número depende de la bd, del límite impuesto por s.o., del número de conexiones para cada proceso y del número de conexiones requeridas para cada protocolo. • Los procesos “dispatcher” y servidores compartidos pueden arrancarse además con la sentencia ALTER SYSTEM sin necesidad de rearrancar la instancia. • Un “dispatcher” se crea automáticamente, para TCP/IP, cuando se elige el modo servidor compartido (SHARED_SERVERS mayor que 0) sin especificar el parámetro “dispatchers”, es equivalente a tener en el fichero de inicializacion: dispatchers="(PROTOCOL=tcp)" Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

SHARED SERVER.

91


NUMERO DE “DISPATCHER”. • Una vez conocido el número de posibles conexiones por proceso de s.o. puede calcularse el número inicial de “dispatchers” a crear en el arranque: Número de “dispatchers” = CEIL ( nº máx. sesiones concurrentes / conexiones por dispatcher ) • Es necesario tener en cuenta que tras arrancar la instancia pueden arrancarse más procesos si son necesarios. Configurar demasiados “dispatcher” puede afectar a la productividad de la bd.

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

SHARED SERVER.

92


CONFIGURACION DE “DISPATCHER”. • Configuración Típica. DISPATCHERS="(PROTOCOL=TCP) (DISPATCHERS=2)” DISPATCHERS=”(PROTOCOL=IPC) (DISPATCHERS=1)" • Forzar los puertos usados. DISPATCHERS="(ADDRESS=(PROTOCOL=TCP)(PORT=5000))" DISPATCHERS="(ADDRESS=(PROTOCOL=TCP)(PORT=5001))" • Forzar las direcciones IP usadas (las direcciones IP deben ser direcciones válidas para el “host” donde está la instancia). DISPATCHERS="(ADDRESS=(PROTOCOL=TCP)(HOST=144.25. 16.201))(DISPATCHERS=2)" Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

SHARED SERVER.

93


PROCESOS SERVIDOR COMPARTIDOS. • La configuración de servidor compartido se habilita asignando al parámetro de inicialización SHARED_SERVERS un valor mayor que cero o asignándole un valor con ALTER SYSTEM. No es necesario ajustar ningún otro parámetro. • Como esta configuración requiere al menos un “dispatcher”, se crea uno. Por compatibilidad, si se incluye el parámetro DISPATCHERS y se le da un valor, se habilita SHARED_SERVERS -con un valor por defecto de 1-. • El valor indicado por SHARED_SERVERS es el mínimo a crear cuando arranca la instancia, tras el arranque la gestión de su número es dinámica y la lleva a cabo Oracle SHARED_SERVERS = <número> Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

SHARED SERVER.

94


PROCESOS SERVIDOR COMPARTIDOS. • Si la carga del sistema decrece, se mantiene este mínimo por lo que no debe asignarse un valor demasiado alto. • Tanto el número de DISPATCHERS como de SHARED_SERVERS pueden modificarse dinámicamente. Es necesario el privilegio ALTER SYSTEM.

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

SHARED SERVER.

95


PROCESOS SERVIDOR COMPARTIDOS. • El número de “shared servers” en un momento determinado de la operación de la bd no puede fijarse -sólo el máximo y el mínimo son definibles-. • Los “shared servers” se crean dinámicamente bajo el control automático de la arquitectura “shared server” de la instancia Oracle. Así, no se necesita ni se puede configurar el número de ellos en ningún momento. • Conforme la carga se incrementa, por ejemplo al aumentar el número de consultas/DDLs/DMLs que los clientes ejecutan, la instancia Oracle incrementa el número de “shared servers” también -hasta el límite fijado por MAX_SHARED_SERVERS-. En el caso de que la carga descienda, los “shared servers” son eliminados automáticamente por la instancia.

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

SHARED SERVER.

96


AJUSTE DEL NUMERO “SHARED SERVER”. • El incremento de tiempos de espera en las respuestas indica contención para los “shared servers”. La vista V$QUEUE contiene estadísticas sobre la actividad de la cola de peticiones a los “shared servers” (vista accesible sólo a SYS y usuarios con el privilegio SELECT ANY TABLE como SYSTEM). • En particular, la columna WAIT muestra el tiempo total de espera, en centésimas de segundo, para las peticiones que han estado en cola y TOTALQ muestra el número total de peticiones que han estado alguna vez en cola. • Para monitorizar sus valores puede emplearse la sentencia: SELECT DECODE(TOTALQ, 0, 'No Requests', WAIT/TOTALQ || ' CENTESIMAS SEGUNDO') "TIEMPO MEDIO DE ESPERA POR PETICION" FROM V$QUEUE WHERE TYPE = 'COMMON';

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

SHARED SERVER.

97


AJUSTE DEL NUMERO “SHARED SERVER”. • También puede determinarse cuántos “shared servers” están ejecutándose en un instante: SELECT COUNT(*) "PROCESOS SHARED SERVER” FROM V$SHARED_SERVER WHERE STATUS != 'QUIT';

• Si se detecta contención en los “shared servers”, debe en primer lugar comprobarse que no hay contención en memoria -examinando la “shared pool” y la “large pool”-. En última instancia podrían añadirse más recursos actuando sobre los parámetros: MAX_DISPATCHERS MAX_SHARED_SERVERS DISPATCHERS SHARED_SERVERS Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

SHARED SERVER.

98


CAMBIAR NUMERO “SHARED SERVER”. • Tras arrancar la instancia, puede modificarse el número mínimo de procesos “shared server” mediante la sentencia ALTER SYSTEM. Oracle elimina los servidores desocupados cuando hay más que el límite mínimo especificado. • Si SHARED_SERVERS es 0, Oracle elimina todos los servidores actuales cuando se desocupan y no arranca ninguno hasta que se incrementa el valor de “SHARED_SERVERS”. • Por ejemplo, para fijar el mínimo de procesos “shared server” a cuatro: ALTER SYSTEM SET SHARED_SERVERS = 4;

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

SHARED SERVER.

99


OTROS PARAMETROS. • SHARED_SERVER_SESSIONS. Parámetro modificable con ALTER SYSTEM que indica el número total de sesiones concurrentes de usuario permitidas en arquitectura “shared server”. Si se indica, su valor debe ser menor que SESSIONS. • Parámetros que también pueden requerir ajuste son: – LARGE_POOL_SIZE. Tamaño en bytes de la pila “large pool”, mínimo de 300k. Es modificable con ALTER SYSTEM. – SESSIONS. Parámetro estático, especifica el número máximo de sesiones que es posible crear en el sistema; dado que cada conexión requiere una sesión, este parámetro determina el número máximo de usuarios concurrentes en la bd. Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

SHARED SERVER.

100


OTROS PARAMETROS. • CIRCUITS. Parámetro modificable con ALTER SYSTEM que indica número total de circuitos virtuales disponibles para sesiones de red. Está relacionado con los requerimientos de SGA y no es necesario indicarlo a menos que se quiera limitar el número de circuitos. Un circuito virtual es una porción de memoria compartida usada por el “dispatcher” para las conexiones cliente (peticiones/respuestas). El “dispatcher” coloca un circuito virtual en una cola común cuando llega una petición; un servidor compartido ocioso coge dicho circuito, sirve la petición, y enlaza el circuito antes de intentar recuperar otro.

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

SHARED SERVER.

101


OTROS PARAMETROS. • MAX_DISPATCHERS (obsoleto). Parámetro modificable con ALTER SYSTEM que indica el máximo número de procesos “dispatcher” permitidos a la vez. Su valor debe ser mayor o igual que el número de “dispachers” indicados por DISPATCHERS y menor que el número de procesos indicados por PROCESSES. Se mantiene por compatibilidad con versiones anteriores. • MAX_SHARED_SERVERS. Parámetro modificable con ALTER SYSTEM que indica el número máximo de procesos de servidor compatido (“shared server”) simultáneos. Si ocurren con demasiada frecuencia “deadlocks”, debe incrementarse. Su valor debe ser mayor o igual que el número de “dispachers” indicados por SHARED_SERVERS y menor que el número de procesos indicados por PROCESSES.

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

SHARED SERVER.

102


CONNECTION POOLING. • Esta utilidad permite reducir el número de conexiones físicas de red a un “dispatcher” al compartir un conjunto de conexiones entre los procesos cliente. • Se configura usando el atributo POOL del parámetro DISPATCHERS y los atributos opcionales CONNECTIONS (CON o CONN), SESSIONS (SES o SESS) y TICKS (TIC o TICK). – CONNECTIONS ... Máximo número de conexiones de red permitidas por “dispatcher”. Valor por defecto dependiente del s.o. – TICKS ... Duración de “network tick” en segundos (por defecto 1). Es un “timeout” del Connection Pool. – POOL ... Activa “Connection Pooling” (valores YES -activado-, NO -desactivado-, IN -conexiones entrantes- y OUT -conexiones salientes-). Por defecto no está activado. – SESSIONS ... Número máximo de sesiones de red permitidas por “dispatcher” (valor por defecto dependente del s.o.). Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

SHARED SERVER.

103


CONNECTION POOLING. • Suponiendo un sistema que puede soportar hasta 950 conexiones por proceso y que existen 4000 usuarios conectados al tiempo a través de SSL y 2500 sesiones concurrentes a través de TCP/IP con SSL, serían necesarios 5 “dispatchers” para TCP/IP y 3 más para TCP/IP con SSL: DISPATCHERS="(PROTOCOL=tcp)(DISPATCHERS=5)" DISPATCHERS="(PROTOCOL=tcps)(DISPATCHERS=3)"

• Si los clientes están frecuentemente inactivos y un “dispatcher” puede gestionar 4000 sesiones TCP/IP o 2500 sesiones TCP/IP con SSL, podría optarse por la configuración: DISPATCHERS="(PROTOCOL=tcp)(DISPATCHERS=1)(POOL=on)(TICK=1) (CONNECTIONS=950)(SESSIONS=4000)" DISPATCHERS="(PROTOCOL=tcps)(DISPATCHERS=1)(POOL=on)(TICK=1) (CONNECTIONS=950)(SESSIONS=2500)"

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

SHARED SERVER.

104


SERVICIOS Y “DISPATCHER”. • Dado que una bd puede estar representada por múltiples nombres de servicio, un conjunto de “dispatchers” pueden habilitarse para servir exclusivamente peticiones a un servicio particular (e incluso asignar mayores recursos a las mismas). SERVICE_NAMES=CURSOxx INSTANCE_NAME=CURSOxx DISPATCHERS="(PROTOCOL=tcp)" DISPATCHERS="(PROTOCOL=tcp)(SERVICE=ADMINCURSO)"

• En el ejemplo anterior hay dos “dispatchers”, el primero sirve peticiones para clientes accediendo al servicio CURSOxx, el otro sólo para clientes accediendo al servicio “ADMINCURSO”.

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

SHARED SERVER.

105


AJUSTE DEL NUMERO “DISPATCHERS”. • V$DISPATCHER proporciona información general sobre los procesos “dispatcher”. V$DISPATCHER_RATE muestra estadísticas y contiene los valores actuales (prefijo CUR_), medios (prefijo AVG_) y máximos (prefijo MAX_). • Es necesario comparar los valores actuales con los máximos, si aquellos se acercan a los valores medios (AVG_), están alejados de los máximos (MAX_) y el sistema proporciona una respuesta adecuada en tiempo el ajuste es el correcto. • Si las tasas actuales y medias están alejadas de los máximos, habrá que reducir el número de “dispatchers”. Si aquellas están cerca de los máximos, se podrían añadir “dispatchers”. • V$DISPATCHER_RATE debería examinarse durante periodos de carga máxima y mínima del sistema para obtener información exhaustiva a partir de la cual realizar el ajuste. Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

SHARED SERVER.

106


REDUCIR CONTENCION. “DISPATCHERS”. • Si se determina que la carga de los procesos “dispatcher” es baja, debe reducirse el número de procesos. Si la carga es alta, puede mejorarse la productividad de varias formas: – Habilitar “Connection Pooling”. – Habiltar multiplexado (“Connection Manager”). – Arrancar más procesos “dispatcher”. Para modificar el número de procesos se usa la sentencia ALTER SYSTEM. Es importante observar que su número NO varía dinámicamente. Cuando se reduce, puede hacerse hasta el número indicado en DISPATCHERS. ALTER SYSTEM SET DISPATCHERS = '(PROTOCOL=TCP)(DISPATCHERS=5)', '(PROTOCOL=TCPS)(DISPATCHERS=2)'; Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

SHARED SERVER.

107


“DISPATCHERS”. CLAUSULA INDEX. • INDEX. Este parámetro se usa en ALTER SYSTEM SET DISPATCHERS para indicar que “dispatcher” quiere modificarse (se ignora si se indica en el fichero de parámetros). Señala el orden en el que se inicializaron, su rango oscila entre 0 (el primer proceso “dispatcher”) a uno menos al número total de “dispatchers” definidos. Por ejemplo, si se indican 3 “dispatchers” en el fichero de parametros, para modificar el tercero debe indicarse INDEX=2 en la sentencia ALTER SYSTEM (consultar vistas v$dispatcher, observar la columna conf_indx, y v$dispatcher_config). • Si en el fichero de inicialización se indica: dispatchers = "(ADDRESS=(PROTOCOL=TCP) (host=host)(port=5100))" dispatchers = "(ADDRESS=(PROTOCOL=TCP) (host=host)(port=2480))"

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

SHARED SERVER.

108


“DISPATCHERS”. CLAUSULA INDEX. • Ejecutando “lsnrctl services” (lsnrctl services listener_v9205): Service "v9205" has 2 instance(s). Instance "v9205", status UNKNOWN, has 1 handler(s) for this service... Handler(s): "DEDICATED" established:0 refused:0 LOCAL SERVER Instance "v9205", status READY, has 3 handler(s) for this service... Handler(s): "DEDICATED" established:0 refused:0 state:ready LOCAL SERVER "D001" established:0 refused:0 current:0 max:1002 state:ready DISPATCHER <machine: INDL040AD, pid: 840> (ADDRESS=(PROTOCOL=tcp)(HOST=indl040ad.idc.oracle.com)(PORT=248 0)) "D000" established:0 refused:0 current:0 max:1002 state:ready DISPATCHER <machine: INDL040AD, pid: 2280> (ADDRESS=(PROTOCOL=tcp)(HOST=indl040ad.idc.oracle.com)(PO RT=5100)) The command completed successfully Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

SHARED SERVER.

109


“DISPATCHERS”. CLAUSULA INDEX. • Asignemos ahora el puerto 3500 al “dispatcher” D000's: SQL> alter system shutdown immediate 'D000'; System altered. SQL> alter system set DISPATCHERS='(ADDRESS= PROTOCOL=TCP)(HOST=indl040ad)(PORT= 3500))(INDEX = 0)'; System altered. SQL> alter system register; System altered. •Nota: Indicando REGISTER, el PMON registra la instancia con los “listeners” inmediatamente; en caso contrario los clientes pueden no acceder a los servicios temporalmente. •Nota: También podría añadirse un “dispatcher” con ALTER SYSTEM indicando INDEX=3. Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

SHARED SERVER.

110


“DISPATCHERS”. CLAUSULA INDEX. • Ejecutando “lsnrctl services” de nuevo: Service "v9205" has 2 instance(s). Instance "v9205", status UNKNOWN, has 1 handler(s) for this service... Handler(s): "DEDICATED" established:0 refused:0 LOCAL SERVER Instance "v9205", status READY, has 3 handler(s) for this service... Handler(s): "DEDICATED" established:0 refused:0 state:ready LOCAL SERVER "D001" established:0 refused:0 current:0 max:1002 state:ready DISPATCHER <machine: INDL040AD, pid: 840> (ADDRESS=(PROTOCOL=tcp)(HOST=indl040ad.idc.oracle.com)(PORT=248 0)) "D000" established:0 refused:0 current:0 max:1002 state:ready DISPATCHER <machine: INDL040AD, pid: 2280> (ADDRESS=(PROTOCOL=tcp)(HOST=indl040ad.idc.oracle.com)(PO RT=3500)) The command completed successfully Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

SHARED SERVER.

111


VERIFICAR CONFIGURACION. • Al usar “shared server”, debe arrancarse en primer lugar el “listener” y después la bd. Puede verificarse el estado del “dispatcher” ejecutando: lsnrctl services • Para verificar que las conexiones realizadas están usando servidores compartidos debe consultarse la vista V$CIRCUIT (habrá una entrada por cada conexión de servidor compartido). Select dispatcher, circuit, server, status from v$circuit;

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

SHARED SERVER.

112


PARAR “DISPATCHERS”. • Es posible parar procesos específicos al estar identificados por un nombre de la forma Dnnn -los procesos “background” correspondientes se identifican de la forma Dnnn-. SELECT NAME, NETWORK FROM V$DISPATCHER; NAME NETWORK ------------------------------------------------------------------------D000 (ADDRESS=(PROTOCOL=tcp)(HOST=host)(PORT=3499)) D001 (ADDRESS=(PROTOCOL=tcp)(HOST=host)(PORT=3531)) D002 (ADDRESS=(PROTOCOL=tcp)(HOST=host)(PORT=3532))

• Para parar el “dispatcher” D002: ALTER SYSTEM SHUTDOWN IMMEDIATE 'D002';

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

SHARED SERVER.

113


PARAR “DISPATCHERS”. • La claúsula IMMEDIATE permite parar el “dispatcher”, no aceptando nuevas conexiones y terminando inmediatamente las existentes. Posteriormente el proceso acaba. Si no se indica IMMEDIATE, el proceso “dispatcher” espera hasta que todos sus usuarios se desconecten antes de finalizar.

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

SHARED SERVER.

114


FORZAR CONFIGURACION COMPARTIDA. • Si está configurado “shared server” y llega una conexión cuando no hay “dispatcher” registrados, las peticiones pueden ser manejadas por un proceso servidor dedicado (configurado en listener.ora). Si se desea que un cierto cliente use siempre un “dispatcher”, debe indicarse (server=shared) en el descriptor de conexión. Si no hay un “dispatcher” disponible, se rechaza la conexión del cliente. sales= (DESCRIPTION= (ADDRESS=(PROTOCOL=tcp)(HOST=host)(PORT=1521)) (CONNECT_DATA=(SERVICE_NAME=servicio) (SERVER=shared)))

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

SHARED SERVER.

115


FORZAR CONFIGURACION DEDICADA. • En ciertas ocasiones, interesa que un cliente se conecte a una instancia usando un servidor dedicado -como al ejecutar un trabajo “batch”, o al usar Recovery Manager para copiar, recuperar o restaurar una bd-. Debe hacerse una conexión mediante un servicio de red configurado como servidor dedicado: – Bien el servicio contiene la clausula SERVER=DEDICATED. sales= (DESCRIPTION= (ADDRESS=(PROTOCOL=tcp)(HOST=host)(PORT=1521)) (CONNECT_DATA=(SERVICE_NAME=servicio)(SERVER=dedicated)))

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

SHARED SERVER.

116


FORZAR CONFIGURACION DEDICADA. – Bien el fichero sqlnet.ora del cliente debe contener la variable USE_DEDICATED_SERVER=on -añade (server=dedicated) a la sección CONNECT_DATA del descriptor que el cliente use, el valor es sobreescrito, incluso si está configurado el modo servidor compartido-.

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

SHARED SERVER.

117


FORZAR CONFIGURACION. • La instancia Oracle sólo proporciona la forma de limitar el número total de sesiones que pueden establecerse, como un conjunto, pero no deja limitar de forma específica sesiones dedicadas o sesiones compartidas como tales. • Para limitar el número total de sesiones que pueden establecerse, puede usarse el parámetro SESSIONS en el fichero de parámetros de inicialización.

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

SHARED SERVER.

118


DESHABILITAR MODO SERVIDOR COMPARTIDO. • Puede hacerse asignando un valor cero a SHARED_SERVERS. Ningún cliente más se conecta, sin embargo Oracle retiene algunos servidores compartidos hasta que todas las conexiones en este modo se cierran (en cantidad igual al menor de los parámetros SHARED_SERVERS o MAX_SHARED_SERVERS). • Si SHARED_SERVERS y MAX_SHARED_SERVERS son ambos puestos a cero, todos los servidores compartidos finalizan y las peticiones de clientes serán “encoladas” hasta que el valor de cualquiera de dichos parámetros se eleve de nuevo. • Una vez todos los clientes hayan desconectado, para eliminar los “dispatchers” debe indicarse: ALTER SYSTEM SET DISPATCHERS = ''; Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

SHARED SERVER.

119


VISTAS. • V$CIRCUIT ... Circuitos virtuales -conexiones de usuario a la bd a traves de “dispatchers” y servidores. • V$DISPATCHER ... Información sobre los procesos “dispatcher” (nombre,estado, estadísticas,...). • V$DISPATCHER_CONFIG ... Configuración de los procesos “dispatcher”. • V$DISPATCHER_RATE ... Estadísticas para “dispatcher”. • V$QUEUE ... Información sobre las colas de mensaje de los servidores compartidos. • V$SHARED_SERVER ... Información de procesos “sharedserver”. • V$SHARED_SERVER_MONITOR ... Información para ajuste de “shared server”. • V$SGA ... Información sobre “system global area” (SGA). • V$SGASTAT ... Información estadística de la SGA. • V$SHARED_POOL_RESERVED Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

SHARED SERVER.

120


TEMA 8. ARCHIVADO DE BASE DE DATOS.

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

ARCHIVADO DE BASE DE DATOS

121


TEMA 8. ARCHIVADO. • MODOS DE FUNCIONAMIENTO DE LA BD. • MODOS “NOARCHIVELOG” Y “ARCHIVELOG”. • “REDO LOG” ARCHIVADO. • INFORMACION DE ARCHIVADO. • MODO DE ARCHIVADO INICIAL. • CAMBIO A MODO “ARCHIVELOG”. • ARCHIVELOG. – ARCHIVADO MANUAL. – DESTINO DE ARCHIVADO. FALLOS EN DESTINO. – CONTROL DE PROCESOS ARCn. Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

ARCHIVADO DE BASE DE DATOS

122


TEMA 8. ARCHIVADO. • INFORMACION PROCESO ARCHIVADO. • FLASH RECOVERY AREA Y ARCHIVELOG. • CAMBIO A MODO “NOARCHIVELOG”. • VISTAS.

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

ARCHIVADO DE BASE DE DATOS

123


MODOS DE FUNCIONAMIENTO DE BD. • La bd puede funcionar en dos modos distintos: modo “noarchivelog” y modo “archivelog”. • Ambos se distinguen por el manejo que se hace de los “redo log” en línea cuando se completa el llenado de un grupo y se produce el “log switch”. • La elección de uno u otro modo depende de las exigencias en cuanto a disponibilidad y capacidad de recuperación necesarias en nuestra operación diaria de la bd. Si no se puede permitir la pérdida de datos en caso de fallo en disco o fichero y es necesaria una actividad continua de la bd, servicio 24x7, es aconsejable el funcionamiento en modo “archivelog”. Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

ARCHIVADO DE BASE DE DATOS

124


MODO “NOARCHIVELOG”. • En este modo la bd está protegida contra el fallo de instancia; pero si se produce un fallo en disco o en fichero, sólo puede recuperarse hasta la copia completa, y consistente, más reciente. • Está desactivado el archivado de los “redo log” en línea. Cuando se completa el llenado de un grupo y se produce el “log switch”, este es reutilizado por el LGWR. • Deben hacerse periódica y frecuentemente copias completas y coherentes de la bd (con la bd cerrada consistentemente).

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

ARCHIVADO DE BASE DE DATOS

125


MODO “ARCHIVELOG”. • Se archivan los “redo log” en línea. Cuando se completa el llenado de un grupo, este NO es reutilizado por el LGWR hasta que se archiva. • Pueden usarse copias realizadas mientras la base de datos está abierta y en funcionamiento. • Permite recuperar todas las transacciones validadas (“commit”) en caso de fallo en disco o de sistema operativo -se recupera la bd al momento actual-. • Es aconsejable en el caso de no poder permitir ningún tipo de pérdida de datos. Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

ARCHIVADO DE BASE DE DATOS

126


MODO “ARCHIVELOG”.

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

ARCHIVADO DE BASE DE DATOS

127


“REDO LOG” ARCHIVADO. • Se llama “redo log” archivado al conjunto de ficheros de “redo log” archivados, que son copia de ficheros pertenecientes a un grupo de “redo log” -escritos estos al completo y en línea- de la base de datos. Este conjunto de ficheros archivados se escribe en un destino fuera de línea. • Al proceso de copia se le denomina proceso de archivado y se ocupa del mismo el proceso “archiver” (ARCn). Este proceso copia los ficheros de “redo log” a un dispositivo determinado tras cada “log switch”. • El proceso “log writer” (LGWR) no puede reutilizar ni sobreescribir un grupo de “redo log” hasta que ha sido archivado.

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

ARCHIVADO DE BASE DE DATOS

128


“REDO LOG” ARCHIVADO. • Una instancia puede tener hasta diez procesos ARCn (de ARC0 a ARC9). EL proceso “log writer” (LGWR) arranca un nuevo proceso ARCn cuando el número de procesos de archivado es insuficiente, este hecho se registra en el fichero de alertas (alert). • La copia incluye las entradas de “redo” del fichero en línea y mantiene el número de secuencia único de “log” del grupo. • El proceso descrito sólo tiene lugar si la bd está en modo ARCHIVELOG y el modo de archivado automático está activado.

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

ARCHIVADO DE BASE DE DATOS

129


INFORMACION DE ARCHIVADO. • La orden de SQL*Plus ARCHIVE LOG LIST se emplea, entre otras cosas, para mostrar información de archivado para una determinada instancia. – – – –

Modo de operación: ARCHIVELOG o NOARCHIVELOG. Estado de archivado automático (habilitado o no). Destino de archivado. Número de secuencia para el más antiguo “redo log” en línea lleno. – Idem para el próximo a archivar. – Idem para el actual.

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

ARCHIVADO DE BASE DE DATOS

130


MODO DE ARCHIVADO INICIAL. • Indicado al crear la base de datos mediante la sentencia CREATE DATABASE. Por defecto es NOARCHIVELOG. CREATE DATABASE [database] {USER SYS IDENTIFIED BY ...|USER SYSTEM IDENTIFIED BY ... | CONTROLFILE REUSE | LOGFILE [GROUP integer] redo_log_file_spec [, [GROUP integer] redo_log_file_spec]... | MAXLOGFILES integer | MAXLOGMEMBERS integer | MAXLOGHISTORY integer | MAXDATAFILES integer | MAXINSTANCES integer | { ARCHIVELOG | NOARCHIVELOG } | FORCE LOGGING | CHARACTER SET charset| NATIONAL CHARACTER SET charset | DATAFILE datafile_tempfile_spec [, datafile_tempfile_spec]... | default_temp_tablespace | undo_tablespace_clause | set_time_zone_clause }...; Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

ARCHIVADO DE BASE DE DATOS

131


CAMBIO A MODO “ARCHIVELOG”. • Si no se ha establecido el modo ARCHIVELOG durante la creación de la bd puede hacerse posteriormente empleando la sentencia ALTER DATABASE. Es preciso estar conectado a la bd con privilegios de administrador. • Pueden utilizarse las claúsulas NOARCHIVELOG y ARCHIVELOG (es preciso que la bd esté montada pero no abierta y Real Application Clusters -RACdeshabilitado). • La claúsula ARCHIVELOG sólo puede usarse tras parar la instancia normalmente o de forma inmediata sin errores (de forma coherente).

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

ARCHIVADO DE BASE DE DATOS

132


CAMBIO A MODO “ARCHIVELOG”. – Parar la instancia de base de datos: » shutdown – Realizar una copia de seguridad de la bd. – Modificar el fichero de parámetros de inicialización. – Arrancar una instancia y montar la bd: » startup mount – Modificar el modo de archivado y abrir la bd: » alter database archivelog; » alter database open; – Comprobar el modo (archive log list;), archivar los “redo log” (archive log all;) y parar la instancia: » shutdown immediate – Realizar una copia de seguridad de la bd en el nuevo modo. Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

ARCHIVADO DE BASE DE DATOS

133


CAMBIO A MODO “ARCHIVELOG”. • El cambio de modo actualiza el fichero de control. Tras cambiarlo, debe realizarse una copia todos los ficheros de la base de datos. • Cualquier copia anterior puede desecharse pues se ha realizado en modo NOARCHIVELOG (a menos que haya algún problema al cambiar a modo ARCHIVELOG y sea necesario volver al modo NOARCHIVELOG inicial).

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

ARCHIVADO DE BASE DE DATOS

134


ARCHIVELOG. ARCHIVADO MANUAL. • Normalmente el archivado de “redo log” se realiza de forma automática, por mayor comodidad y seguridad. • Si se desea archivar de forma manual, al cambiar a modo “archivelog”, en el paso donde se modifica el modo de archivado y se abre la bd, debe indicarse: » alter database archivelog manual; » alter database open;.

• Si está activo el archivado manual debemos explícitamente archivar los “redo log” o la bd suspenderá su funcionamiento. No es conveniente trabajar de forma manual. Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

ARCHIVADO DE BASE DE DATOS

135


ARCHIVELOG. ARCHIVADO MANUAL. • Para realizar el archivado manual es necesario estar conectado AS SYSDBA o tener el privilegio ALTER SYSTEM. La sentencia: » alter system archive log all; guarda todos los ficheros aún no archivados. • Mediante alter system archive log current; se fuerza a cambiar de “log” y archivar el que se está usando así como el resto de no archivados (util para copias “online”). Esta sentencia puede usarse aun cuando se esté trabajando en modo automático de archivado.

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

ARCHIVADO DE BASE DE DATOS

136


ARCHIVELOG. DESTINO DE ARCHIVADO. • Puede ser único o múltiple, en este caso se guardan en más de una localización. • El parámetro de inicialización LOG_ARCHIVE_DEST_n -siendo n un entero entre 1 y 10- permite especificar hasta diez destinos de archivado. El caso más común es el archivado local -en la propia maquina-, lo que se indica: LOG_ARCHIVE_DEST_1='LOCATION=/u06/oradata/CURSOxx'

• Es incompatible con el parámetro LOG_ARCHIVE_DEST (este parámetro junto con LOG_ARCHIVE_DUPLEX_DEST permite especificar un máximo de dos destinos de archivado). Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

ARCHIVADO DE BASE DE DATOS

137


ARCHIVELOG. DESTINO DE ARCHIVADO. • Para especificar el destino de archivado debe pararse la instancia de base de datos -shutdown- e: – Indicar en fichero de parámetros destinos de archivado. LOG_ARCHIVE_DEST_1 = 'LOCATION = /u06/oradata/CURSOxx' LOG_ARCHIVE_DEST_2 = 'LOCATION = /u07/oradata/CURSOxx' ... – Indicar el valor del parámetro LOG_ARCHIVE_FORMAT. Permite indicar el formato de nombre que se aplicará a los ficheros de archivado.

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

ARCHIVADO DE BASE DE DATOS

138


ARCHIVELOG. DESTINO DE ARCHIVADO. • El nombre de los archivados se compone de una cadena de caracteres combinada con variables: – – – – –

%s ... Número de secuencia de log. %t ... Número de “thread”. %a ... Identificación de activación. %d ... Identificación de bd. %r ... Identificación de “resetlog” (permite asegurar nombres únicos para los ficheros de archivado a través de múltiples “encarnaciones” de la bd, estas cambian al abrir la bd con la opción “resetlogs”).

• Si se emplean mayúsculas (por ejemplo, %S o %T) el valor pasa a ser de longitud fija y se completa con ceros a la izquierda. Un ejemplo de nombre puede ser: LOG_ARCHIVE_FORMAT = "LOG%t_%s_%r.ARC" Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

ARCHIVADO DE BASE DE DATOS

139


ARCHIVELOG. DESTINO DE ARCHIVADO. • Los valores de dichos parámetros pueden encontrarse en: – Número de secuencia de log (%s ): Vista V$ARCHIVED_LOG, columna SEQUENCE# – Número de “thread” (%t). Vista V$ARCHIVED_LOG, columna THREAD# – Identificación de activación (%a). Es el número asignado a la instancia de bd. Vista V$DATABASE, columna ACTIVATION# – Identificación de bd (%d). Vista V$DATABASE, columna DBID – Identificación de “resetlog” (%r). Vista V$ARCHIVED_LOG, columna RESETLOGS_ID

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

ARCHIVADO DE BASE DE DATOS

140


ARCHIVELOG. DESTINO DE ARCHIVADO. • La ruta completa de localización se forma concatenando ambas variables (LOG_ARCHIVE_DEST_n y LOG_ARCHIVE_FORMAT). Así, según el ejemplo anterior se generan ficheros de la forma: /u06/oradata/CURSOxx/LOGxxx_yyy_zzz.ARC /u07/oradata/CURSOxx/LOGxxx_yyy_zzz.ARC

• Cada destino tiene una serie de características que determinan su estado (ver vista v$ARCHIVE_DEST): – Valid/Invalid ... destino especificado y validez – Enabled/Disabled ... estado de disponibilidad y usabilidad (por defecto un destino tiene valor “enabled”). – Active/Inactive ... si hay problemas accediendo al destino Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

ARCHIVADO DE BASE DE DATOS

141


ARCHIVELOG. DESTINO DE ARCHIVADO. • Mediante el fichero de parámetros de inicialización LOG_ARCHIVE_DEST_STATE_n, parámetro dinámico modificable con ALTER SESSION o ALTER SYSTEM, es posible controlar el estado de un determinado destino de archivado: – Enabled (por defecto). Destino válido y que puede usarse. – Defer. Destino excluido temporalmente hasta que sea habilitado. – Alternate. No habilitado pero puede llegar a estarlo si el resto de destinos fallan.

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

ARCHIVADO DE BASE DE DATOS

142


ARCHIVELOG. FALLOS DESTINO ARCHIVADO. • Mediante LOG_ARCHIVE_MIN_SUCCEED_DEST=n (modificable dinámicamente con ALTER SESSION o ALTER SYSTEM) se determina el mínimo número de destinos de archivado a los que debe poder escribirse satisfactoriamente antes de reutilizar el “redo log” en línea. Su valor por defecto es 1. • Con LOG_ARCHIVE_DEST_n (modificable dinámicamente) puede indicarse si un destino tiene como atributo OPTIONAL -el archivado no se requiere para poder usar el “redo log”-, por-, valor por defecto, o MANDATORY -el archivado debe tener éxito antes de poder reutilizar el “redo log”-.

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

ARCHIVADO DE BASE DE DATOS

143


ARCHIVELOG. FALLOS DESTINO ARCHIVADO. • Con LOG_ARCHIVE_DEST_n puede especificarse el mínimo número de segundos antes de que el proceso ARCn intente acceder a un destino que ha fallado (opción REOPEN). El valor por defecto es de 300 segundos; con un valor de cero, ARCn no intentará reescribir tras un fallo. Si no se indica REOPEN, ARCn nunca intentará escribir tras un error. • Si se indica REOPEN con un destino de tipo OPTIONAL, la bd puede sobreescribir los “redo” en línea si hay un error. Si se indica para un destino tipo MANDATORY y no puede archivarse puede verse perjudicado el funcionamiento de la bd (en este caso, deberá archivarse manualmente, cambiar el destino -DEFER, OPTIONAL, ...- o definirlo como OPTIONAL). Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

ARCHIVADO DE BASE DE DATOS

144


ARCHIVELOG. CONTROL DE PROCESOS ARCn. • Los procesos de archivado (ARCn) son creados conforme se necesitan. • Puede indicarse el número de procesos creados en el arranque de la instancia (ARC0 a ARC9), añadiendo en el fichero de parámetros: LOG_ARCHIVE_MAX_PROCESSES=<numero>;

• No pudiendose crear más de los indicados. Su valor por defecto es 2. • Generalmente no es necesario indicar nada pues la bd arranca tantos procesos ARCn como sean necesarios para asegurar un correcto funcionamiento. Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

ARCHIVADO DE BASE DE DATOS

145


ARCHIVELOG. CONTROL DE PROCESOS ARCn. • Este parámetro puede modificarse dinámicamente con la sentencia (la bd debe estar montada pero no abierta): ALTER SYSTEM SET LOG_ARCHIVE_MAX_PROCESSES=<numero>;

• Cada proceso ARCn trabaja sólo con un “log” inactivo cada vez, pero debe escribir a cada unos de los destinos indicados.

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

ARCHIVADO DE BASE DE DATOS

146


ARCHIVELOG. CONTROL DE PROCESOS ARCn.

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

ARCHIVADO DE BASE DE DATOS

147


INFORMACION PROCESO ARCHIVADO. • La información qe se genera y guarda en los ficheros de traza sobre el archivado puede controlarse mediante el parámetro -modificable con ALTER SYSTEMLOG_ARCHIVE_TRACE. Valores válidos para el nivel de traza son: – – – – – – – – –

0: Disable archivelog tracing (valor por defecto) 1: Track archival of redo log file 2: Track archival status of each archivelog destination 4: Track archival operational phase 8: Track archivelog destination activity 16: Track detailed archivelog destination activity 32: Track archivelog destination parameter modifications 64: Track ARCn process state activity 128: Track FAL (fetch archived log) server related activities

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

ARCHIVADO DE BASE DE DATOS

148


INFORMACION PROCESO ARCHIVADO. – 32: Track archivelog destination parameter modifications – 64: Track ARCn process state activity – 128: Track FAL (fetch archived log) server related activities – 256: Track RFS Logical Client – 512: Track LGWR redo shipping network activity – 1024: Track RFS Physical Client – 2048: Track RFS/ARCn Ping Heartbeat – 4096: Track Real Time Apply – 8192: Track Redo Apply (Media Recovery or Physical Standby)

• Pueden combinarse distintos niveles indicando un valor resultado de la suma de dos de ellos (por ejemplo, el valor 3 hace referencia a 1 y a 2). • Al fijar el valor por defecto, cero, Oracle continuará 149

Administración Avanzada de Oracle 10g

© Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

ARCHIVADO DE BASE DE DATOS


INFORMACION PROCESO ARCHIVADO. • Aun cuando se fije el valor por defecto, cero, Oracle continuará generando entradas en el fichero de “alert” y trazas en respuesta a condiciones de error.

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

ARCHIVADO DE BASE DE DATOS

150


FLASH RECOVERY AREA. • Lugar centralizado para ficheros de copia y recuperación (directorio gestionado por Oracle, sistema de ficheros o disco “automatic storage management”) tales como “redo” archivado, RMAN, ... • La bd sería recuperable usando los ficheros almacenados en el área “flash” (ficheros de control, “redo” en línea, “redo” archivado, “flashback”, copias de ficheros de datos, ...). • Se define una cantidad de espacio que puede Oracle usar en la “flash recovery area”. Oracle and RMAN escriben en el área hasta alcanzar el límite; al llegar al mismo, Oracle elimina el mínimo conjunto de ficheros existente que sean obsoletos, copias redundantes o volcados a otro dispositivo.

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

ARCHIVADO DE BASE DE DATOS

151


FLASH RECOVERY AREA. • Se recomienda que el área de “flash recovery” sea la suma del tamaño de la bd, del tamaño de las copias incrementales y el tamaño de todos los archivados no copiados a otro dispositivo de seguridad. Su tamaño mínimo debe ser al menos suficiente para contener los archivados no copiados a un dispositivo de seguridad. • El área de “flash” inicialización:

se

define

con

los

parámetros

de

– DB_RECOVERY_FILE_DEST_SIZE ... Cantidad máxima

total, en bytes, del área (este parámetro debe indicarse antes de DB_RECOVERY_FILE_DEST).

– DB_RECOVERY_FILE_DEST

...

Localización (directorio, sistema de ficheros o disco “automatic storage management -ASM-), NO puede ser sistema de ficheros “raw”.

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

ARCHIVADO DE BASE DE DATOS

152


FLASH RECOVERY AREA Y ARCHIVELOG. • Es recomendable usar el área “Flash Recovery” para almacenar los archivados. Pueden darse varios casos, de más a menos recomendable: – Sólo realizar el archivado en el área de “flash recovery” y usar discos espejo para copiar redundantemente los archivados. – Realizar el archivado en el área de “flash recovery” y fijar otros destinos de archivado (LOG_ARCHIVE_DEST_n) externos al área. – No usar el área “flash recovery” para archivar.

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

ARCHIVADO DE BASE DE DATOS

153


FLASH RECOVERY AREA Y ARCHIVELOG. • Si se configura un área de “flash” y no se indican destinos de archivado (LOG_ARCHIVE_DEST_n), entonces LOG_ARCHIVE_DEST_10 implícitamente apunta al área (a menos que se le asigne la cadena vacía). • Si se asigna alguna localización para LOG_ARCHIVE_DEST_n, los archivados se almacenan sólo en la misma y no en el área de “flash”. Si esta está configurada es necesario indicar explicitamente el área como uno de los destinos LOG_ARCHIVE_DEST_1 = 'LOCATION=<USE_DB_RECOVERY_FILE_DEST>'

• Los nombres de fichero para los archivados en el área de “flash” no vienen determinados por LOG_ARCHIVE_FORMAT y son Oracle Managed Filenames. Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

ARCHIVADO DE BASE DE DATOS

154


CAMBIO A MODO “NOARCHIVELOG”. – Parar la instancia de base de datos: » shutdown – Realizar una copia de seguridad de la bd. – Modificar el fichero de parámetros de inicialización. – Arrancar una instancia y montar la bd: » startup mount – Modificar el modo de archivado: » alter database noarchivelog; » alter database open; – Comprobar el modo (archive log list) y parar la instancia: » shutdown immediate – Realizar una copia de seguridad de la bd.

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

ARCHIVADO DE BASE DE DATOS

155


VISTAS. • V$DATABASE. Consulta del modo de la bd ARCHIVELOG o NOARCHIVELOG. • V$ARCHIVED_LOG. Información histórica sobre archivado a partir del fichero de control. • V$ARCHIVE_DEST. Información sobre destino de archivado. • V$ARCHIVE_PROCESSES. Información sobre el estado de los procesos de archivado. • V$BACKUP_REDOLOG. Información sobre “backups” de los “logs” archivados. • V$LOG. Información sobre grupos de “redo” en línea indica también cual necesita archivarse-. • V$LOG_HISTORY. Información histórica de “log”. Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

ARCHIVADO DE BASE DE DATOS

156


TEMA 9. COPIAS DE SEGURIDAD.

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COPIAS DE SEGURIDAD

157


TEMA 9. COPIAS DE SEGURIDAD. • • • • •

COPIA Y RECUPERACION: METODOS. COPIAS FISICAS/LOGICAS. ESTRATEGIAS DE COPIA. CONSIDERACIONES. FLASH RECOVERY AREA. ARCHIVADO. COPIAS COMPLETAS/PARCIALES.

• ESTRATEGIA MANUAL DE COPIA. – – – – –

OBTENCION DE INFORMACION DE COPIA. COPIA COMPLETA BD. PROCESO. COPIA TBSP FUERA LINEA. PROCESO. COPIA TBSP LECTURA/ESCRITURA EN LINEA. PROCESO. COPIA TBSP LECTURA/ESCRITURA EN LINEA. PROBLEMAS EN LA COPIA. – COPIA TBSP SOLO LECTURA EN LINEA. PROCESO. – COPIA FICHERO CONTROL. – COPIA “REDO” ARCHIVADO. Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COPIAS DE SEGURIDAD

158


TEMA 9. COPIAS DE SEGURIDAD. – COPIA OTROS FICHEROS. – COPIA MODO “SUSPEND”.

• RESTAURACION DE COPIAS. • DBVERIFY. VALIDACION FICHEROS Y SEGMENTOS. • FLASHBACK DATABASE – – – –

PUNTOS RESTAURACION. ACTIVAR FLASHBACK DATABASE. VENTANA FLASHBACK DATABASE. MONITORIZACION FLASHBACK DB

• COPIA LÓGICA. DATA PUMP EXPORT/IMPORT. • “TABLESPACES” TRANSPORTABLES. – LIMITACIONES. – COMPATIBILIDAD. – PROCESO. Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COPIAS DE SEGURIDAD

159


COPIA Y RECUPERACION: METODOS. • Para realizar la copia y recuperación físicas Oracle proporciona dos soluciones: – Recovery Manager, una herramienta propia de Oracle que puede gestionarse a través de un interfaz línea de comandos o gráfica. – Copia y recuperación gestionada por usuario, que emplea una mezcla de órdenes de s.o. y SQL*Plus. • Se recomienda usar Recovery Manager al poderse realizar los mismos tipos de copias y recuperaciones que manualmente, además de proporcionar un interfaz estándar sobre distintos sistemas operativos.

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COPIAS DE SEGURIDAD

160


COPIA Y RECUPERACION: METODOS. • No obstante, los métodos manuales también son útiles y diferentes circunstancias pueden justificar el uso de los mismos: – Migración de bd a una versión actualizada conservando aún los “script” de copia actuales.

pero

– Coexistencia de bbdd tipo Oracle7 junto a otras más recientes, y la necesidad de coherencia en el manejo de todas ellas (RMAN sólo soporta bd versión 8.0 o superior). Algo que debería ser inusual actualmente. – Pérdida de las copias realizadas con RMAN, y necesidad de restaurar copias manuales y recuperar con la orden SQL*Plus RECOVER. Nota: La exposición estará basada en el empleo de métodos manuales de copia y recuperación. Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COPIAS DE SEGURIDAD

161


COPIAS FISICAS/LOGICAS. • Debe permitir, en caso de pérdida de los datos originales, recuperarlos. • Pueden clasificarse en: – Físicas. Copias de los ficheros que integran la bd, ficheros de control y ficheros “archive log” hechas con utilidades del gestor de bd -Recovery Manager, RMAN- o del s.o..

– Lógicas. Exportación a fichero binario mediante las utilidades de exportación (DATA PUMP EXPORT o EXPORT).

La copia física es la base del sistema de copia y recuperación, aunque ambas son complementarias. Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COPIAS DE SEGURIDAD

162


ESTRATEGIAS DE COPIA. CONSIDERACIONES. • Frente a errores de usuario. – Flashback Database. Permite devolver la bd al completo a un estado anterior sin necesidad de restaurar, tomando como referncia un SCN o creando los puntos de restauración, “restore points”, necesarios. Debe estar configurada una “flash recovery area”. – Recuperación de la bd “Point-in-Time”. Se recupera un tbsp. o la bd al completo a un momento concreto. – Importación desde copia lógica. • Frente a fallos de máquina (“media failure”). – El tipo de fallo (fallo físico, sobreescritura, borrado o corrupción de un fichero de bd, ...) determina la técnica de recuperación a usar. Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

RECUPERACION

163


ESTRATEGIAS DE COPIA. CONSIDERACIONES. • Ciertamente, es necesario, además de disponer de un plan de copia y recuperación, anticiparse a posible problemas. • Un aspecto básico es tener múltiples copias de los ficheros de “redo” en línea así como de los ficheros de control y del “redo” archivado y que estas copias residan cada una en un disco físico diferente. – Si un fallo daña una de las copias de “redo” en línea, la bd puede continuar sin interrupción. Si no se dispone de copias y se daña el “redo”, ña bd se detiene y pueden perderse datos. – Si se daña cualquier fichero de control, esté o no multiplexado, la bd se detiene cuando se intenta leer o escribir en dicho fichero.

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COPIAS DE SEGURIDAD

164


ESTRATEGIAS DE COPIA. CONSIDERACIONES. • Es necesario anotar la configuración “hw” y “sw” del servidor. – – – – – – – – – – –

Nombre, fabrica y modelo de la máquina donde reside la bd. Versión del s.o. Número de discos y controladoras Capacidad de disco y espacio libre. Nombre de todos los ficheros de datos. Nombre y versión del sw de gestión de almacenamiento. Nombre de la instancia (SID). Identificador de la bd (DBID). Versión y parche del servidor Oracle. Versión y parche del sw de comunicaciones. Método y frecuencia de las copias así como de la recuperación

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COPIAS DE SEGURIDAD

165


ESTRATEGIAS DE COPIA. CONSIDERACIONES. • Conjunto de Redundancia. Está integrado por los ficheros necesarios para recuperar la bd: Copia del fichero de control y de todos los ficheros de datos (“datafiles”), “redo log” archivado, duplicado de los “redo log” en línea y del fichero de control actual y ficheros de configuración (fichero de parámetros, tnsnames.ora y listener.ora). El conjunto de redundancia debe estar en discos distintos de aquellos que contienen ficheros de datos, “redo” en línea y ficheros de control. También se aconseja mantener distintas copias del conjunto. • Es aconsejable hacer copias espejo del fichero de control. Es necesario que todas las copias del fichero de control estén accesibles o caería la instancia.

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COPIAS DE SEGURIDAD

166


ESTRATEGIAS DE COPIA. CONSIDERACIONES. • Hacer copias espejo de los fiheros de datos si es posible para evitar la realización de “media recovery” debido a un fallo de disco. • Copia en modo ARCHIVELOG. – Disponer de múltiples destinos de archivado (entre ellos puede figurar la “flash recovery area”). – Copiar la bd al completo tras su creación o paso a modo ARCHIVELOG. – Realizar copias de los tbsp con la bd abierta o cerrada. En particular de aquellos de uso intensivo deben hacerse copias frecuentes (para reducir el tiempo de recuperación). – Copiar el fichero de control cada vez que se realice un cambio estructural en la bd (“ALTER DATABASE BACKUP CONTROLFILE”). – Copiar los “redo log” archivados frecuentemente. Es conveniente realizar copias a varios soportes (cinta, disco, ...). Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COPIAS DE SEGURIDAD

167


ESTRATEGIAS DE COPIA. CONSIDERACIONES. • Realizar copias de manera frecuente y regular (más frecuencia a mayor número de operaciones DML). • Realizar copias antes y después de cambios en la estructura de la bd (creado/borrado de tbsp, adición/renombrado de fichero de datos, adición, renombrado o borrado de “redo log” en línea, ...). • Realizar copia después de operaciones con la opción NOLOGGING, creación de tablas e índices, puesto que la bd no genera “redo” para dichos objetos y no podrían recuperarse desde las copias existentes. • Realizar copia completa después de abrir la bd con la opción RESETLOGS. • Guardar las copias antiguas de la bd. Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COPIAS DE SEGURIDAD

168


ESTRATEGIAS DE COPIA. CONSIDERACIONES. • Realizar copias lógicas de la bd, como complemento a las copias físicas, puesto que no son sustitutivos de las mismas. • Evitar la copia de “redo log” en línea pues accidentalmente pueden ser restaurados y corromper la bd. – La mejor forma de protegerlos es tener múltiples miembros en cada grupo, y en diferentes discos. – Si la bd está en modo ARCHIVELOG, el proceso ARC guarda los “redo” que se han llenado. Si la bd está en modo NOARCHIVELOG, el único tipo de copias válido es el realizado con la bd cerrada, consistente y completo; los ficheros en este tipo de copia son todos consistentes y no necesitan recuperación ni, por tanto, los “redo” en línea. – Pueden restaurarse, por error, copias de los “redo log” en línea y corromper la bd. Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COPIAS DE SEGURIDAD

169


FLASH RECOVERY AREA

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COPIAS DE SEGURIDAD

170


FLASH RECOVERY AREA. • Se trata de un lugar en disco donde la bd puede crear y gestionar fciheros relacionados con copia y recuperación. Debe determinarse su localización (directorio o grupo de discos ASM -Automatic Storage Management-) y una cuota de espacio, cantidad de espacio máximo a usar, para la misma (para averiguar la cuota de disco y uso de disco del área flash debe consultarse V$RECOVERY_FILE_DEST). • Este área debe estar separada de aquel lugar donde residan los ficheros de la estructura de la bd (ficheros de datos, de control y “redo” en línea). El área “flash” está relacionada con OMF -Oracle Managed Files- y ASM -Automatic Storage Management-. • Para habilitar el área “flash” debe darse valor a los parámetros de inicialización DB_RECOVERY_FILE_DEST_SIZE (cuota de disco) y DB_RECOVERY_FILE_DEST (localización). Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COPIAS DE SEGURIDAD

171


FLASH RECOVERY AREA. • Las vistas V$RECOVERY_FILE_DEST y V$FLASH_RECOVERY_AREA_USAGE ayudan a determinar si se ha reservado suficiente espacio para el área “flash”. • V$RECOVERY_FILE_DEST permite averiguar la localización, cuota, espacio en uso y espacio recuperable mediante el borrado de ficheros y número de ficheros en el área “flash”. SQL> SELECT * FROM V$RECOVERY_FILE_DEST;

• V$FLASH_RECOVERY_AREA_USAGE permite averiguar el porcentaje de disco usado por los diferentes tipos de ficheros y espacio recuperable mediante el borrado de ficheros obsoletos, redundantes o ya almacenados en otro soporte. SQL> SELECT * FROM V$FLASH_RECOVERY_AREA_USAGE; Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COPIAS DE SEGURIDAD

172


FLASH RECOVERY AREA. ARCHIVADO. • Por defecto, LOG_ARCHIVE_DEST_10 señala al área “flash”. Los nombres generados para el “log” archivado no siguen la pauta fijada por LOG_ARCHIVE_FORMAT. • También puede indicarse que cualquier otro destino de archivado señala dicha área: LOG_ARCHIVE_DEST_1 = 'LOCATION=/...' LOG_ARCHIVE_DEST_2 = 'LOCATION=USE_DB_RECOVERY_FILE_DEST'

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COPIAS DE SEGURIDAD

173


TIPOLOGIA DE COPIAS

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COPIAS DE SEGURIDAD

174


COPIAS COMPLETAS/PARCIALES. • Completas. Incluyen ficheros de control y de datos. Es independiente del modo de operación de la bd.

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COPIAS DE SEGURIDAD

175


COPIAS COMPLETAS/PARCIALES. • Una copia completa puede ser: – Consistente. Puede abrirse con la opción RESETLOGS sin realizar “media recovery”, o sea, sin aplicar “redo” a los ficheros de datos. Todos los ficheros de datos deben: • Tener el mismo “system change number” (SCN) en sus cabeceras, a menos que los tbsp correspondientes esten en sólo lectura u “offline normal”. • No contienen cambios tras el SCN. • Concuerdan con la información de “checkpoint” almacenada en el fichero de control. Nota: Un "system change number" (SCN) es una marca de tiempo, "timestamp", interna para una versión validada de la bd. La bd emplea el valor de reloj SCN para garantizar la consistencia de las transacciones. Por ejemplo, cuando un usuario valida una transacción, Oracle graba un SCN para esta validación en el "redo log" en línea. Oracle también emplea SCNs para coordinar transacciones distribuidas entre distintas bbdd Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COPIAS DE SEGURIDAD

176


COPIAS COMPLETAS/PARCIALES. Sólo pueden efectuarse copias consistentes tras un “shutdown” limpio de la bd, esta no debe abrirse hasta finalizar la misma. Una copia completa y consistente es la única opción válida para bd en modo NOARCHIVELOG. – Inconsistente. Copia donde algun fichero contiene cambios hechos después del “checkpoint” de los ficheros. Necesita recuperación antes de ser consistente. Normalmente se hacen con la bd abierta mientras se realiza la copia. Pero también si la copia se hace sobre una bd cerrada justo después de caer una instancia o de cerrar la bd con SHUTDOWN ABORT. Sólo son válidos si la bd está en modo archivelog.

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COPIAS DE SEGURIDAD

177


COPIAS COMPLETAS/PARCIALES. • Parciales. – Copias de los ficheros de un “tablespace”. Sólo son válidos si la bd está en modo archivelog (en modo noarchivelog sólo cuando está en modo sólo lectura u “offline normal”). Pueden hacerse con RMAN o mediante el s.o.. – Copia de un fichero de datos. Válido en modo archivelog (en modo noarchivelog cuando está en modo sólo lectura u “offline normal”, o cuando todo fichero de un tbsp. se copia). Pueden hacerse con RMAN o mediante el s.o.. – Copia de fichero de control. Mediante RMAN, o la sentencia “alter database backup controlfile” -a binario-. – Copias de “redo log” archivados. Fundamentales para recuperar una copia inconsistente. Deben copiarse todos los producidos durante una copia inconsistente. Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COPIAS DE SEGURIDAD

178


COPIAS COMPLETAS/PARCIALES. – Durante las copias realizadas en línea pueden producirse inconsistencias en los datos que se intenta copiar (por ejemplo, la lectura de bloques fracturados -con datos antiguos y nuevos al estar modificándose-). – Para evitarlo, el tbsp. debe ponerse en modo “backup” con la sentencia “alter tablespace begin backup” (no puede indicarse para un tbsp de sólo lectura ni un tbsp temporal gestionado localmente). Mientras dura la copia no puede ponerse fuera de línea, parar la instancia o comenzar otra copia del tbsp. – Mediante “alter tablespace end backup” se indica que la copia del tbsp. ha acabado. Se recomienda usarla tan pronto como sea posible, pues si sucede un fallo de instancia o “shutdown abort”, Oracle piensa que se necesita “media recovery” en el siguiente arranque (quizá con “redo log” archivado). Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COPIAS DE SEGURIDAD

179


ESTRATEGIA MANUAL DE COPIA

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COPIAS DE SEGURIDAD

180


ESTRATEGIA MANUAL DE COPIA. • Se realizan copias periódicas de los ficheros de datos y “redo” archivado usando órdenes de s.o.. Es necesario relacionar las copias realizadas con los originales (por ejemplo, adoptando nombres derivados del original. Objeto

Actuación

Ficheros de datos

cp <nombre_fichero> <nombre_fichero.fecha>

F.“redo” archivado

cp <nombre_fichero> <nombre_fichero.fecha>

F. control

alter database backup controlfile to <nombre_fichero>

F. parámetros

create pfile= <init.ora.fecha> from spfile;

F. red

cp tnsnames.ora tnsnames.ora.fecha

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COPIAS DE SEGURIDAD

181


OBTENCION DE INFORMACION DE COPIA. • Identificar los ficheros a copiar. – Se consultan las vistas V$DATAFILE -ficheros de datos-, V$TABLESPACES -tbsp-, V$LOGFILE -”redo” en línea- y V$CONTROLFILE -f.control-. Al hacer copia de un fichero de control con “ALTER DATABASE BACKUP CONTROLFILE TO <fichero>;” debe guardarse información sobre los f.datos y f.redo en línea existentes junto con la copia del fichero de control (la estructura de la bd en el momento de hacer la copia puede ser distinta a la existente en el momento de recuperar). • Determinar el estado de copia (vista V$BACKUP). – Muestra si un f.datos en línea forma parte de una copia actual – el valor ACTIVE de la columna “status” indica en copia- (útil con bd abierta y con f.control no recuperado ni nuevo -en este caso, contendría información desactualizada-). Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COPIAS DE SEGURIDAD

182


OBTENCION DE INFORMACION DE COPIA. • La vista V$BACKUP es útil con la bd abierta y también tras un fallo de instancia pues muestra el estado de copia de los ficheros en el instante del fallo y permite determinar si algún tbsp. ha quedado en modo copia. SQL> SELECT t.name AS "TBSP", d.file# as "DF#", d.name AS "DF_NAME", b.status FROM V$DATAFILE d, V$TABLESPACE t, V$BACKUP b WHERE d.TS#=t.TS# AND b.FILE#=d.FILE# AND b.STATUS='ACTIVE';

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COPIAS DE SEGURIDAD

183


COPIA COMPLETA BD. • Es posible realizarla tras cerrar la bd, “shutdown”, con las opciones: Normal, immediate o transactional. • Puede realizarse en modo archivelog o noarchivelog. • Puede restaurarse sin hacer recuperación (en modo “archivelog” puede recuperarse posteriormente para llevar la bd a un momento más actual). • En modo archivelog se recomienda hacer copia del f.control con: ALTER DATABASE BACKUP CONTROLFILE TO <fichero>;

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COPIAS DE SEGURIDAD

184


COPIA COMPLETA BD. PROCESO. • Cerrar la bd. SQL> SHUTDOWN NORMAL / IMMEDIATE / TRANSACTIONAL No debería realizarse copia de la bd si ha sido parada de forma anormal (“shutdown abort” o caída debido a un fallo). • Copiar los ficheros apropiados (datos, control, inicialización, configuración -buscar todos los ficheros .ora comenzando por el $ORACLE_HOME-, ...). • Rearrancar la bd. SQL> STARTUP Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COPIAS DE SEGURIDAD

185


COPIA TBSP FUERA LINEA. • Puede realizarse la copia de todos o parte de los f.datos que integran un tbsp cuando está fuera de línea (para ponerlo fuera de línea debe tenerse el privilegio DBA o MANAGE TABLESPACE). • No puede ponerse fuera de línea el tbsp SYSTEM o un tbsp con segmentos de “rollback” activos. • Si el tbsp fuera de línea contiene índices al intentar acceder a estos se generan errores. El problema se pondrá de manifiesto cuando el método de acceso elegido por el optimizador requiera usar los índices.

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COPIAS DE SEGURIDAD

186


COPIA TBSP FUERA LINEA. PROCESO. ●

Identificar los ficheros de datos correspondientes a los tbsp a copiar (DBA_DATA_FILES). SQL> SELECT TABLESPACE_NAME, FILE_NAME FROM SYS.DBA_DATA_FILES WHERE TABLESPACE_NAME = '...';

Poner el tbsp fuera de línea con prioridad normal (ALTER TABLESPACE <nombre_tbsp> OFFLINE NORMAL;). Realizar copia de los f.datos (cp). Poner el tbsp en línea (ALTER TABLESPACE <nombre_tbsp> ONLINE;). Forzar el archivado de “redo”, de forma que aquel necesario para recuperar la copia del tbsp esté disponible (ALTER SYSTEM ARCHIVE LOG CURRENT;).

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COPIAS DE SEGURIDAD

187


COPIA TBSP LECTURA/ESCRITURA EN LINEA. PROCESO. • Cualquier tbsp a copiar debe ser puesto en modo copia (“backup mode”) mediante la sentencia ALTER TABLESPACE ... BEGIN BACKUP. Tras la copia, debe abandonarse el modo copia con ALTER TABLESPACE ... END BACKUP o ALTER DATABASE END BACKUP. Al recuperar la bd se preguntará por los ficheros de “redo” necesarios para aplicar. • Identificar los f.datos que pertenecen al tbsp. SQL> SELECT TABLESPACE_NAME, FILE_NAME FROM SYS.DBA_DATA_FILES WHERE TABLESPACE_NAME = '...';

• Indicar el comienzo de copia: SQL> ALTER TABLESPACE <NOMBRE_TBSP> BEGIN BACKUP; Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COPIAS DE SEGURIDAD

188


COPIA TBSP LECTURA/ESCRITURA EN LINEA. PROCESO. • Realizar la copia (cp). • Indicar fin de copia: SQL> ALTER TABLESPACE <NOMBRE_TBSP> END BACKUP;

• Forzar el archivado de “redo”, de forma que aquel necesario para recuperar la copia esté disponible: SQL> ALTER SYSTEM ARCHIVE LOG CURRENT;

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COPIAS DE SEGURIDAD

189


COPIA TBSP LECTURA/ESCRITURA EN LINEA. Si el proceso de copia involucra a varios tbsp, pueden copiarse de forma paralela o en serie (en ambos casos se fuerza el archivado al final del proceso, cuando sobre todos los tbsp se haya hecho el “end backup”). Es necesario tener en cuenta que hacerlo de forma paralela puede hacer que se generan grandes cantidades de “redo” si hay gran actividad en los tbsp. involucrados y debería existir “redo” suficiente. ●

Paralela. Se ponen simultáneamente todos los tbsp en modo “begin backup” -implica un gran crecimiento de “redo” en línea al actualizarlos-. Se realiza la copia y se hace “end backup”.

Serie (Opción recomendada). Repetir el proceso “begin backup”-copia-”end backup” para cada tbsp. minimiza el tiempo “begin”-“end” para un tbsp.

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COPIAS DE SEGURIDAD

190


COPIA TBSP LECTURA/ESCRITURA EN LINEA. En la opción paralela en lugar de realizar un “ALTER TABLESPACE ... BEGIN BACKUP;” para cada tbsp, si se están copiando todos ellos puede indicarse: SQL> ALTER DATABASE BEGIN BACKUP;

Y en lugar de usar “ALTER TABLESPACE ... END BACKUP;” puede utilizarse: SQL> ALTER DATABASE END BACKUP;

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COPIAS DE SEGURIDAD

191


COPIA TBSP LECTURA/ESCRITURA EN LINEA. PROBLEMAS EN LA COPIA. ●

Una copia de tbsp puede fallar y no completarse cuando: – La copia ha terminado pero no se indica su fin (“end backup”). – Se interrumpe la copia debido a un fallo de instancia o la realización de un “shutdown abort”. En caso de un “crash recovery” si un fichero está en modo copia y se intenta abrir, Oracle interpreta que es una copia a recuperar y no se abre la bd hasta la recuperación o hasta abandonar el modo copia (se generan los ORA-01113 y ORA-01110). ORA-01113: file xx needs media recovery ORA-01110: data file xx: '/.../.../....dbf'

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COPIAS DE SEGURIDAD

192


COPIA TBSP LECTURA/ESCRITURA EN LINEA. PROBLEMAS EN LA COPIA. Abandonar el modo de copia (sólo si se está seguro de que los ficheros están en la fecha actual).

– Montar la bd (STARTUP MOUNT). – Consultar en V$BACKUP tbsp en copia (status='ACTIVE'). – Ejecutar “ALTER DATABASE END BACKUP;” (sólo si la bd montada y no se ha restaurado ningun fichero implicado, en de que esté abierta debe emplearse ALTER TABLESPACE ... BACKUP o ALTER DATABASE DATAFILE ... END BACKUP para tbsp o fichero implicado). – Abrir la bd. ●

está caso END cada

Recuperación (caso de no estar seguro de haber restaurado copia). – Montar la bd (STARTUP MOUNT). – Recuperar la bd (RECOVER DATABASE) y comprobar V$BACKUP que no hay tbsp en copia (status='ACTIVE'). – Abrir la bd.

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COPIAS DE SEGURIDAD

en

193


COPIA TBSP SOLO LECTURA EN LINEA. PROCESO. • No es necesario poner el tbsp en modo copia pues la bd no permite cambios en el mismo, simplemente copiar los f.datos correspondientes. Si el conjunto de tbsp es autocontenido puede además realizarse la exportación del tbsp con vistas a realizar posteriormente un transporte de tbsp. – Consultar DBA_TABLESPACES para determinar qué tbsp están en modo sólo lectura (SELECT TABLESPACE_NAME, STATUS FROM DBA_TABLESPACES WHERE STATUS = 'READ ONLY';) – Identificar los ficheros asociados a los tbsp consultando DBA_DATA_FILES. – Copiar los ficheros correspondientes. Al restaurar la copia, debe ponerse fuera de línea el tbsp, copiar los ficheros y ponerlo en línea. La copia es válida incluso si se cambia a lectura/escritura tras la copia -necesitará recuperación-. Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COPIAS DE SEGURIDAD

194


COPIA FICHERO CONTROL. • En una bd en modo archivelog debe copiarse tras realizar un cambio estructural. Se requiere el privilegio ALTER DATABASE. • Puede copiarse a un fichero binario (preferible al contener información sobre historia de “redo” archivado, tbsp. fuera de línea o sólo lectura, ...) o a un fichero de traza. En ambos casos (copia a fichero binario o de traza) las entradas para los ficheros “TEMP” no son incluidas. • Fichero binario. – Realizar el cambio deseado a la bd. – ALTER DATABASE BACKUP CONTROLFILE '/.../copia/fcontrol.bak' REUSE;

TO

La opción REUSE permite sobreescribir un f.control existente Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COPIAS DE SEGURIDAD

195


COPIA FICHERO CONTROL. • Fichero de traza. – Se generan sentencias SQL de creación del fichero de control en un fichero de traza (arrancan la bd, recrean el f.control, y recuperan y abren la bd). – Debe montarse o abrirse la bd y ejecutar la sentencia: ALTER DATABASE BACKUP CONTROLFILE TO TRACE; – Si no se indica RESETLOGS ni NORESETLOGS en la sentencia, el fichero de traza contiene versiones del fichero para ambas opciones. Las entradas de ficheros temporales se incluyen en la salida usando sentencias "ALTER TABLESPACE... ADD TEMPFILE”. Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COPIAS DE SEGURIDAD

196


COPIA “REDO” ARCHIVADO. • Los ficheros de “redo” archivado generados pueden copiarse a cinta u otro dispositivo y, de esta forma, ahorrar espacio donde este localizada la bd. • Para realizar la copia, se averiguan los ficheros de “redo” archivado que la bd ha generado: SQL> SELECT THREAD#,SEQUENCE#,NAME FROM V$ARCHIVED_LOG;

• Se realiza una copia de cada número de secuencia de “log” (en caso de guardar múltiples copias, sólo es necesario una por número de secuencia).

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COPIAS DE SEGURIDAD

197


COPIA OTROS FICHEROS. • Como norma general, cada vez que se modifiquen deben copiarse además el fichero de parámetros de inicialización, los de interconexión y el de contraseñas. • La forma más sencilla de localizarlos es realizar una búsqueda automática desde $ORACLE_HOME de todos los ficheros acabados en “.ora” (orden find de s.o. UNIX).

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COPIAS DE SEGURIDAD

198


COPIA MODO “SUSPEND”. • Existen herramientas que permiten hacer copias “espejo” o duplicados exactos y desvincular la copia del original de forma que puedan usarse independientemente. • Con la funcionalidad SUSPEND/RESUME puede suspenderse la entrada/salida de la bd, desvincular la copia “espejo” y hacer una copia de la misma. En este estado no puede ejecutarse SHUTDOWN IMMEDIATE, NORMAL o TRANSACTIONAL; ejecutar SHUTDOWN ABORT reactiva la bd. En una configuración RAC no debe arrancarse una nueva instancia mientras los nodos originales están en suspenso. • La sentencia ALTER SYSTEM SUSPEND permite “suspender” la bd, todas las operaciones E/S se completan pero cualquier nueva operación se guarda en cola. Se recomienda que se preceda con una sentencia “begin backup” (inicio de copia). • Tras la copia se ejecuta la sentencia ALTER SYSTEM RESUME. Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COPIAS DE SEGURIDAD

199


COPIA MODO “SUSPEND”. •

Poner los tbsp en modo copia: ALTER TABLESPACE <nombre> BEGIN BACKUP; o ALTER DATABASE BEGIN BACKUP;

Suspender la bd: ALTER SYSTEM SUSPEND;

Comprobar el cambio de estado (consultar V$INSTANCE, campo DATABASE_STATUS: SELECT DATABASE_STATUS FROM V$INSTANCE;

Realizar la copia espejo.

Finalizar la suspensión de la bd: ALTER SYSTEM RESUME;

Comprobar que la bd está activa (consultar V$INSTANCE, campo DATABASE_STATUS).

Poner tbsp modo no copia: ALTER TABLESPACE users END BACKUP;

Copiar el f.control y archivar los “redo” en línea.

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COPIAS DE SEGURIDAD

200


METODOS DE VERIFICACION DE COPIA: RESTAURACION DE COPIAS DBVERIFY

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COPIAS DE SEGURIDAD

201


RESTAURACION DE COPIAS. • Periódicamente deben verificarse las copias realizadas para asegurar que son útiles para la recuperación. • La mejor forma de hacerlo es restaurar las copias en otra máquina e intentar abrir la bd, realizando recuperación si es necesario.

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COPIAS DE SEGURIDAD

202


DBVERIFY: DATABASE VERIFICATION UTILITY. • Es una utilidad que hace un chequeo de integridad de la estructura de datos física de una base de datos en línea o fuera de línea. • Puede usarse en ficheros de copia (“backup”) y ficheros en línea (o unidades menores). Generalmente se intenta asegurar así que una copia es válida antes de restaurarla, o como herramienta de diagnóstico cuando se encuentran problemas de corrupción de datos. • Al ejecutarse sobre una bd fuera de línea, los chequeos son mucho más rápidos. Estos se limitan a bloques de datos -no a ficheros de control ni “redo logs”.

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COPIAS DE SEGURIDAD

203


DBVERIFY. VALIDACION FICHEROS. • Se verifican uno o más bloques de disco pertenecientes a un fichero de datos y se realizan chequeos de página. Si el fichero es del tipo Automatic Storage Management (ASM) debe indicarse un USERID. dbv USERID = <usuario> | FILE =<nombre_de_fichero> | { START = <dirección_bloque> | END = <dirección_bloque> } | BLOCKSIZE = integer | LOGFILE = <nombre_de_fichero> | FEEDBACK = integer | HELP = { Y | N } | PARFILE = <nombre_de_fichero> Por ejemplo, dbv FILE=nomina.dbf FEEDBACK=100 Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COPIAS DE SEGURIDAD

204


DBVERIFY. VALIDACION FICHEROS. • Los parámetros tienen el siguiente significado: – USERID ... Nombre de usuario y contraseña. Sólo en el caso de ficheros ASM. – FILE ... Nombre del fichero de bd a verificar. – START ... Dirección inicial del bloque Oracle a verificar (por defecto, el primero del fichero). – END ... Dirección del último bloque a verificar (por defecto el último en el fichero). – BLOCKSIZE ... Necesario si el fichero no tiene un tamaño de bloque de 2 KB. Si es así y no se indica se genera el error DBV00103.

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COPIAS DE SEGURIDAD

205


DBVERIFY. VALIDACION FICHEROS. – LOGFILE ... Fichero donde se guarda información (por defecto el terminal). – FEEDBACK ... Informe de progreso de la verificación enviado al terminal. Un punto (.) por cada n número de página verificadas. Si n = 0, no hay informe. – HELP ... Ayuda en línea. – PARFILE ... Fichero de parámetros.

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COPIAS DE SEGURIDAD

206


DBVERIFY. VALIDACION FICHEROS. /home/oracle> dbv file=/u02/.../.../users01.dbf feedback=100 ... DBVERIFY - Verification starting : FILE = users01.dbf ..................... DBVERIFY - Verification complete Total Pages Examined : 2048 Total Pages Processed (Data) : 0 Total Pages Failing (Data) : 0 Total Pages Processed (Index): 0 Total Pages Failing (Index): 0 Total Pages Failing (Seg) : 0 Total Pages Empty : 2016 Total Pages Marked Corrupt : 0 Total Pages Influx :0

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COPIAS DE SEGURIDAD

207


DBVERIFY. VALIDACION FICHEROS. Pages = bloques Total Pages Examined = número de bloques en el fichero Total Pages Processed = número de bloques que se verificaron (formatted blocks) Total Pages Failing (Data) = número de bloques que fallaron la rutina de chequeo de bloque de datos. Total Pages Failing (Index) = idem para bloque de índices. Total Pages Marked Corrupt = número de bloques para los que la cabecera de caché no es válida, haciendo que fuera imposible determinar el tipo de bloque para DBVERIFY. Total Pages Influx = número de bloques que estan siendo leidos y escritos en el mismo tiempo. Si la bd está abierta, se leen los bloques múltiples veces para generar una imagen consistente. Por esta misma razón, pueden haber bloques leidos y escritos a la vez (INFLUX) para los que no se puede obtener una imagen consistente. Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COPIAS DE SEGURIDAD

208


DBVERIFY. VALIDACION SEGMENTOS. • Permite indicar un segmento de tabla o índice a verificar. • Requiere la conexión a la bd con privilegios de SYSDBA, e indicar el segmento concreto a validar. • Durante la comprobación, el segmento es bloqueado. Si se trata de un segmento de índice, la tabla padre es bloqueada asimismo (algunos índices como los index-organized table -IOT-, donde se mantiene las filas de la tabla en un índice construido en la clave primaria, no tienen tabla padre).

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COPIAS DE SEGURIDAD

209


DBVERIFY. VALIDACION SEGMENTOS. dbv USERID = usuario/contraseña | SEGMENT_ID = tsn.segfile.segblock | LOGFILE = <nombre_fichero> | FEEDBACK = integer | HELP = { Y | N } | PARFILE = <nombre_fichero> • Los parámetros tienen el siguiente significado: – SEGMENT_ID ... Segmento a verificar. Compuesto por número de tbsp (tsn), “segment header file number” (segfile) y “segment header block number” (segblock). El número de tbsp puede obtenerse de v$tablespace, campo ts#, y segfile y segblock de dba_segments. También puede consultarse SYS_USER_SEGS (necesario el privilegio SYSDBA). – LOGFILE ... Fichero donde se guarda información (por defecto el terminal). Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COPIAS DE SEGURIDAD

210


DBVERIFY. VALIDACION SEGMENTOS. – FEEDBACK ... Informe de progreso de la verificación enviado al terminal. Un punto (.) por cada n número de página verificadas. Si n = 0, no hay informe. – HELP ... Ayuda en línea. – PARFILE ... Fichero de parámetros.

SQL> select a.name tablespace, a.ts# numero_tbsp, b.SEGMENT_NAME segmento, b.HEADER_FILE cabecera, b.HEADER_BLOCK bloque from v$tablespace a, dba_segments b where a.name=b.TABLESPACE_NAME and b.tablespace_name='USERS' and b.owner='SCOTT' order by b.SEGMENT_NAME; ... USERS DEPT ...

0 1

57341

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COPIAS DE SEGURIDAD

211


DBVERIFY. VALIDACION SEGMENTOS. /home/oracle> dbv userid=system/systxxxx segment_id=0.1.57341 ... DBVERIFY - Verification starting : SEGMENT_ID = 0.1.57341 DBVERIFY - Verification complete Total Total Total Total Total Total Total Total Total Total Total

Pages Pages Pages Pages Pages Pages Pages Pages Pages Pages Pages

Examined :2 Processed (Data) : 1 Failing (Data) : 0 Processed (Index): 0 Failing (Index): 0 Processed (Other): 0 Processed (Seg) : 1 Failing (Seg) : 0 Empty :0 Marked Corrupt : 0 Influx :0

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COPIAS DE SEGURIDAD

212


FLASHBACK DATABASE

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COPIAS DE SEGURIDAD

213


FLASHBACK DATABASE. • “Flashback Database” permite “retroceder” la bd al completo y deshacer los efectos de cambios no deseados en la bd. El resultado es muy similar a realizar una recuperación “point-in-time” aunque más rápida pues mo es preciso restaurar ficheros desde un soporte y resquiere aplicar menos cambios desde el “redo” archivado. • Los puntos de restauración garantizada (“restore points”) permiten seleccionar un SCN y asegurar que “flashback database” podrá usarse en dicho SCN -aunque no necesariamente en los SCN entre el punto de chequeo y el momento actual- (incluso operaciones NOLOGGING u operaciones OPEN RESETLOGS). • “Restore points” y “Flashback Database” pueden usarse independientemente o combinados. En cualquier caso, la sentencia RMAN FLASHBACK DATABASE o la SQL*Plus FLASHBACK DATABASE se emplean para devolver la bd al SCN indicado: FLASHBACK DATABASE TO RESTORE POINT “before_upgrade”; FLASHBACK DATABASE TO SCN 202381; Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COPIAS DE SEGURIDAD

214


FLASHBACK DATABASE. • “Flashback Database” emplea su propio mecanismo de log, se crean los “flashback logs” que se almacenan en el área “flash” (proceso “flashback writer -RVWR-). Para habilitar esta característica debe crearse un área “flash” e indicar un “flashback retention target” o margen temporal en el que se podrá recuperar hacia el pasado. • Definido ese punto, la bd copia a intervalos regulares imágenes de cada bloque modificado en cada fichero de datos en los log de “flashback”. Estas copias se reconstruyen los ficheros de datos. • El rango de SCNs o ventana para los que hay suficientes datos “flashback log” como para realizar un “FLASHBACK DATABASE” depende del espacio en el área “flash”. Operaciones como el borrado de un tbsp. no son reversibles con este método (la ventana empezaría a continuación de los mismos). El uso de puntos de restauración garantizada es la única forma de asegurar el regreso a un SCN concreto o ancho de ventana de “flashback”. Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COPIAS DE SEGURIDAD

215


FLASHBACK DATABASE. • Si se habilita “Flashback Database” y uno o más puntos de restauración garantizada, la bd guarda los log de flashback, lo que puede generar cierta sobrecarga en el funcionamiento de la bd y uso de espacio del área “flash”. • Se retienen los log necesarios para permitir retroceder al punto de restauración más antiguo y los log no se borran si se necesitan para garantizar este extremo. Es conveniente monitorizar el espacio en el área “flash”.

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COPIAS DE SEGURIDAD

216


PUNTOS RESTAURACION. • Para crearlos se usa la sentencia SQL*Plus CREATE RESTORE POINT indicando un nombre para el mismo y si se trata de un punto garantizado o normal (por defecto). La bd puede estar abierta o montada, siempre que en este último caso haya sido parada coherentemente. SQL> CREATE RESTORE POINT <nombre>; SQL> CREATE RESTORE POINT <nombre> GUARANTEE FLASHBACK DATABASE;

• Para borrar un punto de restauración se usa la sentencia SQL*Plus DROP RESTORE POINT: SQL> DROP RESTORE POINT <nombre>;

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COPIAS DE SEGURIDAD

217


PUNTOS RESTAURACION. • Los puntos normales pueden ser descartados aunque no se borren. Así sucede que los 2048 puntos más recientes se guardan en el fichero de control independientemente de su edad y cualquier punto más reciente que el valor de CONTROL_FILE_RECORD_KEEP_TIME se retiene independientemente de cuantos puntos haya definidos. Cualquier punto normal que no cumpla ninguna de las dos condiciones mencionadas puede desaparecer del fichero de control. • Los puntos de control garantizados siempre permanecen hasta que se borran explícitamente. Al definir este tipo de puntos, debe monitorizarse el espacio usado en el área “flash” (vistas V$RECOVERY_FILE_DEST y V$FLASH_RECOVERY_AREA_USAGE”).

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COPIAS DE SEGURIDAD

218


PUNTOS RESTAURACION. • La vista V$RESTORE_POINT restauración definidos:

permite

ver

los

puntos

de

SQL> SELECT NAME, SCN, TIME, DATABASE_INCARNATION#, GUARANTEE_FLASHBACK_DATABASE,STORAGE_SIZE FROM V$RESTORE_POINT;

• Para ver aquellos puntos garantizados solamente: SQL> SELECT NAME, SCN, TIME, DATABASE_INCARNATION#, GUARANTEE_FLASHBACK_DATABASE, STORAGE_SIZE FROM V$RESTORE_POINT WHERE GUARANTEE_FLASHBACK_DATABASE='YES';

• Para puntos de restauración normales STORAGE_SIZE es cero. Para los garantizados STORAGE_SIZE indica la cantidad de espacio en el área “flash” usada para retener log necesarios para garantizar el regreso a dicho punto con FLASHBACK DATABASE. Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COPIAS DE SEGURIDAD

219


ACTIVAR FLASHBACK DATABASE. • Debe fijarse un valor para el parámetro de inicialización, dinámico, DB_FLASHBACK_RETENTION_TARGET (ventana de recuperación) y ejecutarse ALTER DATABASE FLASHBACK ON. En grandes bd es conveniente fijar el parámetro LOG_BUFFER a un valor de, al menos, 8Mb. 1.- Montar la bd SQL> SHUTDOWN IMMEDIATE; SQL> STARTUP MOUNT; 2.- Indicar ventana de recuperación (por defecto 1440 minutos -24h-). SQL> ALTER SYSTEM SET DB_FLASHBACK_RETENTION_TARGET=4320; 3.- Activar Flashback Database para la bd al completo. SQL> ALTER DATABASE FLASHBACK ON; Para desactivar “flashback”: SQL> ALTER DATABASE FLASHBACK OFF; Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COPIAS DE SEGURIDAD

220


ACTIVAR FLASHBACK DATABASE. • Puede habilitarse/deshabilitarse específicos

el

“flashback”

para

tbsp.

SQL> ALTER TABLESPACE <nombre_tbsp> FLASHBACK ON/OFF;

• Si se deshabilita Flashback para un tbsp., deben ponerse fuera de línea sus ficheros de datos antes de ejecutar FLASHBACK DATABASE. • DB_FLASHBACK_RETENTION_TARGET determina indirectamente cuanto log se retendrá. V$FLASHBACK_DATABASE_LOG ayuda a estimar cuánto espacio es necesario para log de “flashback”. SQL> SELECT ESTIMATED_FLASHBACK_SIZE FROM V$FLASHBACK_DATABASE_LOG; Nota: Debe añadirse el espacio indicado en ESTIMATED_FLASHBACK_SIZE al área de “flash”. Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COPIAS DE SEGURIDAD

221


VENTANA FLASHBACK DATABASE. • El SCN más antiguo puede determinarse de la forma siguiente: SQL> SELECT OLDEST_FLASHBACK_SCN, OLDEST_FLASHBACK_TIME FROM V$FLASHBACK_DATABASE_LOG;

• El SCN más reciente puede obtenerse: SQL> SELECT CURRENT_SCN FROM V$DATABASE;

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COPIAS DE SEGURIDAD

222


MONITORIZACION FLASHBACK DB. • Existen varias formas de monitorización: – Realización de estadísticas usando Oracle Statspack. – Consultar la vista V$FLASHBACK_DATABASE_STAT (columnas FLASHBACK_DATA, REDO_DATA y DB_DATA). – Consultar la vista V$SYSSTAT (columnas “physical write I/O request”, “physical read I/O request”, “redo writes” y “flashback log writes”).

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COPIAS DE SEGURIDAD

223


COPIA LOGICA

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COPIAS DE SEGURIDAD

224


COPIA LÓGICA. DATA PUMP EXPORT/IMPORT. • Son utilidades integradas en la bd que permiten cargas y descargas de información a gran velocidad. Todo el proceso de exportación/importación se lleva a cabo en el servidor. • No son compatibles con el export/import originales. • Consta de los siguientes componentes: – Clientes expdp e impdp. Usan los procedimientos proporcionados por el paquete DBMS_DATAPUMP. – Paquete DBMS_DATAPUMP. Conocido como Data Pump API, permite crear y monitorizar los trabajos implicados. – Paquete DBMS_METADATA. Conocido como Metadata API, proporciona la definición de los objetos de la bd a Data Pump. Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COPIAS DE SEGURIDAD

225


DATA PUMP. EJECUCIÓN. • En cada exportación o importación se crea un proceso maestro que controla la misma, incluyendo la comunicación con los clientes, la creación y control del conjunto de procesos de trabajo necesarios y la realización de las operaciones de conexión. • En la transferencia de datos y metadatos, se emplea un tabla maestro, que se crea en el esquema del usuario que realiza la exportación/importación y tiene el nombre del trabajo -job- que realiza la operación, para realizar el seguimiento del proceso: – Durante la exportación la tabla registra la localización de los objetos en el conjunto de ficheros de descarga (“dump file set”). Al finalizar, el contenido de la tabla se escribe a fichero. – Durante la importación la tabla maestro se carga desde el conjunto de ficheros de descarga y se emplea para controlar la secuencia de localización de los ficheros a importar. Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COPIAS DE SEGURIDAD

226


DATA PUMP. EJECUCIÓN. • Esta tabla maestro también se emplea para reiniciar un trabajo. • El destino final de la tabla maestro es diverso: – Si el trabajo finaliza correctamente, la tabla se borra. – Si el trabajo se para, usando la sentencia STOP_JOB, se retiene para poder reiniciarlo. – Si el trabajo se elimina, usando la sentencia KILL_JOB, la tabla se elimina y el trabajo no puede reiniciar. – Si un trabajo termina inesperadamente, se mantiene la tabla. Puede borrarse si no hay intención de reiniciar el trabajo.

• El progreso de un trabajo y los errores producidos pueden registrarse en un fichero de “log”. El estado del mismo, en tiempo real, puede obtenerse usando la sentencia STATUS en modo interactivo de Data Pump. Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COPIAS DE SEGURIDAD

227


DATA PUMP. INFORMACIÓN. • Puede obtenerse información en las siguientes vistas: – DBA_DATAPUMP_JOBS y USER_DATAPUMP_JOBS. Identifican trabajos Data Pump activos. – DBA_DATAPUMP_SESSIONS. Identifica sesiones de usuario asociadas a un trabajo. – V$SESSION_LONGOPS. Información sobre el progreso del trabajo.

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COPIAS DE SEGURIDAD

228


DATA PUMP. FICHEROS. • Existen tres tipos de ficheros gestionados por Data Pump: – Ficheros de volcado (“dump”). Contienen datos y metadatos. Durante una exportación pueden indicarse al definir el trabajo así como posteriormente (por ejemplo, pueden añadirse ficheros de volcado con ADD_FILE). Durante un importación, todos los ficheros de volcado deben especificarse al definir el trabajo. – Ficheros “log”. Contienen mensajes sobre la operación realizada. – Ficheros SQL. Registran la salida de una operación SQLFILE (parámetro SQLFILE) consistente en el volcado de todas las sentencias DDL que se hubieran ejecutado durante una importación a un fichero. Nota: Los ficheros de “log” y SQL pueden sobreescribirse si ya existen. Nunca se sobreescriben ficheros de volcado si ya existen, se genera un error. Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COPIAS DE SEGURIDAD

229


DATA PUMP. LOCALIZACION DE FICHEROS. • Es necesario crear objetos tipo directorio (asocia un nombre a un directorio o sistema de ficheros) por un usuario administrador o con el privilegio CREATE ANY DIRECTORY. Al exportar/importar se indica mediante el parámetro DIRECTORY. SQL> CREATE DIRECTORY DPUMP_VOLCADO AS '/datapump/ficheros';

Por defecto se asigna el valor para DATA_PUMP_DIR: SQL> CREATE DIRECTORY DATA_PUMP_DIR AS '/datapump/ficheros';

• Tras la creación de un directorio, su creador debe conceder el permiso de lectura (READ) o escritura (WRITE) a otros usuarios. SQL> GRANT READ, WRITE ON DIRECTORY <directorio> TO <usuario>; Nota: Implica tener acceso a través de bd pero no el poder acceder a través de s.o. Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COPIAS DE SEGURIDAD

230


DATA PUMP. LOCALIZACION DE FICHEROS. • El orden de precedencia usado para determinar la localización es: 1.- Objeto directorio formando parte de la especificación de un nombre de fichero (DUMPFILE=<localización>:<fichero>.dmp). 2.- Objeto directorio indicado en el parámetro DIRECTORY. 3.- Valor de la variable de entorno DATA_PUMP_DIR (definida en el entorno del cliente): SQL> CREATE DIRECTORY DUMP_FICHERO AS '/DATAPUMP/FICHEROS'; # EXPORT DATA_PUMP_DIR=<VARIABLE_FICHERO_VOLCADO>

4.- Si es un usuario privilegiado se emplea el valor por defecto en bd del directorio DATA_PUMP_DIR (que debe estar previamente creado). No confundir con la variable de entorno. Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COPIAS DE SEGURIDAD

231


DATA PUMP EXPORT. • Se emplea la utilidad expdp, indicando las características de la exportación en la línea de comandos o mediante un fichero de parámetros. Los ficheros resultantes de una exportación sólo pueden importarse con D.P. Import. Cualquier usuario puede exportar objetos de su propiedad o su esquema al completo. Los usuarios no privilegiados deben tener permiso WRITE en el objeto directorio y deben indicar éste en el parámetro DIRECTORY o junto al nombre de fichero de volcado. Modo ayuda en línea: expdp HELP=y Modo interactivo: expdp directory=<localización> Modo fichero de parámetros: expdp PARFILE=<fichero_parametros> Nota: Si no se indica ningún otro parámetro se usan los valores por defecto en la exportación: expdat.dmp y export.log -ficheros-, exportación a nivel de esquema, SYS_EXPORT_SCHEMA_01 -trabajo- y se exportan datos y metadatos. Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COPIAS DE SEGURIDAD

232


DATA PUMP EXPORT. • Existen cinco modos de trabajar con “datapump export”: - “Full export” (parámetro FULL). Se exporta toda la bd. Es necesario el rol EXP_FULL_DATABASE. - “Esquema de usuario” (parámetro SCHEMAS). Si no se posee rol EXP_FULL_DATABASE sólo es posible exportar el esquema propio. - “Tabla” (parámetro TABLES). Para exportar tablas pertenecientes al propio esquema es necesario el EXP_FULL_DATABASE.

no rol

- “Tablespace” (parámetro TABLESPACES). Debe tenerse el rol EXP_FULL_DATABASE. - “Transport Tablespace” (parámetro TRANSPORT_TABLESPACES). Permite exportar metadatos para tablas y objetos dependientes pertenecientes a un conjunto de espacios de almacenamiento. Es necesario el rol EXP_FULL_DATABASE. Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COPIAS DE SEGURIDAD

233


DATA PUMP EXPORT. PARÁMETROS. •

CONTENT =<ALL | DATA_ONLY | METADATA_ONLY> Indica contenido a exportar: datos, metadatos o ambos.

DIRECTORY =<DATA_PUMP_DIR> Localización para los ficheros de volcado y registro.

DUMPFILE = <directorio_objeto:>nombre_fichero Fichero de volcado. Por defecto expdat.dmp

ESTIMATE = <BLOCKS | STATISTICS> Método de estimación de espacio en disco necesario para cada tabla.

ESTIMATE_ONLY =<N | Y> Permite estimar el espacio consumido en una exportación sin realizarla.

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COPIAS DE SEGURIDAD

234


DATA PUMP EXPORT. PARÁMETROS. •

EXCLUDE = tipo_objeto <:cláusula> Filtrar metadatos exportados indicando objetos y tipos excluidos. Por defecto ninguno. Es excluyente con el parámetro INCLUDE.

FILESIZE Tamaño máximo para ficheros de exportación (por defecto ilimitado).

FULL = <N | Y> Realizar una exportación de la bd al completo. En una exportacion completa no se incluyen los esquemas SYS, ORDSYS, EXFSYS, MDSYS, DMSYS, CTXSYS, ORDPLUGINS, LBACSYS, XDB, SI_INFORMTN_SCHEMA, DIP, DBSNMP, y WMSYS. Nunca se exportan tampoco los permisos sobre objetos de SYS.

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COPIAS DE SEGURIDAD

235


DATA PUMP EXPORT. PARÁMETROS. •

INCLUDE = tipo_objeto <:cláusula> Filtrar metadatos exportados indicando objetos y tipos incluidos (consultar las vistas DATABASE_EXPORT_OBJECTS, SCHEMA_EXPORT_OBJECTS y TABLE_EXPORT_OBJECTS).

JOB_NAME Especificar un nombre para el trabajo, “job”, de exportación; coincide tambien con la tabla maestro usada para controlar la exportación. Por defecto de las forma sys_export_<modo>_xx

LOGFILE = <directorio_objeto:>nombre_fichero Fichero de registro, por defecto export.log

NOLOGFILE = <Y | N> No crear fichero de registro.

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COPIAS DE SEGURIDAD

236


DATA PUMP EXPORT. PARÁMETROS. •

PARALELL = n Grado de paralelismo en la ejecución (por defecto 1). Su número debe ser igual al número de ficheros de volcado indicados.

QUERY =<nombre_esquema.><nombre_tabla> | <cláusula> Permite seleccionar filas a exportar según condiciones a cumplir. No compatible con CONTENT=METADATA_ONLY, ESTIMATE_ONLY o TRANSPORT_TABLESPACES.

SCHEMAS =<lista de esquemas> Permite indicar que se realizará una exportación de esquemas, es el modo por defecto. Por defecto referencia el esquema de usuario.

STATUS = nn Frecuencia con que muestra el estado del trabajo junto a una descripción de la operación actual (por defecto es cero y no muestra información hasta acabar la exportación de cada objeto).

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COPIAS DE SEGURIDAD

237


DATA PUMP EXPORT. PARÁMETROS. •

TABLES = <nombre_esquema.><nombre_tabla>, ... Indica exportación en modo tabla (del propio esquema, por defecto).

TABLESPACES = <nombre_espacioalmac>, ... Indica tbsp. a exportar en modo “tablespace”.

TRANSPORT_FULL_CHECK =<N | Y> Chequear o no las dependencias entre los objetos residentes los espacios de almacenamiento a “transportar” y aquellos situados fuera del conjunto (sólo en modo “transport tablespace”).

TRANSPORT_TABLESPACES = <nombre_espacioalmac>, ... Realizar una exportación en modo “transport tablespace” y espacios de almacenamiento a los que se aplica. Este modo tiene un grado de paralelismo igual a 1 y requiere disponer del rol EXP_FULL_DATABASE, sus trabajos no se pueden reiniciar.

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COPIAS DE SEGURIDAD

238


DATA PUMP EXPORT. MODO INTERACTIVO. • Tras iniciar un trabajo, puesto que se ejecuta en el servidor, es posible interrumpir la sesión cliente y asociarse al trabajo posteriormente. También es posible modificar ciertos parámetros de forma interactiva. Para pasar a modo interactivo puede interrumpirse la conexión actual con Ctrl+C y asociar posteriormente una sesión cliente (ATTACH): /home/...> expdp attach=<nombre_trabajo> Los parámetros que pueden usarse en modo interactivo son: – ADD_FILE = <directorio:><nombre_fichero>, ... Permite añadir ficheros de volcado. Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COPIAS DE SEGURIDAD

239


DATA PUMP EXPORT. MODO INTERACTIVO. – CONTINUE_CLIENT. Salir de modo interactivo y entrar en modo registro. – EXIT_CLIENT. Salir de sesión ejecutándose en el servidor.

cliente.

El

trabajo

continúa

– HELP. Ayuda en línea. – KILL_JOB. Cancelar trabajo actual y desasociar las sesiones cliente relacionadas. – PARALLEL. Indicar grado paralelismo o número de trabajos. – START_JOB. Reiniciar el trabajo asociado. – STATUS. Mostrar informe del estado del trabajo asociado. – STOP_JOB [INMEDIATE]. Detener el trabajo asociado, puede reiniciarse más tarde. Con “inmediate” los procesos acaban al instante, las tareas incompletas se volverán a realizar al reiniciarlo. Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COPIAS DE SEGURIDAD

240


DATA PUMP IMPORT. • Se emplea la utilidad impdp, indicando las características de la importación en la línea de comandos o mediante un fichero de parámetros. Sólo pueden usarse en la importación ficheros creados con D.P. Export. Los usuarios deben tener permiso READ en el objeto directorio dond resida el fichero de volcado y de escritura donde se cree el fichero de registro (log) y los SQL. Modo ayuda en línea: impdp HELP=y Modo interactivo: impdp directory=<localización> Modo fichero de parámetros: impdp PARFILE=<fichero_parametros> Nota: Si no se indica ningún otro parámetro se usan los valores por defecto en la exportación: expdat.dmp e import.log -ficheros-, importación total del fichero y trabajo SYS_IMPORT_xx_01.

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COPIAS DE SEGURIDAD

241


DATA PUMP IMPORT. • Existen cinco modos de trabajar con “datapump import”: - “Full import” (parámetro FULL). Se importa el fichero de volcado al completo (modo por defecto). Necesario el rol IMP_FULL_DATABASE si se hizo la exportación con EXP_FULL_DATABASE. - “Esquema de usuario” (parámetro SCHEMAS). Sólo se cargan objetos propiedad del usuario actual. Si se posee rol IMP_FULL_DATABASE pueden cargarse esquemas diferentes al propio. - “Tabla” (parámetro TABLES). Para importar tablas no pertenecientes al propio esquema es necesario el rol IMP_FULL_DATABASE. - “Tablespace” (parámetro TABLESPACES). - “Transport Tablespace” (parámetro TRANSPORT_TABLESPACES). Permite importar metadatos para un conjunto de espacios de almacenamiento. Es necesario el rol IMP_FULL_DATABASE. Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COPIAS DE SEGURIDAD

242


DATA PUMP IMPORT. PARÁMETROS. •

CONTENT =<ALL | DATA_ONLY | METADATA_ONLY> Indica contenido a importar: datos -filas, no se crean objetos-, metadatos -definiciones- o ambos.

DIRECTORY =<DATA_PUMP_DIR> Por defecto DATA_PUMP_DIR para usuarios privilegiados, ninguno para el resto. Localización para los ficheros de volcado y registro.

DUMPFILE = <directorio_objeto:>nombre_fichero Fichero de volcado. Por defecto expdat.dmp

ESTIMATE = <BLOCKS | STATISTICS> Método de estimación de espacio en disco necesario para cada tabla (sólo válido si se indica también NETWORK_LINK).

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COPIAS DE SEGURIDAD

243


DATA PUMP IMPORT. PARÁMETROS. •

EXCLUDE = tipo_objeto <:cláusula> Filtrar metadatos importados indicando objetos y tipos excluidos. Por defecto ninguno. Es excluyente con el parámetro INCLUDE. No puede usarse junto con CONTENT=DATA_ONLY.

FULL = <N | Y> Realizar una exportación de la bd al completo, todo el fichero fuente se importa. Si la operación de exportación que dio lugar al fichero se hizo usando el rol EXP_FULL_DATABASE, es necesario el rol IMP_FULL_DATABASE.

INCLUDE = tipo_objeto <:cláusula> Filtrar metadatos importados indicando objetos y tipos incluidos (consultar las vistas DATABASE_EXPORT_OBJECTS, SCHEMA_EXPORT_OBJECTS y TABLE_EXPORT_OBJECTS). No puede usarse junto con CONTENT=DATA_ONLY.

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COPIAS DE SEGURIDAD

244


DATA PUMP IMPORT. PARÁMETROS. •

JOB_NAME Especificar un nombre para el trabajo, “job”, de importación; coincide tambien con la tabla maestro usada para controlar la importación. Por defecto de las forma sys_import_<modo>_xx

LOGFILE = <directorio_objeto:>nombre_fichero Fichero de registro, por defecto import.log.

NOLOGFILE = <Y | N> No crear fichero de registro.

PARALELL = n Grado de paralelismo en la ejecución (por defecto 1).

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COPIAS DE SEGURIDAD

245


DATA PUMP IMPORT. PARÁMETROS. •

QUERY =<nombre_esquema.><nombre_tabla:> <cláusula> Permite seleccionar filas a importar según condiciones a cumplir. No compatible con CONTENT=METADATA_ONLY, SQLFILE o TRANSPORT_TABLESPACES.

REMAP_DATAFILE=fichero_fuente : fichero_destino Cambia el nombre de fichero_fuente por el de fichero_destino en las sentencias SQL donde se referencie la fuente (CREATE TABLESPACE, CREATE LIBRARY y CREATE DIRECTORY). Debe tenerse el rol IMP_FULL_DATABASE.

REMAP_SCHEMA=esquema_fuente : esquema_destino Carga objetos del esquema fuente al esquema destino. Debe tenerse el rol IMP_FULL_DATABASE. Si el esquema destino no existe, se crea si el fichero de volcado contiene la información necesaria (CREATE USER) y se importa con suficientes privilegios (en caso contrario debe crearse previamente).

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COPIAS DE SEGURIDAD

246


DATA PUMP IMPORT. PARÁMETROS. •

REMAP_TABLESPACE=tbsp_fuente : tbsp_destino Carga todos los objetos, incluso el usuario, del esquema fuente en el esquema destino.

REUSE_DATAFILES=<Y | N> Indica si la operación de importación debe reutilizar los ficheros de datos existentes o no en la creación de espacios de almacenamiento.

SKIP_UNUSABLE_INDEXES=<Y | N> Permite indicar que no se carguen tablas que tengan índices en estado no disponible.

SQLFILE=<directorio_objeto:>nombre_fichero Define un fichero en el que descargar todas las sentencias SQL tipo DDL que se hubieran ejecutado al importar (no son ejecutadas). Si se generan contraseñas en el fichero, aparecen comentadas.

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COPIAS DE SEGURIDAD

247


DATA PUMP IMPORT. PARÁMETROS. •

SCHEMAS =<lista de esquemas> Permite indicar que se realizará una importación de esquemas. Por defecto referencia el esquema de usuario, para otros es necesario el rol IMP_FULL_DATABASE.

STATUS = nn Frecuencia con que muestra el estado del trabajo junto a una descripción de la operación actual y el porcentaje que falta para acabar el trabajo (por defecto es cero).

TABLE_EXISTS_ACTION = <SKIP | APPEND |TRUNCATE |REPLACE> Indica qué hacer si la tabla a importar ya existe. Si se indica CONTENT=DATA_ONLY la opción por defecto es APPEND): • • • •

SKIP. Deja la tabla tal como está e importa siguiente objeto. APPEND. Carga filas, el contenido anterior no se modifica. TRUNCATE. Borra las filas existentes antes de cargar. REPLACE. Borra la tabla y la carga al completo.

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COPIAS DE SEGURIDAD

248


DATA PUMP IMPORT. PARÁMETROS. •

TABLES = <nombre_esquema.><nombre_tabla><:partición>, ... Indica exportación en modo tabla (por defecto del propio esquema; para tablas de otro esquema debe tenerse el rol IMP_FULL_DATABASE).

TABLESPACES = <nombre_espacioalmac>, ... Indica tbsp. a exportar en modo “tablespace”.

TRANSFORM=<SEGMENT_ATTRIBUTES|STORAGE>:<N|Y><:TABLE|:INDEX> Permite modificar parámetros en la sentencia de creación DDL a importar: – SEGMENT_ATTRIBUTES. Atributos físicos, “storage”, “tablespaces”, “logging”. – STORAGE. Cláusula “storage”.

Por defecto se aplica a todos los tipos de objetos. Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COPIAS DE SEGURIDAD

249


DATA PUMP IMPORT. PARÁMETROS. •

TRANSPORT_DATAFILES Conjunto de ficheros a importar en el destino en modo “transport tablespace”.

TRANSPORT_TABLESPACES = <nombre_espacioalmac>, ... Realizar una importación en modo “transport tablespace” y espacios de almacenamiento a los que se aplica.

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COPIAS DE SEGURIDAD

250


DATA PUMP IMPORT. MODO INTERACTIVO. • Al igual que con “data pump export”, tras iniciar un trabajo, ya que es ejecutado en el servidor, es posible interrumpir la sesión cliente y asociarse al trabajo posteriormente. También es posible modificar ciertos parámetros de forma interactiva. Para pasar a modo interactivo puede interrumpirse la conexión actual con Ctrl+C y asociar posteriormente una sesión cliente (ATTACH): /home/...> impdp attach=<nombre_trabajo> Los parámetros que pueden usarse en modo interactivo son: – CONTINUE_CLIENT. Salir de modo interactivo y entrar en modo registro. – EXIT_CLIENT. Salir de sesión ejecutándose en el servidor. Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

cliente.

El

trabajo

COPIAS DE SEGURIDAD

continúa 251


DATA PUMP IMPORT. MODO INTERACTIVO. – HELP. Ayuda en línea. – KILL_JOB. Cancelar trabajo actual y desasociar las sesiones cliente relacionadas. – PARALLEL. Indicar grado paralelismo o número de trabajos. – START_JOB. Reiniciar el trabajo asociado. – STATUS. Mostrar informe del estado del trabajo asociado. – STOP_JOB [INMEDIATE]. Detener el trabajo asociado, puede reiniciarse más tarde. Con “inmediate” los procesos acaban al instante, las tareas incompletas se volverán a realizar al reiniciarlo.

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COPIAS DE SEGURIDAD

252


DATA PUMP Y PARAMETROS. • Ciertos parámetros de inicialización pueden afectar al rendimiento de “data pump”. Puede probarse a usar las siguientes asignaciones: – DISK_ASYNCH_IO = TRUE – DB_BLOCK_CHECKING = FALSE – DB_BLOCK_CHECKSUM = FALSE

• Además los parámetros siguientes deben tener valores lo suficientemente altos como para permitir el máximo grado de paralelismo: – PROCESSES – SESSIONS – PARALLEL_MAX_SERVERS –

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COPIAS DE SEGURIDAD

253


TBSP TRANSPORTABLES

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COPIAS DE SEGURIDAD

254


“TABLESPACES” TRANSPORTABLES. • Permite trasladar un conjunto de espacios de almacenamiento desde una bd a otra (sólo entre bd con el mismo juego de caracteres -character set- y sobre plataformas compatibles). • Los tbsp transportados pueden ser gestionados localmente o no. No necesitan ser del mismo tamaño de bloque que el tamaño de bloque estándar de la bd destino. Es util, por ejemplo, para: – Realizar una recuperación a un punto en el tiempo “Tablespace Point-in-Time Recovery” (TSPITR). – Archivo de datos históricos. – Copia de tbsp. de sólo lectura en múltiples bd. – Migración de bd entre distintas plataformas (SQL> SELECT * FROM V$TRANSPORTABLE_PLATFORM;). Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COPIAS DE SEGURIDAD

255


“TBSP” TRANSPORTABLES. LIMITACIONES. • Ambas bbdd deben usar el mismo juego de caracteres -character set- y el mismo juego de caracteres nacional -national character set-. • No puede transportarse un tbsp a una bd destino en el cual exista un tbsp con el mismo nombre (alguno de los dos debe renombrarse). • Los tbsp transportables no soportan: – Vistas materializadas – Tablas particionadas – Migración del tbsp SYSTEM u objetos de SYS – ...

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COPIAS DE SEGURIDAD

256


“TBSP” TRANSPORTABLES. COMPATIBILIDAD. • Al definir un conjunto transportable, Oracle calcula el más bajo nivel de compatibilidad al cual la bd destino debe trabajar. A partir de Oracle 10g, un tbsp. puede transportarse a una bd con el mismo o superior nivel de compatibilidad.

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COPIAS DE SEGURIDAD

257


“TBSP” TRANSPORTABLES. PROCESO 1/6. • Determinar la compatibilidad de las plataformas. • Sólo es necesario si se trabaja con plataformas origen y destino diferentes. Debe ejecutarse la sentencia: SQL> SELECT d.PLATFORM_NAME, ENDIAN_FORMAT FROM V$TRANSPORTABLE_PLATFORM tp, V$DATABASE d WHERE tp.PLATFORM_NAME = d.PLATFORM_NAME;

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COPIAS DE SEGURIDAD

258


“TBSP” TRANSPORTABLES. PROCESO 2/6. • Seleccionar un conjunto de tbsp “autocontenidos”. • No deben haber dependencias entre objetos del conjunto de tbsp transportables y aquellos que no sean del mismo. Se incumple si, por ejemplo, existe: – Un índice dentro del conjunto está definido para una tabla fuera del mismo (sí puede existir un índice fuera del conjunto definido para una tabla del mismo). – Una tabla particionada parcialmente contenida en el conjunto. – Una “constraint” de integridad referencial apuntando a una tabla (al transportar tbsp pueden incluirse restricciones de integridad o no). – Una tabla con una columna LOB que referencia LOBS fuera del conjunto.

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COPIAS DE SEGURIDAD

259


“TBSP” TRANSPORTABLES. DBMS_TTS. • Para determinar si un conjunto de tbsp es autocontenido se emplea el procedimiento TRANSPORT_SET_CHECK del paquete DBMS_TTS (debe poseerse el rol EXECUTE_CATALOG_ROLE). DBMS_TTS.TRANSPORT_SET_CHECK ( ts_list IN CLOB, incl_constraints IN BOOLEAN DEFAULT FALSE, full_check IN BOOLEAN DEFAULT FALSE); ts_list ... Lista de tbsp, separados por coma. incl_constraints ... TRUE para considerar las restricciones de integridad referencial en el análisis (valor por defecto). full_closure ... Por defecto FALSE. Determinar o no si está autocontenido estrictamente (dependencias desde-hacia). Para TSPITR debe ser puesto a TRUE.

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COPIAS DE SEGURIDAD

260


“TBSP” TRANSPORTABLES. DBMS_TTS. • Para una aplicación estricta, el parámetro FULL_CHECK debe tener el valor TRUE (por ejemplo, Tablespace Point-in-Time Recovery -TSPITR-). • Todas las excepciones producidas pueden verse a través de la vista TRANSPORT_SET_VIOLATIONS. Si la vista está vacía, el conjunto de tbsp es autocontenido. SQLPLUS> EXECUTE DBMS_TTS.TRANSPORT_SET_CHECK('NOMINA,PAGOS', TRUE); SQLPLUS> SELECT * FROM TRANSPORT_SET_VIOLATIONS;

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COPIAS DE SEGURIDAD

261


“TBSP” TRANSPORTABLES. PROCESO 3/6. • Generar un conjunto de tbsp. transportables. – Cambiar el estado de los tbsp a sólo lectura. ALTER TABLESPACE <nombre_tbsp> READ ONLY;

– Realizar la exportación de metadatos de los tbsp a migrar (sólo se exportan metadatos) -conexión con privilegio SYSDBA-. Debe poseerse el rol EXP_FULL_DATABASE para realizar la exportación. DUMPFILE = expdat.dmp DIRECTORY = dpump_dir TRANSPORT_TABLESPACES = (NOMINA, PAGOS)

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COPIAS DE SEGURIDAD

262


“TBSP” TRANSPORTABLES. PROCESO 3/6. Si el autocontenido debe ser estricto: DUMPFILE = expdat.dmp DIRECTORY = dpump_dir TRANSPORT_TABLESPACES = (NOMINA, PAGOS) TRANSPORT_FULL_CHECK=Y

• TRANSPORT_FULL_CHECK es un parámetro que verifica que un conjunto de tbsp a recuperar no tiene dependencias (hacia/desde). • Si el conjunto de tbsp no es autocontenido, la exportación falla.

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COPIAS DE SEGURIDAD

263


“TBSP” TRANSPORTABLES. PROCESO 3/6. Si la codificación entre las plataformas es distinta, deben convertirse los ficheros de datos empleando la orden CONVERT de RMAN. $ RMAN TARGET / Recovery Manager: Release 10.1.0.0.0 Copyright (c) 1995, 2003, Oracle Corporation. All rights connected to target database: xxxx (DBID=...) RMAN> CONVERT TABLESPACE sales_1,sales_2 2> TO PLATFORM 'Microsoft Windows NT' 3> FORMAT '/temp/%U'; Starting backup at 08-APR-03 ... Finished backup at 08-APR-03 RMAN> exit Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COPIAS DE SEGURIDAD

264


“TBSP” TRANSPORTABLES. PROCESO 4/6. • Copiar los ficheros de datos correspondientes a los tbsp a transportar al lugar de destino. Hacer igual con el fichero resultado de la exportación. • Puede hacerse de distintas formas como, por ejemplo, cualquier utilidad que permita copiar ficheros -ftp, copia de s.o.-, el paquete DBMS_FILE_TRANSFER, ...

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COPIAS DE SEGURIDAD

265


“TBSP” TRANSPORTABLES. PROCESO 5/6. • Integrar el conjunto de tbsp transportados. – Importar la información relativa a los tbsp. IMPDP system/password DUMPFILE=expdat.dmp DIRECTORY=dpump_dir TRANSPORT_DATAFILES= /salesdb/sales_101.dbf REMAP_SCHEMA=(dcranney:smith) REMAP_SCHEMA=(jfee:williams) •

TRANSPORT_DATAFILES identifica correspondientes a los tbsp a importar

REMAP_SCHEMA cambia los propietarios de los objetos de bd. Si no se indica se crean en el mismo esquema que el origen y dichos esquemas deben existir en el destino o, en caso contario, generan un error.

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

los

ficheros

de

COPIAS DE SEGURIDAD

datos

266


“TBSP” TRANSPORTABLES. PROCESO 6/6. • Comprobar si se han generado errores en el proceso de importación. • Si todo ha ido bien, los tbsp se habrán copiado en modo sólo lectura. Cambiar el espacio al estado de lectura/escritura. ALTER TABLESPACE <nombre_tbsp>READ WRITE;

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COPIAS DE SEGURIDAD

267


“TBSP” TRANSPORTABLES. PROCESO 6/6. • Si se migran tbsp de una tamaño de bloque distinto al tamaño de bloque estánsar de la bd destino, en esta debe añadirse el parámetro de inicialización DB_nK_CACHE_SIZE. • DB_nK_CACHE_SIZE (donde n = 2, 4, 8, 16, 32) es un parámetro dinámico (modificable con ALTER SYSTEM) que permite especificar el tamaño de la caché para nK buffers. • Por ejemplo, si el tbsp a migrar tiene 8K de tamaño de bloque y la bd destino 4K, debe incluirse DB_8K_CACHE_SIZE como parámetro.

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COPIAS DE SEGURIDAD

268


“TBSP” TRANSPORTABLES. RESUMEN. • Proceso. – Cambiar los espacios de almacenamiento al estado de sólo lectura. – Trasladar la información almacenada en el diccionario (exportación de metadatos) a la bd destino. – Copiar los ficheros de datos correspondientes a dichos espacios de almacenamiento en el destino. – Integrar la información en la bd destino (importación). – Cambiar el espacio al estado de lectura/escritura.

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COPIAS DE SEGURIDAD

269


VISTAS. • V$DATAFILE • V$TABLESPACES • V$LOGFILE • V$CONTROLFILE • V$BACKUP • V$INSTANCE • V$ARCHIVED_LOG Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

COPIAS DE SEGURIDAD

270


TEMA 10. RECUPERACION.

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

RECUPERACION

271


TEMA 10. RECUPERACION. • RECUPERACION. • ESTRUCTURAS DE RECUPERACION. • PRINCIPIOS DE RECUPERACION. • TIPOS DE RECUPERACION. – COMPLETA. – INCOMPLETA. – FLASHBACK. • ESTRATEGIAS DE RECUPERACION. • RESTAURACION DE FICHEROS. – FICHEROS DE COPIA. – “REDO” ARCHIVADO. • RESTAURAR Y RECREAR F. CONTROL. Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

RECUPERACION

272


TEMA 10. RECUPERACION. • RECUPERAR F. CONTROL. – PERDIDA DE MIEMBRO MULTIPLEXADO. – PERDIDA DE TODOS MIEMBROS. – PERDIDA DE MIEMBROS Y COPIAS. • RECUPERACION COMPLETA – BD CERRADA. – BD ABIERTA. • RECUPERACION INCOMPLETA. – “CANCEL BASED”. – “TIME BASED”. – “CHANGE BASED”. • RECUPERACION PARALELA. • APERTURA BD TRAS RECUPERACION. Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

273


TEMA 10. RECUPERACION. • TSPITR (“Tbsp. Point in time recovery”). – PRELIMINARES. – CREACION BD AUXILIAR. – TRANSPORTAR TBSP. OPERACIONES BD AUXILIAR. – TRANSPORTAR TBSP. OPERACIONES BD EN USO. • VISTAS.

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

274


RECUPERACION Y ESTRUCTURAS

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

RECUPERACION

275


RECUPERACION. • La posibilidad de un fallo de sistema o de máquina siempre existe. Si ocurre y afecta a la bd, esta debe recuperarse. El objetivo es asegurar que los efectos de las transacciones validadas se reflejen en la bd recuperada y la vuelta a una operación normal de la bd lo antes posible. • Existen distintos tipos de fallos que pueden hacer necesario o no la intervención del administrador de bd y la recuperación: – Error de usuario. Por ejemplo, el borrado de una tabla (puede recuperarse de una copia lógica previa o mediante el uso de “flashback”). Es necesaria la intervención del administrador y la recuperación. – Fallo de una sentencia. Se deshace cualquier cambio automáticamente y se devuelve el control al usuario. Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

RECUPERACION

276


RECUPERACION. – Fallo de proceso. P.ej. desconexión anormal. PMON lo detecta, hace “rollback” de transaccion y libera recursos. – Fallo de instancia. Debido a problemas de máquina, un fallo de s.o. ... Oracle realiza sin intervención del usuario la recuperación de la instancia (“crash recovery”). – Fallo en disco (“media failure”). Es necesaria la intervención del administrador y la recuperación (“media recovery”). Deben restaurarse ficheros desde copia física usando sentencias de s.o. y realizar recuperación con la sentencia SQL*Plus RECOVER (modo ARCHIVELOG). “Media recovery” puede ser completa -todo “redo” generado se aplica- o incompleta -no se aplica todo el “redo” generado y se obtiene una versión anterior de la bd- (en ambos casos la recuperación afecta a la bd en su totalidad, al completo). TSPITR, “tablespace point-in-time recovery”, permite realizar una recuperación incompleta de un tbsp concreto. Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

RECUPERACION

277


ESTRUCTURAS DE RECUPERACION. • Ficheros de datos (“datafiles”) y bloques de datos. La bd se estructura en unidades lógicas llamadas “tablespaces”, las cuales se asocian con uno o más ficheros de datos, “datafiles”. La bd gestiona el espacio en dichos ficheros en unidades llamadas bloques de datos (la mínima unidad de almacenamiento que puede manejar la bd). Los datos nuevos o modificados no se escriben a los “datafiles” de forma inmediata sino que se almacenan en memoria y se escriben a intervalos. Si surge un fallo que hace caer la bd habrán cambios guardados en memoria que no han sido aplicados. La copia física de los “datafiles” es fundamental en cualquier estrategia de copia y recuperación. Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

RECUPERACION

278


ESTRUCTURAS DE RECUPERACION. • Redo Log. Conjunto de ficheros que registran todos los datos modificados en memoria que aun no han sido escritos a los ficheros de datos. Cada bd necesita al menos dos grupos de “redo” en línea con un miembro de “redo”. Este “redo” en línea debe guardarse y da lugar al llamado “redo log” archivado (modo archivelog de la bd). En modo ARCHIVELOG la bd puede recuperarse completamente de fallos de instancia y de disco. También puede hacerse copia mientras está abierta y en uso. En modo NOARCHIVELOG, la bd puede ser recuperada de un fallo de instancia pero no de disco. La bd sólo puede copiarse si está cerrada de forma consistente. Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

RECUPERACION

279


ESTRUCTURAS DE RECUPERACION. • Registros de “undo”. Almacenados en espacios de almacenamiento de “undo” o en “rollback segments” (inusual en este caso). Contienen las imagenes anteriores de aquellos datos que han sido modificados y se emplean para “deshacer” las transacciones no validadas tras la aplicación de todo el “redo log”. ●

Ficheros de control. Guardan información de las estructuras físicas de la bd y su estado: – Información sobre la bd (RESETLOGS SCN y time stamp) usada en la recuperación.

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

RECUPERACION

280


ESTRUCTURAS DE RECUPERACION. – Información sobre “redo log” en línea actual. – Registros de log (log sequence numbers, SCN en cada log) – Información sobre bloques de ficheros de datos corruptos. ●

Copias de bd (“backups”). Realizadas mediante Recovery Manager o con utilidades s.o..

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

RECUPERACION

281


PRINCIPIOS Y TIPOS DE RECUPERACION

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

RECUPERACION

282


PRINCIPIOS DE RECUPERACION. • Se aborda a lo largo del tema la recuperación asumiendo que la bd se encuentra en modo ARCHIVELOG y usando métodos de recuperación manuales. • La recuperación básicamente implica dos acciones: – Restaurar el/los fichero/s dañados desde el dispositivo de copia preciso (cinta, disco, ...) y hacerlo accesible al servidor de bd (permisos, ...). – Recuperación o aplicar los cambios al fichero/s dañado/s empleando el “redo” archivado y en línea hasta que la bd se encuentre en el SCN deseado (generalmente el momento previo al fallo que obligó a la recuperación).

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

RECUPERACION

283


PRINCIPIOS DE RECUPERACION.

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

RECUPERACION

284


TIPOS DE RECUPERACION: COMPLETA. • Completa. Se emplean datos de “redo” combinados con una copia de la bd, tbsp., o fichero de datos para actualizarlo al punto más actual posible. Se aplican todos los cambios anotados en el “redo”. Si se pretende recuperar la bd en su conjunto, debe: – Montarse la bd. – Asegurarse de que todos los ficheros a recuperar están en línea. – Restaurar una copia de la bd o ficheros a recuperar. – Aplicar “redo” (en línea, archivado o ambos).

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

RECUPERACION

285


TIPOS DE RECUPERACION: COMPLETA. Si se pretende recuperar un tbsp o fichero de datos, debe: – Si la bd está abierta, poner el tbsp o fichero fuera de línea. – Restaurar una copia de los ficheros a recuperar. – Aplicar “redo” (en línea, archivado o ambos).

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

RECUPERACION

286


TIPOS DE RECUPERACION: INCOMPLETA. • Incompleta. Se emplea una copia de la bd para generar una versión no actual de la bd. No se aplican todos los cambios posteriores a la última copia. Se puede realizar sobre la bd en su conjunto: DBPITR -”db point-in-time recovery”-. En los siguientes casos: – Un fallo en disco destroza algunos o todos los “redo” en línea. – Se ha producido una pérdida de datos, por ejemplo el borrado de una tabla (¡conveniente tener copia lógica, aunque en este punto también puede usarse “flashback”). – No puede realizarse una recuperación completa pues se han perdido “redo” archivados. – Se han perdido los ficheros de control y debe usarse una copia para abrir la bd. Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

RECUPERACION

287


TIPOS DE RECUPERACION: INCOMPLETA. • Para realizarla deben recuperarse todos los ficheros de datos precisos de copias anteriores a aquel momento al que se pretenda restaurar y abrir la bd con la opción RESETLOGS. Al indicar “alter database open resetlogs;” se reinicia el número de secuencia de “log” actual -número 1- y se desecha cualquier información de “redo” no aplicada durante la recuperación, pone a cero. Es conveniente realizar una copia completa de la bd si se ha producido cualquier pérdida de archivados. • Un caso particular es la recuperación de un tbsp “point in time” (TSPITR). Permite recuperar uno o más tbsp. a un momento en el tiempo distinto del resto de la bd.

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

RECUPERACION

288


INCONVENIENTES RECUPERACION TRADICIONAL • Existen inconvenientes en la recuperación completa o incompleta señaladas anteriormente (en general en el “pointin-time recovery”): – No pueden devolverse objetos concretos a un estado anterior, sólo la bd en su conjunto (en casos concretos puede realizarse un “tablespace point-in-time recovery -TSPITR-”). – La bd no está disponible durante el proceso de “point-in-time recovery”. – “Point-in-time recovery” puede ser pesado dado que todos los ficheros de datos deben restaurarse y después recuperar la bd.

• Las utilidades “flashback” proporcionadas por Oracle son más eficientes que la recuperación tradicional en la mayoría de los casos. Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

RECUPERACION

289


TIPOS DE RECUPERACION: FLASHBACK. • Flashback proporciona un conjunto de características que permiten evitar la restauración de la bd y la realización de recuperación “point-in-time”. • La mayoría de estas características se desarrollan a un nivel lógico, como son: – Oracle Flashback Query. Consultar contenido de bd en un tiempo anterior.

– Oracle Flashback Version Query. Ver estados anteriores de datos.

– Oracle Flashback Transaction Query. Ver transacciones que afectan a un tabla a lo largo del tiempo.

– Oracle Flashback Table. Devolver tablas a un estado previo. – Oracle Flashback Drop. Deshace el efecto de “drop table”. • Fl. Table, Fl. Query, Fl. Trans. Query y Fl. Version Query están relacionadas con “undo”. Fl. Drop se basa en el “recycle bin”. Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

RECUPERACION

290


TIPOS DE RECUPERACION: FLASHBACK. • A nivel físico, Oracle Flashback Database permite en el caso de tener ficheros de datos en los que se desea deshacer cambios volver a su estado anterior. Esta forma de trabajo es mucho más rápida pues no necesita de la restauración de ficheros ni de la aplicación de todo el conjunto del “redo” archivado. Es necesario configurar un área de memoria “flash recovery area” y habilitar el “flashback logging” pues no lo está por defecto. • El proceso implica: – Averiguar SCN al que retornar, o determinar el punto de retorno apropiado. Consultar CURRENT_SCN en V$DATABASE y la vista V$FLASHBACK_DATABASE_LOG: SQL> SELECT CURRENT_SCN FROM V$DATABASE; SQL> SELECT OLDEST_FLASHBACK_SCN, OLDEST_FLASHBACK_TIME FROM V$FLASHBACK_DATABASE_LOG; Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

RECUPERACION

291


TIPOS DE RECUPERACION: FLASHBACK. – Usar, en su caso, el resto de funcionalidades “flashback” para identificar el SCN en que se produjeron los cambios a deshacer. – Ejecutar Fl.Database FLASHBACK DATABASE TO SCN 46963; FLASHBACK DATABASE TO TIMESTAMP (SYSDATE-1/24); FLASHBACK DATABASE TO TIMESTAMP timestamp '2007-19-02 14:00:00'; FLASHBACK DATABASE TO TIMESTAMP to_timestamp ('200719-02 19:30:00', 'YYYY-MM-DD HH24:MI:SS'); – Abrir la bd en modo sólo lectura y comprobar el resultado. Si es necesario realizar “flashback” de nuevo a un SCN distinto, debe usarse RECOVER DATABASE para volver al presente y hacer de nuevo “flashback”. – Si el resultado de “flashback database” es correcto, abrir la bd con la opción RESETLOGS. Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

RECUPERACION

292


ESTRATEGIAS DE RECUPERACION

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

RECUPERACION

293


ESTRATEGIAS DE RECUPERACION. • Frente a errores de usuario. – Flashback Database. Permite devolver la bd al completo a un estado anterior sin necesidad de restaurar, tomando como referncia un SCN o creando los puntos de restauración, “restore points”, necesarios. Debe estar configurada una “flash recovery area”. – Recuperación de la bd “Point-in-Time”. Se recupera un tbsp. o la bd al completo a un momento concreto. – Importación desde copia lógica. • Frente a fallos de máquina (“media failure”). – El tipo de fallo (fallo físico, sobreescritura, borrado o corrupción de un fichero de bd, ...) determina la técnica de recuperación a usar. Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

RECUPERACION

294


ESTRATEGIAS DE RECUPERACION. • Si la bd está en modo NOARCHIVELOG y hay un fallo en disco, “media failure”, se debe restaurar la copia completa y consistente más reciente y abrir la bd (si se quisiera la bd actualizada hasta el momento del fallo, habría que introducir todos los cambios manualmente ¡imposible!). • Si la bd está en modo ARCHIVELOG y los “redo” están disponibles, puede emplearse una recuperación completa o incompleta para reconstruir la bd.

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

RECUPERACION

295


ESTRATEGIAS DE RECUPERACION. • Probar los mecanismos de copia y recuperación en un entorno apropiado. • Planificar la respuesta a los distintos tipos de incidentes. Se atenderá al siguiente procedimiento general: – Determinar la información que se necesita recuperar y restaurar. – Restaurar copia de los ficheros y cualquier fichero de “redo” archivado que sea necesario (a nivel de s.o.). – Recuperar los ficheros. – Abrir la bd. Si se hace una recuperación incompleta o se ha restaurado una copia del fichero de control, debe abrirse con la opción RESETLOGS.

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

RECUPERACION

296


RESTAURACION Y RECUPERACION

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

RECUPERACION

297


RESTAURACION DE FICHEROS. • Restaurar un fichero es reemplazarlo por una copia previa del mismo. Se trata de una operación previa a la recuperación de cualquier fichero dañado. Es necesario, por tanto, guardar la localización de los ficheros de datos, control, “redo” en línea, “redo” archivado, inicialización, comunicaciones y contraseñas. • Localización datos, control y “redo” en línea. SELECT NAME FROM V$DATAFILE UNION ALL SELECT MEMBER FROM V$LOGFILE UNION ALL SELECT NAME FROM V$CONTROLFILE;

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

RECUPERACION

298


RESTAURAR FICHEROS DE COPIA. • Localización “redo” archivado. SELECT NAME, VALUE FROM V$PARAMETER WHERE NAME LIKE log_archive_dest% AND VALUE IS NOT NULL ; • Formato de “redo” archivado. SHOW PARAMETER LOG_ARCHIVE_FORMAT • Listado de “redo” archivado. SELECT NAME FROM V$ARCHIVED_LOG;

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

RECUPERACION

299


FICHEROS A RESTAURAR. • La vista V$RECOVER_FILE muestra el estado de los ficheros que necesitan recuperación, el motivo, el SCN donde debe comenzar, ... SELECT * FROM V$RECOVER_FILE; Nota:La vista no es util si el fichero de control en uso es una copia restaurada o uno nuevo creado tras el fallo en disco (“media failure”), pues, en este caso, no contiene la información necesaria para actualizar v$recover_file.

• De V$DATAFILE y V$TABLESPACE pueden obtenerse nombres de fichero y de “tablespaces” de aquellos ficheros que necesitan recuperación. SELECT r.FILE#, d.NAME, t.NAME, d.STATUS, r.ERROR, r.CHANGE#, r.TIME FROM V$RECOVER_FILE r, V$DATAFILE d, V$TABLESPACE t WHERE t.TS# = d.TS# AND d.FILE# = r.FILE# Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

RECUPERACION

300


RESTAURAR “REDO” ARCHIVADO. • El “redo” archivado debe ser accesible durante la recuperación en el lugar definido como primer destino de archivado (log_archive_dest_1). • Si es necesario indicar una localización alternativa puede hacerse e indicarlo mediante el parámetro LOGSOURCE -orden SET de SqlPlus o el parámetro RECOVER ... FROM de la sentencia ALTER DATABASE –de forma previa a la recuperación-. También especificando el nuevo destino: RECOVER AUTOMATIC TABLESPACE <tbsp> FROM “\...\...”; • Para averiguar que ficheros de “redo” son necesarios, se consultan las vistas: – V$ARCHIVED_LOG ... Nombres de todos los ficheros de “redo” archivado. Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

RECUPERACION

301


RESTAURAR “REDO” ARCHIVADO. – V$RECOVERY_LOG ... “redo” archivado necesario para la recuperación (sólo contiene información en caso de necesitarse recuperación para un fichero de datos, no si se trata de una recuperación planificada por un fallo de usuario).

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

RECUPERACION

302


RESTAURAR FICHEROS DE COPIA. • Determinar los ficheros de datos a recuperar. • Si la bd está abierta, poner los “tablespaces” a recuperar fuera de línea: ALTER TABLESPACE users OFFLINE IMMEDIATE; • Restaurar copias de los ficheros dañados a su misma localización: cp /copia/tbs_24.bak /u02/.../tbs_24.f • Recuperar (RECOVER) y poner el tbsp. recuperado en línea: RECOVER TABLESPACE <tbsp>; ALTER TABLESPACE <tbsp> ONLINE; Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

RECUPERACION

303


RESTAURAR Y RECREAR F. CONTROL. • Si un fallo de disco, “media failure”, afecta a los ficheros de control (multiplexados o no), la bd sigue trabajando hasta la primera vez que un proceso “background” necesita acceder a los mismos; en este instante la bd se cierra automaticamente. • Si el fallo es temporal y la bd todavía no se ha cerrado, puede intentarse corregir el fallo. Si la bd cierra, puede arrancarse tras corregir el problema y restaurar el acceso a los ficheros de control.

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

RECUPERACION

304


RECUPERAR F. CONTROL. PERDIDA DE MIEMBRO MULTIPLEXADO. • En el caso de que un fallo haya dañado uno o más ficheros de control y, al menos, exista un f.control no dañado. • Suponiendo que el disco y el sistema de ficheros donde reside el fichero dañado funcionan correctamente: – Parar la bd: SHUTDOWN ABORT – Corregir el problema hw. – Copiar un fichero de control intacto sobre el/los ficheros/s de control dañado/s cp /u02/.../control01.ctl /u03/.../control02.ctl – Arrancar la bd: STARTUP

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

RECUPERACION

305


RECUPERAR F. CONTROL. PERDIDA DE MIEMBRO MULTIPLEXADO. • Si el disco y el sistema de ficheros donde reside el fichero dañado NO funcionan correctamente: – Parar la bd: SHUTDOWN ABORT – Copiar el fichero de control intacto a una localización alternativa: cp /u02/.../control01.ctl /u05/.../control02.ctl – Editar el fichero de parámetros de inicialización y modificar la variable CONTROL_FILES de forma que contenga SOLO las localizaciones actuales de los ficheros de control válidos (se excluyen el resto). CONTROL_FILES = '/u05/.../control02.ctl'

'/u02/.../control01.ctl',

– Arrancar la bd: STARTUP Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

RECUPERACION

306


RECUPERAR F. CONTROL. PERDIDA DE TODOS MIEMBROS. • No puede montarse ni abrirse la bd hasta tener un fichero de control accesible. Si se intenta montar la bd, se produce el error “ORA-00205: error in identifying controlfile, check alert log for more info”. • Al restaurar una copia del fichero de control, debe abrirse la bd con la opción RESETLOGS. • Si se tiene copia del fichero de control. • Suponiendo que el disco y el sistema de ficheros donde reside el fichero dañado funcionan correctamente: – Parar la bd: SHUTDOWN ABORT – Corregir el problema hw.

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

RECUPERACION

307


RECUPERAR F. CONTROL. PERDIDA DE TODOS MIEMBROS. – Restaurar la copia del fichero de control a todos los destinos indicados en el parámetro de inicialización CONTROL_FILES (orden cp). – Montar la bd: STARTUP MOUNT – Recuperar, sentencia RECOVER con la claúsula USING BACKUP CONTROLFILE. Indicar UNTIL CANCEL si se está realizando una recuperación incompleta: RECOVER DATABASE USING BACKUP CONTROLFILE UNTIL CANCEL – Aplicar los “log” archivados. Si se recibe un mensaje indicando que alguno no existe, probablemente significa que la información necesaria está en los “redo” en línea -cambios no archivados al suceder el problema-.

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

RECUPERACION

308


RECUPERAR F. CONTROL. PERDIDA DE TODOS MIEMBROS. ORA-00279: change 55636 generated at 06/08/2000 16:59:47 needed for thread 1 ORA-00289: suggestion : /oracle/work/arc_dest/arcr_1_111.arc ORA-00280: change 55636 for thread 1 is in sequence #111 Specify log: {<RET>=suggested | filename | AUTO | CANCEL}

Puede indicarse el nombre de un “log” en línea y pulsarse retorno de carro: /oracle/dbs/t1_log1.f Log applied. Media recovery complete.

Si los “redo” en línea no están accesibles, puede cancelarse la recuperación sin aplicarlos. En este caso debe recrearse el fichero de control si los cambios en los “redo” en línea son necesarios. – Abrir la bd con la opción RESETLOGS: ALTER DATABASE OPEN RESETLOGS; – Realizar una copia completa de la bd. Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

RECUPERACION

309


RECUPERAR F. CONTROL. PERDIDA DE TODOS MIEMBROS. • Si no puede restaurarse el fichero de control a su localización original; debe indicarse una nueva localización en el fichero de parámetros, variable CONTROL_FILES. • La restauración es idéntica al caso en que se restaure a la localización por defecto, salvo que debe modificarse el fichero de parámetros de forma previa a la misma y al montaje de la bd.

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

RECUPERACION

310


RECUPERAR F. CONTROL. PERDIDA DE MIEMBROS Y COPIAS. • Si los ficheros de control se han dañado pero el “redo” en línea permanece, puede recuperarse la bd tras crear un fichero de control. No se requiere abrir la bd, en este caso, con la opción RESETLOGS. Para crear u fichero de control: – Arrancar la bd , no montar: STARTUP NOMOUNT – Crear el fichero de control, indicando la NORESETLOGS. Por ejemplo:

opción

CREATE CONTROLFILE REUSE DATABASE SALES NORESETLOGS ARCHIVELOG ...

Tras crear el fichero de control, Oracle monta la bd. – Recuperar la bd: RECOVER DATABASE – Abrir la bd: ALTER DATABASE OPEN; – Realizar copia del fichero de control: ALTER DATABASE BACKUP CONTROLFILE TO '/.../copia_fcontrol' REUSE;

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

RECUPERACION

311


RECUPERAR F. CONTROL. PERDIDA DE MIEMBROS Y COPIAS. • Existen distintas opciones para crear el fichero de control: – En el caso de haber ejecutado un ALTER DATABASE BACKUP CONTROLFILE TO TRACE NORESETLOGS tras el último cambio estructural, o antes de haber realizado este cambio; puede usarse el fichero de traza generado (en caso de no reflejar los últimos cambios, debe editarse y añadirlos). – Si se ha realizado una copia a fichero binario, ALTER DATABASE BACKUP CONTROLFILE TO fichero;, debe copiarse el fichero, crear una instancia temporal, montar la bd -STARTUP MOUNT- y realizar una copia a traza -ALTER DATABASE BACKUP CONTROLFILE TO TRACE NORESETLOGS-. Se edita, si es necesario, y se realizan los cambios oportunos. Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

RECUPERACION

312


RECUPERAR F. CONTROL. PERDIDA DE MIEMBROS Y COPIAS. – Si no existe copia del fichero de control, debe crearse manualmente (sentencia CREATE CONTROLFILE).

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

RECUPERACION

313


CONDICIONES RECUPERACION. • Para realizar cualquier tipo de “media recovery” debe tenerse en cuenta que: – Deben tenerse privilegios de administrador. – Una sesión no puede comenzar una recuperación completa mientras otra realiza una recuperación tipo incompleta. – No puede realizarse “media recovery” si se está conectado a la bd a través de un proceso servidor compartido (“shared server”). • Debe usarse la sentencia SQL*Plus RECOVER, y realizar una recuperación automática; así no se interroga al aplicar cada “log” archivado. Los nombres de estos, se obtienen concatenando LOG_ARCHIVE_FORMAT y LOG_ARCHIVE_DEST_n, siendo n el mayor valor entre los destinos habilitados. Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

RECUPERACION

314


CONDICIONES RECUPERACION. • Hay dos formas de automatizar la aplicación de los “redo” necesarios en la recuperación: – Ejecutando SET AUTORECOVERY ON antes de RECOVER. Startup mount Set autorecovery on Recover database alter database open; – Indicando la claúsula AUTOMATIC como opción de la sentencia RECOVER. Startup mount Recover automatic database alter database open; Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

RECUPERACION

315


RECUPERACION COMPLETA. • Se recuperan las copias al SCN actual; bien la bd al completo, o tbsp o ficheros de datos individuales. • No es necesario abrir la bd con RESETLOGS, de forma que pueden recuperarse ciertos ficheros de datos en un momento y los restantes posteriormente.

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

RECUPERACION

316


RECUPERACION COMPLETA. BD CERRADA. 1.- Preliminares. – Cerrar la bd: SHUTDOWN ABORT. – Intentar corregir el fallo que origina el error (puede que el fallo sea temporal y los datos no hayan sido dañados). 2.- Restaurar copias de los ficheros dañados o perdidos. – Determinar los ficheros de datos a recuperar. – Identificar la copia más reciente de los ficheros dañados (no restaurar ficheros de datos no afectados ni ”redo” en línea). – Restaurar los ficheros.

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

RECUPERACION

317


RECUPERACION COMPLETA. BD CERRADA. 3.- Recuperar la bd. – Montar la bd: STARTUP MOUNT. – Obtener los nombres de los ficheros de datos y su estado: SELECT NAME,STATUS FROM V$DATAFILE; – Asegurarse de que todos los f.datos de la bd están en línea (a menos que forme parte de un tbsp. de sólo lectura o se hubiera puesto fuera de línea normalmente): ALTER DATABASE DATAFILE '/.../tbs.dbf' ONLINE; – Ejecutar la sentencia paa recuperar la bd -todos los ficheros dañados- , un tbsp. concreto o un fichero de datos (puede indicarse recuperación automática): RECOVER DATABASE; RECOVER TABLESPACE users; RECOVER DATAFILE '/.../tbs.dbf'; Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

RECUPERACION

318


RECUPERACION COMPLETA. BD CERRADA. En una recuperación automatizada, esta continúa hasta que todo el “redo” archivado y en línea se ha aplicado y aparece el mensaje: “media recovery complete”. – Abrir la bd: ALTER DATABASE OPEN;

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

RECUPERACION

319


RECUPERACION COMPLETA. BD ABIERTA. • Puede ocurrir un fallo con la bd abierta, dejando los ficheros no dañados en línea y en condiciones de uso. Oracle automaticamente pone los ficheros dañados fuera de línea -no sus “tablespaces”- si el DBWR no puede escribir en ellos. Las consultas que no pueden leer en dichos ficheros generan errores, pero Oracle no los pone fuera de línea por esta razón: ERROR at line 1: ORA-01116: error in opening database file 11 ORA-01110: data file 11: '/oracle/dbs/tbs_32.f' ORA-27041: unable to open file SVR4 Error: 2: No such file or directory Additional information: 3

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

RECUPERACION

320


RECUPERACION COMPLETA. BD ABIERTA. • El proceso no es aplicable si se dañan los ficheros del tbsp. SYSTEM, en este caso se cierra la bd automáticamente. 1.- Preliminares. – Poner los tbsp que contienen los ficheros dañados fuera de línea: ALTER TABLESPACE users OFFLINE TEMPORARY; – Intentar corregir, si es posible, el fallo máquina que origina el error. 2.- Restaurar copias de los ficheros dañados o perdidos. – No deben restaurarse copias de ficheros no dañados, “redo” en línea o ficheros de control. Si se han restaurado a una localización alternativa, deben renombrarse los ficheros de datos: ALTER DATABASE RENAME FILE '/.../tbs1.dbf' TO '/.../tbs1.dbf'; Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

RECUPERACION

321


RECUPERACION COMPLETA. BD ABIERTA. 3.- Recuperar los tbsp. fuera de línea. – Conectar con privilegios de administrador. – Recuperar todos los automáticamente):

tbsp.

afectados

(aconsejable

RECOVER TABLESPACE users, sales La recuperación continúa hasta que todo el “redo” archivado y en línea se ha aplicado. – Poner los tbsp. en línea: ALTER TABLESPACE users ONLINE; ALTER TABLESPACE sales ONLINE; Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

RECUPERACION

322


RECUPERACION INCOMPLETA. • Al no recuperar la bd al momento más actual, debe indicarse cuando terminar la recuperación (“point in tine recovery”). Existen diversas opciones: – Time-based ... Recupera datos hasta un instante concreto. – Cancel-based ... Recupera hasta el empleo de la sentencia CANCEL. – Change-based ... Recupera hasta un SCN específico. Tras una recuperación incompleta siempre debe abrirse la bd con “resetlogs”.

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

RECUPERACION

323


RECUPERACION INCOMPLETA. 1.- Preliminares. – Realizar una copia completa de la bd como medida de precaución ante errores durante la recuperación. – Cerrar la bd, si está abierta: SHUTDOWN ABORT – Intentar corregir el fallo que origina el error. 2.- Restaurar una copia completa de la bd. – Si el fichero de control actual no refleja la estructura de la bd en el tiempo al que se quiere recuperar, debe restaurarse una copia del mismo que lo haga. – Restaurar copias de todos los ficheros de datos de la bd (previas al momento al que se quiere recuperar). – Abrir una sesión Sqlplus como administrador. Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

RECUPERACION

324


RECUPERACION INCOMPLETA. – Montar la bd: STARTUP MOUNT – Si algún fichero fue restaurado a alternativa anteriormente, indicarlo:

una

localización

ALTER DATABASE RENAME FILE '/.../df2.dbf' TO '/.../df2.dbf'; – Obtener el nombre y estado de todos ficheros de datos: SELECT NAME,STATUS FROM V$DATAFILE; – Asegurarse de que todos los ficheros de la bd están en línea (a menos que un tbsp se hubiera puesto fuera de línea normalmente -opción NORMAL- o sea de sólo lectura): ALTER DATABASE DATAFILE '/..../tbs.dbf' ONLINE; Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

RECUPERACION

325


RECUPERACION INCOMPLETA. “CANCEL BASED”. • La recuperación finaliza al indicar “CANCEL” en lugar de un nombre de fichero “redo” archivado, o cuando todos estos han sido aplicados. Permite controlar el proceso de recuperación. • Deben seguirse los siguientes pasos: – Conectarse a Sqlplus con privilegios de administrador: sqlplus '/ AS SYSDBA' – Montar la bd: STARTUP MOUNT – Comenzar la recuperación: RECOVER DATABASE UNTIL CANCEL Si se está usando una copia del f.de control debe indicarse: RECOVER DATABASE UNTIL CANCEL USING BACKUP CONTROLFILE Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

RECUPERACION

326


RECUPERACION INCOMPLETA. “CANCEL BASED”. – Continuar aplicando “redo” hasta llegar al último y cancelar ejecutando: CANCEL. Si el fichero de control es una copia deberá indicarse también los nombres del “redo” en línea si desean aplicarse. Oracle devuelve un mensaje indicando si la recuperación fue exitosa. Si se cancela una recuperación antes de que todos los ficheros esten en un SCN consistente y se intenta abrir la bd, se recibe un ORA-1113 en caso de ser necesaria más recuperación. Puede consultarse la vista V$RECOVER_FILE para determinar si es así, o si una copia de algún fichero no fue restaurada antes de comenzar la recuperación. – Abrir la bd en modo RESETLOGS. Siempre deben reiniciarse los “log” en línea después de una recuperación incompleta o con una copia del fichero de control: ALTER DATABASE OPEN RESETLOGS; Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

RECUPERACION

327


RECUPERACION INCOMPLETA. “TIME BASED”. – Ejecutar RECOVER DATABASE UNTIL TIME para comenzar. El tiempo siempre se indica usando el formato: 'YYYY-MM-DD:HH24:MI:SS'. Por ejemplo: RECOVER DATABASE UNTIL TIME '2004-12-31:12:47:30' Si se usa una copia del fichero de control, restaurada: RECOVER DATABASE UNTIL TIME '2004-12-31:12:47:30' USING BACKUP CONTROLFILE – Aplicar “redo” archivado. Si el fichero de control es una copia, tras aplicar “redo” archivado debe indicarse el “redo” en línea. Finaliza automáticamente la recuperación al alcanzar el tiempo indicado y se devuelve un mensaje indicando si es correcta. – Abrir bd en modo “RESETLOGS”: ALTER DATABASE OPEN RESETLOGS; Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

RECUPERACION

328


RECUPERACION INCOMPLETA. “CHANGE BASED”. – Indicar el SCN de terminación. Por ejemplo: RECOVER DATABASE UNTIL CHANGE 10000; – Aplicar “redo” archivado. Si el fichero de control es una copia, tras aplicar “redo” archivado debe indicarse el “redo” en línea. Finaliza automáticamente la recuperación al alcanzar el SCN indicado y se devuelve un mensaje indicando si es correcta. – Abrir bd en modo “RESETLOGS”: ALTER DATABASE OPEN RESETLOGS;

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

RECUPERACION

329


RECUPERACION PARALELA. • Por defecto se emplea recuperación paralela, lo que incrementa la productividad. El grado de paralelismo es igual al número de UCP´s disponibles, relacionado con el parámetro de inicialización CPU_COUNT. • Si se indica “RECOVER PARALLEL” o “RECOVER PARALLEL 0” se evita este comportamiento.

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

RECUPERACION

330


APERTURA BD TRAS RECUPERACION. • Siempre que se realiza una recuperación incompleta o recuperación con una copia del fichero de control, debe reinicializarse los “logs” al abrir la bd. La nueva versión de bd se llama “incarnation”. Todos los “redo” archivados generados tras el punto de RESETLOGS en la antigua “incarnation” son no válidos en la nueva. • Al realizar una recuperación completa, no tiene que abrirse la bd con la opción RESETLOGS. Todos las copias y “redo” archivado creados durante la vida de esta “incarnation” de la bd son válidos.

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

RECUPERACION

331


APERTURA BD TRAS RECUPERACION.

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

RECUPERACION

332


APERTURA BD TRAS RECUPERACION. • Al abrir la bd con RESETLOGS, todos los f.datos obtienen un nuevo RESETLOGS SCN y fecha, y la secuencia de “log” se reinicia a 1. El “log” archivado contiene asímismo esos dos valores en la cabecera. Como Oracle no aplica un “log” archivado a un fichero de datos a menos que RESETLOGS SCN y fecha coincidan, esta operación evita que se corrompan con “log” archivados que no son de “encarnaciones” padres directas de a actual. • Reinicializar los “logs” permite: – Descartar para siempre cualquier información no aplicada durante la recuperación. – Reinicializar la información en el fichero de control sobre “redo” en línea y “redo” threads. – Crear los ficheros de “redo” en línea si no existían. – Reinicializar el número de secuencia de “log” a 1. Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

RECUPERACION

333


APERTURA BD TRAS RECUPERACION. – Archiva “redo” en línea, si está accesible, y borra su contenido. – Actualizar todos los ficheros de datos y “redo” en línea y, por tanto, el “redo” archivado que se produzca con un nuevo RESETLOG SCN y “time stamp”.

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

RECUPERACION

334


APERTURA BD TRAS RECUPERACION. • Tras un RESETLOGS, es aconsejable: – Realizar una copia completa de la bd, cerrándola en modo normal (permite recuperar cambios hechos tras la reinicialización). – Comprobar que en el alert_SID.log no existen entradas que reflejen inconsistencias detectadas entre el dicconario de datos y el fichero de control (p.ej. Fich. datos que no aparecen en el fich. de control).

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

RECUPERACION

335


TSPITR

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

RECUPERACION

336


TSPITR (“Tbsp. Point in time recovery”). • Junto con la funcionalidad de transporte de tbsp., permite recuperar uno o más tbsp. (distintos al SYSTEM) a un momento en el tiempo anterior al resto de la bd. Es util para: – Recuperar tras un borrado de tabla. Idem si está corrupta (¡es conveniente tener copia lógica!). – Recuperar tras sentencias que han afectado a una parte de la bd (DML). – Recuperar un esquema (si es independiente y reside en un tbsp aparte) a un punto diferente del resto. – Recuperar un tbsp en una gran bd (VLDB -very large database-) cuando es más eficiente que recuperar la bd al completo.

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

RECUPERACION

337


TSPITR. • El desarrollo básico de un TSPITR consta de varios pasos: – Operaciones preliminares y puesta fuera de línea de aquellos tbsp. que requieren recuperación. – Creación de una bd auxiliar (duplicado de la bd en uso restaurada desde copia) y su recuperación hasta el momento necesario en el tiempo. La bd auxiliar puede residir en la misma máquina que la bd en uso o en otra distinta. Se aconseja esta última opción por su mayor facilidad de manejo y menor probabilidad de daño. – Borrado de los tbsp que requieran TSPITR (bd en uso). – Transporte del conjunto de tbsp. desde la bd auxiliar hasta la bd en uso. Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

RECUPERACION

338


TSPITR. PRELIMINARES. 1.- Debe comprobarse que se poseen las copias necesarias previas al instante al que se desea el TSPITR; así como una copia del fichero de control realizada con ALTER DATABASE BACKUP CONTROLFILE TO '<fichero>'; Igualmente que hay suficiente espacio en disco y memoria para poder recuperar y arrancar la bd auxiliar. Si el tbsp. a recuperar se ha renombrado debe asegurarse que el SCN para el TSPITR es posterior al momento en que fue renombrado (no puede hacerse en caso contrario, aunque puede realizarse un DBPITR a un SCN previo al renombrado -vuelve a su nombre anterior-). 2.- Obtener información de la bd en uso. - Ficheros de datos, control y “redo” en línea (SELECT NAME

FROM V$DATAFILE UNION ALL SELECT MEMBER FROM V$LOGFILE UNION ALL SELECT NAME FROM V$CONTROLFILE;). Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

RECUPERACION

339


TSPITR. PRELIMINARES. - Ficheros de datos del tbsp SYSTEM y del conjunto de recuperación (tbsp a recuperar). SELECT t.NAME AS "reco_tbs", d.NAME AS "dbf_name" FROM V$DATAFILE d, V$TABLESPACE t WHERE t.TS# = d.TS# AND t.NAME IN ('SYSTEM', 'RECO_TBS_1', 'RECO_TBS_2');

- Ficheros de datos del tbsp de UNDO. SELECT r.TABLESPACE_NAME AS "rbs_tbs", d.FILE_NAME AS "dbf_name" FROM DBA_ROLLBACK_SEGS r, DBA_DATA_FILES d WHERE r.TABLESPACE_NAME=d.TABLESPACE_NAME; SELECT u.TABLESPACE_NAME AS "undo_tbs", d.FILE_NAME AS "dbf_name" FROM DBA_UNDO_EXTENTS u, DBA_DATA_FILES d WHERE u.TABLESPACE_NAME=d.TABLESPACE_NAME; Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

RECUPERACION

340


TSPITR. PRELIMINARES. 3.- Determinar los objetos que se perderán en el TSPITR. Cualquier objeto creado tras el instante al que se desea recuperar se pierde. Para averiguar cuáles son , debe consultarse la vista TS_PITR_OBJECTS_TO_BE_DROPPED en la bd en uso. Por ejemplo, si se quiere recuperar “ventas1” y “ventas2” al instante '2000-06-02:07:03:11': SELECT OWNER, NAME, TABLESPACE_NAME, TO_CHAR(CREATION_TIME, 'YYYY-MM-DD:HH24:MI:SS') FROM SYS.TS_PITR_OBJECTS_TO_BE_DROPPED WHERE TABLESPACE_NAME IN ('VENTAS1','VENTAS2') AND CREATION_TIME > TO_DATE('00-JUN-02:07:03:11','YY-MONDD:HH24:MI:SS') ORDER BY TABLESPACE_NAME, CREATION_TIME;

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

RECUPERACION

341


TSPITR. PRELIMINARES. 4.- Configurar la conexión a la bd auxiliar (Net) y, en su caso, crear el fichero de claves. 5.- Crear un fichero de parámetros de inicialización para la bd auxiliar. Contendrá parámetros como: DB_NAME, CONTROL_FILES, LOG_ARCHIVE_DEST_1, LOG_ARCHIVE_FORMAT, DB_UNIQUE_NAME, DB_FILE_NAME_CONVERT, LOG_FILE_NAME_CONVERT. Parámetros de memoria como DB_CACHE_SIZE , SHARED_POOL_SIZE y LARGE_POOL_SIZE deben mantenerse a un valor bajo.

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

RECUPERACION

342


TSPITR. CREACION BD AUXILIAR. • Se asume que se creará en una máquina distinta a aquella en que reside la bd en uso, y se usarán los mismos nombres de ruta (“path names”) para los ficheros. 1.- Restaurar los ficheros de la bd auxiliar (ficheros de control, “undo” y system), junto con el conjunto de recuperación -tbsp a recuperar-. 2.- Arrancar la bd auxiliar -sin montar-. Si es necesario indicar cuál es el fichero de parámetros de inicialización. STARTUP NOMOUNT PFILE = /.../.

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

RECUPERACION

343


TSPITR. CREACION BD AUXILIAR. 3.- Montar la bd auxiliar usando la claúsula CLONE (pone todos los ficheros de datos “offline” de forma automática). ALTER DATABASE MOUNT CLONE DATABASE; 4.- Ejecutar la consulta siguiente para descartar cualquier error en el nombre de los ficheros de datos: SELECT NAME FROM V$DATAFILE UNION ALL SELECT MEMBER FROM V$LOGFILE UNION ALL SELECT NAME FROM V$CONTROLFILE; En caso de haber algún error deberán renombrarse (si no se ha usado DB_FILE_NAME_CONVERT y LOG_FILE_NAME_CONVERT).

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

RECUPERACION

344


TSPITR. CREACION BD AUXILIAR. 5.- Poner todos los ficheros de datos en línea. ALTER ALTER ALTER ALTER

DATABASE DATABASE DATABASE DATABASE

DATAFILE DATAFILE DATAFILE DATAFILE

/u02/.../system.dbf ONLINE; /u02/.../ventas1.dbf ONLINE; /u02/.../ventas2.dbf ONLINE; /.../undo.dbf ONLINE;

TSPITR no funcionará si todos los ficheros del cjto. de recuperación no están en línea. En este momento la bd auxiliar está lista para recuperación. 6.- Recuperar la bd a un instante concreto con la opción USING BACKUP CONTROLFILE. Por ejemplo: RECOVER DATABASE UNTIL CANCEL USING BACKUP CONTROLFILE

7.- Abrir la bd auxiliar con la opción RESETLOGS. ALTER DATABASE OPEN RESETLOGS; Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

RECUPERACION

345


TSPITR. TRANSPORTAR TBSP. OPERACIONES BD AUXILIAR. 1.- Colocar los tbsp en modo sólo lectura. ALTER TABLESPACE ventas1 READ ONLY; ALTER TABLESPACE ventas2 READ ONLY;

2.- Comprobar que el conjunto es autocontenido. EXECUTE SYS.DBMS_TTS.TRANSPORT_SET_CHECK('ventas1,ventas2',TRUE,TRUE); SELECT * FROM SYS.TRANSPORT_SET_VIOLATIONS;

3.- Generar el conjunto transportable (utilidad Data Pump Export).

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

RECUPERACION

346


TSPITR. TRANSPORTAR TBSP. OPERACIONES BD EN USO. 1.- Borrar los tbsp. del conjunto de recuperación. DROP TABLESPACE ventas1 INCLUDING CONTENTS; DROP TABLESPACE ventas2 INCLUDING CONTENTS;

2.- Copiar los ficheros de datos de la bd auxiliar a la bd en uso, igual con el fichero resultado de la exportación (orden cp). 3.- Importar el conjunto transportado (utilidad Data Pump import). 4.- Cambiar modo de los tbsp. transportados a lectura/escritura. ALTER TABLESPACE ventas1 READ WRITE; ALTER TABLESPACE ventas2 READ WRITE; Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

RECUPERACION

347


TSPITR. TRANSPORTAR TBSP. OPERACIONES BD EN USO. 5.- Realizar una copia de los tbsp. recuperados. Debe realizarse copia pues de otra forma podrían perderse. Si, por ejemplo, ocurre un fallo de disco, y se intenta recuperar desde una copia anterior al TSPITR, esta falla.

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

RECUPERACION

348


VISTAS.

• V$ARCHIVED_LOG • V$RECOVER_FILE ... Muestra el estado de los ficheros que precisan “media recovery”. • V$RECOVERY_LOG

Administración Avanzada de Oracle 10g © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez - 2007

RECUPERACION

349


Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.