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.
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.
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.
viernes, 29 de diciembre de 2023
Sigamos hablando de: "Cómo escribir sentencias SQL como un PRO!. Parte 2" con Mónica Godoy como anfitriona.
En la primera sesión hicimos teoría. En esta otra vamos a al práctica 100%, demostrando lo que anteriormente indicamos.
viernes, 22 de diciembre de 2023
jueves, 21 de diciembre de 2023
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 MundoPor Mónica Godoy, Senior Principal Product Manager for Oracle APEX
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
domingo, 29 de octubre de 2023
Noviembre 04, ULATINA #PWNEDCR 0X6 Oracle Database Ethical Hacking "Sus datos podrían estar en el lugar equivocado".
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.
viernes, 29 de septiembre de 2023
ASKTOM APEX Office Hours en Español: Performance Tuning: Cómo escribir sentencias SQL como un PRO!
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.
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.
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;
/
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.
SQL> exec create_table_wide('TABLA_GIGANTE_COLUMNS',4000);
PL/SQL procedure successfully completed.
Ahora ingresamos 1000 registros ocupando los 4000 campos
SQL> exec insert_table_wide('TABLA_GIGANTE_COLUMNS',4000,1000);
PL/SQL procedure successfully completed.
SQL> select count(*) from TABLA_GIGANTE_COLUMNS;
COUNT(*)
----------
1000
SQL> alter session set plsql_code_type = 'NATIVE';
Session altered.
Elapsed: 00:00:00.00
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
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
[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
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
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
La inteligencia artificial nos trae ahora a "Jesus, María, Moisés, Dios y varios apóstoles".
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 !!!