miércoles, 15 de abril de 2020

Oracle Critical Patch Update for April 2020


April 14, 2020
Oracle Critical Patch Update for April 2020

Dear Oracle Customer,

The Critical Patch Update for April 2020 was released on April 14th, 2020.
Oracle strongly recommends applying the patches as soon as possible.

If you are new to this process, please review Oracle's Security Fixing Policies and the Critical Patch Update Advisory. After reviewing these resources, if you are unable to determine if you require a software update, or how to apply it, please contact Oracle Support.

The Critical Patch Update Advisory is the starting point for relevant information.
It includes the list of products affected, pointers to obtain the patches, a summary of the security vulnerabilities for each product suite, and links to other important documents. Supported products that are not listed in the "Affected Products and Components" section of the advisory do not require new patches to be applied.

Also, it is essential to review the Critical Patch Update supporting documentation referenced in the Advisory before applying patches, as this is where you can find important pertinent information.

Critical Patch Update Advisories are available at the following location:

Oracle Technology Network: https://www.oracle.com/security-alerts/

Oracle Cloud Customers should review:
https://www.oracle.com/security-alerts/#cloud

The Critical Patch Update Advisory for April 2020 is available at the following location:

Oracle Technology Network:
https://www.oracle.com/security-alerts/cpuapr2020.html

Important information can also be found at:
https://blogs.oracle.com/security/

Oracle's Security Fixing Policies are available at the following location:

https://www.oracle.com/corporate/security-practices/assurance/vulnerability/security-fixing.html

The next four dates for Critical Patch Updates are:

July 14, 2020
October 20, 2020
January 19, 2021
April 20, 2021

sábado, 11 de abril de 2020

Porque en estos momentos, es bueno un poco de buena vibra y esperanza


Filarmonica de Costa Rica Somos una orquesta de 5 millones de costarricenses que separados somos más fuertes, porque mañana estaremos más unidos que nunca. Ya tendremos tiempo para abrazarnos y recuperar los Momentos que estuvimos distanciados. Pero hoy, cuidémonos desde casa para que mañana no falte ninguno. Quédate en casa, en armonía con nuestro país, sonamos mejor. Por tus hijos, tus abuelos, tus amigos, tus nietos, por vos. Nuestro Mayor legado será recordar que una vez, nos distanciamos para volver a estar juntos.

viernes, 10 de abril de 2020

Oracle Database 20c en Always Free Services: Nuevas características Mejoras SET y Multi SET


La versión de base de datos Oracle 20c, presenta el nuevo operador EXCEPT/EXCEPT ALL

EXCEPT es un estándar ANSI.

Oracle 20c agrega soporte para la opción "ALL" para operadores de conjuntos INTERSECT y MINUS

EXCEPT el operador del conjunto elimina las filas del primer conjunto que también aparecen en el segundo conjunto –con eliminación duplicada– sinónimo de MINUS y tiene exactamente la misma semántica

EXCEPT ALL devuelve filas presentes en el primer conjunto pero no en el segundo. –Puede haber duplicados en el resultado final.

Veamos su funcionamiento, a partir de la creación de un par de tablas con algunos pocos registros.

[oracle@oracledbacr ~]$ sqlplus aprendizaje/ORacle_20_21@lab2

SQL*Plus: Release 20.0.0.0.0 - Production on Sat Apr 11 00:48:42 2020
Version 20.2.0.0.0

Copyright (c) 1982, 2019, Oracle.  All rights reserved.

Last Successful login time: Fri Apr 10 2020 23:51:24 +00:00

Connected to:
Oracle Database 20c EE Extreme Perf Release 20.0.0.0.0 - Production
Version 20.2.0.0.0

SQL> show user
USER is "APRENDIZAJE"

SQL> connect system/ORacle_20_21@lab2;
Connected.

SQL>  create table t1( x number, y number);

Table created.

SQL> insert into t1 values (&v_x, &v_y);
Enter value for v_x: 1
Enter value for v_y: 2
old   1: insert into t1 values (&v_x, &v_y)
new   1: insert into t1 values (1, 2)

1 row created.

SQL> /
Enter value for v_x: 3
Enter value for v_y: NULL
old   1: insert into t1 values (&v_x, &v_y)
new   1: insert into t1 values (3, NULL)

1 row created.

