viernes, 23 de febrero de 2018

Oracle 3- Oracle 12C , restaurar una copia de seguridad "gorda"

1. Introducción

Después de instalar con más pena que gloria el dichoso Oracle 12C, hoy intento abrir la pantallita con el navegador a la dirección https://localhost:5500/em y no encuentra el servidor. Tierra trágame!.

Despues de buscar en Google, encuentro esta página nada aclaradora de Oracle, donde me encuentro con este código, que solamente voy a utilizar una línea:


#!/bin/ksh -p

. /lib/svc/share/smf_include.sh

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib
export PATH=$PATH:$ORACLE_HOME/bin

function startup
{
        dbstart $ORACLE_HOME
}

function shutdown
{
        dbshut $ORACLE_HOME
}

case $1 in
    start) startup ;;
    stop)  shutdown ;;

    *) echo "Usage: $0 { start | stop }" >&2
       exit $SMF_EXIT_ERR_FATAL
       ;;
esac

exit $SMF_EXIT_OK

Ahora, abro una ventana y ejecuto


dbstart $ORACLE_HOME

y ya puedo acceder. Parece ser que así se arranca el servicio.

Tengo que restaurar 2 bases de datos Oracle. Para ello se me proporciona estos ficheros:

2 Ficheros de parámetros
  1. imp_EMPRESA.PAR
  2. imp_ADE_EMPRESA.PAR

1 Fichero de datos de una copia de seguridad

  1. EMPRESA_01.DUMP
4 Ficheros de datos de otra copia de seguridad
  1. ADE_EMPRESA_GTTL_01.dmp
  2. ADE_EMPRESA_GTTL_02.dmp
  3. ADE_EMPRESA_GTTL_03.dmp
  4. ADE_EMPRESA_GTTL_04.dmp

2 Ficheros log
  1. ADE_EMPRESA_GTTL.log
  2. exp_EMPRESA.log

2. Instrucciones previas

1. Se nos requiere tener instalada una versión de oracle 11 ó 12. Que en el post anterior se cargó.

2. Parece ser que es conveniente crear algun ROL. Para ello entrar en el SQL DEVELOPER y darle

CREATE ROLE LECTORES NOT IDENTIFIED;


3. Puede que pida otro ROLE. Si hace falta se debería crear de la misma manera.

4. Es aconsejable crear estos TABLESPACEs para la BD de gestión. siendo los marcado en rojo los mas importantes:

DATOS10, DATOS11, DATOS12, 
INDICES10, INDICES11,
STAT, LOBSTS, USERS, TOOLS

Se nos indica que solo el tablespace USER debe ser creado y con un espacio de 40 GB y expandible.

NOTA: El tablespace USER ya está creado por omisión cuando instalamos Oracle 12C!!

5. Para la BD Documental se piden estos TABLESPACEs:

ARCHDIG, LOBDTS, LOBIDX,
INDICES, DATOS

Pero estamos en la misma situación, ya que se arreglar para utilizar solamente el tablespace USER definido anteriormente. Pero como no quiero estropear la instalación que tanto me costó hacer, voy a crearme un tablespace llamado XIMOTS.

6. Para crear un tablespace se utiliza la orden en el SQL Developer:

CREATE TABLESPACE XIMOTS DATAFILE '/u01/app/oracle/oradata/orcl/ximots01.dbf' SIZE 30000M  AUTOEXTEND ON   ONLINE;

Donde los parametros asignados son:
XIMOTS: Nombre del Tablespace
'/u01/app/oracle/oradata/orcl/ximots01.dbf': Ruta del fichero (el fichero en si, puede no existir, pero si la carpeta donde ubicarlo). Normalmente lo ubicaremos junto a los demás.
30000M: Tamaño inicial del Tablespace. Ojo, nos hacen falta 40GB, por tanto 40000MB, pero hay que crearlo mas pequeño pues nos pasamos del tamaño máximo!!!


