domingo, 31 de diciembre de 2023

Cuando todo el mundo estuvo en vilo por un cambio de año, Y2K BUG, hace 24 años.

Hace 24 años atrás estabamos como decían nuestros abuelos "como un bistec de 5 pesos", sólo nervios.
El famoso "Y2K BUG", fue el culpable del primer blog que empecé a escribir allá por el año 1998 en el hosting gratuito "geocities.com".

Muchas cosas aprendí en esos 2 años, que la mayoría ignoró.

El 01 de enero del 2000, muchos sistemas fallaron al final por problemas derivados de la falta de actualización del BIOS.

Los costos de reparación o reprogramación de rutinas críticas se duplicaron rápidamente a finales de 1998, debido a la falta de personal técnico calificado. Los presupuestos iniciales no fueron suficientes para hacer frente a lo que se había detectado y en el último trimestre del año 1999, la mayoría de las gerencias tomó la decisión de "esperar" a ver que sucedía.

Las peores pesadillas en muchos años, se vivieron el día 02 de enero del 2000, cuando se regresó a trabajar y los sistemas, estaban con fecha 01/01/1900.

Fui testigo de muchas organizaciones que tardaron un par de semanas en volver a operación y gastaron hasta el triple del presupuesto inicial - que de por si era alto - para poder volver a brindar el servicio. Fue como aquel pasaje del cuento del lobo, "Ahi viene el lobo" y nadie hizo caso.

Al final, los errores se centraron en pocas cosas. Pero en donde se vió afectado, fue realmente una tragedia.

Una gran cantidad de historias que podría contar sobre esa época, pero eso será para otra ocasión.

jueves, 23 de noviembre de 2023

Oracle como crear de patentes, cuántas ha presentado y cuántas están activas y en dónde.?

Oracle ha presentado más de 52000 patentes en todo el mundo, de las cuáles 20.797 han sido concebidas. Del total de patentes, el 76% están activas aprox.

Fueron los años de 2001 y 2002 cuando más patentes presentó: 5401 y 5485 respectivamente. Ese número fue descendiendo anualmente, hasta alcanzar en el 2010 1454 patentes. En el 2011 nuevamente volvió a crecer y desde el 2018 nuevamente ha descendido hasta 209 en el año 2021.
Casi el 72% de estas patentes fueron presentadas en los E.E.U.A., menos del 1% en el continente Europeo y en países como China, Australia, Japón, Reino Unido, India, Canadá y Corea del Sur.

Un dato curioso para quienes no lo sabíamos: la nota curiosa, es que existen países de Latinoamerica en donde Oracle presentó patentes.
Estos son: Brasil con 39, México con 20 y Costa Rica con 1.

La firma de abogados más exitosa que ha colaborado con Oracle en este tema, ha sido la firma Kilpatrick Townsend y Stockton, la cuál ha presentado 2793 aplicaciones y ha obtenido un 92% de efectividad. Esta famosa firma, fue la encargada de llevar el litigio entre Sony y el "Hacker" Gorge Hotz cuando este tenía 21 años, por el jailbreak a la PS3.

La empresa que más patentes utiliza de Oracle es IBM con 4140, seguida de Microsoft con 1862, SAVIA con 935, INTEL 785, Banco de New York 561, AMAZON 524, GOOGLE 513, SANSUNG 472 entre otras.

La patente más popular de Oracle es la US6336137B1, que ha recibido 2148 menciones de empresas como Cisco, IBM y Microsoft, la cuál habla sobre: "Sistema y método cliente-servidor web para lenguajes de presentación y marcado de páginas incompatibles".

En resumen: La invención se refiere a métodos y sistemas cliente-servidor donde varios clientes que usan diferentes lenguajes de marcado pueden usar el mismo servidor, que puede servir páginas en varios idiomas. El cliente puede ser un cliente ligero o un navegador, como se entiende generalmente ese término. El servidor está configurado para analizar la solicitud del cliente para determinar tanto el idioma de la solicitud como la información solicitada.



Performance Tuning: Cómo escribir sentencias SQL como un PRO! - Parte 2 - APEX Office Hours en Español

Diciembre 07, 2023

17:00 - 18:00 UTC Hora de Inicio en Todo el Mundo

Por Mónica Godoy, Senior Principal Product Manager for Oracle APEX
En la primera sesión, Ronald Vargas hablo de los diferentes factores que afectan el rendimiento de una sentencia SQL y finalmente el desempeño general de una aplicación. En esta segunda sesión, Ronald pondrá en práctica todo el conocimiento aprendido en la primera sesión para evaluar varias sentencias SQL y cómo pueden ser optimizadas.

Encuentra la primera parte en: https://youtu.be/1J1GT6cZKWc?feature=shared

Catch up on the recording for our last session!
Don't miss our next live session!
This session: https://asktom.oracle.com/pls/apex/asktom.search?oh=22686

Mientras tanto, disfruta de la primera parte.





domingo, 29 de octubre de 2023

Noviembre 04, ULATINA #PWNEDCR 0X6 Oracle Database Ethical Hacking "Sus datos podrían estar en el lugar equivocado".

El próximo sábado 04 de noviembre, estaré presente en el #PWNEDCR 0X6

Todos somos concientes que cuando aplicamos una funcionalidad con el fin de mejorar la calidad y la eficiencia de la seguridad de una base de datos, la misma no deje rastro alguno, de lo que queremos proteger.

Por esto es así o debemos tomar algunas medidas adicionales.?

Es cierta la oferta que nos hacen con respecto a que: encriptar los repositorios de nuestros datos, trae consigo la solución a nuestros problemas de privacidad de información.?

Son tan sólo 40 minutos, pero les aseguro que les tomará mucho más tiempo validar y tomar las medidas necesarias, para resguardarse de no estar expuestos.



viernes, 27 de octubre de 2023

Utilizando Select AI para generar sentencias SQL a través de indicaciones de Lenguaje Natural - con código del laboratorio.

