25 de mayo de 2022

Como instalar y configurar ocicli para gestionar Oracle OCI

 Hola a todos, el siguiente post es simplemente la explicación de los pasos necesarios para crear una VM en Oracle OCI que nos permita tener instalado ocicli para manipular nuestros recursos en la nube por medio de apis o scripts.

Los ejemplos que voy a mostrar van a ser super simples, pero por supuesto que se le puede dedicar más tiempo y armar scripts con lógica más interesante.

Que vamos a necesitar?

  1. Una VM IaaS.
  2. Un usuario de OCI  con los permisos adecuados.
  3. Instalar y configurar el software
  4. Probar comandos.

1. VM:

Lo primero que necesitamos es una pequeña VM para instalar ocicli y desde la cual estariamos ejecutando los comandos. Esta VM se puede crear con mínimos recursos, así que no sería una VM que nos genere un gran costo de mantenimiento. También se podria usar cualquier VM dentro de nuestra infraestrcutura.

Consideremos que esta VM tiene que estar dentro de la misma subnet de los recurso que necesitemos manipular o tener las reglas adecuadas.

Para crear una instancias, pueden seguir el siguiente post: creando-una-vm-de-linux

2. Usuario de OCI.

Para esto vamos a crear un usuario de servicio del tipo IAM sin contraseña o email. Ya que la autentificación se va a realizar por medio de pares de Keys.


Como una buena práctica generé un grupo y se lo asigne a este mismo usuario.




Una vez creado el usuario en este paso copien en un notepad el OCID del usuario
ejemplo: ocid1.user.oc1..aaabbbbbza6smearcrmasdg1g4c11|5a3dwxnnbno6hjx4l5cdwb4t7ev1svsq

En este punto es necesario crear una policy para darle permisos al grupo, se podria dar sobre todo el tenant o un compartment. Esto va a ser el alcance que tenga este usuario y los permisos sobre los recursos que pueda manipular.

En mi caso solo le voy a dar permiso para manicupar un EXACS

Dentro de Identity, vamos a Policies





3. Instalación y Configuración del Software

Lo primero que tenemos que hacer es instalar las librerias y tools a nivel de Sistema Operativo, en mi caso un Linux 8. La referencia la podemos ver en : https://docs.oracle.com/en-us/iaas/Content/API/SDKDocs/cliinstall.htm#InstallingCLI__oraclelinux8

sudo dnf -y install oraclelinux-developer-release-el8



sudo dnf install python36-oci-cli

The CLI will be installed to the Python site packages:


/usr/lib/python3.6/site-packages/oci_cli
/usr/lib/python3.6/site-packages/services

Documentation and examples will be installed in the /usr/share/doc/python36-oci-cli-<version>/ directory.

Para los siguientes pasos tenemos que tener 3 datos fundamentales

User OCID, Tenant OCID y conocer nuestra región en OCI.


# sudo su - ocicliusr
$ oci -version
3.9.0


$ oci setup config

This command provides a walkthrough of creating a valid CLI config file.
The following links explain where to find the information required by this
script:
User API Signing Key, OCID and Tenancy OCID:
https://docs.cloud.oracle.com/Content/API/Concepts/apisigningkey.htm#Other

Region:
https://docs.cloud.oracle.com/Content/General/Concepts/regions.htm
General config documentation:
https://docs.cloud.oracle.com/Content/API/Concepts/sdkconfig.htm
Enter a location for your config [/home/ocicliusr/.oci/config]:
Enter a user OCID: ocid1.user.oc1..aaaffffffza6smfqrcrm6asdg4ckk5a3dwxasdgfo6hjasdcdwbasdebywvsq

Enter a tenancy OCID: ocid1.tenancy.oc1..aadddddaaj3qj3qb26sasdf27q7mwasdg43zw52obasdg3cnjk12vn433lba