SQL> /
Enter value for v_x: NULL
Enter value for v_y: 4
old   1: insert into t1 values (&v_x, &v_y)
new   1: insert into t1 values (NULL, 4)

1 row created.

SQL> /
Enter value for v_x: NULL
Enter value for v_y: ^C

SQL> select * from t1;

         X          Y
---------- ----------
         1          2
         3
                    4

SQL> insert into t1 values (&v_x, &v_y);
Enter value for v_x: 3
Enter value for v_y: 3
old   1: insert into t1 values (&v_x, &v_y)
new   1: insert into t1 values (3, 3)

1 row created.

SQL> /
Enter value for v_x: 5
Enter value for v_y: 5
old   1: insert into t1 values (&v_x, &v_y)
new   1: insert into t1 values (5, 5)

1 row created.

SQL> /
Enter value for v_x: NULL
Enter value for v_y: 5
old   1: insert into t1 values (&v_x, &v_y)
new   1: insert into t1 values (NULL, 5)

1 row created.

SQL> commit;

Commit complete.

SQL> select * from t1;

         X          Y
---------- ----------
         1          2
         3
                    4
         3          3
         5          5
                    5

6 rows selected.

SQL> create table t2( x number, y number);

Table created.

SQL> insert into t2  values (&v_x, &v_y);
Enter value for v_x: 3
Enter value for v_y: 3
old   1: insert into t2  values (&v_x, &v_y)
new   1: insert into t2  values (3, 3)

1 row created.

SQL> /
Enter value for v_x: 3
Enter value for v_y: 3
old   1: insert into t2  values (&v_x, &v_y)
new   1: insert into t2  values (3, 3)

1 row created.

SQL> /
Enter value for v_x: 4
Enter value for v_y: 4
old   1: insert into t2  values (&v_x, &v_y)
new   1: insert into t2  values (4, 4)

1 row created.

SQL> /
Enter value for v_x: 5
Enter value for v_y: 5
old   1: insert into t2  values (&v_x, &v_y)
new   1: insert into t2  values (5, 5)

1 row created.

SQL> /
Enter value for v_x: NULL
Enter value for v_y: 4
old   1: insert into t2  values (&v_x, &v_y)
new   1: insert into t2  values (NULL, 4)

1 row created.

SQL> commit;

Commit complete.

SQL> select * from t1;

         X          Y
---------- ----------
         1          2
         3
                    4
         3          3
         5          5
                    5

6 rows selected.

SQL> select * from t2;

         X          Y
---------- ----------
         3          3
         3          3
         4          4
         5          5
                    4


SQL> select x from t1
  2  except
  3  select x from t2;

         X
----------
         1

SQL> select y from t1
  2  except
  3  select y from t2;

         Y
----------
         2

SQL> set null 'NULL'

SQL> select y from t1
  2  except
  3  select y from t2;

         Y
----------
         2
NULL

SQL> select x from t1
  2  except all
  3  select x from t2;

         X
----------
         1
NULL

SQL> select y from t1
  2  except all
  3  select y from t2;

         Y
----------
         2
         5
NULL

SQL>

Oracle Database 20c- En ambiente "Always Free Services", primeras inexperiencias

Bueno, bien claro lo dice la nota introductoria, esta versión no debe ser puesta en ambiente productivos.

A partir de la disponibilidad para hacer despliegue en la plataforma de "Always Free Services" de Oracle, de la nueva versión de base de datos Oracle 20c, he empezado a tener las primeras desaventuras
Mi laboratorio inicia con la creación de una VM en el área de Hardware dedicado, VM y Exadata del servicio Cloud de Oracle.


El despliegue del servicio, fue muy rápido para tratarse de una plataforma gratuita.
El tema de conexión vía PUTTY, no tuve ningún inconveniente en especial.

Como cualquier servicio de Oracle Cloud, es necesario conectarse con el usuario OPC, para luego hacer un sudo al usuario "root" y cambiar la contraseña del usuario "oracle".

Hasta aquí nada especial. Verificamos y tenemos configurado de antemano ( de facto ), las variables de ambiente de Oracle.

Reviso el estado del servicio LISTENER y el mismo me presenta la siguiente información:

[oracle@oracledbacr admin]$ lsnrctl status

LSNRCTL for Linux: Version 20.0.0.0.0 - Production on 10-APR-2020 23:40:04