La combinación de modelos de lenguaje grande (LLM) de IA generativa con Oracle SQL le permite describir lo que desea ( intención declarativa ) y dejar que la base de datos genere la consulta SQL relevante para su esquema. Algunos LLM pueden ser buenos para generar SQL, pero poder ejecutar ese SQL en su base de datos es otra cuestión. Select AI permite generar SQL que es específico para la base de datos.


Código del laboratorio.

select credential_name,
       username,
       enabled
from   user_credentials
order by credential_name;

select dbms_cloud.get_metadata(
         credential_name => 'OPENAI_CRED',
         object_uri      => 'api.openai.com') as metadata
from dual;

select table_name from dba_tables where owner='SH'

select * from sh.sales;

select sum(amount_sold) from sh.sales
where time_id < '01/01/00'

BEGIN  
    DBMS_NETWORK_ACL_ADMIN.APPEND_HOST_ACE(
         host => 'api.openai.com',
         ace  => xs$ace_type(privilege_list => xs$name_list('http'),
                             principal_name => 'ADMIN',
                             principal_type => xs_acl.ptype_db)
   );
END;
/

BEGIN  
    DBMS_NETWORK_ACL_ADMIN.APPEND_HOST_ACE(
         host => 'api.openai.com',
         ace  => xs$ace_type(privilege_list => xs$name_list('http'),
                             principal_name => 'SH',
                             principal_type => xs_acl.ptype_db)
   );
END;
/

BEGIN

 DBMS_CLOUD.DROP_CREDENTIAL (
   credential_name  => 'OPENAI_CRED');
  DBMS_CLOUD.CREATE_CREDENTIAL(
    credential_name => 'OPENAI_CRED',
    username => 'ronald.vargas.quesada@gmail.com',
    password => 'sk-Vvtj**************bkFJKOxqW*******DXYHD1bG' );
END;
/


BEGIN
DBMS_CLOUD_AI.drop_profile(profile_name => 'OPENAI');
  DBMS_CLOUD_AI.create_profile(
      profile_name => 'OPENAI',
      attributes => '{"provider": "openai",
                      "credential_name": "OPENAI_CRED",
                      "object_list": [{"owner": "SH", "name": "customers"},  
                                      {"owner": "SH", "name": "sales"},
                                      {"owner": "SH", "name": "products"},
                                      {"owner": "SH", "name": "countries"}]
       }');
END;
/

BEGIN
  DBMS_CLOUD_AI.SET_PROFILE(
     profile_name => 'OPENAI'
  );
END;
/


SELECT AI how many customers in San Francisco are married


SELECT AI runsql cuantos clientes en San Francisco están casados

SELECT AI showsql cuantos clientes en San Francisco están casados

SELECT COUNT(*) AS total_clients_married
FROM SH.CUSTOMERS c
WHERE c.CUST_CITY = 'San Francisco'
AND c.CUST_MARITAL_STATUS = 'Married'


select * from sh.products

SELECT AI Cual es el nombre del producto para el id 19

select * from sh.sales

SELECT AI Cual es el monto de ventas del producto id 14 agrupado por el nombre del producto

SELECT AI cual es el cliente que más compras ha realizado

SELECT AI cual es la suma total de compras que ha hecho el cliente Heather Tucker

select sum(amount_sold) from sh.sales
where time_id < '01/01/00'

SELECT AI Cual es el monto en ventas previo al cambio de milenio.

select * from sh.customers

select count(*) from sh.customers

SELECT AI Cuantos clientes nacieron en los 2 años posteriores al fin de la segunda guerra mundial


SELECT AI Cuantos clientes nacieron en los 2 años posteriores al fin de 
la segunda guerra mundial agrupados por año

"Sorry, unfortunately a valid SELECT statement could not be generated for your natural language prompt. Here is some more information to help you further: 

Para responder a esta pregunta, necesitaríamos tener acceso a una tabla que contenga la información de los clientes, incluyendo su fecha de nacimiento. Supongamos que tenemos una tabla llamada "clientes" con las siguientes columnas:

- id_cliente (identificador único del cliente)
- nombre (nombre del cliente)
- fecha_nacimiento (fecha de nacimiento del cliente)

Podemos utilizar la función EXTRACT para extraer el año de la fecha de nacimiento y luego agrupar los resultados por año. La consulta sería la siguiente:

```sql
SELECT EXTRACT(YEAR FROM fecha_nacimiento) AS año, COUNT(*) AS cantidad_clientes
FROM clientes
WHERE EXTRACT(YEAR FROM fecha_nacimiento) BETWEEN 1946 AND 1947
GROUP BY EXTRACT(YEAR FROM fecha_nacimiento)
ORDER BY EXTRACT(YEAR FROM fecha_nacimiento);
```

Esta consulta contará la cantidad de clientes que nacieron entre los años 1946 y 1947, agrupados por año de nacimiento. Los resultados se mostrarán en orden ascendente por año."
Para responder a esta pregunta, necesitaríamos tener acceso a una tabla que 
contenga información sobre los clientes, incluyendo su fecha de nacimiento. 
Supongamos que tenemos una tabla llamada "clientes" con las siguientes columnas:

- id_cliente (identificador único del cliente)
- nombre (nombre del cliente)
- fecha_nacimiento (fecha de nacimiento del cliente)

Podemos utilizar la función EXTRACT para extraer el año de la fecha de nacimiento y 
luego agrupar los resultados por año. La consulta sería la siguiente:

```sql
SELECT EXTRACT(YEAR FROM fecha_nacimiento) AS año, COUNT(*) AS cantidad_clientes
FROM clientes
WHERE EXTRACT(YEAR FROM fecha_nacimiento) BETWEEN 1946 AND 1947
GROUP BY EXTRACT(YEAR FROM fecha_nacimiento)
ORDER BY EXTRACT(YEAR FROM fecha_nacimiento);
```

