Oracle change initial password with sqlplus

A quick tip, at the first login in DB you must to change the initial password but some tools cannot do this, for example dbeaver.  But you can download sqlplus  binaries from oracle web site and unzip it in some place to execute from command line.

I’ve downloaded the windows client instantclient-sqlplus-windows.x64-18.3.0.0.0dbru.zip and executed the next command:

sqlplus.exe /nolog

To connect you can use one of these commands:

# TNS
conn USER@TNS_ALIAS

#SID (short like jdbc format)
conn USER/PASS@host:port/SID

# Service name
CONNECT USER/PASS@'(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=sales-server)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=sales.us.acme.com)))'

# SID
CONNECT USER/PASS@'(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=sales-server)(PORT=1521))(CONNECT_DATA=(SID=sales.us.acme.com)))'

Note the password is optional in command line but if you don’t set the client will ask for it.

Saludos

JDK 8: Lambdas and Streams Introduction

I was enroll since 2014 in Oracle Learning to take a massive online course (MOC) named JDK 8: Lambdas and Streams Introduction, but I leaved it for the scholar activities and my work, I don’t had time to take it.

If you don’t know it, Oracle Learning has published a few free courses about Oracle Technologies, it looks very complete and interesting, may be you want give a try.

Well and now that I took the course to learn about new features about JDK 8 (I know, currently Java 8 is an old version, but I want to know it).

The video lessons are really good and very concrete, and I’m happy with the result, unaunfortunately the tests had expired, I don’t care too much becase the important is the content of the course, the maximum score that I could get is 88%:

2018-07-03 17_53_07-Learning Path Finder

I’m really happy with the result I want to know more about the Functional Programming and the best practices to use the Stream API and Lambdas, I think is very usefull aproach for Java language.

The next course that I want to take is the JVM Troubleshooting.

Saludos

Oracle, one way to truncate tables

Para continuar con la ronda de oracle, una forma de borrar los datos de todas las tablas de un tablesapce de un usuario se puede ejecutar con los siguientes querys.

Lo que hacen es desacivar las restricciones de las relaciones e imprimir en el log todos los querys que vas a necesitar para guardarlos en un script y posteriormente ejecutarlo.

Me parece que es una forma sencilla y útil para limpiar todas las tablas de la base de un usuario.

-- Get query list to disable restrictions
SELECT 'ALTER TABLE'||' '||owner||'.'||table_name||' DISABLE CONSTRAINT '||constraint_name||' ;' FROM dba_constraints WHERE constraint_type = 'R' and owner='user name' and status = 'ENABLED';
-- Get querys to truncate all tables
SELECT 'TRUNCATE TABLE '||OWNER||'.'||TABLE_NAME||' ;' FROM DBA_TABLES WHERE OWNER='user name';
-- Get query list to enable restrictions
SELECT 'ALTER TABLE'||' '||owner||'.'||table_name||' ENABLE CONSTRAINT '||constraint_name||' ;' FROM dba_constraints WHERE constraint_type = 'R' and owner='user name' and status = 'ENABLED';

Referencias

Saludos!

Oracle, agregar permisos a todas las tablas de un usuario.


El control de permisos es muy puntual en oracle, nunca he probado los roles pero la asignación de permisos a nivel de tabla se hace uno a uno.

Y me encuentro con este útil script para asignarlos de forma recursiva a todas las tablas de un table space.

-- Set unlimited tablespace
GRANT UNLIMITED TABLESPACE TO my_tablespace;
-- To access the tablespace
GRANT CREATE SESSION TO my_user WITH ADMIN OPTION;
-- Set premisons for all tables from selected tablespace
declare
l_SQL varchar2(4000);
begin
for cur in (
select * from dba_tables where tablespace_name = 'my_tablespace')
loop
l_sql := 'grant select, insert, update, delete on ' || cur.owner || '.' || cur.table_name || ' to my_user';
--dbms_output.put_line(l_SQL || ';');
execute immediate l_SQL;
end loop;
end;

Referencias

Saludos

Oralce – Alternative to Describe Command

En ocasiones tenemos restringido el comando «DESC» en oracle, sin embargo como una alternativa podemos utilizar el siguiente query para obtener un resultado similar:


SELECT
column_name "Name",
nullable "Null?",
concat(concat(concat(data_type,'('),data_length),')') "Type"
FROM user_tab_columns
WHERE table_name='ORD';

view raw

ora_desc.sql

hosted with ❤ by GitHub

Referencias:

Oracle List Procedures

Querys para listar los procedimientos de la base de datos 🙂

-- List all
SELECT * FROM User_Procedures;
SELECT * FROM DBA_Procedures;
-- Find procedure and source
SELECT * FROM DBA_Procedures WHERE PROCEDURE_NAME = 'PROCEDURE_NAME';
SELECT * FROM User_Source WHERE name = 'PROCEDURE_NAME' ;
SELECT * FROM DBA_Source WHERE name = 'PROCEDURE_NAME';

Java JDBC – Oracle Connection URL in SAP PI

¬¬… No se a que asociar esta entrada ya que se generó por un Comunnication Channel de SAP PI pero la conexión se hace a través de Java por JDBC.

Cuando conectas por JDBC a Orcale la url utilizada por Java depende de lo que te proporcioné tu DBA ya sea por el SID (System ID) o por el Service Name.

El formato de cada uno se muestra a continuación:

Service Name
jdbc:oracle:thin:@//10.10.10.10:1521/DBSN

SID (System ID)
jdbc:oracle:thin:@10.10.10.10:1521:DBSID

Como se puede observar  la direfencia radica en la ip del host y en la parte final del string.

Regresando un poco a SAP PI, la conexión que utiliza es por el url de conexión en JDBC, por ello es necesario respetar el formato dependiendo de los datos de conexión que tengamos.

Saludos

Referencias

Oracle – Eliminar Sesiones Activas

Siempre termino buscando esto y nunca lo anoto, pero mejor tarde que nunca :p:

1. Obtener lista de sesiones activas:

SELECT a.USERNAME, a.SID, a.SERIAL#, b.SPID
        FROM v$session a, v$process  b
        WHERE  a.PADDR= b.ADDR 
        ORDER by 1;

2. Eliminar la sesión activa por el SID y el SERIAL:

ALTER SYSTEM KILL SESSION 'SID, SERIAL#';

Debes colocar el número del SID y el SERIAL  de la sesión que deseas eliminar.

Saludos

OZ Ejemplo Cajero ATM

¿Que vamos a desarrollar?

Una aplicación que simule el funcionamiento de un cajero automático, mostrando el uso de múltiples frameworks Java para crear un sistema modular y extendible.

Requisitos

  • Apache Maven >= 3.X
  • Java JDK >=  1.6
  • Netbeans >= 6.5
  • Base de Datos MySQL

Análisis

Supongamos que tenemos el siguiente requerimiento por parte del cliente o del analista:

Crear un cajero que permita realizar dos operaciones, Retirar efectivo y hacer Transferencias a otro Banco.

Veamos como se vería en un diagrama de casos de uso:

El usuario unicamente va a realizar dos operaciones retiro y transferencia.

Bien ahora la base de datos, vamos a utilizar este script para generarla.  Ejecutas el archivo en tu gestor favorito y te  creará el esquema llamado OZ_TEST, con las siguiente tablas:

Seguir leyendo