Copyright (c) 1991, 2019, Oracle.  All rights reserved.

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=oracledbacr.sub04081356520.vncoracledbacr.oraclevcn.com)
(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 20.0.0.0.0 - Production
Start Date                10-APR-2020 22:42:31
Uptime                    0 days 0 hr. 57 min. 33 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /u01/app/oracle/homes/OraDB20Home1/network/admin/listener.ora
Listener Log File         /u01/app/oracle/diag/tnslsnr/oracledbacr/listener/alert/log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=oracledbacr.sub04081356520.vncoracledbacr.oraclevcn.com)(PORT=1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcps)(HOST=oracledbacr.sub04081356520.vncoracledbacr.oraclevcn.com)(
   ORT=5500))(Security=(my_wallet_directory=/u01/app/oracle/homes/OraDB20Home1/admin/DB20c_iad12j/xdb_wallet))
  (Presentation=HTTP)(Session=RAW))
Services Summary...
Service "9d45645c541e0b7fe0530206f40ae9e9.sub04081356520.vncoracledbacr.oraclevcn.com" has 1 instance(s).
  Instance "DB20c", status READY, has 1 handler(s) for this service...
Service "DB20cXDB.sub04081356520.vncoracledbacr.oraclevcn.com" has 1 instance(s).
  Instance "DB20c", status READY, has 1 handler(s) for this service...
Service "DB20c_iad12j.sub04081356520.vncoracledbacr.oraclevcn.com" has 1 instance(s).
  Instance "DB20c", status READY, has 1 handler(s) for this service...
Service "lab2.sub04081356520.vncoracledbacr.oraclevcn.com" has 1 instance(s).
  Instance "DB20c", status READY, has 1 handler(s) for this service...
The command completed successfully
[oracle@oracledbacr admin]$

Noten que he puesto una ruta de configuración del LISTENER resaltada en negrita, esto es de nuestro interés para más adelante.

Revisando el contenido del archivo "oratab", me muestra la información del servicio DB20c, configurado, apuntando al directorio: "/u01/app/oracle/product/20.0.0/dbhome_1"

Para mí en este momento, me es de nada o muy poca importancia esto, pero luego lo voy a pagar más adelante.

[oracle@oracledbacr admin]$ more /etc/oratab
DB20c:/u01/app/oracle/product/20.0.0/dbhome_1:Y
[oracle@oracledbacr admin]$ . oraenv
ORACLE_SID = [DB20c] ? DB20c
The Oracle base remains unchanged with value /u01/app/oracle

Verifico las variables de ambiente configuradas en el sistema, por curiosidad nada más.

[oracle@oracledbacr admin]$ env|grep ORACLE
ORACLE_UNQNAME=DB20c_iad12j
ORACLE_SID=DB20c
ORACLE_BASE=/u01/app/oracle
ORACLE_HOME=/u01/app/oracle/product/20.0.0/dbhome_1

Casi siempre me conecto como SYSDBA para verificar que realmente la instancia del contenedor esta arriba y los servicios acoplados disponibles para ser utilizados.

[oracle@oracledbacr admin]$ sqlplus /nolog

SQL*Plus: Release 20.0.0.0.0 - Production on Fri Apr 10 23:41:22 2020
Version 20.2.0.0.0

Copyright (c) 1982, 2019, Oracle.  All rights reserved.

SQL> connect / as sysdba
Connected.
SQL> desc v$version
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------
 BANNER                                             VARCHAR2(80)
 BANNER_FULL                                        VARCHAR2(160)
 BANNER_LEGACY                                      VARCHAR2(80)
 CON_ID                                             NUMBER

SQL> select BANNER_FULL from v$version;

BANNER_FULL
--------------------------------------------------------------------
Oracle Database 20c EE Extreme Perf Release 20.0.0.0.0 - Production
Version 20.2.0.0.0

SQL> col name format a30

SQL> select con_id, name, open_mode from v$pdbs;

    CON_ID NAME                           OPEN_MODE
---------- ------------------------------ ----------
         2 PDB$SEED                       READ ONLY
         3 LAB2                           READ WRITE

Como observan, no hay nada especial, todo parece estar bien.

Me traslado en el sistema operativo al directorio "network/admin", en la ruta del $ORACLE_HOME, para crear el archivo de configuración de conexiones de la base de datos.