Enter a region by index or name(e.g.

1: af-johannesburg-1, 2: ap-chiyoda-1, 3: ap-chuncheon-1, 4: ap-dcc-canberra-1, 5: ap-hyderabad-1,6: ap-ibaraki-1, 7: ap-melbourne-1, 8: ap-mumbai-1, 9: ap-osaka-1, 10: ap-seoul-1,11: ap-singapore-1, 12: ap-sydney-1, 13: ap-tokyo-1, 14: ca-montreal-1, 15: ca-toronto-1,16: eu-amsterdam-1, 17: eu-frankfurt-1, 18: eu-marseille-1, 19: eu-milan-1, 20: eu-stockholm-1,21: eu-zurich-1, 22: il-jerusalem-1, 23: me-abudhabi-1, 24: me-dcc-muscat-1, 25: me-dubai-1,26: me-jeddah-1, 27: sa-santiago-1, 28: sa-saopaulo-1, 29: sa-vinhedo-1, 30: uk-cardiff-1,31: uk-gov-cardiff-1, 32: uk-gov-london-1, 33: uk-london-1, 34: us-ashburn-1, 35: us-gov-ashburn-1,36: us-gov-chicago-1, 37: us-gov-phoenix-1, 38: us-langley-1, 39: us-luke-1, 40: us-phoenix-1,41: us-sanjose-1): 28

Do you want to generate a new API Signing RSA key pair? (If you decline you will be asked to supply the path to an existing key.) [Y/n]: y

Enter a directory for your keys to be created [/home/ocicliusr/.oci]:[ENTER]
Enter a name for your key [oci_api_key]:[ENTER]
Public key written to: /home/ocicliusr/.oci/oci_api_key_public.pem
Enter a passphrase for your private key (empty for no passphrase):[ENTER]
Private key written to: /home/ocicliusr/.oci/oci_api_key.pem
Fingerprint: 91:8f:31:7e:15:48:4f:a3:da:a6:b7:d3:b2:74:15:12
Config written to /home/ocicliusr/.oci/config


If you haven't already uploaded your API Signing public key through the
console, follow the instructions on the page linked below in the section
'How to upload the public key':

https://docs.cloud.oracle.com/Content/API/Concepts/apisigningkey.htm#How2

##Guardar la public key

$ cat 
/home/ocicliusr/.oci/oci_api_key_public.pem


Una vez instalado OCI, tenemos que agregar la key publica al usuario.

Dentro del menu de OCI en el perfil del usuario que creamos en el paso 1, vamos a los recursos (abajo a la izquierda) y hacemos click en API Keys, luego en Add Key.

Una vez que pegamos la publick key, nos genera el config file del oci, el cual tenemos que copiar para crear dentro del home del usuario de linux. En /home/user/.oci/config (como muestra la imagen)



4. Probar comandos.

Ahora solo nos queda jugar con los comandos de oci-cli, hay que destacar que estas apis tienen constantes actualizaciones, asi que recomiendo validar cada tanto que no exista una versión nueva.

Dejo el link de referencia a todos los comandos de oci-cli: click 

Ejemplo para realizar un stop de una instancia iaas:

oci compute instance action --action stop --instance-id <OCID de la Instancia>

Ejemplo para realizar un start de una instancia iaas:

oci compute instance action --action start --instance-id <OCID de la Instancia>


Realmente hay muchisimos comandos que se pueden investigar. Los output de esos son en formato json que los podrian manipular par mostrar en cualquier aplicación compatible con la lectura de json files.

Para obtener ayuda desde la misma linea de comando, pueden ejecutar.

oci --help



si te gusto te invito a seguirme: SEGUIR


16 de mayo de 2022

Como realizar un Backup con RMAN usando Objects Storage en OCI

 

Buenas!!, hace rato que no escrito nada en el post pero hace poco realice una configuración muy interesante en un equipo en Oracle OCI y se me dificulto buscar información concreta.

Como todos saben hoy Oracle, ofrece servicios de DB en la nube que tienen muchísimas ventajas y automatizaciones. Servicios como DBCS, ADB, EXACS… pero también podríamos tener una Instancia Linux con un motor de Oracle Database administrado por nosotros en la nube.  Y para este último caso, les cuento que es posible hacer uso de algunas de las ventajas que tenemos en la nube, como por ejemplo realizar los backups de archive y de la db con rman directamente en objects storage utilizando la tool de Cloud Backup de Oracle. Esta configuración nos va a permitir bajar los costos de storage para el almacenamiento de los mismos y no preocuparnos por el espacio que estemos utilizando ya que lo resolveríamos directamente en OCI.