Esta consulta contará la cantidad de clientes que nacieron entre los años 1946 y 1947, 
agrupados por año de nacimiento. 
Los resultados se mostrarán en orden ascendente por año."

SELECT AI Cuanto fue la suma de ventas realizadas por clientes que nacieron en los 
2 años posteriores al fin de la segunda guerra mundial.

select * from sh.sales
select * from sh.customers


select sum(amount_sold) from sh.sales
where cust_id in (
select cust_id from sh.customers where 
cust_year_of_birth between 1946 and 1947)

select max(cust_year_of_birth) from sh.customers

SELECT AI showsql Cuantos clientes nacieron posterior a la caida del muro de Berlin

select count(cust_year_of_birth) from sh.customers
where cust_year_of_birth > 1989

SELECT AI narrate Cuál es el producto más vendido por los clientes que nacieron 
posterior a la caida del muro de Berlin

SELECT AI showsql
Cuántos clientes nacieron en el año de estreno de la película Volver al futuro I

select count(*) from sh.customers
where cust_year_of_birth = 1985

SELECT AI Cual es el monto de los productos vendidos por aquellos clientes que nacieron
en el mismo año de la publicación del primer video en youtube.

SELECT AI narrate Cual es el monto de los productos vendidos por aquellos clientes que nacieron
en el mismo año de la publicación del primer video en youtube.

select count(*) from sh.customers
where cust_year_of_birth = 2005

SELECT AI Cuantos clientes nacieron en el mismo cuando en que se creó el teléfono celular.


select count(*) from sh.customers
where cust_year_of_birth = 1973

SELECT AI chat
Quien es Larry Ellison el CEO de Oracle

"Sorry, unfortunately a valid SELECT statement could not be generated for your natural language prompt. Here is some more information to help you further: 

Larry Ellison es el cofundador y presidente ejecutivo de Oracle Corporation. Es conocido por ser uno de los empresarios más exitosos en la industria de la tecnología. 
Ellison ha estado al frente de Oracle desde su fundación en 1977 y ha desempeñado un papel fundamental en el crecimiento y éxito de la empresa. Bajo su liderazgo, Oracle se ha convertido en una de las compañías de software más grandes y reconocidas a nivel mundial."



set serveroutput on;
declare
    l_prompt varchar2(4000) := 'Cual es el monto de los productos vendidos por aquellos clientes que nacieron
en el mismo año de la publicación del primer video en youtube.?';
    l_response clob;
    l_profile_name varchar2(100) := 'openai_gpt35';
begin
    l_response := dbms_cloud_ai.generate(
                    prompt          => l_prompt,
                    profile_name    => l_profile_name,
                    action          => 'showsql'                    
                );
    dbms_output.put_line(l_response);
end; 

set serveroutput on;
declare
    l_prompt varchar2(4000) := 'Cual es el monto de los productos vendidos por aquellos clientes que nacieron
en el mismo año de la publicación del primer video en youtube.?';
    l_response clob;
    l_profile_name varchar2(100) := 'OPENAI';
begin
    l_response := dbms_cloud_ai.generate(
                    prompt          => l_prompt,
                    profile_name    => l_profile_name,
                    action          => 'showsql'                    
                );
    dbms_output.put_line(l_response);
end; 

SELECT SUM(s.AMOUNT_SOLD) AS MONTO_VENDIDO
FROM SH.SALES s
JOIN SH.CUSTOMERS c ON s.CUST_ID = c.CUST_ID
WHERE c.CUST_YEAR_OF_BIRTH = EXTRACT(YEAR FROM TO_DATE('23-04-2005', 'DD-MM-YYYY'))


El producto más vendido por los clientes que nacieron posterior a la caída del muro de Berlín es el "Model A3827H Black Image Cartridge", 
con un total de 20 ventas.

viernes, 29 de septiembre de 2023

ASKTOM APEX Office Hours en Español: Performance Tuning: Cómo escribir sentencias SQL como un PRO!

Aquí les comparto la primera sesión que tuvimos bajo el patrocinio de Mónica Godoy,  Senior Principal Product Manager for Oracle APEX.

Si los comentarios que escuchas continuamente sobre tu aplicación son "La app esta muy lenta" y "El reporte toma mucho tiempo en generarse". Es tiempo de conocer los secretos que hay detrás del lenguaje SQL y cómo la base de datos Oracle interpreta lo que necesitas de ella.

lunes, 18 de septiembre de 2023

Performance Tuning: Cómo escribir sentencias SQL como un PRO!

Ya esta disponible la nueva versión de esta charla que he venido brindando desde hace unos 8 años atrás con las actualizaciones respectivas a las nuevas características de las nuevas bases de datos.

En esta ocasión, a través de ASKTOM, en APEX Office Hours en Español con el patrocinio de Mónica Godoy, Senior Principal Product Manager for Oracle APEX.

Así que disfruten de la misma.  Suscriban al canal de Oracle Developers, ya que vienen más sesiones con preguntas y respuestas y casos de uso, relacionados con esta misma sesión, que nos quedó corta de tiempo.

Si los comentarios que escuchas continuamente sobre tu aplicación son "La app esta muy lenta" y "El reporte toma mucho tiempo en generarse". Es tiempo de conocer los secretos que hay detrás del lenguaje SQL y cómo la base de datos Oracle interpreta lo que necesitas de ella.


jueves, 14 de septiembre de 2023

Oracle Database 23c Free for Developers ORA-600 [pesldl03_MMap: Errno 1 Errmsg Operation Not Permitted] con compilación NATIVA.

Se me ocurrió hacer un testing del nuevo valor máximo de columnas que podemos tener en una tabla a partir de la versión 23c de base de datos Free for Developers y me encontré con una sorpresa: "Un error ORA-600 interno".