[oracle@oracledbacr admin]$ more tnsnames.ora
lab2 =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = oracledbacr.sub04081356520.vncoracledbacr.oraclevcn.com)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = lab2.sub04081356520.vncoracledbacr.oraclevcn.com)
    )
)

cdb =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = oracledbacr.sub04081356520.vncoracledbacr.oraclevcn.com)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = DB20c_iad12j.sub04081356520.vncoracledbacr.oraclevcn.com)
    )
)

Este archivo lo he creado a partir de la información que me muestra el servicio LISTENER que se encuentra arriba.

Procedo a realizar la prueba de conexión a las cadenas definidas de servicio.

[oracle@oracledbacr admin]$ tnsping cdb

TNS Ping Utility for Linux: Version 20.0.0.0.0 - Production on 10-APR-2020 23:06:38

Copyright (c) 1997, 2019, Oracle.  All rights reserved.

Used parameter files:
/u01/app/oracle/homes/OraDB20Home1/network/admin/sqlnet.ora


TNS-03505: Failed to resolve name

Demonios algo no esta funcionando correctamente. Reviso una y otra vez la configuración del tnsnames.ora y no veo nada malo en el archivo. Que cambió en la sintaxis de configuración del tnsnames, me pregunto.?

Claro, una de las nuevas características de Oracle Database 20c, en el proceso de instalación; todos los Oracle Homes a partir de esta versión, son en modo READ-ONLY de facto.

Vuelvo a revisar el contenido del servicio LISTENER y recién percato, que la ruta de configuración del archivo del servicio, esta en una ruta distinta a la del $ORACLE_HOME

Vaya sorpresa, lo que hace la costumbre. Por eso es tan importante el proceso de estudio, las cosas cambian y en Oracle, con cada versión, hay cambios significativos, que nos pueden volver locos.

Me voy al directorio indicado en el estado del LISTENER y EUREKA, me encuentro con los archivos de configuración de listener, el sqlnet y el tnsnames. En la ruta del $ORACLE_HOME/network/admin, el directorio estaba vacío.

[oracle@oracledbacr admin]$ pwd
/u01/app/oracle/homes/OraDB20Home1/network/admin
[oracle@oracledbacr admin]$ ls -la
total 20
drwxr-xr-x. 2 oracle oinstall 4096 Apr 10 23:37 .
drwxr-xr-x. 5 oracle oinstall 4096 Jan 29 09:21 ..
-rw-r-----  1 oracle oinstall  378 Apr  9 23:18 listener.ora
-rw-r-----  1 oracle oinstall  666 Apr  9 23:22 sqlnet.ora
-rw-r-----  1 oracle oinstall  809 Apr 10 23:37 tnsnames.ora

Vuelvo a crear las cadenas de conexión con la información que me muestra en la primera entrada el tnsnames.

[oracle@oracledbacr admin]$ more tnsnames.ora

LISTENER_DB20C=(ADDRESS=(PROTOCOL=TCP)(HOST=oracledbacr.sub04081356520.vncoracledbacr.oraclevcn.com)(PORT=1521))
DB20c_iad12j=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=oracledbacr.sub04081356520.vncoracledbacr.oraclevcn.com)(PORT=1521))
(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME
=DB20c_iad12j.sub04081356520.vncoracledbacr.oraclevcn.com)))

CDB=
        (DESCRIPTION=
                (ADDRESS=(PROTOCOL=TCP)(HOST=oracledbacr.sub04081356520.vncoracledbacr.oraclevcn.com)(PORT=1521))
                (CONNECT_DATA=(SERVER=DEDICATED)
                (SERVICE_NAME=DB20c_iad12j.sub04081356520.vncoracledbacr.oraclevcn.com)
                )
        )
LAB2=
        (DESCRIPTION=
                (ADDRESS=(PROTOCOL=TCP)(HOST=oracledbacr.sub04081356520.vncoracledbacr.oraclevcn.com)(PORT=1521))
                (CONNECT_DATA=(SERVER=DEDICATED)
                (SERVICE_NAME=lab2.sub04081356520.vncoracledbacr.oraclevcn.com)
                )
        )

Ahora si, vamos a probar la conexión a los servicios y veremos que pasa.

[oracle@oracledbacr admin]$ tnsping cdb

TNS Ping Utility for Linux: Version 20.0.0.0.0 - Production on 10-APR-2020 23:46:20

