ANTECEDENTES HISTORICOSEn sus comienzos, Oracle era principalmente una empresa de bases de datos relacionales, Las cuales eran una nueva forma de pensar sobre como deberían estructurarse y almacenarse los datos; la clave de este nuevo pensamiento consiste en entender las relaciones existentes entre los datos y en estructurar la base de Información para que refleje dichas relaciones. El objetivo de una base de datos relacional consiste en construir una estructura en la cual las modificaciones requeridas no la afecten a ella, sino únicamente a los datos, es decir, se minimicen las modificaciones a las aplicaciones, se termine con la redundancia de los datos y se garantice la sincronización de los cambios hechos a los mismos "estos cambios solo deben afectar una tabla, y no varios archivos como frecuentemente sucedía cuando se manejaba el enfoque tradicional".
RESPONSABILIDADES DE UN ADMINISTRADOR DE BASES DE DATOS (DBA)El DBA contribuye con su trabajo al funcionamiento eficaz de todos los sistemas que se ejecutan con la base de datos Oracle; Además ofrece asistencia técnica a quienes interactuan con la Base de Datos y se espera que tenga soltura en todos los aspectos técnicos que surjan con el software de Oracle. Dentro de sus responsabilidades están:
Instalación y actualización del Oracle Server y de todos sus productos asociados
Asignación de recursos para la utilización de Oracle: memoria, espacio en disco, perfiles de usuario etc.
Ajuste de la base de datos para conseguir el rendimiento optimo.
Enlace con el servicio mundial de asistencia al cliente de Oracle (Oracle Wordwide Support) para resolver problemas técnicos que requieran la intervención de Oracle.
Estrategias de copia de seguridad y recuperación.
Colaboración con el personal de administración del sistema y desarrolladores de aplicaciones.
Shared PoolEs una porción de la SGA, creada al subir la Instancia Oracle; La cual contiene:
El Diccionario de Datos Cache.
Las sentencias SQL y PL/SQL.
El árbol semántico de cada sentencia SQL.
El plan de ejecución de cada sentencia SQL.
Estas son guardadas para las sentencias sean requeridas en más de una ocasión o por más de un usuario.
Database Buffer CacheEs un área de la SGA que guarda copias de los bloques de datos más recientemente leídos del disco, esto se hace para un mejor desempeño pues si los datos son de nuevo requeridos por un usuario, su acceso es más rápido.
Los bloques pueden contener datos modificados que no son permanentemente escritos a disco y los cuales maneja Oracle de una manera consistente para atender la concurrencia de los usuarios conectados a la base de datos, dichos usuarios comparten el acceso a esta área.
Redo Log BufferEs un buffer en el cual se registran secuencialmente todos los cambios hechos a los datos (sentencias DML, commits, rollbacks).
Es usado para reconstruir los cambios hechos a la Base de Datos y a los Segmentos de Rollback cuando ocurre una falla y se necesita hacer recuperación de datos.
Su uso se puede omitir con la opción UNRECOVERABLE en sentencias create table, create index y en sql*loader.
Diccionario de Datos CacheEs una colección de tablas y vistas que contienen información referente a la base de datos, sus estructuras y sus usuarios. Esta información incluye:
los nombres de todas las tablas y vistas de la
Base de Datos.
los nombres y los tipos de datos de las columnas de
las tablas.
los privilegios de todos los usuarios.
Memoria Oracle (SGA)Su tamaño está determinado por los parámetros:
Shared_Pool_Size= Tamaño en bytes del área para SQL compartidos y sentencias PL/SQL.
Db_Block_Size = Tamaño en bytes de un solo bloque de datos.
Db_Block_Buffers = Numero de Buffers a localizar en memoria.
Log_Buffer = Numero de bytes localizados para para los Redo Log Buffer.
SGA = Shared_Pool_Size + (Db_Block_Size * Db_Block_Buffers) +
Log_Buffer.
COMPOSICION DE UNA BASE DE DATOS ORACLEDatafiles
DATAFILES
Archivos físicos que contienen toda la información de la base de datos; en ellos están estructuras tales como tablas e índices.
REDO LOG FILES
Archivos físicos que almacenan el registro de todos los cambios hechos a la base de datos, son utilizados principalmente para procesos de recuperación y almacena la información proveniente de los Redo Log Buffers.
SEGMENTOS DE ROLLBACKSon una parte de la base de datos, la cual Oracle la utiliza para una actividad que lleva cabo y que consiste en poder restablecer los datos al estado en que estaban antes de que un usuario empezara a modificarlos.
En estos segmentos se almacena una imagen de como eran los datos antes de realizar una transacción para mantener la consistencia de los mismos en operaciones no grabadas y que requieran de un proceso de anulación.
ALERT FILEALERT FILE
Archivo en el cual se registran cronológicamente:
Los mensajes y errores producidos por Oracle.
Operaciones administrativas como sentencias DDL,
STARTUP, SHUTDOWN, ARCHIVE LOG y RECOVER.
Los parámetros suministrados al subir la instancia.
Oracle usa este archivo para facilitar la labor de administración en el momento de solucionar problemas.
La ubicación de este archivo esta determinada por el parámetro BACKGROUND_DUMP_DEST (del archivo de parámetros).
Procesos BackgroundDatabase Writer (DBWR)
Log Writer (LGWR)
Checkpoint (CKPT)
System Monitor (SMON)
Process Monitor (PMON)
Archiver (ARCH)
Recoverer (RECO)
Lock (LCKn)
Snapshot Refresh (Snnn)
Shared Server (Snnn)
Dispatcher (Dnnn)
Parallel Query (Pnnn)
SMON System Monitor Recuperaciones automáticas de la instancia.
Libera el espacio de segmentos temporales en memoria o en disco (sorts y join de tablas (tablespace temp)).
Efectúa el trabajo de defragmentación en los datafiles (hace contiguas las áreas de espacio libre).
LGWR Log Writer Escribe las transacciones que se encuentran en los Redo Log a Disco cuando ocurre un commit, cuando se llena la tercera parte de los Redo Log. Esta operación permite que Oracle pueda recuperarse frente a varios tipos de fallos y únicamente existe uno por instancia.
DBWR Database Writer Es un proceso obligatorio que maneja el Database Buffer Cache para que los procesos de servidor siempre encuentren buffers libres, dicho de otra manera escribe los bloques de datos modificados (en memoria) en los archivos de la base de datos (datafiles) utilizando el algoritmo LRU (menos recientemente utilizados).
Es uno de los dos únicos procesos que tienen permitido escribir en los archivos de datos que componen la base de datos Oracle. En ciertos sistemas operativos se pueden tener varios escritores de bases de datos por motivos de rendimiento.
PROCESOS OPCIONALES ARCH Archiver
Es un proceso opcional, encargado de copiar el contenido de los archivos de REDO LOG a cinta o a disco para hacer recuperaciones en caso de fallas. Unicamente es necesario cuando la base de datos se encuentra en modo ARCHIVELOG.
CKPT CheckpointAsegura que todos los datos modificados en memoria (database buffers) sean escritos a disco.
Oracle produce un punto de comprobación al conmutar entre los distintos registros que hay en memoria para que las transacciones sean consistentes entre los diferentes usuarios, además escribe en disco toda la información que los usuarios han modificado en memoria y notifica al archivo de control el registro de la transacción.
LCKn LockLCKn Lock
Es un proceso opcional, configurado para manejar los bloqueos entre bases de datos Oracle cuando estas se encuentran en distintos computadores y compartiendo el mismo conjunto de discos (es decir en modo servidor en paralelo).
RECO Recoverer
Este proceso solo se observa cuando la base de datos ejecuta la opción distribuida de Oracle. La transacción distribuida es una en la que dos o más emplazamientos de datos debe mantenerse sincronizados, Por ejemplo cuando se tiene una copia de los datos en diferentes ciudades y por fallas en una línea telefónica se pierde una transacción en la mitad de su actualización. El proceso recuperador entonces resuelve las transacciones que hayan quedado inconsistentes en las dos ciudades.
CREACION DE UNA BASE DE DATOSOPCIONES AL CREAR UNA BASE DE DATOS ORACLEARCHIVO DE PARAMETROSEs un archivo texto que contiene una lista de los parámetros de configuración de la instancia (Memoria y procesos Background utilizados por Oracle).
Oracle para poder subir la instancia, debe leer el archivo de parámetros initSID.ora, en donde SID es el nombre de la base de datos; estos parámetros son determinados por el administrador de la base de datos al crearla o antes de subir una instancia, y con ellos se pueden determinar aspectos como el tamaño de la memoria asignada a Oracle, el tamaño de cada bloque en el cual se almacenarán datos etc.
MANIPULACION DE LA BASE DE DATOSStartup nomount pfile=initprueba.ora (sube la instancia de la base de datos prueba).
Alter database prueba open (Permite a todos los usuarios accesar la base de datos).
Alter database prueba mount (monta la base de datos para mantenimiento).
Alter database mount exclusive (es el default y solo permite a la actual instancia accesar la base de datos).
Estando conectado a la base de datos como usuario Internal se puede alterar el
estado de la base de datos asi:
Alter system enable restricted session (Para futuras conexiones solo permite conectar usuarios que posean ese privilegio).
Alter system disable restricted session (Permite que todos los usuarios se conecten a la base de datos).
BAJANDO LA INSTANCIA ORACLEConectarse a la base de datos como internal o como un usuario con privilegios suficientes para bajar la instancia (puede ser desde una utilidad como Svrmgrl, OEM o Sql*dba).
Shutdown (si no hay usuarios conectados baja la instancia y cierra la base de datos, de lo contrario su función consiste en no dejar conectar ningún usuario y esperar a que los que estén conectados salgan o se maten sus tareas.
Existen dos opciones que varían esta opción:
BAJANDO LA INSTANCIA ORACLEShutdown Immediate: Las sentencias que están siendo procesadas por los usuarios no son terminadas completamente, aquellas transacciones que no han sido grabadas (con commit) son reversadas y el servidor Oracle no espera a que los usuarios actualmente conectados a la base de datos se desconecten, sino que cierra y desmonta la base de datos y baja la instancia.
Shutdown Abort: El servidor Oracle no reversa las transacciones que no han sido grabadas y no espera que los usuarios se desconecten de la base de datos, tampoco cierra ni desmonta la base de datos, su trabajo consiste en bajar la instancia (procesos Oracle y memoria). Cuando se requiera volverla a subirla, Oracle por consistencia en sus procesos procede a hacer una recuperación automática de la instancia.
OBJETOS DE LA BASE DE DATOSOracle utiliza para su funcionamiento muchas estructuras con las cuales un administrador de base de datos debe familiarizarse, ellas se denominan objetos y cada uno de ellos tiene una función específica o trabajo que realizar, y de su buen funcionamiento depende él óptimo desempeño de la Base de Datos. En los ejemplos presentados posteriormente para la creación, borrado o manipulación de registros o estructuras se debe saber que Oracle maneja Esquemas; un esquema es una forma de referirse a un Objeto que ha sido creado por otro usuario y al cual puedo tener o no los privilegios para manipularlo.
Al necesitar manipular un registro de una tabla o un objeto creado por otro usuario y no tener los privilegios necesarios, debo anteponer el nombre del usuario creador del objeto seguido de un punto y del nombre del objeto "en la instrucción SQL". Ej, para seleccionar todos los registros de la tabla cliente debería escribir "SELECT * from VENTAS.cliente" en donde VENTAS es un usuario creado en la base de datos y el cual es el propietario de la tabla cliente.
TABLA: Es la unidad básica de almacenamiento en un sistema de bases de datos relacionales, en ellas son almacenados los datos de los usuarios y los datos del sistema Oracle; Cada tabla se compone de varias columnas las cuales cuentan con un tipo de datos asociado. La información sobre la estructura de todas las tablas se encuentra en el diccionario de datos y Oracle la utiliza para su funcionamiento.TABLA: Es la unidad básica de almacenamiento en un sistema de bases de datos relacionales, en ellas son almacenados los datos de los usuarios y los datos del sistema Oracle; Cada tabla se compone de varias columnas las cuales cuentan con un tipo de datos asociado. La información sobre la estructura de todas las tablas se encuentra en el diccionario de datos y Oracle la utiliza para su funcionamiento.
Creación de una tabla:
CREATE TABLE cliente (
k_cliente NUMBER(3) NOT NULL,
n_cliente VARCHAR2(40) NOT NULL,
r_vendedor DATE,
PCTFREE 10
PCTUSED 65
STORAGE (
INITIAL 4M
NEXT 3M
PCTINCREASE 0
MINEXTENTS 2
MAXEXTENTS 20))
TABLESPACE USERS;
Modificación de una tablaModificación de una tabla
1. ALTER TABLE cliente
ADD ( d_dirección VARCHAR2(25),
n_teléfono NUMBER(10))
2. ALTER TABLE cliente
MODIFY ( n_cliente VARCHAR2(50))
3. ALTER TABLE cliente
MODIFY ( d_dirección VARCHAR2(50) NOT NULL)
4. ALTER TABLE cliente
STORAGE (PCTINCREASE 100
MAXEXTENTS 50)
1. Adicionando los campos d_dirección y n_teléfono a la tabla
2. Ampliando el tamaño del campo n_cliente
3. Agregando un constraint que impide la entrada de valores nulos en el campo d_dirección
4. Alterando los parámetros de almacenamiento de la tabla.
Borrando una tablaBorrando una tabla
1. DROP TABLE cliente
2. DROP TABLE cliente CASCADE CONSTRAINTS
3. TRUNCATE TABLE cliente
1. Borra la tabla y su estructura si no existen constraints de integridad referencial
2. Borra la tabla y los CONSTRAINTS de integridad referencial hacia la tabla.
3. Borra los datos de la tabla si no existen constraints de integridad referencial.
VISTA : Es una consulta SQL de una o varias tablas, la cual se encuentra almacenada en la base de datos y cuyos resultados se devuelven al usuario igual que los de una consulta a una tabla. A diferencia de una tabla, una vista no contiene datos sino únicamente una consulta SQL. Son útiles en seguridad, pues se pueden crear por ejemplo para restringir el acceso a ciertos campos de una tabla (es decir a los usuarios no se les da acceso a toda la tabla, sino a los campos contenidos en la vista), también se utilizan para facilitar a los usuarios los (join) complejos entre tablas y la escritura de nombres largos o difíciles de las tablas o de sus columnas en las consultas creadas por ellos.
Creación una VistaCreación una Vista
1. CREATE VIEW Vista_Cliente as select k_cliente, n_descripción from cliente.
2. CREATE O REPLACE VIEW Vista_Cliente as select k_cliente, n_descripción from cliente.
INDICE: Así como el índice de un libro ayuda a accesar su contenido de una manera más ágil, un índice de una tabla le ayuda a la base de datos a recuperar información con mayor velocidad. Un índice es una copia en miniatura de una tabla con información sobre la(s) columna(s) que forman parte del índice, y no sobre todas las columnas de la tabla. De esta manera le proporcionan a Oracle un veloz acceso a los datos pues no necesitan subir a memoria los registros completos de la tabla sino únicamente la(s) columna(s) indexada(s) para proceder a realizar la búsqueda requerida, ello conlleva a que en la memoria se puedan cargar muchas mas columnas de registros deseados en lugar de registros completos no deseados.
Creando un Indice
1. CREATE UNIQUE INDEX ind_ven_r_vendedor ON CLIENTE(R_VENDEDOR)
TABLESPACE users
STORAGE (INITIAL 200K NEXT 100K PCTINCREASE 75%).
2. CREATE BITMAP INDEX ind_ven_r_vendedor ON CLIENTE(R_VENDEDOR).
1. UNIQUE especifica que el valor de la columna en la tabla a ser indexada es UNICO.
2. BITMAP es un tipo de índice utilizado para tablas con millones de registros o en columnas con baja cardinalidad, es decir, aquellas en las cuales el numero de valores distintos es pequeño por ejemplo el sexo "F/M" o el estado civil.
Si no se especifica tablespace, Oracle crea el índice en el tablespace default del usuario que crea el índice. Se aconseja crear el índice en un tablespace diferente al de datos y de ser posible en diferente disco para un mejor desempeño de la base de datos.
SINONIMO : Es un nombre alternativo que se crea para un objeto de la base de datos; es normalmente utilizado para las tablas y las vistas de Oracle. Los sinónimos se crean normalmente para ocultar el propietario, la ubicación o el nombre real de una tabla (así otros usuarios la pueden accesar sin importar quien la haya creado o en donde se encuentre), también es utilizado para proporcionar a los usuarios nombres de objetos menos complicados que los reales. SINONIMO : Es un nombre alternativo que se crea para un objeto de la base de datos; es normalmente utilizado para las tablas y las vistas de Oracle. Los sinónimos se crean normalmente para ocultar el propietario, la ubicación o el nombre real de una tabla (así otros usuarios la pueden accesar sin importar quien la haya creado o en donde se encuentre), también es utilizado para proporcionar a los usuarios nombres de objetos menos complicados que los reales.
Creación de un sinónimo
1. CREATE PUBLIC SYNONYM cliente FOR ventas.cliente.
2. CREATE SYNONYM cliente FOR ventas.cliente@BASE2
1. Crea un sinónimo llamado cliente para todos los demás usuarios de la base de
datos, aunque ellos solo podrán hacer actualizaciones al mismo cuando se les
otorguen privilegios tales como select, update, insert y delete.
2. Crea un sinónimo llamado cliente de un objeto que se encuentra en otra base
de datos llamada BASE2.
ROLE: Es un objeto creado para simplificar el manejo de los privilegios en la Base de Datos cuando existen muchas tablas y muchos usuarios que las accesan. Consisten en agrupar una serie de privilegios en un objeto llamado rol, para que posteriormente este objeto sea otorgado diferentes usuarios o a otros roles. La racionalización se da debido a que hay usuarios que necesitan los mismos privilegios que otros y bastaría con asignar tales privilegios al mismo rol y este a su vez a cada usuario en lugar de tener que asignar individualmente los privilegios por usuario); de la misma manera, para eliminar un privilegio a estos usuarios solo necesitaría eliminarla del role y automáticamente lo perderían.ROLE: Es un objeto creado para simplificar el manejo de los privilegios en la Base de Datos cuando existen muchas tablas y muchos usuarios que las accesan. Consisten en agrupar una serie de privilegios en un objeto llamado rol, para que posteriormente este objeto sea otorgado diferentes usuarios o a otros roles. La racionalización se da debido a que hay usuarios que necesitan los mismos privilegios que otros y bastaría con asignar tales privilegios al mismo rol y este a su vez a cada usuario en lugar de tener que asignar individualmente los privilegios por usuario); de la misma manera, para eliminar un privilegio a estos usuarios solo necesitaría eliminarla del role y automáticamente lo perderían.
La asignación de privilegios si no existieran los roles se observan en la figura 2, y empleando los roles serian como muestra la figura 3.
Algunas propiedades de los roles son:
* Una vez creados no tienen dueño.
* Pueden ser asignados a algún usuario de la base de datos o a otro rol.
* Pueden ser habilitados o deshabilitados por un usuario que tenga permisos.
* Pueden requerir autorización (password) para ser habilitados en determinada aplicación.
* Deben ser creados con cierto criterio de empresa, por aplicaciones, por cargos.
* Pueden ser habilitados desde SQL*PLUS, PL/SQL, lenguajes de tercera generación.
Creación de un rolCreación de un rol
1. CREATE ROLE rol_ventas.
2. CREATE ROLE rol_ventas identified by xxxxxx.
Crea un rol llamado rol_ventas.
Crea un rol llamado rol_ventas y el usuario debe digitar el password xxxxxx para habilitarlo.
GRANTS (PRIVILEGIOS): Son otorgados por los dueños de los objetos y permiten a otros usuarios trabajar con sus datos. Algunos son:
* Select: permite que otros usuarios pueden examinar el contenido de tablas o vistas que no fueron creadas por ellos.
* insert permite a quien lo posee la creación de registros en las tablas de otros usuarios.
* update permite que otros usuarios puedan modificar o cambiar datos en tablas que no son de su propiedad.
* delete permite que otros usuarios puedan eliminar registros en tablas que no hayan sido creadas por ellos.
Asignación de PrivilegiosAsignación de Privilegios
1. GRANT select, insert, update ON cliente TO rol_ventas.
2. GRANT rol_ventas TO Marina
3. GRANT rol_ventas TO Marina WITH ADMIN OPTION
1. Asigna privilegios de consulta inserción y actualización a rol_ventas.
2. Otorga todos los privilegios dados a rol_ventas a un usuario de la base de datos llamado Marina.
3. Hace los mismo que el anterior pero adicionalmente permite que el usuario Marina pued conceder privilegios de rol_ventas a otros usuarios de manera transitiva.
1. Creación UsuariosEl Superusuario de Oracle es system
sql> connect system/password
sql> create user Carlos identified by Carlos99
solo se puede conectar a al bd
sql> connect Carlos/Carlos99
sql> connected
sql> connect system/password
sql> Grant dba to Carlos (maxima permiso)
Grant resource to Carlos (puede crear tabla paces, tablas)
sql>
METODOS DE RESPALDO Y RECUPERACIONOracle ofrece varios tipos de respaldo para la información; entre ellos no existe un método que sea el más óptimo para todas las organizaciones, debido a que son muchos los factores que inciden y se deben evaluar para determinar cual es el mejor procedimiento para determinado escenario de recuperación. Cada método de respaldo cumple funciones definidas, es por ello que se debe conocer muy bien la Base de Datos, la carga transaccional y la criticidad de la información entre otros para determinar el tipo de respaldo que necesita cada organización.
EXPORT E IMPORT
Es uno de los más usados por los clientes de Oracle por su flexibilidad y portabilidad y solo se puede hacer si la Base de Datos esta abierta;
VentajasSelectividad muy alta: se puede respaldar desde una tabla de la base de datos hasta toda la información almacenada en ella. Si se desea se pueden guardar únicamente las estructuras de los objetos, los triggers, los constraints etc. Esta misma selectividad funciona al restaurar la información posteriormente desde el Backup.
Portabilidad: Un archivo de "export" puede ser exportado de y desde cualquier sistema operativo que soporte Oracle7 o superior y ser importado en y desde cualquier sistema operativo con la ayuda de SQL*Net (herramienta de conectividad de Oracle).
Herramienta de Reorganización: una vez hecho un "export ", al restaurar los datos con el "Import" correspondiente se pueden relocalizar los objetos en otros tablespaces o si se quiere se pueden cambiar sus parámetros de almacenamiento; también permite crear los índices por separado acelerando el tiempo del import y cambiar de esquema (usuario dueño) los objetos si quien los importa posee los privilegios suficientes.
Permite recuperar información perdida por errores de usuario o del servidor como son: drops, truncates, deletes, corrupción de registros en tablas, perdida de tablas al perderse el tablespace o la base de datos, borrado de objetos y por ende su definición entre ellos triggers, constraints etc.
DesventajasTamaño y tiempos impredecibles: es muy difícil predecir el tamaño que tendrá un archivo de "export" al igual que el tiempo que durará el mismo o en su defecto el import. Puede que se requiera pasar todo el archivo de export para importar solo una parte: debido al recorrido secuencial para realizar un import, si el objeto buscado esta al comienzo del archivo se detiene después de importarlo, pero si está al final tiene que recorrer todo el archivo para recuperar solo ese(os) objeto(s).
2. RESPALDOS EN FRIO (Cold backup)Es un método de respaldo muy restrictivo, y debe hacerse únicamente cuando la base de datos este cerrada. Es útil en el evento de perdida total de la base de datos.
Ventajas:
La consistencia de datos está garantizada: No se da el caso de que los datos a ser respaldados estén siendo usados por algún usuario por que ellos no pueden acceder a la base de datos.
Todo incluido: Este tipo de respaldo incluye todos los Datafiles, los Controlfiles, y los Logfiles; no hay posibilidad de que alguna tabla o vista no quede en el backup.
El espacio que ocupa es conocido, además el tiempo de respaldo y recuperación es predecible.
Desventajas:
Nada excluido: esto se convierte en una desventaja cuando no se desea restaurar toda la información. Aquí no se permiten hacer respaldos ni restauraciones parciales, es decir "se respalda todo o nada y se restaura todo o nada"; Solo se puede hacer con la base de datos cerrada: nadie puede estar trabajando.
3. RESPALDOS EN CALIENTE (Hot Backup) Este tipo de respaldo es especialmente utilizado en organizaciones en las cuales la base de datos necesita estar disponible durante las veinticuatro horas y los siete dias de la semana.
Los respaldos en caliente son una consecuencia de una funcionalidad de Oracle llamada el modo "ARCHIVE". Este modo consiste en configurar algunos parámetros de la base de datos para que se registren todos los cambios hechos a la misma por mínimos que sean en unos archivos llamados "REDO LOGS". Oracle lleva un histórico del orden de los Redo Logs (y por ende de las transacciones realizadas a la base de datos) y cuando hay necesidad de restaurar información, lo hace consistentemente y deja la base de datos como estaba hasta el momento en el cual las fallas ocurrieron o hasta el punto en el tiempo que el cliente lo desee; esto se hace restaurando un cold backup y aplicando los Redo Logs (transacciones) ocurridas a partir de ese backup hasta una fecha y hora determinada que se necesite. De esta forma se obtiene una fotografía exacta y consistente de cómo estaba la base de datos en un día y hora determinados.
VentajasSelectivo a nivel de tablespace: Se respaldan todos los datafiles (archivos físicos de datos) de un tablespace completo y por ende todos los objetos almacenados en él.
No interfiere con la operación normal de la base de datos en producción: no hay necesidad de cerrar la base de datos y los usuarios pueden estar trabajando.
Se puede recuperar hasta cualquier punto en el tiempo: si se respaldan los Redo Logs suficientes y se mantienen respaldos en frío o calientes anteriores, se puede recuperar información en cualquier fecha y hora especificados.
Siempre recupera de manera consistente: es la única manera de recuperar la información.
DesventajasLa consistencia es forzosa: si se recupera toda la información no hay espacio para hacer modificaciones, selecciones o adecuaciones. Si se desea recuperar un objeto, no importa que haya sufrido o cual objeto sea, se deben recuperar todos los archivos de datos "datafiles" en donde ese objeto residía hasta el momento cuando la base de datos quede consistente.
Es necesario mantener todos los Redo Logs archivados: Si por alguna razón un Redo Log archivado se pierde, no se podrá recuperar la base de datos mas allá del último Redo Log antes del cual se perdió.
Se necesitan recursos importantes de disco para almacenar todos los Redo Logs, además de una administración cuidadosa con políticas para bajar estos archivos a cinta en horas determinadas y para relacionar en alguna parte información como el numero de la cinta, la fecha, la hora, de que numero a que numero de Redo Log se bajo y la persona que realizó la labor.
PROCESO ESTANDAR PARA LA GENERACION DE UN FULL-EXPORT Se debe tener un comando "AT" programado para que active un archivo llamado "Backup" de manera automática.
El archivo Backup contendrá lo siguiente:
EN WINDOWS NT :
El archivo Backup es una opción de Inicio, programas y contendrá lo siguiente:
d:\orant\bin\exp73.exe parfile = d:\orant\backup\param_fullexp.txt
El archivo PARAM_FULLEXP.TXT contiene lo siguiente
Backup/Backup
full=y
compress=y
indexes=y
file=d:\orant\backup\fullexpor.dmp
log=d:\orant\backup\fullexpor.log
rows=y
EN UNIX:
EXP USERID=Backup/Backup BUFFER=3076000 FILE=/u01/Backup/Fullexport.dmp FULL=Y COMPRESS=Y
GRANTS=Y INDEXES=Y CONSTRAINTS=Y ROWS=Y LOG=/u01/Backup/Fullexport.log
Para lo anterior se debe crear un usuario llamado Backup en las bases de datos, y direccionar los archivos con extensión (.dmp) a un disco con suficiente espacio.
PROCESO ESTANDAR PARA LA GENERACION DE UN Cold-BackupEste es un respaldo de todos los archivos de la base de datos (no de sistema operativo, aunque se podrían incluir), habiendo sido esta bajada en forma normal. Los archivos a copiar en este tipo de respaldo son los generados en las siguientes busquedas:
select status, enabled, bytes, name from v_$datafile;
select * from v_$controlfile;
select status, member from v_$logfile;
Además se debe respaldar el archivo initsid.ora.
Para respaldarlos se requiere una utilería del sistema operativo como tar,cp,cpio etc. Siempre y cuando se garantice que los archivos cuando se restauren queden iguales; (Se debe tener en cuenta que en algunos sistemas operativos estos comandos producen lo que se llama un 'sparce file' lo cual significa que trunca los espacios vacios de un archivo, esto daña o corrompe los datafiles).
EN WINDOWS NT :1. Verificar que no hayan usuarios conectados a la base de datos.
2. Entrar a Inicio, Programas y ejecutar el comando "BAJAR_BD", el cual baja la base de datos y contiene:
d:\orant\bin\oradim73.exe -shutdown -sid ORCL -usrpwd oracle –shuttype srvc,inst -shutmode n
3. Entrar a la utilidad de backup de Windows NT, escoger la unidad requerida, y los archivos a ser respaldados, incluyendo D:orant y los directorios en donde están los archivos con extensiones .trc, .dmp, .ctl, .dbf, .log, init*.ora.
4. Entrar a Inicio, Programas y ejecutar el comando "SUBIR_BD", el cual sube la Base de Datos y contiene:
d:\orant\bin\oradim73.exe -startup -sid ORCL -usrpwd oracle -starttype srvc,inst
-pfile d:\orant\database\initorcl.ora
EN UNIXBajar la base de datos asi:
Estando conectado a Unix verificar que no hayan usuarios conectados a la base de datos
svrmgrl
connect internal
shutdown
exit
ejecutar el script que genera la copia de los archivos a ser respaldados
Subir la base de datos asi:
svrmgrl
connect internal
startup
PROCESO ESTANDAR PARA LA GENERACION DE Hot-Backup Para inicializar este modo de operación se recomienda hacer antes un backup de la base de datos por si ocurre algún problema. Posteriormente se deben configurar en el archivo INITsid.ORA los siguientes parámetros:
LOG_ARCHIVE_DEST = (Directorio donde seran grabados los archivos
Ejemplo: d:/backup/archive/arch).
LOG_ARCHIVE_FORMAT = (Formato del nombre de los archivos
Ejemplo: %t_%s.dbf)
LOG_ARCHIVE_START = TRUE
enseguida se deben ejecutar los siguientes comandos:
Alter database mount; (Sube la instancia pero no abre la base)
Alter database archivelog; (Coloca la base en modo Archivelog)
Archive log start; (Activa el archive automaticamente cada vez suba la instancia)
Alter database open; (Abre la base de datos y la deja disponible)
Para minimizar el impacto en el rendimiento por este método de respaldo, se aconseja incrementar el numero de LOG_ARCHIVE_BUFFERS a 2,3 o mas y el tamaño de LOG_ARCHIVE_BUFFER_SIZE al máximo posible (dependiendo del sistema operativo consultar user´s guide). Información adicional de este metodo de respaldo se encuentra digitando ARCHIVE LOG LIST, o haciendo la consulta select group#, archived from sys.v_$log.
PROCESO ESTANDAR PARA LA RESTAURACION DE UN FULL-EXPORTSe debe tener presente si se desea restaurar la información por tabla, usuario o la base de datos, pues del fullexport puedo obtener los tres. Además se debe evaluar si se desea sobreescribir la información existente al bajar el fullexport o si se baja sobre un usuario temporal para posteriormente proceder a hacer el insert a las tablas originales. Restaurar el archivo (Fullexport.dmp) de la cinta a un disco con suficiente capacidad.
EN WINDOWS NT :
Modificar uno de los siguientes tres archivos según el tipo de Import que se desee realizar :
d:\orant\backup\Imp_tabla
d:\orant\backup\Imp_user
d:\orant\backup\Imp_full.
Digitar el siguiente comando por inicio ejecutar o por Ms-dos (no se hace automatico por que son muchos los escenarios que se pueden presentar y especificos según el import deseado,debido a ello existe cierto riesgo de error).
d:\orant\bin\imp73.exe parfile = d:\orant\backup\imp_tabla ó
d:\orant\backup\imp_user ó d:\orant\backup\imp_full
según el archivo que haya modificado anteriormente.
UN EJEMPLO del archivo IMP_TABLA sería:UN EJEMPLO del archivo IMP_TABLA sería:
IMP Backup/Backup
Fromuser = contab (usuario dueño de la tabla a ser restaurada)
Touser=bajarinf (usuario en el cual deseorestaurar la tabla, puede ser el dueño
File= d:\orant\backup\fullexpor.dmp (archivo restaurado de la cinta)
Tables = (emp,cliente,...)
Log = d:\orant\backup\impt.log
UN EJEMPLO del archivo IMP_USER sería:
IMP Backup/Backup
Fromuser = contab (usuario dueño de los objetos a restaurar)
Touser = bajarinf (usuario en donde voy a bajar los objetos)
File= d:\orant\backup\fullexpor.dmp(archivo restaurado de la cinta)
Log = d:\orant\backup\impu.log
UN EJEMPLO del archivo IMP_FULL sería:
IMP Backup/Backup
Full = Y
File= d:\orant\backup\fullexpor.dmp
Log = d:\orant\backup\impf.log
Commit = Y
EN UNIX Crear un directorio Modificar uno de los siguientes tres archivos según el tipo de Import
que se desee realizar :
d:\orant\backup\Imp_tabla
d:\orant\backup\Imp_user
d:\orant\backup\Imp_full.
EXP USERID=Backup/Backup BUFFER=3076000 FILE=/u01/Backup/Fullexport.dmp FULL=Y COMPRESS=Y
GRANTS=Y INDEXES=Y CONSTRAINTS=Y ROWS=Y LOG=/u01/Backup/Fullexport.log
PROCESO ESTANDAR PARA LA RESTAURACION DE Cold-BackupPROCESO ESTANDAR PARA LA RESTAURACION DE Cold-Backup
Bajar estos archivos es tan sencillo como copiar los archivos del medio en donde se respaldaron a su posición original. Se debe tener en cuenta que cuando se esta en modo NOARCHIVELOG (este se verifica haciendo un select * from sys.v_$database) se debe bajar completamente, sin dejar ningún archivo de lado, de lo contrario la base de datos no reconocerá los archivos bajados o los que ya estaban y presentará problemas.
RECOMENDACIONES
Generar ayudas con EXP HELP=Y
El usuario con el que se va a hacer el full_export de la base de datos debe tener el rol exp_full_database. Evaluar si se hace por usuario (por tabla no ??) o full-export. O si se requiere Archive mode. El export incremental es recomendable cuando no se modifican mucho los datos. De escogerse uno de estos dos ver si hay un administrador que verifique cada incremental export y/o cumulative para consistencia. Cualquier duda consultar el Utilities users guide.
IMPORTIMPORT
El import se puede hacer a nivel de tabla, usuario o Full database dependiendo de los privilegios de quien importa y de la manera como se hizo el export.
SECUENCIA DE RECUPERACION UTILIZANDO IMPORT
Digite el comando IMP username / password PARFILE = filename o IMP PARFILE = filename
El username/password especifican quien hace el import, lo importante es que tenga los privilegios suficientes.
el tamaño del Buffer Size se estima como = rows_in_array * maximun_row_size
RECOMENDACIONES RECOMENDACIONES
Si se necesita importar tablas con campos tipo LONG debe aumentar el tamaño del Buffer Size por que se genera un error.
Para importar los indices se debe cambiar el default tablespace del usuario con el cual se desea hacer la restauración para que estos no se mezclen en el tablespace de los datos (este proceso es posterior al de la importación de los datos).
Debido a los privilegios que necesita el import para crear cada objeto seria aconsejable darle grant DBA o (IMP_FULL_DATABASE ??) al usuario con el cual se va a restaurar ??.(además de quotas por tablespace o unlimited tablespace.
Si se desea ayuda en el import se digita IMP HELP=Y mirar que es KEYWORD = value , = (value) o = (value,value,…)
OBJETOS DE LA BASE DE DATOSPara una mejor comprensión del tema es muy importante familiarizarse con los principales objetos con los cuales trabaja Oracle. Cada uno de ellos tiene una función específica o trabajo que realizar, y de su buen funcionamiento depende él óptimo desempeño de la Base de Datos.
Por seguridad e integridad de la información, Oracle maneja Esquemas; un esquema es una forma de referirse a un Objeto que ha sido creado por otro usuario y al cual puedo tener o no los privilegios para manipularlo.
Al necesitar manipular un registro de una tabla o un objeto creado por otro usuario y no tener los privilegios necesarios, debo anteponer el nombre del usuario creador del objeto seguido de un punto y del nombre del objeto "en la instrucción SQL". Ej: para seleccionar todos los registros de la tabla cliente debería escribir "SELECT * from VENTAS.cliente" en donde VENTAS es un usuario creado en la base de datos y el cual es el propietario de la tabla cliente.
TABLA: Es la unidad básica de almacenamiento en un sistema de bases de datos relacionales, en ellas son almacenados los datos de los usuarios y los datos del sistema Oracle; Cada tabla se compone de varias columnas las cuales cuentan con un tipo de datos asociado. La información sobre la estructura de todas las tablas se encuentra en el diccionario de datos y Oracle la utiliza para su funcionamiento.TABLA: Es la unidad básica de almacenamiento en un sistema de bases de datos relacionales, en ellas son almacenados los datos de los usuarios y los datos del sistema Oracle; Cada tabla se compone de varias columnas las cuales cuentan con un tipo de datos asociado. La información sobre la estructura de todas las tablas se encuentra en el diccionario de datos y Oracle la utiliza para su funcionamiento.
VISTA: Es una consulta SQL de una o varias tablas, la cual se encuentra almacenada en la base de datos y cuyos resultados se devuelven al usuario igual que los de una consulta a una tabla.
A diferencia de una tabla, una vista no contiene datos sino únicamente una consulta SQL. Son útiles en seguridad, pues se pueden crear por ejemplo para restringir el acceso a ciertos campos de una tabla (es decir a los usuarios no se les da acceso a toda la tabla, sino a los campos contenidos en la vista), también se utilizan para facilitar a los usuarios los (join) complejos entre tablas y la escritura de nombres largos o difíciles de las tablas o de sus columnas en las consultas creadas por ellos.
INDICE: Así como el índice de un libro ayuda a accesar su contenido de una manera mas ágil, un índice de una tabla le ayuda a la base de datos a recuperar información con mayor velocidad. Un índice es una copia en miniatura de una tabla con información sobre la(s) columna(s) que forman parte del índice, y no sobre todas las columnas de la tabla. De esta manera le proporcionan a Oracle un veloz acceso a los datos pues no necesitan subir a memoria los registros completos de la tabla sino únicamente la(s) columna(s) indexada(s) para proceder a realizar la búsqueda requerida, ello conlleva a que en la memoria se puedan cargar muchas mas columnas de registros deseados en lugar de registros completos no deseados. INDICE: Así como el índice de un libro ayuda a accesar su contenido de una manera mas ágil, un índice de una tabla le ayuda a la base de datos a recuperar información con mayor velocidad. Un índice es una copia en miniatura de una tabla con información sobre la(s) columna(s) que forman parte del índice, y no sobre todas las columnas de la tabla. De esta manera le proporcionan a Oracle un veloz acceso a los datos pues no necesitan subir a memoria los registros completos de la tabla sino únicamente la(s) columna(s) indexada(s) para proceder a realizar la búsqueda requerida, ello conlleva a que en la memoria se puedan cargar muchas mas columnas de registros deseados en lugar de registros completos no deseados.
SINONIMO: Es un nombre alternativo que se crea para un objeto de la base de datos; es normalmente utilizado para las tablas y las vistas de Oracle. Los sinónimos se crean normalmente para ocultar el propietario, la ubicación o el nombre real de una tabla (así otros usuarios la pueden accesar sin importar quien la haya creado o en donde se encuentre), también es utilizado para proporcionar a los usuarios nombres de objetos menos complicados que los reales.