viernes, 11 de mayo de 2018

Iniciando con Oracle Cloud - New account, New DB Connect SSH y SQL Developer



Iniciando con Oracle Cloud - Creación de Cuenta, Creación de una Instancia de BD, Conexion SSH y SQL Developer.

1. Creando un espacio en la Nube de Oracle 

1.1 Primer paso es registrarse de manera gratuita en la página https://www.oracle.com/cloud , en dicha página dar click en -> Try for free




















1.2. Segundo paso es crear una cuenta de forma gratuita donde tendrás disponible USD $300 disponibles dentro de 30 días para trabajar con cualquier producto de la nube de Oracle.














1.3. Crear tu cuenta debes de llenar todos los datos requeridos en el siguiente formulario.







1.4Luego le llegara al correo registrado todos los datos de conexión y el usuario asignado para ingresar a la página de administración de la Nube de Oracle, también puedes ingresar al link -> https://cloud.oracle.com/sign-in  


1.5.  Por último se ingresa a la página de Administrador o Dashboard como se muestra en la siguiente imagen:



2. Creación de una Instancia 


2.1Se ingresa a la opción de Services -> Database del panel Izquierdo.




2.2. Se ingresa luego a la opción -> QuickStar



2.3. Se escoge la Edicion de la base de datos según la licencia Comprada (Standard,Enterprise,Extreme Performance).






















2.4. Para este Caso de Ejemplo se va a crear una instancia de tipo Standard Edition se guarda las llaves (Keys) en el PC local o cliente y se da click en crear.







2.5. Por Ultimo se muestra que la instancia está siendo creada.




















3. Conexion a la Instancia de la Nube SSH y SQL Developer

3.1.  Primero se debe de iniciar la Base de datos entranado a las opciones de la instancia  y dando click en Iniciar .



3.2. Entramos al servicio de base de datos que se creo(Database20180511165905) y se mostrara el resumen de los recursos de la VM, la cadena de conexion (Database20180511165905:1521/PDB1.601219353.oraclecloud.internal) y la IP publica donde se creo el servicio de base de datos.






















3.3. Se descomprime las llaves que se descargaron en el punto 2.4 de este artículo en el equipo local donde se está trabajando.






3.4 Se ejecuta el programa PUTTY y se crea la conexion.

















3.5 Crear llave en el programa PUTTYgen el cual convierte la llave privada (privateKey) al formato legible por el Putty (.ppk).



















3.6 Se Guarda la llave privada convertida con el nombre (privateKeyPUTTY.ppk).

















3.7 Se configura el software Putty con la llave privada convertida en el punto anterior (privateKeyPUTTY.ppk).


















3.8 En la opcion Connection -> Data , se coloca el usuario que por defecto es oracle, como se muestra a continuacion.


























3.9 Se asigna la IP publica la cual se mostro en el punto 3.2. de este articulo y por el puerto 22, puerto por default protocolo ssh .




3.10 Finalmente se conecta al servidor de la Nube de Oracle donde se encuentra el servicio configurado para la base de datos.































3.11 Conexión vía Sql Developer  a la base de datos en la Nube; Se abre la aplicación y se va a la opción view -> SSH, como se muestra en la imagen.
























3.12 En la Opción SSH se le da Click Derecho New SSH Host y se crea la conexión por ssh agregándole la ip pública, nombre de usuario (oracle), el puerto del listener (1521) y la llave privada que descargamos en el punto (2.4).

























3.13 Ahora se crea la conexion a la base de datos New, se le colocan las credenciales del usuario de DB y el tipo de conexion SSH y le coloca el SID de la DB y se da guardar la conexion para este caso se llama DB Oracle Cloud.




















3.14 Por ultimo se conecta a la base de datos por la conexion creada anteriormente y se hace una sentencia sql para validar que todo esta OK.



Conclusión


Oracle está impulsando bastante su Nube (Cloud) y desde hace 2 años hasta la fecha se esta consolidando cada vez más y se espera que para el presente año (2018) se posicione como una de las empresas de Cloud más importantes a nivel mundial  Artículo recomendado:


El siguiente link es muy interesante ya que se muestran todas las características de la Base de datos en la  Nube y los servicios que se tienen:







x

viernes, 1 de diciembre de 2017

Crear Wallets para Oracle Database 12C usando Oracle Wallet Manager

1.  Crear Wallets para Oracle Database 12C usando Oracle Wallet Manager.
Primer Paso: Exportar variable DISPLAY.
Con el objetivo de invocar el entorno grafico de la aplicación Oracle Wallet Manager y mostrarla en nuestra maquina local, se debe exportar la variable DISPLAY, esto se hace con el siguiente comando:
     $ export DISPLAY=172.22.XX.XX:0.0
    $ cd $ORACLE_HOME/owm
    $ pwd
    $ /oracle/oracle/12.1.0.2/product/12.1.0/dbhome_1/owm
    #Se Ejecuta el commando owm (Oracle Wallet Manager).
    $    owm