Copyright (c) 1997, 2019, Oracle.  All rights reserved.

Used parameter files:
/u01/app/oracle/homes/OraDB20Home1/network/admin/sqlnet.ora


Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION= (ADDRESS=(PROTOCOL=TCP)(HOST=oracledbacr.sub04081356520.vncoracledbacr.oraclevcn.com)(PORT=1521)) 
(CONNECT_DATA=(SERVER=DEDICATED) (SERVICE_NAME=DB20c_iad12j.sub04081356520.vncoracledbacr.oraclevcn.com)))
OK (0 msec)
[oracle@oracledbacr admin]$ tnsping lab2

TNS Ping Utility for Linux: Version 20.0.0.0.0 - Production on 10-APR-2020 23:46:25

Copyright (c) 1997, 2019, Oracle.  All rights reserved.

Used parameter files:
/u01/app/oracle/homes/OraDB20Home1/network/admin/sqlnet.ora


Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION= (ADDRESS=(PROTOCOL=TCP)(HOST=oracledbacr.sub04081356520.vncoracledbacr.oraclevcn.com)(PORT=1521)) 
(CONNECT_DATA=(SERVER=DEDICATED) (SERVICE_NAME=lab2.sub04081356520.vncoracledbacr.oraclevcn.com)))
OK (0 msec)

Listo, hemos superado el primer problema encontrado.

Vamos ahora con la conexión de forma directa a los servicios con la herramienta SQL*Plus.

Si SQL*Plus, aun existe en esta versión, a pesar de los rumores de su desaparición.

[oracle@oracledbacr admin]$ sqlplus /nolog

SQL*Plus: Release 20.0.0.0.0 - Production on Fri Apr 10 23:41:22 2020
Version 20.2.0.0.0

Copyright (c) 1982, 2019, Oracle.  All rights reserved.

SQL> connect / as sysdba
Connected.
SQL> desc v$version
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------
 BANNER                                             VARCHAR2(80)
 BANNER_FULL                                        VARCHAR2(160)
 BANNER_LEGACY                                      VARCHAR2(80)
 CON_ID                                             NUMBER

SQL> select BANNER_FULL from v$version;

BANNER_FULL
--------------------------------------------------------------------
Oracle Database 20c EE Extreme Perf Release 20.0.0.0.0 - Production
Version 20.2.0.0.0

SQL> col name format a30

SQL> select con_id, name, open_mode from v$pdbs;

    CON_ID NAME                           OPEN_MODE
---------- ------------------------------ ----------
         2 PDB$SEED                       READ ONLY
         3 LAB2                           READ WRITE

SQL> show pdbs

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ ONLY  NO
         3 LAB2                           READ WRITE NO
SQL>


Como ven, tenemos el servicio LAB2 que es una instancia de base de datos acoplada o PDB (Pluggable Database), la cuál quiero utilizar para realizar algunas pruebas.

Así que vamos a crear un vulgar y simple usuario, como lo hemos hecho en los últimos 8 años en una base de datos de CONTENEDOR de Oracle.


SQL> show pdbs

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ ONLY  NO
         3 LAB2                           READ WRITE NO

SQL> alter session set container=LAB2;
Session altered.

SQL> select instance_name from v$instance;

INSTANCE_NAME
----------------
DB20c

SQL> create user aprendizaje identified by oracle;
create user aprendizaje identified by oracle
*
ERROR at line 1:
ORA-28003: password verification for the specified password failed
ORA-20000: password length less than 9 characters

SQL> create user aprendizaje identified by Oracle$2020;
create user aprendizaje identified by Oracle$2020
*
ERROR at line 1:
ORA-28003: password verification for the specified password failed
ORA-20000: password must contain 2 or more uppercase characters

SQL> create user aprendizaje identified by ORacle;
create user aprendizaje identified by ORacle
*
ERROR at line 1:
ORA-28003: password verification for the specified password failed
ORA-20000: password length less than 9 characters

SQL> create user aprendizaje identified by ORacle$20_20;
User created.

Como observan, tuvimos algunos inconvenientes para la definición de la contraseña del usuario. El PROFILE de facto y las reglas establecidas para control de contraseñas, pide más de lo que estamos acostumbrados a configurar para un ambiente de pruebas.