Podemos ver el tamaño de los tablespaces siguiendo las instrucciones de Snipplr. Para ello ejecutamos en SQL Developer:


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
SELECT
   df.tablespace_name,
   df.file_name,
   df.bytes/1024 Allocated_kb,
   free.free_kb,
   Round(free.free_kb/(df.bytes/1024)*100) Percent_Free
FROM
   dba_data_files df,
   (SELECT file_id, SUM(bytes)/1024 free_kb
    FROM dba_free_space GROUP BY file_id) free
WHERE
   df.file_id=free.file_id
ORDER BY
   Percent_Free;
 

Y vemos que se ha creado correctamente




7. Parece ser que los datos se cargarán en un usuario (parece ser que Oracle confunde esquemas, bases de datos con usuarios!!) que le dará por nombre OPS$RGTTORA 

8. Parece ser que lo mas cómodo es usar Ficheros de Parámetros, que són los 2 primeros ficheros que nos dan

3. Instrucciones de carga

1. Editar el contenido del fichero de parámetros imp_EMPRESA.PAR:


DIRECTORY=DATA_PUMP_DIR

DUMPFILE=EMPRESA_%U.DUMP

LOGFILE=imp_EMPRESA.log

REMAP_TABLESPACE=DATOS10:XIMOTS,DATOS11:XIMOTS,DATOS12:XIMOTS,INDICES10:XIMOTS,INDICES11:XIMOTS,STAT:XIMOTS,LOBSTS:XIMOTS,TOOLS:XIMOTS,USERS:XIMOTS

REMAP_SCHEMA=OPS$GTTORA:EMPRESA

CONTENT=ALL

Como puede verse, se está remapeando todos los tablespaces a XIMOTS, por tanto solo se debe de crear esta tablespace.

Tambien se ha remapeado el usuario OPS$GTTORA a EMPRESA


2. Buscar el directorio "DATA_DUMP_DIR". Para ello ejecutar esta sentencia en el SQL Developer:

SELECT directory_path
  FROM dba_directories
WHERE directory_name = 'DATA_PUMP_DIR';

Y nos da el siguiente directorio

/u01/app/oracle/admin/orcl/dpdump/

3. Una vez localizado este directorio, copiar en ese directorio el fichero de parámetros y el de datos:

  imp_EMPRESA.PAR
  EMPRESA_01.DUMP

4. En un ventana terminal de sistema y con usuario oracle, lanzar

impdp SYSTEM/CONTRASEÑA@orcl parfile= imp_EMPRESA.par

siendo @orcl el nombre del SID que se creo.

Si no nos acordamos se puede comprobar así con SQLDeveloper

select instance_name from v$instance;

Pero nos falla y sale este error 

LRM-00109: could not open parameter file 'imp_EMPRESA.par'
LRM-00113: error when processing file 'imp_EMPRESA.par'
 

A continuación, en el terminal me situo en el directorio

/u01/app/oracle/admin/orcl/dpdump/ 

y ejecuto la dichosa orden y voila! A funcionar


Tras el proceso se generará un fichero log con el resultado imp_EMPRESA.log

5. Análogamente se hacen los mismos pasos para la otra BD ADE_EMPRESA, con la diferencia de que hay 4 ficheros de backup.

4. Posibles problemas.

1. Si sale mal la copia y queremos volver a realizarla, podemos eliminar la el "usuario" EMPRESA.

Para ello en un terminal ejecutamos

sqlplus / as sysdba

y una vez dentro

SQL> drop user empresa cascade;

A veces hace caso y otras no, pero cuando hace caso tarda muchísimo.


5. Bibliogragía aconsejada


Oracle Database Concepts.
René Nyffenegger.
Carlos García de Marcos (Adictos al trabajo) 
Oracle Data Pump Import.
StackOverflow.https://stackoverflow.com/questions/15664924/dropping-connected-users-in-oracle-database

No hay comentarios :

Publicar un comentario