Si todo sale bien y tenemos en nuestro equipo local instalado un servidor de tipo X server for Windows como el Xming X Server o estamos ejecutando este comando         con    el MobaXterm free Xserver, nos saldrá la siguiente pantalla del Oracle Wallet     Manager en nuestra maquina local:
Segundo Paso: Creamos el wallet desde el OWM.
Abrimos el wallet en la ruta desde la interfaz gráfica del OWM:
    /oracle/oracle/12.1.0.2/product/12.1.0/dbhome_1/owm/wallets/oracle
Posteriormente nos va a pedir que le asignamos un password: ******
    Luego de asignarle el password nos abre la administración de los certificados desde el Oracle Wallet Manager en el cual debemos de importar los certificados, hay que tener muy encuenta que deben de ser generarlos "Base-64 encoded X.509 (.CER)" esto se hace desde el navegador de internet dandole exportar certificado, y los mismos se pasan al servidor de base de datos para mi caso son los siguientes:
     Ya estando los certificados en el servidor se deben de importar desde el Oracle Wallet Manager seleccionando los mismos desde la herramienta OWM de la siguiente forma.
Por último se verán los certificados de la siguiente forma:

Conclusión:     
    La herramienta Oracle Wallet Manager es muy fácil de usar ya que de forma grafico nos permite hacer este tipo de configuración agregando cuantos wallets necesitemos y los mismos los podemos administrar de una mejor manera ayudándonos a nosotros como DBAs en la gestión de estos certificados. 

jueves, 30 de noviembre de 2017

Export DataPump usando INCLUDE para seleccionar solo tablas que tengan la paralabra "T_HIS"

1.    Como exportar con DataPump solo las tablas que contengan la palabra "T_HIS" en Oracle, e importar el archivo .dmp generado a un nuevo schema usando REMAP_SCHEMA y REMAP_TABLESPACE.

 Primer Paso: revisar tipo de servidor arquitectura y versión de base de datos,etc.

Para este caso el servidor donde está la base de datos origen es un servidor  Sun Fire V490, con las siguientes características.