Sigamos y brindemos algunos privilegios a nivel de sistema, para poder crear tablas y conectarnos a la base de datos con nuestro usuario nuevo "APRENDIZAJE".

SQL> select tablespace_name from dba_tablespaces;

TABLESPACE_NAME
------------------------------
SYSTEM
SYSAUX
UNDOTBS1
TEMP
USERS

SQL> create tablespace TBS_DATA;
Tablespace created.

SQL> alter user aprendizaje quota unlimited on TBS_DATA;
User altered.

SQL> grant create table to aprendizaje;
Grant succeeded.

SQL> grant create session to aprendizaje;

Grant succeeded.

Todo listo entonces, vamos a conectarnos a la instancia PDB.

[oracle@oracledbacr admin]$ sqlplus aprendizaje/ORacle$20_20@lab2

SQL*Plus: Release 20.0.0.0.0 - Production on Fri Apr 10 23:47:35 2020
Version 20.2.0.0.0

Copyright (c) 1982, 2019, Oracle.  All rights reserved.

ERROR:
ORA-01017: invalid username/password; logon denied


Enter user-name: ^C

Diablos, por las barbas de mercurio, que esto. me da error de clave o usuario inválido al conectarme y si lo hago con el usuario SYSTEM, también.

[oracle@oracledbacr admin]$ sqlplus system/ORacle$20_20@lab2

SQL*Plus: Release 20.0.0.0.0 - Production on Fri Apr 10 23:48:32 2020
Version 20.2.0.0.0

Copyright (c) 1982, 2019, Oracle.  All rights reserved.

ERROR:
ORA-01017: invalid username/password; logon denied


Enter user-name: ^C

Algo hice mal, puede ser que escribí mal la contraseña. Voy a cambiarla y probar nuevamente la conexión.

[oracle@oracledbacr admin]$ sqlplus /nolog

SQL*Plus: Release 20.0.0.0.0 - Production on Fri Apr 10 23:48:41 2020
Version 20.2.0.0.0

Copyright (c) 1982, 2019, Oracle.  All rights reserved.

SQL> connect / as sysdba
Connected.
SQL> alter user system identified by ORacle$20_20;
alter user system identified by ORacle$20_20
*
ERROR at line 1:
ORA-28007: the password cannot be reused
Disconnected from Oracle Database 20c EE Extreme Perf Release 20.0.0.0.0 - Production
Version 20.2.0.0.0

Demonios, a la hora de querer cambiar la contraseña, me dice que esa contraseña no puede ser reutilizada.

Entonces la contraseña esta bien. Debo estarme volviendo loco. Probemos nuevamente.

[oracle@oracledbacr admin]$ sqlplus system/ORacle$20_20@cdb

SQL*Plus: Release 20.0.0.0.0 - Production on Fri Apr 10 23:49:20 2020
Version 20.2.0.0.0

Copyright (c) 1982, 2019, Oracle.  All rights reserved.

ERROR:
ORA-01017: invalid username/password; logon denied

Nada, no tiene sentido, será que ...
Algo me acuerdo de haber leído por ahí, sobre una dependencia de asignar claves a usuarios dentro del contexto del Contenedor o del PDB.

Voy a probar cambiando la clave a SYSTEM y agregando ahora la cláusula que sea para el contenedor y todos los PDBs creados en el contenedor.

[oracle@oracledbacr admin]$ sqlplus /nolog

SQL*Plus: Release 20.0.0.0.0 - Production on Fri Apr 10 23:49:36 2020
Version 20.2.0.0.0
Copyright (c) 1982, 2019, Oracle.  All rights reserved.
SQL> connect / as sysdba
Connected.

SQL> alter user system identified by ORacle_20_21 container=all;
User altered.

Voy a probar inicialmente que pueda conectar al contenedor con la clave.

SQL> connect system/ORacle_20_21
Connected.
SQL> show user
USER is "SYSTEM"

Ahora pruebo utilizando la cadena de conexión definida en el tnsnames.

SQL> connect system/ORacle_20_21@lab2
Connected.
SQL> show user
USER is "SYSTEM"

Listo, parece que ahora si esta funcionando, vamos con el usuario de pruebas. Cambiemos ahora que estamos dentro del PDB, la contraseña al usuario APRENDIZAJE.

SQL> alter user aprendizaje identified by ORacle_20_21;

User altered.