Para realizar esta tarea vamos a ver los siguientes pasos:

  1. Descarga e instalación de Oracle Database Cloud Backups Module.
  2. Instalación de JAVA
  3. Creación del Objects-Storage
  4. Recompilación de información en OCI para la configuración
  5. Creación de PareKey en Oracle Home.
  6. Ejecución
  7. Configuraciones Particulares de RMAN

La actividad se realizo sobre un Oracle Linux 7.9 y un Oracle Database 19c.

Tips:

  • No me funciono con jdk 18, se instalo una versión particular que vemos más adelante.
  • Si no encuentran los objetos desde la consola de oci pero en RMAN funciona todo bien, seguramente falto el parámetro que indica el nombre del Objects-Storage
  • En la documentación van a ver que se hace referencia a distintos valores como UOCID, TOCID, etc.. En oci siempre es el valor OCID (Id del recurso), pero se hace referencia como por ejemplo el User OCID -> UOCID. En conclusión cuando buscan la información en OCI todos tienen el mismo nombre: OCID.
  • El Bucket hay que crearlo tipo Standard, sino da error: ORA-27192: skgfcls: sbtclose2 KBHS-00719: Error 'NotRestored'; The object is in Archive tier and needs to be restored.
  • Es obligatorio activar la encriptación.

1. Software

Bajar de OTN Oracle Cloud Backup Module

https://www.oracle.com/database/technologies/oracle-cloud-backup-downloads.html






Hacemos click en “All Supported Platforms” y descargamos el file “opc_installer.zip”

Dejamos el .zip en /home/oracle por ejemplo y lo descomprimimos.





2. Instalación JAVA

La versión de java con la que me funciono es la siguiente:

https://www.oracle.com/java/technologies/javase/javase8u211-later-archive-downloads.html









cd /u01/java

tar zxvf jre-8u331-linux-x64.tar.gz

Agregar las variables al .bashrc file y volver a loguearnos

vi .bashrc

# User specific aliases and functions

export JAVA_HOME=/u01/java/jre1.8.0_331

export PATH=$JAVA_HOME/bin:$PATH

- Volver a loguearnos para que tome las variables

$ java -version

java version "1.8.0_331"

Java(TM) SE Runtime Environment (build 1.8.0_331-b09)

Java HotSpot(TM) 64-Bit Server VM (build 25.331-b09, mixed mode)

 

 

3. Creación de Buckets

Es necesario loguearnos en OCI dentro del compartment que seleccionemos en base al entorno o ubicación de la db que vayamos a backupear.

Para crearlo vamos a Storage y luego en Buckets











Click en "Create Bucket"

Dejar el tipo "Standard".











4. Obtener la información necesario de OCI


TOCID:  

Es el Tenancy ID y lo obtenemos visualizando el detalle del mismo, dentro de Governance & Administration -> Tenancy Details

 






















COCID:

El compartment ID donde creamos nuestro Buckets.

Para obtenerlo vamos al menú identity y luego al sub menú compartment:












Luego seleccionamos el compartment donde creamos nuestro bucket y copiamos el OCID:











UOCID:

El user ID, este usuario tiene que tener acceso al Bucket que creamos, también pude ser un usuario de servicio creado en OCI. En otro post voy a explicar como crear un usuario y darle los permisos mínimos. Por el momento lo voy a mostrar con mi usuario:

Logueados en OCI vamos a nuestro profile:















Objects-Storage URL

El Listado de url para el objects-storage lo podemos obtener del siguiente links:

https://docs.oracle.com/en-us/iaas/api/#/en/objectstorage/20160918/

En particular en mi caso voy a utilizar el de la región de SapPAulo.

-host https://objectstorage.sa-saopaulo-1.oraclecloud.com

5. Creación de Keys al usuario

Es necesario crear un par de keys para la segura conexión al Buckets, para esto lo podemos hacer en forma automática desde la misma tools de Oracle.

Validar Variable ORACLE_HOME:



$ echo $ORACLE_HOME
/u01/app/oracle/product/19.0.0/dbhome_1
$ cd /home/oracle/opc_installer/oci_installer
$ java -jar oci_install.jar -newrsakeypair -walletDir $ORACLE_HOME/dbs/opc_wallet

Oracle Database Cloud Backup Module Install Tool, build 19.3.0.0.0DBBKPCSBP_2019-10-16