$ isalist
sparcv9+vis2 sparcv9+vis sparcv9 sparcv8plus+vis2 sparcv8plus+vis sparcv8plus sparcv8 
sparcv8-fsmuld sparcv7 sparc
$  uname -a
SunOS alpha 5.10 Generic_150400-07 sun4u sparc SUNW,Sun-Fire-V490
$ cat /etc/*release*
                   Oracle Solaris 10 1/13 s10s_u11wos_24a SPARC
  Copyright (c) 1983, 2013, Oracle and/or its affiliates. All rights reserved.
                            Assembled 17 January 2013

La versión de la base de datos es 10g Enterprise Edition Release 10.2.0.5.0

$ sqlplus / as sysdba
SQL*Plus: Release 10.2.0.5.0 - Production on Thu Nov 30 15:19:59 2017
Copyright (c) 1982, 2010, Oracle.  All Rights Reserved.
Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.5.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

Segundo Paso: Crear el directorio DataPump en la BD.

Tener muy en cuenta que para que funcione export/import DataPump la base de datos debe de tener creado un directorio.

SQL> CREATE OR REPLACE DIRECTORY EXPIMP AS '/backup/EXPIMP';
SQL> GRANT READ, WRITE ON DIRECTORY EXPIMP TO EXP_FULL_DATABASE;
SQL> GRANT READ, WRITE ON DIRECTORY EXPIMP TO IMP_FULL_DATABASE;

 Tercer Paso: Crear del script

Para lo cual se crea el siguiente script, y tener muy en cuenta el parámetro INCLUDE el tipo de objeto que para mi caso lo que quiero escoger es TABLE y el parámetro LIKE que lo que hace es filtrar las tablas que quiero exportar que son todas las que contengan \(\'T_HIS%\'\), a continuación el script:

$ cat expdp_tablas_schema.sh
expdp system/*** DIRECTORY=EXPIMP SCHEMAS=EXAMPLE 
INCLUDE=TABLE:\"LIKE\(\'T_HIS%\'\)\" 
dumpfile=expdp_EXAMPLE_tables_T_HIS_29NOV2017.dmp 
logfile=expdp_EXAMPLE_tables_T_HIS_29NOV2017.log

Cuarto Paso: ejecutar el script

A continuación se ejecuta el script con expdp_tabla_schema.sh, tener en cuenta que se debe tener las variables de entorno ORACLE_HOME, ORACLE_BASE Y ORACLE_SID habilitadas.

$ sh expdp_tabla_schema.sh
Export: Release 10.2.0.5.0 - 64bit Production on Wednesday, 29 November, 2017 10:28:21
Copyright (c) 2003, 2007, Oracle.  All rights reserved.
Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.5.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
Starting "SYSTEM"."SYS_EXPORT_SCHEMA_01":  system/******** DIRECTORY=EXPIMP 
SCHEMAS=EXAMPLE INCLUDE=TABLE:"LIKE('T_HIS%')" 
dumpfile=expdp_EXAMPLE_tables_T_HIS_29NOV2017.dmp 
logfile=expdp_EXAMPLE_tables_T_HIS_29NOV2017.log
Estimate in progress using BLOCKS method...
Processing object type SCHEMA_EXPORT/TABLE/TABLE_DATA
Total estimation using BLOCKS method: 808 MB
Processing object type SCHEMA_EXPORT/TABLE/TABLE
Processing object type SCHEMA_EXPORT/TABLE/GRANT/OWNER_GRANT/OBJECT_GRANT
Processing object type SCHEMA_EXPORT/TABLE/GRANT/WITH_GRANT_OPTION/OBJECT_GRANT
Processing object type SCHEMA_EXPORT/TABLE/INDEX/INDEX
Processing object type SCHEMA_EXPORT/TABLE/CONSTRAINT/CONSTRAINT
Processing object type SCHEMA_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS
Processing object type SCHEMA_EXPORT/TABLE/COMMENT
Processing object type SCHEMA_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
. . exported "EXAMPLE"."T_HIS_SU_REQS_DETAIL"             64.96 MB  325200 rows
. . exported "EXAMPLE"."T_HIS_SU_TRANSAC_STOCK"           64.20 MB  428920 rows
. . exported "EXAMPLE"."T_HIS_SU_REQS_COMPRAS_RESUMEN"    54.39 MB  281637 rows
. . exported "EXAMPLE"."T_HIS_SU_REQS_COMPRAS_RESUMEND"   51.46 MB  281637 rows
. . exported "EXAMPLE"."T_HIS_SU_REQS_HEADER"             39.53 MB  107726 rows
. . exported "EXAMPLE"."T_HIS_SU_TRANSAC_NO_STOCK"        40.11 MB  358547 rows
. . exported "EXAMPLE"."T_HIS_SU_REQS_STOCK_RESUMEN"      28.56 MB  209746 rows
. . exported "EXAMPLE"."T_HIS_SU_FACTURAS"                25.67 MB  259760 rows
. . exported "EXAMPLE"."T_HIS_TT_DESC_EXT_SERVICIOS"          0 KB       0 rows
Master table "SYSTEM"."SYS_EXPORT_SCHEMA_01" successfully loaded/unloaded
******************************************************************************
Dump file set for SYSTEM.SYS_EXPORT_SCHEMA_01 is:
  /backup/EXPIMP/expdp_EXAMPLE_tables_T_HIS_29NOV2017.dmp
Job "SYSTEM"."SYS_EXPORT_SCHEMA_01" successfully completed at 10:55:50
$

Esto genera dos archivos.

$ ls -ltrh
total 1227086
-rwxrwxrwx   1 oracle  dba          194 Nov 29 10:28 expdp_tabla_schema.sh
-rw-r--r--   1 oracle  dba          13K Nov 29 10:55 expdp_EXAMPLE_tables_T_HIS_29NOV2017.log
-rw-r-----   1 oracle  dba         599M Nov 29 10:55 expdp_EXAMPLE_tables_T_HIS_29NOV2017.dmp
$ pwd
/backup/EXPIMP

Quinto Paso: Copiar .dmp al servidor destino.

Con el commando scp copiamos vía red el archivo .dmp generado en en el paso anterior al el servidor destino:

$scp /backup/EXPIMP/expdp_EXAMPLE_tables_T_HIS_29NOV2017.dmp 
oracle@192.168.XX.XXX:/orabkp/EXPDP/EXPIMP/

Sexto Paso: Generar script de impdp he Importar .dmp en la base de datos destino.

Para el proceso de importación se debe de tener en cuenta los siguientes temas:

·       El nombre del tablespace de la base de datos Origen y el nombre del tablespace de la base de datos destino si son diferentes se debe de hacer un remap_tablespace para que la información quede dentro del tablespace que requerimos.
·         El nombre del schema de la base de datos Origen y el nombre del schema de la base de datos destino si son diferentes se debe de hacer un remap_schema para que la información quede dentro del schema que requerimos.

$cat impdp_tablas_schema.sh
impdp system/*** directory=EXPIMP dumpfile=expdp_EXAMPLE_tables_T_HIS_29NOV2017.dmp 
REMAP_SCHEMA=EXAMPLE:EXAMPLE_AS400 
REMAP_TABLESPACE=EXAMPLE:EXAMPLE_AS400 
logfile=impdp_EXAMPLE_tables_T_HIS_30NOV2017.log

Séptimo Paso: ejecutar el script

$ sh impdp_EXAMPLE_tables_T_HIS_30NOV2017.sh
Import: Release 12.1.0.2.0 - Production on Thu Nov 30 07:48:52 2017
Copyright (c) 1982, 2015, Oracle and/or its affiliates.  All rights reserved.
Connected to: Oracle Database 12c Standard Edition Release 12.1.0.2.0 - 64bit Production
With the Automatic Storage Management option
Master table "SYSTEM"."SYS_IMPORT_FULL_01" successfully loaded/unloaded
import done in WE8ISO8859P15 character set and AL16UTF16 NCHAR character set
export done in WE8ISO8859P1 character set and AL16UTF16 NCHAR character set
WARNING: possible data loss in character set conversions
Starting "SYSTEM"."SYS_IMPORT_FULL_01":  system/******** directory=EXPIMP 
dumpfile=expdp_EXAMPLE_tables_T_HIS_29NOV2017.dmp 
REMAP_SCHEMA=EXAMPLE:EXAMPLE_AS400 
REMAP_TABLESPACE=EXAMPLE:EXAMPLE_AS400 
logfile=impdp_EXAMPLE_tables_T_HIS_30NOV2017.log
Processing object type SCHEMA_EXPORT/TABLE/TABLE
Processing object type SCHEMA_EXPORT/TABLE/TABLE_DATA
. . imported "EXAMPLE_AS400"."T_HIS_SU_REQS_DETAIL"         64.96 MB  325200 rows
. . imported "EXAMPLE_AS400"."T_HIS_SU_TRANSAC_STOCK"       64.20 MB  428920 rows
. . imported "EXAMPLE_AS400"."T_HIS_SU_REQS_COMPRAS_RESUMEN"  54.39 MB  281637 rows
. . imported "EXAMPLE_AS400"."T_HIS_SU_REQS_COMPRAS_RESUMEND"  51.46 MB  281637 rows
. . imported "EXAMPLE_AS400"."T_HIS_SU_REQS_HEADER"         39.53 MB  107726 rows
. . imported "EXAMPLE_AS400"."T_HIS_SU_TRANSAC_NO_STOCK"    40.11 MB  358547 rows
. . imported "EXAMPLE_AS400"."T_HIS_SU_REQS_STOCK_RESUMEN"  28.56 MB  209746 rows
. . imported "EXAMPLE_AS400"."T_HIS_SU_FACTURAS"            25.67 MB  259760 rows
. . imported "EXAMPLE_AS400"."T_HIS_TT_DESC_EXT_SERVICIOS"      0 KB       0 rows
Processing object type SCHEMA_EXPORT/TABLE/GRANT/OWNER_GRANT/OBJECT_GRANT
GRANT SELECT ON "EXAMPLE_AS400"."T_HISTORICO_ACTIVOS_AS400_A" TO "DISCOVERER_CIAT" WITH GRANT OPTION
Processing object type SCHEMA_EXPORT/TABLE/INDEX/INDEX
Processing object type SCHEMA_EXPORT/TABLE/CONSTRAINT/CONSTRAINT
Processing object type SCHEMA_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS
Processing object type SCHEMA_EXPORT/TABLE/COMMENT
Processing object type SCHEMA_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
Job "SYSTEM"."SYS_IMPORT_FULL_01" completed with 0 error(s) at Thu Nov 30 07:49:36 2017 elapsed 0 00:00:43
$

Conclusion:                                                                                                    
DataPump es una herramienta poderosa y efectiva para la exportacion he importacion de datos, la cual nos permite filtrar la informacion que requerimos con tan solo el parametro INCLUDE, hay que tener encuenta que tambien existe otro parametro EXCLUDE que nos permite filtrar la informacion que no queremos exportar, para revisar mas informacion a este tema les recomiendo la siguiente nota de oracle: 

Export/Import DataPump Parameters INCLUDE and EXCLUDE - How to Load and Unload Specific Objects (Doc ID 341733.1)

Examples: 

expdp ... SCHEMAS=scott EXCLUDE=SEQUENCE, TABLE:\"IN ('EMP', 'DEPT')\" 
impdp ... SCHEMAS=scott INCLUDE=FUNCTION, PACKAGE, TABLE:\"= 'EMP'\"