Vamos desde el inicio. Tome una nota publicada por Andy Rivenes sobre los nuevos valores para el parámetro MAX_COLUMNS de la base de datos, el cuál puede ser configurado al valor de EXTENDED. Este parámetro que de facto tiene el valor de STANDARD y cambio al parámetro al valor EXTENDED, me permite habilitar la posibilidad de crear una tabla que tenga 4000 columnas.

Este es el desarrollo de los procedimientos implementados por Andy Rivenes, para la creación de la tabla.

SQL> connect hr/hr@pdb1

Connected.

SQL> create or replace procedure create_table_wide(
table_name IN VARCHAR2,
num_cols IN NUMBER )
is
ct varchar2(32000);
ctsql clob;
cur integer;
begin
ct := 'create table '||table_name||' (c1 number';
dbms_lob.createtemporar 2 y(ctsql, false);
dbms_lob.write(ctsql, length(ct), 1, ct);
ct := '';
dbms_output.put_line(ct);
for colnum in 2 .. num_cols loop
ct := ct || ', c'||colnum||' number';
if mod(colnum, 1000) = 0 then
-- append the chunk we have and reset the temp varchar2
dbms_lob.writeappend(ctsql, length(c 3 t), ct);
ct := '';
end if;
end loop;
append the final chunk
ct := ct || ')';
dbms_lob.writeappend(ctsql, length(ct), ct);
--dbms_output.put_line(ctsql);
--
-- dbms_sql.parse auto executes the DDL, don't need to call dbms_sql.execute
cur := dbms_sql.open_cursor;
dbms_sql.parse(
c => cur,
statement => ctsql,
language_flag => dbms_sql.native );
--
-- cleanup
--
dbms_sql.close_cursor(cur);
dbms_lob.freetemporary(ctsql);
end;


Procedure created.

SQL> create or replace procedure insert_table_wide(
table_name IN VARCHAR2,
num_cols IN NUMBER,
num_rows IN NUMBER DEFAULT 1 )
is
ct clob;
ctsql clob;
cur integer;
rwnum number := 0;
clnum number := 0;
val number := 0;
l_offset pls_integer := 1;
begin
for r_iter in 1 .. num_rows loop
rwnum := rwnum + 1;
ct := 'insert into '|| table_name ||' (c1';
for c_iter in 2 .. num_cols loop
ct := ct || ',c' || to_char(c_iter) ;
end loop;
ct := ct || ') ';
--
ct := ct || 'values (' || to_char(rwnum);
--
for c_iter in 2 .. num_cols loop
clnum := clnum + 1;
val := rwnum + clnum;
ct := ct || ',' || to_char(val) ;
end loop;
--
ct := ct || ')';
--
-- Output the first line to verify
 --
if rwnum = 1 then
loop
exit when l_offset > dbms_lob.getlength(ct);
dbms_output.put_line(dbms_lob.substr(ct, 4000, l_offset));
l_offset := l_offset + 4000;
end loop;
end if;
--
execute immediate ct;
clnum := 0;
end loop;
end;


Procedure created.

SQL> create or replace procedure select_table_wide(
p_table_name IN VARCHAR2,
p_num_cols IN NUMBER,
p_num_rows IN NUMBER )
 is
v_tab_col_num number;
ct clob;
ctsql clob;
cur integer;
rwnum number := 0;
clnum number := 0;
begin
select max(column_id) into v_tab_col_num
from user_tab_columns where table_name = p_table_name;
 --
 for r_iter in 1 .. p_num_rows loop
rwnum := rwnum + 1;
ct := 'select ';
--
for c_iter in 1 .. p_num_cols loop
clnum := floor(dbms_random.value(1,v_tab_col_num));
 if c_iter = 1 then
ct := ct || 'c' || to_char(clnum) ;
else
ct := ct || ',c' || to_char(clnum) ;
end if;
end loop;
--
ct := ct || ' from ' || p_table_name;
dbms_output.put_line(ct);
execute immediate ct;
end loop;
end;


Procedure created.

Una vez creados los procedimientos podemos llamar a los mismos para la creación de tabla.

SQL> exec create_table_wide('TABLA_GIGANTE_COLUMNS',4000);
PL/SQL procedure successfully completed.

Ahora ingresamos 1000 registros ocupando los 4000 campos

SQL> set timing on
SQL> exec insert_table_wide('TABLA_GIGANTE_COLUMNS',4000,1000);
PL/SQL procedure successfully completed.
Elapsed: 00:03:53.23

Verificamos la cantidad de registros ingresados.

SQL> select count(*) from TABLA_GIGANTE_COLUMNS;

COUNT(*)
----------
1000

Deseo hacer una prueba compilando el paquete en modo NATIVO para validar si existe alguna diferencia en el tiempo de ejecución de los casi 4 minutos empleados.

SQL> alter session set plsql_code_type = 'NATIVE';

Session altered.

Elapsed: 00:00:00.00

Al compilar mi procedimiento de forma NATIVA, la compilación concluye con errores.

SQL> alter procedure insert_table_wide compile;
Warning: Procedure altered with compilation errors.

Elapsed: 00:00:01.68

SQL> truncate table TABLA_GIGANTE_COLUMNS;

Table truncated.

Elapsed: 00:00:00.18

El ejecutar el procedimiento, me indica que el objeto no esta válido.

SQL> exec insert_table_wide('TABLA_GIGANTE_COLUMNS',4000,1000);
BEGIN insert_table_wide('TABLA_GIGANTE_COLUMNS',4000,1000); END;
*
ERROR at line 1:
ORA-06550: line 1, column 7:
PLS-00905: object HR.INSERT_TABLE_WIDE is invalid
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored
Elapsed: 00:00:00.01

Recompilo nuevamente el procedimiento.

SQL> alter procedure insert_table_wide compile;
Warning: Procedure altered with compilation errors.

Elapsed: 00:00:01.26

Al verificar los errores, observo un error ORA-00600 interno como producto de la compilación.

SQL> show errors
Errors for PROCEDURE INSERT_TABLE_WIDE:

LINE/COL ERROR
-------- -----------------------------------------------------------------
0/0 ORA-00600: internal error code, arguments: [pesldl03_MMap: errno
1 errmsg Operation not permitted
], [
1 : 1
2 : /PESLD_FREE_7_48bace6300000000
3 : 0100700
4 : 0500002
5 : 0x7
6 : 0x1
], [], [], [], [], [], [], [], [], [], []

SQL> alter session set plsql_code_type = 'INTERPRETED';
Session altered.

Elapsed: 00:00:00.00
SQL> alter procedure insert_table_wide compile;
Procedure altered.
Elapsed: 00:00:00.03

SQL> exit

Disconnected from Oracle Database 23c Free, Release 23.0.0.0.0 - Developer-Release
Version 23.2.0.0.0

[oracle@oracle-database-23c-free-for-developers-taller-gratuito ~]$ df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 16G 0 16G 0% /dev
tmpfs 16G 4.0K 16G 1% /dev/shm
tmpfs 16G 233M 16G 2% /run
tmpfs 16G 0 16G 0% /sys/fs/cgroup
/dev/mapper/ocivolume-root 189G 32G 158G 17% /
/dev/sda2 1014M 323M 692M 32% /boot
/dev/sda1 100M 5.1M 95M 6% /boot/efi
/dev/mapper/ocivolume-oled 10G 156M 9.9G 2% /var/oled
tmpfs 3.2G 0 3.2G 0% /run/user/0
tmpfs 3.2G 0 3.2G 0% /run/user/1000
tmpfs 3.2G 0 3.2G 0% /run/user/988


Revisando el error en MOS con la herramienta de errores, me encuentro, que es un bug asociado a la manera en como esta montado el sistema de archivos de swap.

Pequeñísimo detalle, ya que el modo de monta del sistema de archivos, es el valor de facto.

[oracle@oracle-database-23c-free-for-developers-taller-gratuito ~]$ more /etc/fstab

#
# /etc/fstab
# Created by anaconda on Tue Jan 17 19:39:49 2023
#
# Accessible filesystems, by reference, are maintained under '/dev/disk/'.
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info.
#
# After editing this file, run 'systemctl daemon-reload' to update systemd
# units generated from this file.
#
/dev/mapper/ocivolume-root / xfs defaults 0 0
UUID=f7cf63bd-4975-44bb-ba99-b81e037be7e1 /boot xfs defaults 0 0
UUID=9814-8B9E /boot/efi vfat defaults,uid=0,gid=0,umask=077,shortname=winnt 0 2
/dev/mapper/ocivolume-oled /var/oled xfs defaults 0 0
tmpfs /dev/shm tmpfs defaults,nodev,nosuid,noexec 0 0
######################################
## ORACLE CLOUD INFRASTRUCTURE CUSTOMERS
##
## If you are adding an iSCSI remote block volume to this file you MUST
## include the '_netdev' mount option or your instance will become
## unavailable after the next reboot.
## SCSI device names are not stable across reboots; please use the device UUID instead of /dev path.
##
## Example:
## UUID="94c5aade-8bb1-4d55-ad0c-388bb8aa716a" /data1 xfs defaults,noatime,_netdev 0 2
##
## More information:
## https://docs.us-phoenix-1.oraclecloud.com/Content/Block/Tasks/connectingtoavolume.htm
/.swapfile none swap sw,comment=cloudconfig 0 0

[oracle@oracle-database-23c-free-for-developers-taller-gratuito ~]$ exit
logout

[opc@oracle-database-23c-free-for-developers-taller-gratuito ~]$ sudo -s /bin/bash

[root@oracle-database-23c-free-for-developers-taller-gratuito opc]# vi /etc/fstab

Editando el archivo de monta de los sistemas de archivos de Linux y agregando comentarios y los cambios sugeridos por la nota Doc ID 1625010.1, nos queda el archivo de la siguiente manera:

[oracle@oracle-database-23c-free-for-developers-taller-gratuito ~]$ more /etc/fstab

#
# /etc/fstab
# Created by anaconda on Tue Jan 17 19:39:49 2023
#
# Accessible filesystems, by reference, are maintained under '/dev/disk/'.
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info.
#
# After editing this file, run 'systemctl daemon-reload' to update systemd
# units generated from this file.
#
/dev/mapper/ocivolume-root / xfs defaults 0 0
UUID=f7cf63bd-4975-44bb-ba99-b81e037be7e1 /boot xfs defaults 0 0
UUID=9814-8B9E /boot/efi vfat defaults,uid=0,gid=0,umask=077,shortname=winnt 0 2
/dev/mapper/ocivolume-oled /var/oled xfs defaults 0 0
# BUG: ORA-600 [pesldl03_MMap: Errno 1 Errmsg Operation Not Permitted] (Doc ID 1625010.1)
# SINTOMAS: ORA-00600 occurred when compiling a PLSQL object with plsql_code_type='NATIVE';
# SOLUCION: This requires that /dev/shm is of type tmpfs and is mounted with the following options:
# With rw and exec permissions set on it
# Without noexec or nosuid set on it
# 14 de setiembre de 2023


# RVQ
#tmpfs /dev/shm tmpfs defaults,nodev,nosuid,noexec 0 0
tmpfs /dev/shm tmpfs defaults,nodev 0 0
######################################
## ORACLE CLOUD INFRASTRUCTURE CUSTOMERS
##
## If you are adding an iSCSI remote block volume to this file you MUST
## include the '_netdev' mount option or your instance will become
## unavailable after the next reboot.
## SCSI device names are not stable across reboots; please use the device UUID instead of /dev path.
##
## Example:
## UUID="94c5aade-8bb1-4d55-ad0c-388bb8aa716a" /data1 xfs defaults,noatime,_netdev 0 2
##
## More information:
## https://docs.us-phoenix-1.oraclecloud.com/Content/Block/Tasks/connectingtoavolume.htm
/.swapfile none swap sw,comment=cloudconfig 0 0