SQL> exit
Disconnected from Oracle Database 20c EE Extreme Perf Release 20.0.0.0.0 - Production
Version 20.2.0.0.0

Vamos a probar la conexión a la base de datos a ver que sucede.

[oracle@oracledbacr admin]$ sqlplus aprendizaje/ORacle_20_21@lab2

SQL*Plus: Release 20.0.0.0.0 - Production on Fri Apr 10 23:51:24 2020
Version 20.2.0.0.0

Copyright (c) 1982, 2019, Oracle.  All rights reserved.
Connected to:
Oracle Database 20c EE Extreme Perf Release 20.0.0.0.0 - Production
Version 20.2.0.0.0

SQL> show user
USER is "APRENDIZAJE"
SQL> show con_id

CON_ID
------------------------------
3
SQL>

Listo, el primer escollo ha sido superado. Ahora ya puedo hacer mis primeras pruebas con la nueva versión de base de datos.

No olvides que también estamos en Facebook/oracledbacr

Convertir una hoja de cálculo en una aplicación APEX- Mónica Godoy

@OracleAcademy Virtual Student Day Latinoamérica

Conoce más de Oracle APEX en este evento especial realizado por Oracle Academy para los estudiantes y profesores de Ciencias de la Computación de la región.

Youtube: https://www.youtube.com/channel/UCEpIXFjcQIztReQNLymvYrQ
Canal Oracle Application Express




jueves, 9 de abril de 2020

Con que estándares de seguridad cuenta la base de datos ADB de Oracle?

Gotitas de saber

Los datos almacenados en una ADB cumplen con las regulaciones para HIPAA?

La ADB cumple con lo necesario para almacenar datos tipo HIPAA (La Ley de Responsabilidad y Portabilidad del Seguro de Salud) a través de una certificación adicional preparada de acuerdo con AICPA SSAE 18, AT-C secciones 205 y 315.

SSAE se utiliza para regular la forma en que las empresas realizan negocios, y más específicamente define cómo las empresas informan sobre los controles de cumplimiento.

Estos informes se denominan SOC 1, SOC 2 y SOC 3.

Para que una empresa pueda garantizar este cumplimiento, debe atender estos seis pasos:
  • La empresa primero debe revisar los informes, incluidas las comunicaciones financieras y externas.
  • La segunda paso para obtener la certificación es mantener una comunicación constante con los proveedores externos.
  • El tercero es que una empresa debe visitar regularmente a estos proveedores externos para asegurarse de que todo funcione sin problemas.
  • El cuarto, la empresa debe realizar una auditoría de control interno para los proveedores externos.
  • El quinto, la compañía debe analizar a fondo las revisiones SOC.
  • El sexto, la compañía debe supervisar las quejas y otras comunicaciones externas de sus proveedores externos.
ADB cumple con SOC?
Si. La base de datos autónoma ha logrado el cumplimiento de SOC 1 y SOC 2.
  • SOC (Centro de Operaciones de Seguridad, es una central de seguridad informática que previene, monitorea y controla la seguridad en las redes y en Internet) se creó debido al aumento de la computación en la nube y la subcontratación de funciones a las organizaciones de servicios.
  • SOC 1 es un informe de control para organizaciones de servicios, que se refiere al control interno sobre los informes financieros.
  • SOC 2 es un informe que utiliza los principios existentes de SysTrust y WebTrust. Este informe evalúa el sistema de información empresarial relacionado con la seguridad, la disponibilidad, la integridad del procesamiento, la confidencialidad y la privacidad.
Los problemas de responsabilidad causaron una demanda en el aseguramiento de la confidencialidad y privacidad de la información procesada en la nube, de ahí esta certificación.

¿Oracle Autonomous Database tiene la certificación ISO27001 y otras?
Si. La base de datos autónoma cumple con las normas ISO27001, ISO27017, ISO27018.
  • ISO 27001 es la norma internacional emitida por la Organización Internacional de Normalización (ISO) y que describe cómo gestionar la seguridad de la información en una empresa.
  • ISO 27017 se trata de controles de seguridad de la información para servicios en la nube (genéricos), e 
  • ISO 27018 está específicamente desarrollado para proteger la privacidad en la nube.
Si deseas ampliar esta información, visita el sitio de oracle.com

Comandos que nunca podrás ejecutar en un ambiente de Base de Datos Oracle Autonóma