OCI API signing keys are created:
PRIVATE KEY --> /u01/app/oracle/product/19.0.0/dbhome_1/dbs/opc_wallet/oci_pvt
PUBLIC KEY --> /u01/app/oracle/product/19.0.0/dbhome_1/dbs/opc_wallet/oci_pub

Please upload the public key in the OCI console.

 

Dentro de la consola de OCI, en el profile del usuario que se va a conectar con el Bucket, es necesario pegar la key que generamos en el paso anterior.

Vamos a profile y abajo a la izquierda en la lista de recursos seleccionamos API Keys y click en ADD.









Dentro pegamos la public key que creamos en el paso anterior:












Luego hacer click en ADD y nos va a mostrar la información para el /oci/config file


















En este paso obtenemos el fingerprint para la linea de ejecución.

cd (vamos al home)

mkdir ~/.oci    

cd .oci

vi config

 

[DEFAULT]

user=ocid1.user.oc1..aaaaaaaa47izg2ornzi56cu6bl6stmtyqcuwfkllaoq7nyi4f2k7du7z3kkq

fingerprint=ec:6d:5b:51:18:ee:ff:26:91:df:ad:fc:94:22:6b:6d

tenancy=ocid1.tenancy.oc1..aaaaaaaayu7yg6vebcjpmx7xjkfp34osppv4oewvayazvze5eix3sygbgfzq

region=sa-saopaulo-1

key_file=/u01/app/oracle/product/19.0.0/dbhome_1/dbs/opc_wallet/oci_pvt

 


6. Ejecución

Ya estamos en condiciones de ejecutar el comando de instalación de las librerías de backup

 

Revisión de Parámetros:

java -jar oci_install.jar -host https://objectstorage.sa-saopaulo-1.oraclecloud.com

-pvtKeyFile $ORACLE_HOME/dbs/opc_wallet/oci_pvt

-pubFingerPrint ec:7d:3h:51:18:ee:ff:11:91:df:ad:fc:94:13:6b:8d

-tOCID ocid1.tenancy.oc1..aaaaaaaayu7y************************************ygbgfzq

-uOCID ocid1.user.oc1..aaaaaaa****************************************k7du7z3kkq

-libDir $ORACLE_HOME/lib

-walletDir $ORACLE_HOME/dbs/opc_wallet

-bucket bucket-name

 

 

Ejecución

java -jar oci_install.jar -host https://objectstorage.sa-saopaulo-1.oraclecloud.com -pvtKeyFile $ORACLE_HOME/dbs/opc_wallet/oci_pvt -pubFingerPrint ec:6d:5b:51:18:ee:ff:26:91:df:ad:fc:94:22:6b:6d -tOCID ocid1.tenancy.oc1..aaaaaaaay**************************************gfzq -uOCID ocid1.user.oc1..a********************************u7z3kkq -libDir $ORACLE_HOME/lib -walletDir $ORACLE_HOME/dbs/opc_wallet -bucket bucket-name

Oracle Database Cloud Backup Module Install Tool, build 19.3.0.0.0DBBKPCSBP_2019-10-16

Oracle Database Cloud Backup Module credentials are valid.

Backups would be sent to bucket bucket-name.

Oracle Database Cloud Backup Module wallet created in directory /u01/app/oracle/product/19.0.0/dbhome_1/dbs/opc_wallet.

Oracle Database Cloud Backup Module initialization file /u01/app/oracle/product/19.0.0/dbhome_1/dbs/opccdbdb.ora created.

Downloading Oracle Database Cloud Backup Module Software Library from Oracle Cloud Infrastructure.

Download complete.

 

 7.      Configure RMAN 

$ rman target /
Recovery Manager: Release 19.0.0.0.0 - Production on Tue Apr 12 22:11:10 2022
Version 19.13.0.0.0
Copyright (c) 1982, 2019, Oracle and/or its affiliates.  All rights reserved.
connected to target database: DBNAME (DBID=2396711937)
 
RMAN> CONFIGURE CHANNEL DEVICE TYPE 'SBT_TAPE' PARMS
 'SBT_LIBRARY=/u01/app/oracle/product/19.0.0/dbhome_1/lib/libopc.so,
 SBT_PARMS=(OPC_PFILE=/u01/app/oracle/product/19.0.0/dbhome_1/dbs/opccdbdb.ora)';