Reiniciamos el ambiente del OCI y levantamos los servicios del LISTENER y de la base de datos de arquitectura de contenedor.

[oracle@oracle-database-23c-free-for-developers-taller-gratuito ~]$

[root@oracle-database-23c-free-for-developers-taller-gratuito opc]#
Using username "opc".
Authenticating with public key "rsa-key-20200507"
Passphrase for key "rsa-key-20200507":

Activate the web console with: systemctl enable --now cockpit.socket

Last login: Fri Sep 15 03:22:19 2023 from 201.198.177.72
[opc@oracle-database-23c-free-for-developers-taller-gratuito ~]$ sudo su - oracle
Last login: Fri Sep 15 03:22:28 GMT 2023 on pts/0
[oracle@oracle-database-23c-free-for-developers-taller-gratuito ~]$ . oraenv
ORACLE_SID = [oracle] ? FREE
The Oracle base has been set to /opt/oracle
[oracle@oracle-database-23c-free-for-developers-taller-gratuito ~]$ lsnrctl start

LSNRCTL for Linux: Version 23.0.0.0.0 - Developer-Release on 15-SEP-2023 04:31:01
Copyright (c) 1991, 2023, Oracle. All rights reserved.
Starting /opt/oracle/product/23c/dbhomeFree/bin/tnslsnr: please wait...
TNSLSNR for Linux: Version 23.0.0.0.0 - Developer-Release

System parameter file is /opt/oracle/product/23c/dbhomeFree/network/admin/listener.ora

Log messages written to /opt/oracle/diag/tnslsnr/oracle-database-23c-free-for-developers-taller-gratuito/listener/alert/log.xml

Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=oracle-database-23c-free-for-developers-taller-gratuito.vcnlandb.vcntestinglab.oraclevcn.com)(PORT=1521)))

Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=oracle-database-23c-free-for-developers-taller-gratuito.vcnlandb.vcntestinglab.oraclevcn.com)(PORT=1521)))

STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for Linux: Version 23.0.0.0.0 - Developer-Release
Start Date 15-SEP-2023 04:31:02
Uptime 0 days 0 hr. 0 min. 0 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Default Service FREE
Listener Parameter File /opt/oracle/product/23c/dbhomeFree/network/admin/listener.ora
Listener Log File /opt/oracle/diag/tnslsnr/oracle-database-23c-free-for-developers-taller-gratuito/listener/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=oracle-database-23c-free-for-developers-taller-gratuito.vcnlandb.vcntestinglab.oraclevcn.com)(PORT=1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
The listener supports no services
The command completed successfully

[oracle@oracle-database-23c-free-for-developers-taller-gratuito ~]$ sqlplus /nolog

SQL*Plus: Release 23.0.0.0.0 - Developer-Release on Fri Sep 15 04:31:07 2023
Version 23.2.0.0.0
Copyright (c) 1982, 2023, Oracle. All rights reserved.
SQL> connect / as sysdba
Connected to an idle instance.

SQL> startup
ORACLE instance started.
Total System Global Area 1608409464 bytes
Fixed Size 10043768 bytes
Variable Size 1006632960 bytes
Database Buffers 587202560 bytes
Redo Buffers 4530176 bytes
Database mounted.
Database opened.

SQL> show pdbs

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

Nos conectamos nuevamente con el usuario de la prueba.

SQL> connect hr/hr@pdb1
Connected.

Seteamos los parámetros a nivel de sesión

SQL> alter session set plsql_code_type = 'NATIVE';
Session altered.

Recompilamos nuestro procedimiento.

SQL> alter procedure insert_table_wide compile;
Procedure altered.

Ahora ya no tenemos error. Para este proceso en específico, no existen mejoras en el modo de empleo de compilación NATIVA.

SQL> set timing on
SQL> exec insert_table_wide('TABLA_GIGANTE_COLUMNS',4000,1000);
PL/SQL procedure successfully completed.

Elapsed: 00:03:36.25

martes, 12 de septiembre de 2023

Oracle PTS LATAM, te invita a estos webinars gratuitos donde conocerás las nuevas funcionalidades de la versión 23c de Oracle Database.

Regístrate en el siguiente link y aparta tu lugar: https://lnkd.in/eByJ6pPG

#Agenda
  • Oracle Database 23c - SQL Enhancements, What’s new in SQL. - 20 de Septiembre 2023 - 13:00 hrs America/México City
  • Oracle Database 23c - JSON Document Relational Duality - 04 de Octubre 2023 - 13:00 hrs America/México City
  • Oracle Database 23c - Transactional Microservices - 18 de Octubre 2023 - 13:00 hrs America/México City
  • Oracle Database 23c - Application Usage Domains and Annotations - 01 de Noviembre 2023 -13:00 hrs America/México City
  • Oracle Database 23c - Database Security - 15 de Noviembre 2023 - 13:00 hrs America/México City
  • Oracle Database 23c - Property Graphs - 29 de Noviembre 2023 - 13:00 hrs America/México City
Speakers: Pedro Torres y Adrian Castillo 

Regístrate en el siguiente link y aparta tu lugar: https://lnkd.in/eByJ6pPG

La inteligencia artificial nos trae ahora a "Jesus, María, Moisés, Dios y varios apóstoles".

Al parecer los medios tradicionales ya no están surtiendo efecto y ahora esta aplicación disponible inicialmente solo en el Apple Store y creada por el francés Stéphane Peter, promete que usted descubra una forma nueva e interactiva de interactuar con su fe a través de "Text With Jesus", una revolucionaria aplicación de chatbot con tecnología de inteligencia artificial.

Su creador afirma que esta aplicación "esta diseñada para cristianos devotos que buscan una conexión más profunda con las figuras más emblemáticas de la Biblia."

El sitio oficial promueve la aplicación a partir de afirmaciones tales como: "Embárquese en un viaje espiritual y participe en conversaciones esclarecedoras con Jesucristo, los Apóstoles y una multitud de otras figuras veneradas de la Biblia."

"Los usuarios pueden encontrar consuelo, orientación e inspiración a través de sus conversaciones."
Sin embargo al final aclara:" La aplicación es una herramienta para la reflexión y el aprendizaje, no un sustituto de la oración o la fe personal."

La aplicación tiene una versión gratuita con algunas limitaciones: se bloquea después de 8 mensajes consecutivos y para más interacciones, necesitas invitar a amigos a probarla.
Además, solo algunos 'personajes' están disponibles en la versión gratuita. Si quieres acceder a todos, el costo será de 2,77 euros al mes.

En el apartado de preguntas frecuentes hay varios puntos que llaman la atención. Primero que todo explica para efectos de los más radicales, si estás hablando realmente con Jesús y si no es una "blasfemia". Luego aclara que la aplicación esta entrenada en todas las versiones de Biblia disponibles públicamente, incluída la versión King James.

Una característica altamente llamativa, es que es posible tener charlas con "Satanás". El sitio explica que es incluído para poder proporcionar una compresión integral de los narrativas bíblicas, reflejando el papel del personaje tal y como se describe en la Biblia. Sin embargo, la interacción esta deshabilitada de facto y es necesario que el usuario la habilite manualmente.

La aplicación admite actualmente 6 idiomas de narrativa inglés, francés, alemán, español, italiano y portugués.

Como lo indiqué inicialmente, esta disponible para las plataformas de iPhone, iPad y Mac y indican que están actualmente trabajando para tener disponibilidad la misma en Android y en la línea.

Para los curiosos que se preguntarán y les gustan generar hipótesis, si, efectivamente "Text With Jesus" creada por la compañia Catloaf Software ubicada en Los Angeles, California, es una aplicación desarrallada utilizando ChatGPT.



viernes, 1 de septiembre de 2023

Oracle Free Pass- CloudWorld ON Air - Hazlo ya !!!

 


Como "casi" todos y todas sabrán, entre el 18 y 21 de este mes en Las Vegas, se estará llevando acabo el Oracle Cloud World - antes Oracle Open World-.

Estamos a un poco más de 16 días de dicho evento y los que no podremos estar por ahí por una o otra razón, contamos con varias opciones para disfrutar en directo y a través de nuestros medios digitales del evento.

Fuera de los gastos que representan los boletos aéreos, el hotel y la alimentación, el pase al evento tiene un costo de $2.299 USA. Si vas en grupo y suman 5 o más participantes, el costo baja a $1.599 USA.
Los empleados de sectores públicos, se ven beneficiados con un descuento que deja el pase en $1.299 USA. 

Ahora bien, que pasa con los que no podremos estar ahí.?

Existe una opción de un pase gratuito, que Oracle ha nombrado CloudWorld ON Air, que es gratuito y que puedes disfrutar de una serie de beneficios, sin gastar un sólo centavo.

Eso si, tienes que hacerlo ya, porque los cupones son limitados y hay una gran cantidad de charlas súper interesantes.

sábado, 5 de agosto de 2023

Nueva serie de #webinars #CyberChat4All, de la OEA/CICTE donde tratarán un tema de interés cada mes sobre #ciberamenazas, #seguridaddigital y #género.

#webinars #CyberChat4All, donde trataremos un tema de interés cada mes sobre #ciberamenazas, #seguridaddigital y #género. Regístrate y aprende más sobre recomendaciones de #ciberseguridad.

Inscripciones:

Durante las vacaciones de verano, las horas que niñas, niños y adolescentes usan videojuegos se incrementan exponencialmente. Pensando en ello, el Programa de Ciberseguridad del CICE/OEA lanzará el primer webinar de su serie sobre seguridad digital con perspectiva de género #CyberChat4All para ayudar a las familias y personas responsables de la crianza y educación de menores de edad a conocer las últimas tendencias en videojuegos, y las técnicas y estrategias que pueden ponerse en marcha para promover un uso más seguro de los videojuegos.



miércoles, 2 de agosto de 2023

Oracle presenta la primera solución de arquitectura de computación en la nube segura nativa en la nube para el Departamento de Defensa de EE. UU.

Fuente: https://finance.yahoo.com/

La nueva solución Oracle Cloud Native SCCA Landing Zone reduce las barreras para la adopción de la nube y permite a los propietarios de misiones construir rápidamente arquitecturas compatibles

AUSTIN, Texas , 31 de julio de 2023 /PRNewswire/ -- 

Oracle Cloud Infrastructure (OCI) ha presentado una nueva arquitectura de computación en la nube segura (SCCA) para el Departamento de Defensa de EE.UU. (DoD). La solución ayuda a que el cumplimiento de la seguridad y la adopción de la nube para las cargas de trabajo de misión crítica sean más fáciles, rápidas y rentables mediante el uso de un marco de servicios nativos de la nube.

(PRNewsfoto/Oracle)

SCCA es un marco de seguridad del Departamento de Defensa diseñado para proporcionar un enfoque estándar para la seguridad de nivel de aplicación y límite para los datos de nivel de impacto 4 y 5 de la Agencia de sistemas de información de defensa (DISA) alojados en entornos de nube comerciales. 

Históricamente, el cumplimiento de SCCA ha requerido una inversión significativa por parte de los propietarios de misiones del Departamento de Defensa en forma de esfuerzos de desarrollo independientes y licencias de software de terceros. El costo y el tiempo resultan en un desafío importante durante las migraciones a la nube.

Oracle Cloud Native SCCA Landing Zone proporciona un marco para ejecutar de forma segura las cargas de trabajo de la misión DoD y almacenar datos de nivel de impacto 2, 4 y 5 en las regiones gubernamentales de OCI. La automatización proporcionada por la solución permite a los propietarios de misiones del Departamento de Defensa establecer una arquitectura de seguridad compatible en solo unas pocas horas o días, en lugar de meses. Utiliza servicios de infraestructura nativos en la nube, lo que acelera significativamente el tiempo de implementación de cargas de trabajo de misión crítica al reducir el tiempo de arquitectura y minimizar los puntos de decisión.

"Oracle Cloud Native SCCA Landing Zone es un cambio de juego para nuestros clientes. Lo que estamos haciendo es fundamentalmente diferente", dijo Rand Waldron , vicepresidente del Sector Gubernamental Global de OCI. "Ofreceremos todas las capacidades necesarias para SCCA completamente en servicios OCI nativos. Nuestros clientes ya no tendrán que administrar múltiples licencias, múltiples relaciones con proveedores o múltiples tipos de configuraciones de seguridad. Nuestra solución SCCA proporcionará todo lo que el cliente necesita para mantenerse en pie. una carga de trabajo compatible con SCCA en la nube".

Obtenga más información sobre la nueva solución Cloud Native SCCA Landing Zone de Oracle en el Guía de arquitectura OCI SCCA.

Simplificación y aceleración del cumplimiento de la seguridad del Departamento de Defensa

La zona de aterrizaje SCCA nativa en la nube de Oracle incluye configuraciones, reglas y plantillas de referencia que cumplen con los requisitos de acreditación de los niveles de impacto 2, 4 y 5 de DISA . 

Esto se entrega utilizando una plantilla de Infraestructura como código ( IAC ) estandarizada que cumple con un conjunto de controles SCCA de una manera simplificada y repetible. Basado en Terraform , las zonas de aterrizaje de OCI permiten a los clientes de OCI realizar implementaciones de mejores prácticas con un solo clic de múltiples servicios de Oracle a la vez. Los clientes pueden iniciar las plantillas desde Cloud Native SCCALanding Zone, responda algunas preguntas simples sobre su configuración y tenga una arquitectura configurada el mismo día.

La solución también aborda los cuatro componentes técnicos principales del marco SCCA; Punto de acceso a la nube (CAP), Pila de seguridad del centro de datos virtual (VDSS), Servicio de administración del centro de datos virtual (VDMS) y Administrador de credenciales de confianza en la nube (TCCM). Los clientes que implementan la línea de base segura utilizando Cloud Native SCCA Landing Zone reciben una guía de arquitectura, una guía de implementación, una lista de verificación de requisitos, una arquitectura de referencia y mejores prácticas para acelerar la acreditación de su aplicación en OCI.

Seguridad, cumplimiento, alto rendimiento uniforme y precios sencillos y predecibles

El script Oracle Cloud Native SCCA Landing Zone y la documentación técnica asociada se proporcionan sin cargo adicional o por separado en virtud del contrato del cliente. Los servicios en la nube consumibles subyacentes que se utilizan para respaldar Oracle Cloud Native SCCA en la tenencia de un cliente pueden facturarse de acuerdo con el contrato del cliente. Los servicios de Oracle Cloud for DoD tienen el mismo precio global constante que las regiones de nube pública comercial de Oracle y cumplen con los niveles de impacto DISA 2, 4 y 5 y los estándares de autorización FedRAMP+.

Los clientes comerciales también pueden aprovechar la postura de seguridad automatizada descrita anteriormente. Todos los clientes de OCI pueden aprovechar las zonas de seguridad personalizadas con SCCA y otras zonas de aterrizaje de OCI que permiten a las organizaciones aplicar políticas de seguridad y evitar cambios que podrían debilitar la configuración de seguridad de un cliente de forma rápida y sencilla. 

Aprender más acerca de Zonas de aterrizaje de Oracle aquí.

Los scripts de Oracle Cloud Native SCCA Landing Zone están disponibles en la consola OCI, a través de GitHub y desde el sitio web del Centro de hospedaje y cómputo (HaCC).

domingo, 9 de julio de 2023

El organismo de control de la competencia de Australia pone a los corredores de datos en el radar


Fuente: Reuters

El organismo de control de la competencia de Australia pidió este lunes 10 de Julio a los consumidores, empresas y otras partes interesadas relevantes que brinden sus puntos de vista sobre las prácticas comerciales de los intermediarios de datos en un intento por regular el sector de servicios de plataformas digitales del país.

La Comisión Australiana de Competencia y Consumidores (ACCC) considerará los productos y servicios suministrados por los principales corredores de datos, incluidos Oracle (ORCL.N) , Equifax (EFX.N) , Experian con sede en Irlanda (EXPN.L) y la empresa de tecnología global LiveRamp (RAMP. N) entre otros varios proveedores para hacer un informe sobre el sector.

"Hay poca transparencia y conciencia de cómo operan los corredores de datos en Australia a pesar de la gran cantidad de información que recopilan sobre los consumidores australianos y el papel central que desempeñan para permitir el intercambio de información entre empresas", dijo la presidenta de la ACCC, Gina Cass-Gottlieb.

Los corredores de datos generalmente recopilan información como datos personales de los clientes, incluido su comportamiento de navegación y compra, de una amplia gama de fuentes, como aplicaciones móviles, sitios de redes sociales y proveedores de pago con tarjeta.

El informe explorará cómo los corredores de datos de terceros recopilan y usan información para crear productos y servicios y si puede haber problemas de competencia y de consumo derivados de esto, dijo la ACCC en un comunicado.

La rama de plataformas digitales del regulador ha estado realizando una investigación de cinco años hasta 2025 para investigar los mercados para el suministro de servicios digitales.

El informe se centrará en las empresas que recopilan información de fuentes de terceros y comparten o venden datos a otras organizaciones y, en caso de que surja competencia y problemas con los clientes. Será entregado al tesorero en marzo de 2024, agregó la ACCC.

Información de Rishav Chatterjee en Bangalore; Editado por Rashmi Aich

Todos los Sábados a las 8:00PM

Optimismo para una vida Mejor

Optimismo para una vida Mejor
Noticias buenas que comentar