20 noviembre 2012

Tip: Como saber el nombre de tu base de datos si eres un usuario mindundi


Si tu JP (Ese ser diabólico), te pregunta un día como se llama esa base de datos donde se estás trabajando. Tú no eres más que un usuario “mindundi” y solo tienes un SQLPLUS y ni tienes derechos de lectura sobre los directorios del sistema operativo, que harías, pobre mortal?
SQL> conn usuario/usuario;
Connected.
SQL> select name from v$database;
select name from v$database
                 *
ERROR at line 1:
ORA-00942: table or view does not exist

SQL> show parameter db_name
ORA-00942: table or view does not exist

SQL> select sys_context('userenv','db_name') from dual;

SYS_CONTEXT('USERENV','DB_NAME')
--------------------------------------------------------------------
ora11g

SQL> select ora_database_name from dual;

ORA_DATABASE_NAME
--------------------------------------------------------------------
ORA11G.REGRESS.RDBMS.DEV.US.ORACLE.COM

SQL> select * from global_name;

GLOBAL_NAME
--------------------------------------------------------------------
ORA11g.REGRESS.RDBMS.DEV.US.ORACLE.COM

18 noviembre 2012

Tip: Migrar los objetos PL/SQL de un esquema a otro


En este pequeño tip de hoy trataremos la forma de migrar a un esquema únicamente la lógica de negocio de otro esquema, por ejemplo de nuestro entorno de desarrollo a producción.
Si lo único que queremos es la lógica de negocio que alberga un esquema, un buen truco es ejecutar el siguiente código.

  •  Desde nuestro SQLPLUS:

Ejecutamos el siguiente script:

spool unload_store.sql

select 'dbms_metadata.....(' ||owner||'.'||object_name||');'
from all_objects where owner = 'USERSCHEMA'
and object_type in ('PACKAGE','PACKAGE BODY','PROCEDURE','FUNKTION');

spool off;

y luego ejecutamos el resultado del primero invocando  el fichero generado.
@unload_store