using target database control file instead of recovery catalog
new RMAN configuration parameters:
CONFIGURE CHANNEL DEVICE TYPE 'SBT_TAPE' PARMS  
'SBT_LIBRARY=/u01/app/oracle/product/19.0.0/dbhome_1 /lib/libopc.so, 
SBT_PARMS=(OPC_PFILE=/u01/app/oracle/product/19.0.0/dbhome_1/dbs/opccdbdb.ora)';
new RMAN configuration parameters are successfully stored

 

RMAN> CONFIGURE DEFAULT DEVICE TYPE TO SBT_TAPE;
new RMAN configuration parameters:
CONFIGURE DEFAULT DEVICE TYPE TO 'SBT_TAPE';
new RMAN configuration parameters are successfully stored
released channel: ORA_DISK_1
 
RMAN> CONFIGURE BACKUP OPTIMIZATION ON;
new RMAN configuration parameters:
CONFIGURE BACKUP OPTIMIZATION ON;
new RMAN configuration parameters are successfully stored
 
RMAN> CONFIGURE ENCRYPTION FOR DATABASE ON;
using target database control file instead of recovery catalog
new RMAN configuration parameters:
CONFIGURE ENCRYPTION FOR DATABASE ON;
new RMAN configuration parameters are successfully stored
 
RMAN> SET ENCRYPTION ON IDENTIFIED BY 'clave encriptación' ONLY; 
executing command: SET encryption

 


Prueba


RMAN> backup current controlfile;

Starting backup at 12-APR-22
using channel ORA_SBT_TAPE_1
channel ORA_SBT_TAPE_1: starting full datafile backup set
channel ORA_SBT_TAPE_1: specifying datafile(s) in backup set
including current control file in backup set
channel ORA_SBT_TAPE_1: starting piece 1 at 12-APR-22
channel ORA_SBT_TAPE_1: finished piece 1 at 12-APR-22
piece handle=040qpsal_4_1_1 tag=TAG20220412T221653 comment=API Version 2.0,MMS Version 21.0.0.1
channel ORA_SBT_TAPE_1: backup set complete, elapsed time: 00:00:03
Finished backup at 12-APR-22

Starting Control File and SPFILE Autobackup at 12-APR-22
piece handle=c-2396793937-20220412-01 comment=API Version 2.0,MMS Version 21.0.0.1
Finished Control File and SPFILE Autobackup at 12-APR-22



si te gusto te invito a seguirme: SEGUIR

10 de mayo de 2022

Validar rápidamente si tengo instalado el último CPU de Oracle E-Business Suite

Buenas !!!, esto es una entrada muy rápida y corta.

Por si no estaban todos al tanto, Oracle a partir del CPU de Julio del 2021 sumo una funcionalidad en la consola de Seguridad de Oracle E-Business Suite (EBS) que nos permite validar cual fue el último Critical Patch Update (CPU) instalado..

Donde se puede ver?

Desde la responsabilidad "Functional Administrator" en Oracle E-Business Suite, vamos a "Configuration Manager" y abrimos la Secure Configuration Console. 

Dentro buscamos "FND Min CPU patch level check" al hacerle click nos va a mostrar el detalle del CPU instalado en la instancia.

con el Formato YYYY.MM, por ejemplo "2021.07" el cual sería el CPU de Julio del 2021.

Lo bueno que si lo quieren validar más rápido, se puede obtener la misma información desde un SQL en la tabla AD_TRACKABLE_ENTITIES.

SQL> col CPU format a9
SQL> select max(CODELEVEL) "CPU" from AD_TRACKABLE_ENTITIES where ABBREVIATION in ('ebscpu');

Esto nos va a devolver el valor por ejemplo "2021.07" que como dijimos antes represente el CPU de Julio del 2021.

Referencias:

Para versiones 12.1 y 11.5 pueden seguir las siguientes notas:

  • Document 2829137.1, ANNOUNCEMENT: Additional Coverage Options for 12.1.3 E-Business Suite Sustaining Support
  • Document 1596629.1, ANNOUNCEMENT: Additional Coverage Options for 11.5.10 E-Business Suite Sustaining Support

Espero que les sirva.
Saludos!
Cristian