MERCADOS FINANCIEROS

jueves, 17 de octubre de 2019

Nuevas funcionalidades de Oracle Datapump 12c Release 1 y 2

Nuevas funcionalidades de Oracle Datapump 12c Release 1 y 2

Por Jorge Zorrilla
Publicado en Marzo 2018

Revisado por Francisco Riccio



Una de las funcionalidades mas usadas en la base de datos Oracle es Oracle Datapump.  La utilizamos para migrar bases de datos, mover bases de datos a diferentes tipos de servidores, desfragmentar tablas con mucha operación, realizar Transport Tablespace e inclusive para realizar Backups de la base de datos; aunque este último no es una práctica recomendada.

Datapump es una herramienta muy útil para los DBAs y, con la nueva versión Oracle 12c, no podía quedarse sin tener mejoras que nos podrían ayudar en diferentes tareas.

A continuación, voy a detallar las mejoras para Oracle 12c Release 1 y reléase 2 por separado.


Oracle 12c Release 1



1. Deshabilitar el Logging en el IMPDP
¿Cuántas veces hemos ejecutado una importación de un esquema grande y nuestro Flash Recovery Area se llena por generación Archivelogs?  En muchas ocasiones debemos poner la base de datos en modo NO ARCHIVE para poder realizar la importación de manera rápida y sin problemas.

En Oracle 12c se utiliza el parámetro TRANSFORM junto a la opción DISABLE_ARCHIVE_LOGGING para deshabilitar la generación de Logging sobre tablas e índices durante la ejecución de una importación.  Muy útil para cargas de gran volumen de datos y de manera más rápida.

Realizamos el exportado de un esquema completo en la base de datos origen.

expdp system@ORCL DUMPFILE=SH_user.dmp LOGFILE=exp_SH.log
DIRECTORY=EXP_DIR SCHEMAS=SH


Realizamos la importación del esquema en la base de datos destino con la opcion de generación de Logging deshabilitada.

impdp system@PRD DUMPFILE=SH_user.dmp LOGFILE=imp_SH.log
DIRECTORY=IMP_DIR SCHEMAS=SH TRANSFORM=DISABLE_ARCHIVE_LOGGING:Y




2. Compresión de tablas durante el IMPDP
Usamos la opción TRANSFORM junto con el parámetro TABLE_COMPRESSION_CLAUSE para definir el tipo de compresión que se le aplica a una tabla durante la ejecución de IMPDP sobre la base de datos destino.

Revisamos el tamaño de una tabla en el origen y luego realizamos una exportación de la misma

SQL> select owner, segment_name, bytes/1024/1204 MBytes  from dba_segments where segment_name='CUSTOMERS' and owner='SH';

OWNER         SEGMENT_NAME                    MBYTES
------------- ------------------------------ ----------
SH            CUSTOMERS                       10.73

[oracle@oracle12c dump]$ expdp system@ORCL DUMPFILE=customer.dmp LOGFILE=exp_customer.log DIRECTORY=EXP_DIR TABLES=SH.CUSTOMERS


Realizamos la importación con la opción de compresión en la base de datos destino. Las opciones para el parámetro TABLE_COMPRESSION_CLAUSE son:
  • NONE
  • NOCOMPRESS
  • COMPRESS 
  • ROW STORE COMPRESS BASIC
  • ROW STORE COMPRESS ADVANCED
  • COLUMN STORE COMPRESS FOR QUERY
  • COLUMN STORE COMPRESS FOR ARCHIVE

Prestar atención a como se define las compresiones con espacios en blanco.

impdp system@PRD DUMPFILE=customer.dmp LOGFILE=imp_customer.log
DIRECTORY=IMP_DIR TRANSFORM=TABLE_COMPRESSION_CLAUSE:\"ROW STORE COMPRESS
ADVANCED\"

Processing object type TABLE_EXPORT/TABLE/TABLE
Processing object type TABLE_EXPORT/TABLE/TABLE_DATA
. . imported "SH"."CUSTOMERS"                      10.27 MB   55500 rows
Processing object type TABLE_EXPORT/TABLE/GRANT/OWNER_GRANT/OBJECT_GRANT


Finalmente verificamos si la tabla fue importada con la compresión activada.

SQL> select OWNER, TABLE_NAME, COMPRESSION, COMPRESS_FOR from dba_tables where owner='SH' and table_name='CUSTOMERS';

OWNER    TABLE_NAME      COMPRESS COMPRESS_FOR
-------- --------------- -------- --------------
SH       CUSTOMERS       ENABLED  ADVANCED


SQL> select owner,segment_name, bytes/1024/1204 MBytes  from dba_segments where segment_name='CUSTOMERS' and owner='SH';

OWNER         SEGMENT_NAME       MBYTES
------------- -------------- ----------
SH            CUSTOMERS            5.95




3. Convertir Vistas en Tablas
Mediante la opción VIEWS_AS_TABLES podemos exportar una vista como si fuera una tabla. 
Datapump guarda la definición de la nueva tabla y los objetos dependientes de la vista original. Los permisos asociados a la vista son replicados en la nueva tabla. 
Muy útil para mover información de diferentes tablas relacionadas hacia tablas consolidadas y para importar a tablas Des-normalizadas.

Creamos una vista simple y verificamos el objeto.

SQL> create view hr.EMP_VIEW as select e.EMPLOYEE_ID, e.FIRST_NAME||' '||e.LAST_NAME "NOMBRE",
e.HIRE_DATE, j.JOB_TITLE, d.DEPARTMENT_NAME from hr.EMPLOYEES e, hr.DEPARTMENTS d, hr.JOBS
j where e.JOB_ID = j.JOB_ID and e.DEPARTMENT_ID = d.DEPARTMENT_ID order by e.EMPLOYEE_ID;

View created.

SQL> select OWNER, OBJECT_NAME, OBJECT_TYPE, CREATED, STATUS from dba_objects where OBJECT_NAME='EMP_VIEW';

OWNER      OBJECT_NAME      OBJECT_TYPE   CREATED   STATUS
---------- ---------------- ------------- --------- -------
HR         EMP_VIEW         VIEW          10-FEB-18 VALID



Realizamos la transformación desde la ejecución EXPDP.

expdp system@ORCL DUMPFILE=vista_tabla.dmp LOGFILE=exp_vista.log
DIRECTORY=EXP_DIR VIEWS_AS_TABLES=HR.EMP_VIEW

impdp system@PRD DUMPFILE=vista_tabla.dmp LOGFILE=imp_tabla.log
DIRECTORY=IMP_DIR REMAP_TABLE=EMP_VIEW:EMP_TBL



Verificamos que la vista se ha convertido en tabla y con un nuevo nombre EMP_TBL en la base de datos destino.

SQL> select OWNER, OBJECT_NAME, OBJECT_TYPE, CREATED, STATUS from dba_objects where OBJECT_NAME='EMP_TBL';

OWNER    OBJECT_NAME        OBJECT_TYPE   CREATED   STATUS
-------- ------------------ ------------- --------- -------
HR       EMP_TBL            TABLE         10-FEB-18 VALID




4. Mostrar el tiempo en las ejecuciones Datapump
Usamos la opción LOGTIME durante la exportación o importación para mostrar la fecha y hora de cada registro del Log.  Es una funcionalidad simple, pero nos podría ayudar en toma de tiempos de ejecución.  Los valores que permite esta opción son: NONE, STATUS, LOGFILE, ALL

Ejecutamos el EXPDP y observamos el log.

expdp system@ORCL DUMPFILE=HR_OE.dmp LOGFILE=exp_HR_OE.log
DIRECTORY=EXP_DIR SCHEMAS=HR,OE LOGTIME=ALL

Export: Release 12.2.0.1.0 - Production on Sat Feb 10 17:49:20 2018

Copyright (c) 1982, 2017, Oracle and/or its affiliates.  All rights reserved.
Password:

Connected to: Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit
Production
10-FEB-18 17:49:36.337: Starting "SYSTEM"."SYS_EXPORT_SCHEMA_01": 
system/********@ORCL DUMPFILE=HR_OE.dmp LOGFILE=exp_HR_OE.log DIRECTORY=EXP_DIR
SCHEMAS=HR,OE LOGTIME=ALL
10-FEB-18 17:49:45.080: Processing object type SCHEMA_EXPORT/TABLE/TABLE_DATA
10-FEB-18 17:49:46.289: Processing object type
SCHEMA_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS
10-FEB-18 17:49:46.471: Processing object type
SCHEMA_EXPORT/TABLE/INDEX/STATISTICS/FUNCTIONAL_INDEX/INDEX_STATISTICS
10-FEB-18 17:49:46.868: Processing object type
SCHEMA_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
10-FEB-18 17:49:55.992: Processing object type SCHEMA_EXPORT/STATISTICS/MARKER
10-FEB-18 17:49:56.866: Processing object type SCHEMA_EXPORT/USER
10-FEB-18 17:49:57.110: Processing object type SCHEMA_EXPORT/SYSTEM_GRANT 10-FEB-18 17:49:57.251: Processing object type SCHEMA_EXPORT/ROLE_GRANT
10-FEB-18 17:49:57.286: Processing object type SCHEMA_EXPORT/DEFAULT_ROLE
10-FEB-18 17:49:57.405: Processing object type SCHEMA_EXPORT/TABLESPACE_QUOTA
10-FEB-18 17:49:58.273: Processing object type
SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMA
10-FEB-18 17:49:58.658: Processing object type SCHEMA_EXPORT/SYNONYM/SYNONYM
10-FEB-18 17:49:58.842: Processing object type SCHEMA_EXPORT/TYPE/INC_TYPE
10-FEB-18 17:49:59.663: Processing object type SCHEMA_EXPORT/TYPE/TYPE_SPEC
10-FEB-18 17:50:00.559: Processing object type
SCHEMA_EXPORT/TYPE/GRANT/OWNER_GRANT/OBJECT_GRANT
10-FEB-18 17:50:01.795: Processing object type SCHEMA_EXPORT/SEQUENCE/SEQUENCE
10-FEB-18 17:50:07.960: Processing object type SCHEMA_EXPORT/XMLSCHEMA/XMLSCHEMA
10-FEB-18 17:50:16.997: Processing object type SCHEMA_EXPORT/TABLE/TABLE
10-FEB-18 17:50:27.397: Processing object type 
10-FEB-18 17:50:54.307: Processing object type SCHEMA_EXPORT/TABLE/INDEX/INDEX





5. Encriptación de password
Para poder encriptar los archivos Dump de una operación EXPDP, podemos utilizar la opción de encriptación con password.  Lamentablemente en versiones anteriores es necesario colocar el password como parámetro del comando EXPDP e IMPDP.  

Para evitar colocar el password como parámetro se define el parámetro
ENCRYPTION_PWD_PROMPT.  De esta manera el password se solicita mediante un Prompt de manera más segura.

expdp system@ORCL DUMPFILE=encrypt_SH.dmp LOGFILE=exp_SH_encryp.log
DIRECTORY=EXP_DIR SCHEMAS=SH ENCRYPTION_PWD_PROMPT=Y

Export: Release 12.2.0.1.0 - Production on Sat Feb 10 19:03:17 2018
 
Copyright (c) 1982, 2017, Oracle and/or its affiliates.  All rights reserved.
Connected to: Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 -
64bit Production

Encryption Password:
Starting "SYSTEM"."SYS_EXPORT_SCHEMA_01":  system/********@ORCL
DUMPFILE=encrypt_SH.dmp LOGFILE=exp_SH_encryp.log DIRECTORY=EXP_DIR
SCHEMAS=SH ENCRYPTION_PWD_PROMPT=Y





6. Compresión de archivos Dump
Podemos elegir el parámetro COMPRESSION_ALGORITHM para comprimir los archivos Dumps generados por el comando EXPDP. Con la opción de base de datos Advanced Compression podemos seleccionar diferentes niveles de compresión.
  • BASIC
  • LOW
  • MEDIUM
  • HIGH
La opción de compresión es muy efectiva cuando la base de datos es muy grande y no se tiene mucha capacidad para almacenar archivos Dumps.  
Mientras mayor sea la compresión, la inversión de recursos de CPU aumenta.

expdp system@ORCL DUMPFILE=FULL_DB.dmp LOGFILE=exp_full.log
DIRECTORY=EXP_DIR FULL=Y COMPRESSION=ALL COMPRESSION_ALGORITHM=HIGH

Export: Release 12.2.0.1.0 - Production on Sat Feb 10 19:34:02 2018

Copyright (c) 1982, 2017, Oracle and/or its affiliates.  All rights reserved.


Connected to: Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
Starting "SYSTEM"."SYS_EXPORT_FULL_01":  system/********@ORCL
DUMPFILE=FULL_DB.dmp LOGFILE=exp_full.log DIRECTORY=EXP_DIR FULL=Y
COMPRESSION=ALL COMPRESSION_ALGORITHM=HIGH





7. Datapump en Pluggable Database
Con la nueva arquitectura Oracle 12c Multitenant podemos contar con bases de datos Pluggable. El procedimiento para realizar exportaciones e importaciones, con Datapump, no es diferente del procedimiento tradicional.   

Por lo que es posible mover información:
  • Desde una base de datos Non-CDB hacia un Pluggable, o viceversa.
  • Desde una base de datos Pluggable hacia otro Pluggable.






Oracle 12c Release 2



1. Exportación e importación de la Metadata en paralelo
Hasta la versión Oracle 12c Release 1, por más que uno define la opción PARALLEL a una operación de exportación o importación de Metadata, esta acción se realizaba de manera serial.

En la versión Oracle 12c Release 2, ya es posible realizar la exportación e importación en paralelo.  
Si la base de datos contiene información de tablas e índices particionados, la exportación de la Metadata de cada partición puede ejecutarse de manera paralela. Además, durante una importación, es posible realizar la creación de índices y constraint en forma paralela.


expdp system@ORCL DUMPFILE=METADATA_DB_%U.dmp LOGFILE=exp_meta_full.log 
DIRECTORY=EXP_DIR FULL=Y CONTENT=METADATA_ONLY PARALLEL=2  

Export: Release 12.2.0.1.0 - Production on Sat Feb 10 21:24:01 2018  

Copyright (c) 1982, 2017, Oracle and/or its affiliates.  All rights reserved. 
Password: 
 
Connected to: Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production 
Starting "SYSTEM"."SYS_EXPORT_FULL_01":  system/********@ORCL 
DUMPFILE=METADATA_DB_%U.dmp LOGFILE=exp_meta_full.log DIRECTORY=EXP_DIR 
FULL=Y CONTENT=METADATA_ONLY PARALLEL=2 
… 
 
Dump file set for SYSTEM.SYS_EXPORT_FULL_01 is: 
  /u01/dump/METADATA_DB_01.dmp 
  /u01/dump/METADATA_DB_02.dmp 
Job "SYSTEM"."SYS_EXPORT_FULL_01" successfully completed 
 




2. Parfile en el log de Oracle Datapump
Cuando ejecutar el comando EXPDP o IMPDP junto al parámetro PARFILE. El contenido del archive se imprime en el log del comando ejecutado.  
Esta funcionalidad es muy útil para poder revisar la ejecución de una operación de exportación cuando no conocemos el procedimiento que se ha utilizado.

Creamos un Parfile de ejemplo

[oracle@oracle12c dump]$ cat parfileDUMP.txt 
DUMPFILE=dump_SH_OE%U.dmp 
LOGFILE=exp_SH_OE.log 
DIRECTORY=EXP_DIR 
SCHEMAS=HR,OE PARALLEL=2 




Ejecutamos el comando EXPDP y utilizamos el Parfile.

expdp system@ORCL parfile=parfileDUMP.txt 
 
Export: Release 12.2.0.1.0 - Production on Sat Feb 10 21:43:15 2018 
 
Copyright (c) 1982, 2017, Oracle and/or its affiliates.  All rights reserved. 
Password: 
 
Connected to: Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production 
Starting "SYSTEM"."SYS_EXPORT_SCHEMA_01":  system/********@ORCL parfile=parfileDUMP.txt
 …




Revisamos el log de la ejecución y observamos los parámetros del Parfile definidos.

[oracle@oracle12c dump]$ cat exp_SH_OE.log 
;;; 
Export: Release 12.2.0.1.0 - Production on Sat Feb 10 21:43:15 2018  

Copyright (c) 1982, 2017, Oracle and/or its affiliates.  All rights reserved. 
;;; 
Connected to: Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 
64bit Production 
;;; 
*************************************************************************
* 
;;; Parfile values: 
;;;  parfile:  parallel=2 
;;;  parfile:  schemas=HR,OE 
;;;  parfile:  directory=EXP_DIR 
;;;  parfile:  logfile=exp_SH_OE.log 
;;;  parfile:  dumpfile=dump_SH_OE%U.dmp 
;;; 
************************************************************************* * 
Starting "SYSTEM"."SYS_EXPORT_SCHEMA_01":  system/********@ORCL parfile=parfileDUMP.txt 
Processing object type SCHEMA_EXPORT/USER 
Processing object type 
SCHEMA_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS 
Processing object type 
SCHEMA_EXPORT/TABLE/INDEX/STATISTICS/FUNCTIONAL_INDEX/INDEX_STATISTICS 
...





3. Nuevas opciones para nombrar los archivos Dump.
En versiones anteriores cuando se realiza una operación de exportación en paralelo, se debe colocar la variable %U en el nombre de los archivos Dump.  Es necesario para poder diferenciar los nombres de los diferentes archivos generados. %U utiliza una variable numérica que puede ir de 00 a 99.

En Oracle 12c Release 2 tenemos nuevas opciones para poder nombrar los archivos Dumps. Los más utilizados son:
  • %T o %t: Define la fecha en formato YYYYMMDD
  • %L o %l: Realiza la misma operación que la variable %U, pero expande su límite hasta 10 dígitos (valor límite: 2147483646)

También podemos utilizar las variables que identifican solo una porción de la fecha actual.
  • %D o %d :  Define el día en formato DD 
  • %M o %m: Define el mes en formato MM 
  • %Y o %y: Define el año en formato YYYY


Ejecutamos el comando EXPDP y verificamos el nombre de los archivos generados.

expdp system@ORCL DUMPFILE=FULL_DB_%T_%L.dmp LOGFILE=exp_bd_full.log DIRECTORY=EXP_DIR
FULL=Y PARALLEL=4
 
Export: Release 12.2.0.1.0 - Production on Sun Feb 11 01:24:55 2018 

Copyright (c) 1982, 2017, Oracle and/or its affiliates.  All rights reserved. 
Password: 

Connected to: Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production 
Starting "SYSTEM"."SYS_EXPORT_FULL_01":  system/********@ORCL 
DUMPFILE=FULL_DB_%T_%L.dmp LOGFILE=exp_bd_full.log DIRECTORY=EXP_DIR 
FULL=Y PARALLEL=4 
… 
************************************************************************* ***** 
Dump file set for SYSTEM.SYS_EXPORT_FULL_01 is: 
  /u01/dump/FULL_DB_20180211_01.dmp 
  /u01/dump/FULL_DB_20180211_02.dmp 
  /u01/dump/FULL_DB_20180211_03.dmp 
  /u01/dump/FULL_DB_20180211_04.dmp 





4. Nuevos valores para el parámetro DATA_OPTION con EXPDP
El parámetro DATA_OPTION tiene nuevas opciones tanto para EXPDP como IMPDP. Detallemos primero las opciones para EXPDP.
4.1 GROUP_PARTITION_TABLE_DATA
Indica al Datapump que cargue la información de una tabla particionada en una sola operación en el Dump, en lugar de cargar las particiones por separado.   

La definición de la tabla no se toma en cuenta al momento de hacer el importado, lo que permite realizar la tarea mucho más rápido.

Es importante aclarar que la estructura de la tabla se mantiene sin cambios. Esta opción solo permite acelerar la operación de exportación e importación.

Ejecutamos el comando EXPDP sin la opción GROUP_PARTITION_TABLE_DATA y observamos como exporta las particiones de una tabla. 

expdp system@ORCL DUMPFILE=SH_SALES2.dmp LOGFILE=exp_SH_SALES2.log 
DIRECTORY=EXP_DIR TABLES=SH.SALES 
… 
Processing object type TABLE_EXPORT/TABLE/CONSTRAINT/REF_CONSTRAINT 
Processing object type TABLE_EXPORT/TABLE/INDEX/BITMAP_INDEX/INDEX 
. . exported "SH"."SALES":"SALES_Q4_2001" rows   2.258 MB  69749 
. . exported "SH"."SALES":"SALES_Q3_1999" rows   2.166 MB  67138 
. . exported "SH"."SALES":"SALES_Q3_2001"     2.130 MB  65769 rows 
. . exported "SH"."SALES":"SALES_Q2_2001"        2.051 MB   63292 rows 
. . exported "SH"."SALES":"SALES_Q1_1999"        2.071 MB   64186 rows 
. . exported "SH"."SALES":"SALES_Q1_2001"        1.965 MB   60608 rows 
. . exported "SH"."SALES":"SALES_Q4_1999"        2.014 MB   62388 rows 
. . exported "SH"."SALES":"SALES_Q1_2000"        2.012 MB   62197 rows 
. . exported "SH"."SALES":"SALES_Q3_2000"        1.910 MB   58950 rows 
. . exported "SH"."SALES":"SALES_Q4_2000"        1.814 MB   55984 rows 
Master table "SYSTEM"."SYS_EXPORT_TABLE_01" successfully loaded/unloaded 
. 
. 
elapsed 0 00:00:37 


Ejecutamos nuevamente el comando EXPDP, pero con la opción GROUP_PARTITION_TABLE_DATA y observamos que la tabla se exporta de una sola operación y un poco más rápido.


expdp system@ORCL DUMPFILE=SH_SALES.dmp LOGFILE=exp_SH_SALES.log 
DIRECTORY=EXP_DIR TABLES=SH.SALES DATA_OPTIONS=GROUP_PARTITION_TABLE_DATA
… 
Processing object type TABLE_EXPORT/TABLE/CONSTRAINT/REF_CONSTRAINT 
Processing object type TABLE_EXPORT/TABLE/INDEX/BITMAP_INDEX/INDEX 
. . exported "SH"."SALES"                                29.62 MB  918843 rows 
Master table "SYSTEM"."SYS_EXPORT_TABLE_01" successfully loaded/unloaded 
.
. 
elapsed 0 00:00:35 






4.2 VERIFY_STREAM_FORMAT
Valida el formato de la data antes que se escriba en los archivos Dumps.  Esto permite asegurarnos que no hay errores en los archivos Dumps generados.  
Puede ser útil para archivos Dumps que serán almacenados en discos externos o Cintas.

expdp system@ORCL DUMPFILE=HR_valid.dmp LOGFILE=exp_HR_valid.log 
DIRECTORY=EXP_DIR SCHEMAS=HR DATA_OPTIONS=VERIFY_STREAM_FORMAT 
 
Export: Release 12.2.0.1.0 - Production on Sun Feb 11 03:25:56 2018 
 
Connected to: Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production 
Starting "SYSTEM"."SYS_EXPORT_SCHEMA_01":  system/********@ORCL 
DUMPFILE=HR_valid.dmp LOGFILE=exp_HR_valid.log DIRECTORY=EXP_DIR 
SCHEMAS=HR DATA_OPTIONS=VERIFY_STREAM_FORMAT 
… 
Dump file set for SYSTEM.SYS_EXPORT_SCHEMA_01 is: 
  /u01/dump/HR_valid.dmp 
Job "SYSTEM"."SYS_EXPORT_SCHEMA_01" successfully completed at Sun Feb 11 
03:26:52 2018 elapsed 0 00:00:53 





5. Nuevos valores para el parámetro DATA_OPTION con IMPDP
Ahora veremos las opciones para IMPDP


5.1 TRUST_EXISTING_TABLE_PARTITIONS

La opción TRUST_EXISTING_TABLE_PARTITIONS le indica al Datapump que la estructura de una tabla particionada ya existe en la base de datos destino y es igual a la base de datos origen.  De tal manera, Datapump puede realizar la importación de datos en paralelo en las diferentes particiones. Si la estructura no es igual podría darse un error de carga.

ORA-31693: Table data object "SH"."SALES ":"SALES_Q3_2001" failed to load/unload and is being 
skipped due to error:  
ORA-29913: error in executing ODCIEXTTABLEFETCH callout 
ORA-14401: inserted partition key is outside specified partition



Para explicarlo mejor, revisamos el siguiente ejemplo.  

Cuando realizamos operaciones de exportación y importación sobre una tabla particionada, esta operación se realiza de manera serial, por mas que uno le define paralelismo.  El paralelismo ayuda en diferentes tablas, pero no en particiones de una tabla.
Lo podemos observar en la siguiente tarea de exportación con la opción METRICS=Y (una tarea de importación funciona de igual manera)

expdp system@ORCL DUMPFILE=SH_SALES3_%U.dmp LOGFILE=exp_SH_SALES3.log 
DIRECTORY=EXP_DIR TABLES=SH.SALES METRICS=Y PARALLEL=2  

Connected to: Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production 
Starting "SYSTEM"."SYS_EXPORT_TABLE_01":  system/********@ORCL 
DUMPFILE=SH_SALES3_%U.dmp LOGFILE=exp_SH_SALES3.log DIRECTORY=EXP_DIR 
TABLES=SH.SALES METRICS=Y PARALLEL=2 
W-1 Startup took 0 seconds 
W-2 Startup took 1 seconds 
… 
W-1 . . exported "SH"."SALES":"SALES_Q4_2001"                2.258 MB   
69749 rows in 0 seconds using direct_path 
W-1 . . exported "SH"."SALES":"SALES_Q3_1999"                2.166 MB   
67138 rows in 0 seconds using direct_path 
W-1 . . exported "SH"."SALES":"SALES_Q3_2001"                2.130 MB   
65769 rows in 1 seconds using direct_path 
W-1 . . exported "SH"."SALES":"SALES_Q2_2001"                2.051 MB   
63292 rows in 0 seconds using direct_path 
W-1 . . exported "SH"."SALES":"SALES_Q1_1999"                2.071 MB   
64186 rows in 0 seconds using direct_path 
W-1 . . exported "SH"."SALES":"SALES_Q1_2001"                1.965 MB   
60608 rows in 0 seconds using direct_path 
W-1 . . exported "SH"."SALES":"SALES_Q4_1999"                2.014 MB   
62388 rows in 0 seconds using direct_path



Ahora, volvemos a ejecutar la importación en la base de datos pero con la opcion TRUST_EXISTING_TABLE_PARTITIONS, además utilizamos la opción TABLE_EXISTS_ACTION = TRUNCATE. Vamos a observar que tanto el proceso W-1 y W-2 realizan la cargar la datos en cada partición.

impdp system@PRD DUMPFILE=SH_SALES3_%U.dmp LOGFILE=imp_SH_SALES3.log 
DIRECTORY=IMP_DIR TABLES=SH.SALES METRICS=Y PARALLEL=2 
TABLE_EXISTS_ACTION = TRUNCATE 
DATA_OPTIONS=TRUST_EXISTING_TABLE_PARTITIONS 
 
Import: Release 12.2.0.1.0 - Production on Sun Feb 11 03:56:03 2018 
 
W-1 Startup took 0 seconds 
W-1 Master table "SYSTEM"."SYS_IMPORT_TABLE_01" successfully loaded/unloaded 
Starting "SYSTEM"."SYS_IMPORT_TABLE_01":  system/********@PRD 
DUMPFILE=SH_SALES3_%U.dmp LOGFILE=imp_SH_SALES3.log DIRECTORY=IMP_DIR 
TABLES=SH.SALES METRICS=Y PARALLEL=2 TABLE_EXISTS_ACTION=TRUNCATE 
DATA_OPTIONS=TRUST_EXISTING_TABLE_PARTITIONS 
W-1 Processing object type TABLE_EXPORT/TABLE/TABLE 
W-1 Table "SH"."SALES" exists and has been truncated. Data will be loaded but all 
dependent metadata will be skipped due to table_exists_action of truncate 
W-1      Completed 1 TABLE objects in 4 seconds 
W-1      Completed by worker 1 1 TABLE objects in 4 seconds 
W-1 Processing object type TABLE_EXPORT/TABLE/TABLE_DATA 
W-2 Startup took 6 seconds 
W-1 . . imported "SH"."SALES":"SALES_Q4_2001"                2.258 MB   
69749 rows in 5 seconds using external_table 
W-2 . . imported "SH"."SALES":"SALES_Q1_1999"                2.071 MB   
64186 rows in 4 seconds using external_table 
W-2 . . imported "SH"."SALES":"SALES_Q1_2001"                1.965 MB   
60608 rows in 3 seconds using external_table 
W-1 . . imported "SH"."SALES":"SALES_Q3_1999"                2.166 MB   
67138 rows in 5 seconds using external_table 
W-2 . . imported "SH"."SALES":"SALES_Q4_1999"                2.014 MB   
62388 rows in 4 seconds using external_table 
W-1 . . imported "SH"."SALES":"SALES_Q3_2001"                2.130 MB   
65769 rows in 3 seconds using external_table 
W-2 . . imported "SH"."SALES":"SALES_Q1_2000"                2.012 MB   
62197 rows in 2 seconds using external_table 
W-2 . . imported "SH"."SALES":"SALES_Q3_2000"                1.910 MB   
58950 rows in 3 seconds using external_table 
W-1 . . imported "SH"."SALES":"SALES_Q2_2001"                2.051 MB   
63292 rows in 5 seconds using external_table 
W-2 . . imported "SH"."SALES":"SALES_Q4_2000"                1.814 MB 




5.2  VALIDATE_TABLE_DATA
Durante las tareas de importación; Datapump valida los campos de Numero y Fecha de una tabla antes de realizar la carga de datos.  Ante algún error podría devolver un mensaje de error.

ORA-02374: conversion error loading table "HR"."EMPLOYEES" 
ORA-12899: value too large for column C1 (actual: 500, maximum: 498) 
ORA-02372: data for row: C8 : '

Esta opción podría servir de mucho cuando estamos haciendo migraciones de base de datos con diferente CHARACTER SET.
impdp system@PRD DUMPFILE=HR_schema.dmp LOGFILE=imp_HR1.log 
DIRECTORY=IMP_DIR SCHEMAS=HR DATA_OPTIONS=VALIDATE_TABLE_DATA 

Import: Release 12.2.0.1.0 - Production on Sun Feb 11 08:31:57 2018 

Copyright (c) 1982, 2017, Oracle and/or its affiliates.  All rights reserved.





6. Nuevas opciones para NETWORK_LINK
El parámetro NETWORK_LINK es un parámetro bastante utilizado porque nos permite realizar operaciones de importación sin necesidad de archivos Dumps.  Lastimosamente, tiene sus limitaciones.   En Oracle 12c reléase 2 algunas de esas limitaciones han sido superadas.  Entre ellas tenemos:
  • Soporte de Tipos de datos LONG. Una tabla con este tipo de dato, no utiliza el procedimiento común de INSERT AS SELECT sino el procedimiento OCIDirPathUnload.

  • El parámetro ACCESS_METHOD ya puede ser utilizado junto con NETWORK_LINK

  • Compresión de datos por la red con los parámetros DATA_OPTIONS = ENABLE_NETWORK_COMPRESSION y ACCESS_METHOD = DIRECT_PATH. La compresión se realiza en la base de datos origen y luego se envía por la red. Finalmente, la data se descomprime al llegar a la base de datos destino.


impdp system@PRD LOGFILE=imp_SH.log SCHEMAS=SH NETWORK_LINK=orcl 
DATA_OPTIONS=ENABLE_NETWORK_COMPRESSION ACCESS_METHOD=DIRECT_PATH 

Import: Release 12.2.0.1.0 - Production on Sun Feb 11 08:31:57 2018 

Copyright (c) 1982, 2017, Oracle and/or its affiliates.  All rights reserved.





7. Cambio de nombre de directorio para datafiles
Cuando deseamos cambiar el nombre a un Datafile durante una importación, utilizamos la opción REMAP_DATAFILE, pero si es una gran cantidad de archivos, es difícil realizar el cambio de nombre uno a uno.  

En Oracle 12c reléase 2 podemos utilizar la opción REMAP_DIRECTORY para poder cambiar el nombre de todo un grupo de datafiles que se encuentran en un directorio especifico. Los parámetros REMAP_DATAFILE y REMAP_DIRECTORY no pueden ser definidos en un mismo comando Datapump

Ejecutamos una exportación del tablespace USERS

expdp system@ORCL DUMPFILE=USER_tbs.dmp LOGFILE=exp_USER_tbs.log 
DIRECTORY=EXP_DIR TABLESPACES=USERS




Realizamos la importación en la base de datos destino con las opciones
  • REMAP_TABLESPACE para cambiar el nombre al tablespace
  • REMAP_DIRECTORY para crear los datafiles en otro directorio.


impdp system@PRD DUMPFILE=USER_tbs.dmp LOGFILE=imp_USER_tbs.log 
DIRECTORY=IMP_DIR REMAP_TABLESPACE=USERS:USERS2 
REMAP_DIRECTORY="'+DG_DATA':'+DG_FRA'" 

lunes, 7 de octubre de 2019

Windows Power Shell


The comand below shows the events when the server was restarted for last month:

Get-EventLog System | Where-Object {$_.EventID -eq "1074" -or $_.EventID -eq "6008" -or $_.EventID -eq "1076"} | ft Machinename, TimeWritten, UserName, EventID, Message -AutoSize -Wrap

lunes, 16 de septiembre de 2019

Comandos Linux

Información del sistema

  1. arch: mostrar la arquitectura de la máquina (1).
  2. uname -m: mostrar la arquitectura de la máquina (2).
  3. uname -r: mostrar la versión del kernel usado.
  4. dmidecode -q: mostrar los componentes (hardware) del sistema.
  5. hdparm -i /dev/hda: mostrar las características de un disco duro.
  6. hdparm -tT /dev/sda: realizar prueba de lectura en un disco duro.
  7. cat /proc/cpuinfo: mostrar información de la CPU.
  8. cat /proc/interrupts: mostrar las interrupciones.
  9. cat /proc/meminfo: verificar el uso de memoria.
  10. cat /proc/swaps: mostrar ficheros swap.
  11. cat /proc/version: mostrar la versión del kernel.
  12. cat /proc/net/dev: mostrar adaptadores de red y estadísticas.
  13. cat /proc/mounts: mostrar el sistema de ficheros montado.
  14. lspci -tv: mostrar los dispositivos PCI.
  15. lsusb -tv: mostrar los dispositivos USB.
  16. date: mostrar la fecha del sistema.
  17. cal 2011: mostrar el almanaque de 2011.
  18. cal 07 2011: mostrar el almanaque para el mes julio de 2011.
  19. date 041217002011.00: colocar (declarar, ajustar) fecha y hora.
  20. clock -w: guardar los cambios de fecha en la BIOS.

Apagar (Reiniciar Sistema o Cerrar Sesión)

  1. shutdown -h now: apagar el sistema (1).
  2. init 0: apagar el sistema (2).
  3. telinit 0: apagar el sistema (3).
  4. halt: apagar el sistema (4).
  5. shutdown -h hours:minutes &: apagado planificado del sistema.
  6. shutdown -c: cancelar un apagado planificado del sistema.
  7. shutdown -r now: reiniciar (1).
  8. reboot: reiniciar (2).
  9. logout: cerrar sesión.

Archivos y Directorios

  1. cd /home: entrar en el directorio “home”.
  2. cd ..: retroceder un nivel.
  3. cd ../..: retroceder 2 niveles.
  4. cd: ir al directorio raíz.
  5. cd ~user1: ir al directorio user1.
  6. cd –: ir (regresar) al directorio anterior.
  7. pwd: mostrar el camino del directorio de trabajo.
  8. ls: ver los ficheros de un directorio.
  9. ls -F: ver los ficheros de un directorio.
  10. ls -l: mostrar los detalles de ficheros y carpetas de un directorio.
  11. ls -a: mostrar los ficheros ocultos.
  12. ls *[0-9]*: mostrar los ficheros y carpetas que contienen números.
  13. tree: mostrar los ficheros y carpetas en forma de árbol comenzando por la raíz.(1)
  14. lstree: mostrar los ficheros y carpetas en forma de árbol comenzando por la raíz.(2)
  15. mkdir dir1: crear una carpeta o directorio con nombre ‘dir1’.
  16. mkdir dir1 dir2: crear dos carpetas o directorios simultáneamente (Crear dos directorios a la vez).
  17. mkdir -p /tmp/dir1/dir2: crear un árbol de directorios.
  18. rm -f file1: borrar el fichero llamado ‘file1’.
  19. rmdir dir1: borrar la carpeta llamada ‘dir1’.
  20. rm -rf dir1: eliminar una carpeta llamada ‘dir1’ con su contenido de forma recursiva. (Si lo borro recursivo estoy diciendo que es con su contenido).
  21. rm -rf dir1 dir2: borrar dos carpetas (directorios) con su contenido de forma recursiva.
  22. mv dir1 new_dir: renombrar o mover un fichero o carpeta (directorio).
  23. cp file1: copiar un fichero.
  24. cp file1 file2: copiar dos ficheros al unísono.
  25. cp dir /* .: copiar todos los ficheros de un directorio dentro del directorio de trabajo actual.
  26. cp -a /tmp/dir1 .: copiar un directorio dentro del directorio actual de trabajo.
  27. cp -a dir1: copiar un directorio.
  28. cp -a dir1 dir2: copiar dos directorio al unísono.
  29. ln -s file1 lnk1: crear un enlace simbólico al fichero o directorio.
  30. ln file1 lnk1: crear un enlace físico al fichero o directorio.
  31. touch -t 0712250000 file1: modificar el tiempo real (tiempo de creación) de un fichero o directorio.
  32. file file1: salida (volcado en pantalla) del tipo mime de un fichero texto.
  33. iconv -l: listas de cifrados conocidos.
  34. iconv -f fromEncoding -t toEncoding inputFile > outputFile: crea una nueva forma del fichero de entrada asumiendo que está codificado en fromEncoding y convirtiéndolo a ToEncoding.
  35. find . -maxdepth 1 -name *.jpg -print -exec convert ”{}” -resize 80×60 “thumbs/{}” \;: agrupar ficheros redimensionados en el directorio actual y enviarlos a directorios en vistas de miniaturas (requiere convertir desde ImagemagicK).

Encontrar archivos

  1. find / -name file1: buscar fichero y directorio a partir de la raíz del sistema.
  2. find / -user user1: buscar ficheros y directorios pertenecientes al usuario ‘user1’.
  3. find /home/user1 -name \*.bin: buscar ficheros con extensión ‘. bin’ dentro del directorio ‘/ home/user1’.
  4. find /usr/bin -type f -atime +100: buscar ficheros binarios no usados en los últimos 100 días.
  5. find /usr/bin -type f -mtime -10: buscar ficheros creados o cambiados dentro de los últimos 10 días.
  6. find / -name \*.rpm -exec chmod 755 ‘{}’ \;: buscar ficheros con extensión ‘.rpm’ y modificar permisos.
  7. find / -xdev -name \*.rpm: Buscar ficheros con extensión ‘.rpm’ ignorando los dispositivos removibles como cdrom, pen-drive, etc.…
  8. locate \*.ps: encuentra ficheros con extensión ‘.ps’ ejecutados primeramente con el command ‘updatedb’.
  9. whereis halt: mostrar la ubicación de un fichero binario, de ayuda o fuente. En este caso pregunta dónde está el comando ‘halt’.
  10. which halt: mostrar la senda completa (el camino completo) a un binario / ejecutable.

Montando un sistema de ficheros

  1. mount /dev/hda2 /mnt/hda2: montar un disco llamado hda2. Verifique primero la existencia del directorio ‘/ mnt/hda2’; si no está, debe crearlo.
  2. umount /dev/hda2: desmontar un disco llamado hda2. Salir primero desde el punto ‘/ mnt/hda2.
  3. fuser -km /mnt/hda2: forzar el desmontaje cuando el dispositivo está ocupado.
  4. umount -n /mnt/hda2: correr el desmontaje sin leer el fichero /etc/mtab. Útil cuando el fichero es de solo lectura o el disco duro está lleno.
  5. mount /dev/fd0 /mnt/floppy: montar un disco flexible (floppy).
  6. mount /dev/cdrom /mnt/cdrom: montar un cdrom / dvdrom.
  7. mount /dev/hdc /mnt/cdrecorder: montar un cd regrabable o un dvdrom.
  8. mount /dev/hdb /mnt/cdrecorder: montar un cd regrabable / dvdrom (un dvd).
  9. mount -o loop file.iso /mnt/cdrom: montar un fichero o una imagen iso.
  10. mount -t vfat /dev/hda5 /mnt/hda5: montar un sistema de ficheros FAT32.
  11. mount /dev/sda1 /mnt/usbdisk: montar un usb pen-drive o una memoria (sin especificar el tipo de sistema de ficheros).

Espacio de Disco

  1. df -h: mostrar una lista de las particiones montadas.
  2. ls -lSr |more: mostrar el tamaño de los ficheros y directorios ordenados por tamaño.
  3. du -sh dir1: Estimar el espacio usado por el directorio ‘dir1’.
  4. du -sk * | sort -rn: mostrar el tamaño de los ficheros y directorios ordenados por tamaño.
  5. rpm -q -a –qf ‘%10{SIZE}t%{NAME}n’ | sort -k1,1n: mostrar el espacio usado por los paquetes rpm instalados organizados por tamaño (Fedora, Redhat y otros).
  6. dpkg-query -W -f=’${Installed-Size;10}t${Package}n’ | sort -k1,1n: mostrar el espacio usado por los paquetes instalados, organizados por tamaño (Ubuntu, Debian y otros).

Usuarios y Grupos

  1. groupadd nombre_del_grupo: crear un nuevo grupo.
  2. groupdel nombre_del_grupo: borrar un grupo.
  3. groupmod -n nuevo_nombre_del_grupo viejo_nombre_del_grupo: renombrar un grupo.
  4. useradd -c “Name Surname ” -g admin -d /home/user1 -s /bin/bash user1: Crear un nuevo usuario perteneciente al grupo “admin”.
  5. useradd user1: crear un nuevo usuario.
  6. userdel -r user1: borrar un usuario (‘-r’ elimina el directorio Home).
  7. usermod -c “User FTP” -g system -d /ftp/user1 -s /bin/nologin user1: cambiar los atributos del usuario.
  8. passwd: cambiar contraseña.
  9. passwd user1: cambiar la contraseña de un usuario (solamente por root).
  10. chage -E 2011-12-31 user1: colocar un plazo para la contraseña del usuario. En este caso dice que la clave expira el 31 de diciembre de 2011.
  11. pwck: chequear la sintaxis correcta el formato de fichero de ‘/etc/passwd’ y la existencia de usuarios.
  12. grpck: chequear la sintaxis correcta y el formato del fichero ‘/etc/group’ y la existencia de grupos.
  13. newgrp group_name: registra a un nuevo grupo para cambiar el grupo predeterminado de los ficheros creados recientemente.

Permisos en Ficheros (Usa ”+” para colocar permisos y ”-” para eliminar)

  1. ls -lh: Mostrar permisos.
  2. ls /tmp | pr -T5 -W$COLUMNS: dividir la terminal en 5 columnas.
  3. chmod ugo+rwx directory1: colocar permisos de lectura ®, escritura (w) y ejecución(x) al propietario (u), al grupo (g) y a otros (o) sobre el directorio ‘directory1’.
  4. chmod go-rwx directory1: quitar permiso de lectura ®, escritura (w) y (x) ejecución al grupo (g) y otros (o) sobre el directorio ‘directory1’.
  5. chown user1 file1: cambiar el dueño de un fichero.
  6. chown -R user1 directory1: cambiar el propietario de un directorio y de todos los ficheros y directorios contenidos dentro.
  7. chgrp group1 file1: cambiar grupo de ficheros.
  8. chown user1:group1 file1: cambiar usuario y el grupo propietario de un fichero.
  9. find / -perm -u+s: visualizar todos los ficheros del sistema con SUID configurado.
  10. chmod u+s /bin/file1: colocar el bit SUID en un fichero binario. El usuario que corriendo ese fichero adquiere los mismos privilegios como dueño.
  11. chmod u-s /bin/file1: deshabilitar el bit SUID en un fichero binario.
  12. chmod g+s /home/public: colocar un bit SGID en un directorio –similar al SUID pero por directorio.
  13. chmod g-s /home/public: desabilitar un bit SGID en un directorio.
  14. chmod o+t /home/public: colocar un bit STIKY en un directorio. Permite el borrado de ficheros solamente a los dueños legítimos.
  15. chmod o-t /home/public: desabilitar un bit STIKY en un directorio.

Atributos especiales en ficheros (Usa ”+” para colocar permisos y ”-” para eliminar)

  1. chattr +a file1: permite escribir abriendo un fichero solamente modo append.
  2. chattr +c file1: permite que un fichero sea comprimido / descomprimido automaticamente.
  3. chattr +d file1: asegura que el programa ignore borrar los ficheros durante la copia de seguridad.
  4. chattr +i file1: convierte el fichero en invariable, por lo que no puede ser eliminado, alterado, renombrado, ni enlazado.
  5. chattr +s file1: permite que un fichero sea borrado de forma segura.
  6. chattr +S file1: asegura que un fichero sea modificado, los cambios son escritos en modo synchronous como con sync.
  7. chattr +u file1: te permite recuperar el contenido de un fichero aún si este está cancelado.
  8. lsattr: mostrar atributos especiales.

Archivos y Ficheros comprimidos

  1. bunzip2 file1.bz2: descomprime in fichero llamado ‘file1.bz2’.
  2. bzip2 file1: comprime un fichero llamado ‘file1’.
  3. gunzip file1.gz: descomprime un fichero llamado ‘file1.gz’.
  4. gzip file1: comprime un fichero llamado ‘file1’.
  5. gzip -9 file1: comprime con compresión máxima.
  6. rar a file1.rar test_file: crear un fichero rar llamado ‘file1.rar’.
  7. rar a file1.rar file1 file2 dir1: comprimir ‘file1’, ‘file2’ y ‘dir1’ simultáneamente.
  8. rar x file1.rar: descomprimir archivo rar.
  9. unrar x file1.rar: descomprimir archivo rar.
  10. tar -cvf archive.tar file1: crear un tarball descomprimido.
  11. tar -cvf archive.tar file1 file2 dir1: crear un archivo conteniendo ‘file1’, ‘file2′ y’dir1’.
  12. tar -tf archive.tar: mostrar los contenidos de un archivo.
  13. tar -xvf archive.tar: extraer un tarball.
  14. tar -xvf archive.tar -C /tmp: extraer un tarball en / tmp.
  15. tar -cvfj archive.tar.bz2 dir1: crear un tarball comprimido dentro de bzip2.
  16. tar -xvfj archive.tar.bz2: descomprimir un archivo tar comprimido en bzip2
  17. tar -cvfz archive.tar.gz dir1: crear un tarball comprimido en gzip.
  18. tar -xvfz archive.tar.gz: descomprimir un archive tar comprimido en gzip.
  19. zip file1.zip file1: crear un archivo comprimido en zip.
  20. zip -r file1.zip file1 file2 dir1: comprimir, en zip, varios archivos y directorios de forma simultánea.
  21. unzip file1.zip: descomprimir un archivo zip.

Paquetes RPM (Red Hat, Fedora y similares)

  1. rpm -ivh package.rpm: instalar un paquete rpm.
  2. rpm -ivh –nodeeps package.rpm: instalar un paquete rpm ignorando las peticiones de dependencias.
  3. rpm -U package.rpm: actualizar un paquete rpm sin cambiar la configuración de los ficheros.
  4. rpm -F package.rpm: actualizar un paquete rpm solamente si este está instalado.
  5. rpm -e package_name.rpm: eliminar un paquete rpm.
  6. rpm -qa: mostrar todos los paquetes rpm instalados en el sistema.
  7. rpm -qa | grep httpd: mostrar todos los paquetes rpm con el nombre “httpd”.
  8. rpm -qi package_name: obtener información en un paquete específico instalado.
  9. rpm -qg “System Environment/Daemons”: mostar los paquetes rpm de un grupo software.
  10. rpm -ql package_name: mostrar lista de ficheros dados por un paquete rpm instalado.
  11. rpm -qc package_name: mostrar lista de configuración de ficheros dados por un paquete rpm instalado.
  12. rpm -q package_name –whatrequires: mostrar lista de dependencias solicitada para un paquete rpm.
  13. rpm -q package_name –whatprovides: mostar la capacidad dada por un paquete rpm.
  14. rpm -q package_name –scripts: mostrar los scripts comenzados durante la instalación /eliminación.
  15. rpm -q package_name –changelog: mostar el historial de revisions de un paquete rpm.
  16. rpm -qf /etc/httpd/conf/httpd.conf: verificar cuál paquete rpm pertenece a un fichero dado.
  17. rpm -qp package.rpm -l: mostrar lista de ficheros dados por un paquete rpm que aún no ha sido instalado.
  18. rpm –import /media/cdrom/RPM-GPG-KEY: importar la firma digital de la llave pública.
  19. rpm –checksig package.rpm: verificar la integridad de un paquete rpm.
  20. rpm -qa gpg-pubkey: verificar la integridad de todos los paquetes rpm instalados.
  21. rpm -V package_name: chequear el tamaño del fichero, licencias, tipos, dueño, grupo, chequeo de resumen de MD5 y última modificación.
  22. rpm -Va: chequear todos los paquetes rpm instalados en el sistema. Usar con cuidado.
  23. rpm -Vp package.rpm: verificar un paquete rpm no instalado todavía.
  24. rpm2cpio package.rpm | cpio –extract –make-directories *bin*: extraer fichero ejecutable desde un paquete rpm.
  25. rpm -ivh /usr/src/redhat/RPMS/`arch`/package.rpm: instalar un paquete construido desde una fuente rpm.
  26. rpmbuild –rebuild package_name.src.rpm: construir un paquete rpm desde una fuente rpm.

Actualizador de paquetes YUM (Red Hat, Fedora y similares)

  1. yum install package_name: descargar e instalar un paquete rpm.
  2. yum localinstall package_name.rpm: este instalará un RPM y tratará de resolver todas las dependencies para ti, usando tus repositorios.
  3. yum update package_name.rpm: actualizar todos los paquetes rpm instalados en el sistema.
  4. yum update package_name: modernizar / actualizar un paquete rpm.
  5. yum remove package_name: eliminar un paquete rpm.
  6. yum list: listar todos los paquetes instalados en el sistema.
  7. yum search package_name: Encontrar un paquete en repositorio rpm.
  8. yum clean packages: limpiar un caché rpm borrando los paquetes descargados.
  9. yum clean headers: eliminar todos los ficheros de encabezamiento que el sistema usa para resolver la dependencia.
  10. yum clean all: eliminar desde los paquetes caché y ficheros de encabezado.

Paquetes Deb (Debian, Ubuntu y derivados)

  1. dpkg -i package.deb: instalar / actualizar un paquete deb.
  2. dpkg -r package_name: eliminar un paquete deb del sistema.
  3. dpkg -l: mostrar todos los paquetes deb instalados en el sistema.
  4. dpkg -l | grep httpd: mostrar todos los paquetes deb con el nombre “httpd”
  5. dpkg -s package_name: obtener información en un paquete específico instalado en el sistema.
  6. dpkg -L package_name: mostar lista de ficheros dados por un paquete instalado en el sistema.
  7. dpkg –contents package.deb: mostrar lista de ficheros dados por un paquete no instalado todavía.
  8. dpkg -S /bin/ping: verificar cuál paquete pertenece a un fichero dado.

Actualizador de paquetes APT (Debian, Ubuntu y derivados)

  1. apt-get install package_name: instalar / actualizar un paquete deb.
  2. apt-cdrom install package_name: instalar / actualizar un paquete deb desde un cdrom.
  3. apt-get update: actualizar la lista de paquetes.
  4. apt-get upgrade: actualizar todos los paquetes instalados.
  5. apt-get remove package_name: eliminar un paquete deb del sistema.
  6. apt-get check: verificar la correcta resolución de las dependencias.
  7. apt-get clean: limpiar cache desde los paquetes descargados.
  8. apt-cache search searched-package: retorna lista de paquetes que corresponde a la serie «paquetes buscados».

Ver el contenido de un fichero

  1. cat file1: ver los contenidos de un fichero comenzando desde la primera hilera.
  2. tac file1: ver los contenidos de un fichero comenzando desde la última línea.
  3. more file1: ver el contenido a lo largo de un fichero.
  4. less file1: parecido al commando ‘more’ pero permite salvar el movimiento en el fichero así como el movimiento hacia atrás.
  5. head -2 file1: ver las dos primeras líneas de un fichero.
  6. tail -2 file1: ver las dos últimas líneas de un fichero.
  7. tail -f /var/log/messages: ver en tiempo real qué ha sido añadido al fichero.

Manipulación de texto

  1. cat file1 file2 .. | command <> file1_in.txt_or_file1_out.txt: sintaxis general para la manipulación de texto utilizando PIPE, STDIN y STDOUT.
  2. cat file1 | command( sed, grep, awk, grep, etc…) > result.txt: sintaxis general para manipular un texto de un fichero y escribir el resultado en un fichero nuevo.
  3. cat file1 | command( sed, grep, awk, grep, etc…) » result.txt: sintaxis general para manipular un texto de un fichero y añadir resultado en un fichero existente.
  4. grep Aug /var/log/messages: buscar palabras “Aug” en el fichero ‘/var/log/messages’.
  5. grep ^Aug /var/log/messages: buscar palabras que comienzan con “Aug” en fichero ‘/var/log/messages’
  6. grep [0-9] /var/log/messages: seleccionar todas las líneas del fichero ‘/var/log/messages’ que contienen números.
  7. grep Aug -R /var/log/*: buscar la cadena “Aug” en el directorio ‘/var/log’ y debajo.
  8. sed ‘s/stringa1/stringa2/g’ example.txt: reubicar “string1” con “string2” en ejemplo.txt
  9. sed ‘/^$/d’ example.txt: eliminar todas las líneas en blanco desde el ejemplo.txt
  10. sed ‘/ *#/d; /^$/d’ example.txt: eliminar comentarios y líneas en blanco de ejemplo.txt
  11. echo ‘esempio’ | tr ‘[:lower:]’ ‘[:upper:]’: convertir minúsculas en mayúsculas.
  12. sed -e ‘1d’ result.txt: elimina la primera línea del fichero ejemplo.txt
  13. sed -n ‘/stringa1/p’: visualizar solamente las líneas que contienen la palabra “string1”.

Establecer caracter y conversión de ficheros

  1. dos2unix filedos.txt fileunix.txt: convertir un formato de fichero texto desde MSDOS a UNIX.
  2. unix2dos fileunix.txt filedos.txt: convertir un formato de fichero de texto desde UNIX a MSDOS.
  3. recode ..HTML < page.txt > page.html: convertir un fichero de texto en html.
  4. recode -l | more: mostrar todas las conversiones de formato disponibles.

Análisis del sistema de ficheros

  1. badblocks -v /dev/hda1: Chequear los bloques defectuosos en el disco hda1.
  2. fsck /dev/hda1: reparar / chequear la integridad del fichero del sistema Linux en el disco hda1.
  3. fsck.ext2 /dev/hda1: reparar / chequear la integridad del fichero del sistema ext 2 en el disco hda1.
  4. e2fsck /dev/hda1: reparar / chequear la integridad del fichero del sistema ext 2 en el disco hda1.
  5. e2fsck -j /dev/hda1: reparar / chequear la integridad del fichero del sistema ext 3 en el disco hda1.
  6. fsck.ext3 /dev/hda1: reparar / chequear la integridad del fichero del sistema ext 3 en el disco hda1.
  7. fsck.vfat /dev/hda1: reparar / chequear la integridad del fichero sistema fat en el disco hda1.
  8. fsck.msdos /dev/hda1: reparar / chequear la integridad de un fichero del sistema dos en el disco hda1.
  9. dosfsck /dev/hda1: reparar / chequear la integridad de un fichero del sistema dos en el disco hda1.

Formatear un sistema de ficheros

  1. mkfs /dev/hda1: crear un fichero de sistema tipo Linux en la partición hda1.
  2. mke2fs /dev/hda1: crear un fichero de sistema tipo Linux ext 2 en hda1.
  3. mke2fs -j /dev/hda1: crear un fichero de sistema tipo Linux ext3 (periódico) en la partición hda1.
  4. mkfs -t vfat 32 -F /dev/hda1: crear un fichero de sistema FAT32 en hda1.
  5. fdformat -n /dev/fd0: formatear un disco flooply.
  6. mkswap /dev/hda3: crear un fichero de sistema swap.

Trabajo con la SWAP

  1. mkswap /dev/hda3: crear fichero de sistema swap.
  2. swapon /dev/hda3: activando una nueva partición swap.
  3. swapon /dev/hda2 /dev/hdb3: activar dos particiones swap.

Salvas (Backup)

  1. dump -0aj -f /tmp/home0.bak /home: hacer una salva completa del directorio ‘/home’.
  2. dump -1aj -f /tmp/home0.bak /home: hacer una salva incremental del directorio ‘/home’.
  3. restore -if /tmp/home0.bak: restaurando una salva interactivamente.
  4. rsync -rogpav –delete /home /tmp: sincronización entre directorios.
  5. rsync -rogpav -e ssh –delete /home ip_address:/tmp: rsync a través del túnel SSH.
  6. rsync -az -e ssh –delete ip_addr:/home/public /home/local: sincronizar un directorio local con un directorio remoto a través de ssh y de compresión.
  7. rsync -az -e ssh –delete /home/local ip_addr:/home/public: sincronizar un directorio remoto con un directorio local a través de ssh y de compresión.
  8. dd bs=1M if=/dev/hda | gzip | ssh user@ip_addr ‘dd of=hda.gz’: hacer una salva de un disco duro en un host remoto a través de ssh.
  9. dd if=/dev/sda of=/tmp/file1: salvar el contenido de un disco duro a un fichero. (En este caso el disco duro es “sda” y el fichero “file1”).
  10. tar -Puf backup.tar /home/user: hacer una salva incremental del directorio ‘/home/user’.
  11. ( cd /tmp/local/ && tar c . ) | ssh -C user@ip_addr ‘cd /home/share/ && tar x -p’: copiar el contenido de un directorio en un directorio remoto a través de ssh.
  12. ( tar c /home ) | ssh -C user@ip_addr ‘cd /home/backup-home && tar x -p’: copiar un directorio local en un directorio remoto a través de ssh.
  13. tar cf – . | (cd /tmp/backup ; tar xf – ): copia local conservando las licencias y enlaces desde un directorio a otro.
  14. find /home/user1 -name ‘*.txt’ | xargs cp -av –target-directory=/home/backup/ –parents: encontrar y copiar todos los ficheros con extensión ‘.txt’ de un directorio a otro.
  15. find /var/log -name ‘*.log’ | tar cv –files-from=- | bzip2 > log.tar.bz2: encontrar todos los ficheros con extensión ‘.log’ y hacer un archivo bzip.
  16. dd if=/dev/hda of=/dev/fd0 bs=512 count=1: hacer una copia del MRB (Master Boot Record) a un disco floppy.
  17. dd if=/dev/fd0 of=/dev/hda bs=512 count=1: restaurar la copia del MBR (Master Boot Record) salvada en un floppy.

CD-ROM

  1. cdrecord -v gracetime=2 dev=/dev/cdrom -eject blank=fast -force: limpiar o borrar un cd regrabable.
  2. mkisofs /dev/cdrom > cd.iso: crear una imagen iso de cdrom en disco.
  3. mkisofs /dev/cdrom | gzip > cd_iso.gz: crear una imagen comprimida iso de cdrom en disco.
  4. mkisofs -J -allow-leading-dots -R -V “Label CD” -iso-level 4 -o ./cd.iso data_cd: crear una imagen iso de un directorio.
  5. cdrecord -v dev=/dev/cdrom cd.iso: quemar una imagen iso.
  6. gzip -dc cd_iso.gz | cdrecord dev=/dev/cdrom –: quemar una imagen iso comprimida.
  7. mount -o loop cd.iso /mnt/iso: montar una imagen iso.
  8. cd-paranoia -B: llevar canciones de un cd a ficheros wav.
  9. cd-paranoia – ”-3”: llevar las 3 primeras canciones de un cd a ficheros wav.
  10. cdrecord –scanbus: escanear bus para identificar el canal scsi.
  11. dd if=/dev/hdc | md5sum: hacer funcionar un md5sum en un dispositivo, como un CD.

Trabajo con la RED ( LAN y Wi-Fi)

  1. ifconfig eth0: mostrar la configuración de una tarjeta de red Ethernet.
  2. ifup eth0: activar una interface ‘eth0’.
  3. ifdown eth0: deshabilitar una interface ‘eth0’.
  4. ifconfig eth0 192.168.1.1 netmask 255.255.255.0: configurar una dirección IP.
  5. ifconfig eth0 promisc: configurar ‘eth0’en modo común para obtener los paquetes (sniffing).
  6. dhclient eth0: activar la interface ‘eth0’ en modo dhcp.
  7. route -n: mostrar mesa de recorrido.
  8. route add -net 0/0 gw IP_Gateway: configurar entrada predeterminada.
  9. route add -net 192.168.0.0 netmask 255.255.0.0 gw 192.168.1.1: configurar ruta estática para buscar la red ‘192.168.0.0/16’.
  10. route del 0/0 gw IP_gateway: eliminar la ruta estática.
  11. echo “1” > /proc/sys/net/ipv4/ip_forward: activar el recorrido ip.
  12. hostname: mostrar el nombre del host del sistema.
  13. host www.example.com: buscar el nombre del host para resolver el nombre a una dirección ip(1).
  14. nslookup www.example.com: buscar el nombre del host para resolver el nombre a una direccióm ip y viceversa(2).
  15. ip link show: mostar el estado de enlace de todas las interfaces.
  16. mii-tool eth0: mostar el estado de enlace de ‘eth0’.
  17. ethtool eth0: mostrar las estadísticas de tarjeta de red ‘eth0’.
  18. netstat -tup: mostrar todas las conexiones de red activas y sus PID.
  19. netstat -tupl: mostrar todos los servicios de escucha de red en el sistema y sus PID.
  20. tcpdump tcp port 80: mostrar todo el tráfico HTTP.
  21. iwlist scan: mostrar las redes inalámbricas.
  22. iwconfig eth1: mostrar la configuración de una tarjeta de red inalámbrica.
  23. whois www.example.com: buscar en base de datos Whois.

Redes de Microsoft Windows (SAMBA)

  1. nbtscan ip_addr: resolución de nombre de red bios.
  2. nmblookup -A ip_addr: resolución de nombre de red bios.
  3. smbclient -L ip_addr/hostname: mostrar acciones remotas de un host en windows.

Tablas IP (CORTAFUEGOS)

  1. iptables -t filter -L: mostrar todas las cadenas de la tabla de filtro.
  2. iptables -t nat -L: mostrar todas las cadenas de la tabla nat.
  3. iptables -t filter -F: limpiar todas las reglas de la tabla de filtro.
  4. iptables -t nat -F: limpiar todas las reglas de la tabla nat.
  5. iptables -t filter -X: borrar cualquier cadena creada por el usuario.
  6. iptables -t filter -A INPUT -p tcp –dport telnet -j ACCEPT: permitir las conexiones telnet para entar.
  7. iptables -t filter -A OUTPUT -p tcp –dport http -j DROP: bloquear las conexiones HTTP para salir.
  8. iptables -t filter -A FORWARD -p tcp –dport pop3 -j ACCEPT: permitir las conexiones POP a una cadena delantera.
  9. iptables -t filter -A INPUT -j LOG –log-prefix “DROP INPUT”: registrando una cadena de entrada.
  10. iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE: configurar un PAT (Puerto de traducción de dirección) en eth0, ocultando los paquetes de salida forzada.
  11. iptables -t nat -A PREROUTING -d 192.168.0.1 -p tcp -m tcp –dport 22 -j DNAT –to-destination 10.0.0.2:22: redireccionar los paquetes diriguidos de un host a otro.

Monitoreando y depurando

  1. top: mostrar las tareas de linux usando la mayoría cpu.
  2. ps -eafw: muestra las tareas Linux.
  3. ps -e -o pid,args –forest: muestra las tareas Linux en un modo jerárquico.
  4. pstree: mostrar un árbol sistema de procesos.
  5. kill -9 ID_Processo: forzar el cierre de un proceso y terminarlo.
  6. kill -1 ID_Processo: forzar un proceso para recargar la configuración.
  7. lsof -p $$: mostrar una lista de ficheros abiertos por procesos.
  8. lsof /home/user1: muestra una lista de ficheros abiertos en un camino dado del sistema.
  9. strace -c ls >/dev/null: mostrar las llamadas del sistema hechas y recibidas por un proceso.
  10. strace -f -e open ls >/dev/null: mostrar las llamadas a la biblioteca.
  11. watch -n1 ‘cat /proc/interrupts’: mostrar interrupciones en tiempo real.
  12. last reboot: mostrar historial de reinicio.
  13. lsmod: mostrar el kernel cargado.
  14. free -m: muestra el estado de la RAM en megabytes.
  15. smartctl -A /dev/hda: monitorear la fiabilidad de un disco duro a través de SMART.
  16. smartctl -i /dev/hda: chequear si SMART está activado en un disco duro.
  17. tail /var/log/dmesg: mostrar eventos inherentes al proceso de carga del kernel.
  18. tail /var/log/messages: mostrar los eventos del sistema.

Otros comandos útiles

  1. apropos …keyword: mostrar una lista de comandos que pertenecen a las palabras claves de un programa; son útiles cuando tú sabes qué hace tu programa, pero de sconoces el nombre del comando.
  2. man ping: mostrar las páginas del manual on-line; por ejemplo, en un comando ping, usar la opción ‘-k’ para encontrar cualquier comando relacionado.
  3. whatis …keyword: muestra la descripción de lo que hace el programa.
  4. mkbootdisk –device /dev/fd0 `uname -r`: crear un floppy boteable.
  5. gpg -c file1: codificar un fichero con guardia de seguridad GNU.
  6. gpg file1.gpg: decodificar un fichero con Guardia de seguridad GNU.
  7. wget -r www.example.com: descargar un sitio web completo.
  8. wget -c www.example.com/file.iso: descargar un fichero con la posibilidad de parar la descargar y reanudar más tarde.
  9. echo ‘wget -c www.example.com/files.iso‘ | at 09:00: Comenzar una descarga a cualquier hora. En este caso empezaría a las 9 horas.
  10. ldd /usr/bin/ssh: mostrar las bibliotecas compartidas requeridas por el programa ssh.
  11. alias hh=’history’: colocar un alias para un commando –hh= Historial.
  12. chsh: cambiar el comando Shell.
  13. chsh –list-shells: es un comando adecuado para saber si tienes que hacer remoto en otra terminal.
  14. who -a: mostrar quien está registrado, e imprimir hora del último sistema de importación, procesos muertos, procesos de registro de sistema, procesos activos producidos por init, funcionamiento actual y últimos cambios del reloj del sistema.

mount  -o remount rw /


miércoles, 4 de septiembre de 2019

COMANDOS ORACLE RAC

Veamos un resumen de los comandos más relevantes para Levantar/Parar/Chequear los recursos del Cluster


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
# Status, Configuración y Chequeos de Recursos de Cluster
crsctl check crs                             # Status Servicios CRS
crsctl check cluster -n rac2                 # Status Servicios Cluster
crsctl check ctss                            # Status Servicio CTSS
crsctl config crs (requiere root)            # Configuración Autoarranque OHAS
cat /etc/oracle/scls_scr/rac1/root/ohasdstr  # Configuración Autoarranque OHAS
crsctl stat res -t                           # Status Todos Recursos Cluster
crsctl stat res ora.rac.db -p                # Configuración de un Recurso
crsctl stat res ora.rac.db -f                # Configuracion Completa
crsctl query css votedisk                    # Status Voting Disks
olsnodes -n -i -s -t                         # Listar Nodos Cluster
oifcfg getif                                 # Información Interfaces de Red
ocrcheck                                     # Status OCR (ejecutar como root para chequear corrupción lógica)
ocrcheck -local (requiere root)              # Status OCR con CRS/OHAS OFFLINE
ocrconfig -showbackup                        # Información Backups OCR
ocrconfig -add +TEST                          # Crear una copia de OCR en otro Diskgroup
cluvfy comp crs -n rac1                      # Verificar Integridad CRS
srvctl status database -d RAC                # Status Base de Datos
srvctl status instance -d RAC -i RAC1        # Status Instancia
srvctl status service -d RAC                 # Status Servicios de una BD
srvctl status nodeapps                       # Status Servicios de Red
srvctl status vip -n rac1                    # Status IP Virtual
srvctl status listener -l LISTENER           # Status Listener
srvctl status asm -n rac1                    # Status Instancia ASM
srvctl status scan                           # Status IP SCAN
srvctl status scan_listener                  # Status Listener SCAN
srvctl status server -n rac1                 # Status Nodo
srvctl status diskgroup -g DGRAC             # Status Disk Group
srvctl config database -d RAC                # Configuración Database
srvctl config service -d RAC                 # Configuración Servicios
srvctl config nodeapps                       # Configuración Servicios Red
srvctl config vip -n rac1                    # Configuración IP Virtual
srvctl config asm -a                         # Configuración Instancia ASM
srvctl config listener -l LISTENER           # Configuración Listener
srvctl config scan                           # Configuración IP SCAN
srvctl config scan_listener                  # Configuración SCAN Listener
 
# Arrancar, Parar y Reubicar Recursos de Cluster
crsctl stop cluster                                    # Parar Clusterware (requiere root)
crsctl start cluster                                   # Arrancar Clusterware (requiere root) ./crsctl stop crs -f
crsctl stop crs                                        # Parar OHAS (requiere root) - Incluye Parada Clusterware
crsctl start crs                                       # Arrancar OHAS (requiere root) - Incluye Arranque Clusterware
crsctl disable                                         # Deshabilitar Autoarranque CRS (requiere root)
crsctl disable                                         # Habilitar Autoarranque CRS (requiere root)
srvctl stop database -d RAC -o immediate               # Parar Database (parada IMMEDIATE)
srvctl start database -d RAC                           # Arrancar Database
srvctl stop instance -d RAC -i RAC1 -o immediate       # Parar Instancia BD (parada IMMEDIATE)
srvctl start instance -d RAC -i RAC1                   # Arrancar Instancia BD
srvctl stop service -d RAC -s OLTP -n rac1             # Parar Servicio
srvctl sart service -d RAC -s OLTP                     # Arrancar Servicio
srvctl stop nodeapps -n rac1                           # Parar Servicios Red (requiere parar dependencias)
srvctl start nodeapps                                  # Arrancar Servicios Red
srvctl stop vip -n rac1                                # Parar IP Virtual (requiere parar dependencias)
srvctl start vip -n rac1                               # Arrancar IP Virtual
srvctl stop asm -n rac1 -o abort -f                    # Parar Instancia ASM (es recomendable usar "crsctl stop cluster")
srvctl start asm -n rac1                               # Arrancar Instancia ASM (es recomendable usar "crsctl start cluser")
srvctl stop listener -l LISTENER                       # Parar Listener
srvctl start listener -l LISTENER                      # Arrancar Listener
srvctl stop scan -i 1                                  # Parar IP SCAN (requiere parar dependencias)
srvctl start scan -i 1                                 # Arrancar IP SCAN
srvctl stop scan_listener -i 1                         # Parar SCAN Listener
srvctl start scan_listener -i 1                        # Arrancar SCAN Listener
srvctl stop diskgroup -g TEST -n rac1,rac2             # Parar Disk Group (requiere parar dependencias)
srvctl start diskgroup -g TEST -n rac1,rac2            # Arrancar Disk Group (requiere parar dependencias)
srvctl relocate service -d RAC -s OLTP -i RAC1 -t RAC2 # Reubicar Servicio (del nodo 1 al nodo 2)
srvctl relocate scan_listener -i 1 rac1                # Reubicar SCAN Listener
4. Vamos a hacer un pequeño ejercicio con los ficheros OCR añadiendo y eliminando ubicaciones
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# Como root, verificamos el estado del OCR
 # Veremos como la ubicación reside en +DGRAC
 /u01/app/11.2.0/grid/bin/ocrcheck
 
 # Añadimos una nueva ubicación para el OCR y eliminamos la antigua (+DGRAC)
 # El disco /dev/oracleasm/disks/TEST01 no debe estar en uso por ningún Disk Group
 /u01/app/11.2.0/grid/bin/ocrconfig -add /dev/oracleasm/disks/TEST01
 /u01/app/11.2.0/grid/bin/ocrconfig -delete +DGRAC
 
 # Validamos el resultado del cambio
 # Veremos como tenemos una única ubicación (/dev/oracleasm/disks/TEST01)
 /u01/app/11.2.0/grid/bin/ocrcheck
 
 # Por último, volvemos a ubicar el OCR en el diskgroup +DGRAC y comprobamos el resultado
 /u01/app/11.2.0/grid/bin/ocrconfig -add +DGRAC
 /u01/app/11.2.0/grid/bin/ocrconfig -delete /dev/oracleasm/disks/TEST01
 /u01/app/11.2.0/grid/bin/ocrcheck
crs_relocate ora.svrb1hr.vip