Gotitas de saber

Estos son los comandos que nunca podrás ejecutar en un ambiente de Base de Datos Oracle Autonóma:

- ADMINISTER KEY MANAGEMENT
- ALTER PROFILE
- ALTER TABLESPACE
- CREATE DATABASE LINK
- CREATE PROFILE
- CREATE TABLESPACE
- DROP TABLESPACE

El comando que más te puede llamar la atención es: CREATE TABLESPACE y DROP TABLESPACE.

En ADB, no es posible crear o borrar tablespaces. 

El área para almacenamiento de tablas en un ADB, es predefinida de facto, no puede ser cambiada por el usuario.

Toda la información de almacenamiento puede ser vista, pero no puede ser modificada.

Lo único que es permitido a nivel de almacenamiento, es cambiar la cantidad de almacenaje disponible, el cuál puede ser efectuado en tiempo real. El almacenamiento inicial de una ADB es de 1 TB.

Oracle Database Autonomous, tipos de conexión a nivel de servicio.

Gotitas de saber

Sabías que:

Cada instancia de Base de Datos Autónoma en Oracle, tiene predefinidos 5 servicios para conexión.

Estos servicios de conexión a la instancia ADB, delimitan el paralelismo de la sesión y el tiempo ocioso (IDLE) de la misma.
  • TPURGENT: Únicamente para conexiones a bases de datos ATP (Procesamiento Rápido Autónomo), con manejo de paralelismo manual.
  • TP: Sin paralelismo y típico para OLTP
  • HIGH: Para procesamiento por lote, toda transacción con paralelismo y sujeto a escalamiento (ALTA PRIORIDAD)
  • MEDIUM: Paralelismo limitado a 4 (Típico)
  • LOW: Baja prioridad, procesamiento por lote y sin paralelismo.
El tiempo ocioso para todos los tipos de conexión es de 5 minutos. Si se cumple dicho período sin actividad alguna, la sesión es desconectada.

Cada usuario cuenta con un RESOURCE PROFILE predefinido, en el cuál se específica que tipo de conexión puede realizar a la base de datos.

En una instancia de ADB, NO ES posible definir nuestros propios perfiles de recursos.

Como se configura los parámetros de una Base de Datos Oracle Autónoma?

Gotitas del saber

Sabías que:
Como hemos dicho, existen dos tipos de bases de datos autónomas: ADW y ADT (Dataware y Procesamiento Rápido Transaccional).

El ajuste de parámetros de configuración de dichas instancias de base de datos, asociados con la memoria, el paralelismo, la concurrencia y el número de sesiones, es automáticamente configurados según el número de CPU's alojados en el servicio. 

Si el parámetro de paralelismo, nos da un valor de 4, quiere decir que contamos con un servicio de 4 hilos (Threads) de procesamiento.

Puedo hacer acceso a nivel de sistema operativo y como SYSDBA en una Oracle Base de Datos Autónoma (ADB) ?

Gotitas del saber

Sabías que:
En un servicio de base de datos autónoma (ADB) NO ES PERMITIDO el logeo a nivel de sistema operativo y no es posible conectarse con el rol SYSDBA.?

Oracle dblinks en ambienes Oracle Autonomous Database


Gotitas del saber

Sabías que:

No esta soportado crear un dblink entre una ADB (Autonomous Database) y una base de datos ON-PREMISE, esto debido a motivos de seguridad.

Sin embargo, si es posible hacerlo en sentido inverso, de una base de datos ON-PREMISE a un ADB (ADW/ATP)

@OracleDatabase
@oracleace

Oracle Autonomous Database, objetos no soportados en migración al servicio


Gotitas de saber

Sabías que:

Existen múltiples maneras en como migrar una base de datos ON-PREMISE a la nube, sin embargo, cuando pensamos en una base de datos de autonomía (ADB), ya sea para análisis de datos o para procesamiento transaccional (ADW/ATP), existen algunos tipos de datos que no son soportados.

Estos son:
- índices
- Indextype,
- vistas materializadas
- logs de vistas materializadas
- dblinks
Para evitar errores en la migración, la mejor manera de hacer esto es utilizando DATAPUMP que te permite utilizar la cláusula "EXCLUDE" para no exportar estos tipos de objetos.

Todos los Sábados a las 8:00PM