Category: Sql*Plus

Como crear ROLES de consulta sobre toda la base de datos, de forma fácil



La pregunta es la siguiente

".. Necesito generar un usuario que sea de sólo lectura para toda mi base de datos .."

Pues bien , eso se puede hacer con el siguiente script

click en el LINK



, los pasos para llevarlo a cabo

1.- Copiar el archivo a una ruta fácil de repetir :yes: , no colocar en Documents and Settings, etc ..etc ..etc ;D


2.- Ejecutar el archivo de la forma

sqlplus usuario/password@string_conexion @archivo.sql

3.- En el script va a aparecer una consulta con respecto al nombre del usuario

Ingrese usuario a crear con solo roles de lectura :

4.- Además aparece una pregunta si es VoC ,

V = Implica que se mostrará el comando (Visualizar)
C = Implica que se ejecutará el comando (Crear)

Desea visualizar o crear (V o C)? :

5.- Con lo anterior se crearán roles con el prefijo ROLSER_nombre_de_esquema

6.- Se creará el usuario con grant de connect y se le asignarán todos los roles generados

En resumidas cuentas, un comando , para esa ingrata tarea ... de enrolar

Espero les sirva


by Ligarius
26.01.10. 14:00:00. 180 words, 1888 views. Categories: Base de datos, SQL / Programación, Cosas varias, Sql*Plus , Leave a comment »Send a trackback »

Sql*Plus : Como conectarse a una base de datos con problema (opción _prelim de Sql*Plus)



A veces queremos conectarnos a una instancia Oracle, y lo hacemos , como no, con el usuario más poderoso que existe, con SYS como SYSDBA, pero ni eso resulta y simplemente no podemos conectarnos :(

Pues bien , para esos momentos de desdicha, podemos hacer dos cosas

  • O reiniciar la instancia
  • O buscar los porque..
  • Y como somos DBA de peso, queremos saber el por que, cierto?? :yes:



    Pues bien, para realizar esa gran tarea de análisis, ocupamos un comando no documentado de Sql*Plus llamado la conección preliminar, con lo cual no nos conectamos a la instancia Oracle, pero... tenemos acceso a muchas vistas del diccionario de datos :>> , así tal cual , realizamos una conección pero sin conectarnos


    Acá va el ejemplo de ello

    Seteamos la opción oculta llamada "Conexión preliminar"

    [oracle@oracle10g oracle]$ sqlplus /nolog

    SQL*Plus: Release 10.2.0.4.0 - Production on Thu Aug 26 04:20:56 2010

    Copyright (c) 1982, 2007, Oracle. All Rights Reserved.

    SQL> set _prelim on


    Posterior a eso, realizamos la conexión a la base de datos, pero esto en realidad no realizará la conexión , de hecho si tratará de hacerlo se quedaría pegada.

    SQL> conn / as sysdba
    Prelim connection established


    Si quisieramos ejecutar alguna consulta , aparecería el siguiente mensaje

    SQL> select file_name from dba_data_files;
    select file_name from dba_data_files
    *
    ERROR at line 1:
    ORA-01012: not logged on

    SQL>


    Y esto es porque en realidad, no hemos hecho la conexión, pero si podemos obtener información estadística, por ejemplo para hacer un trace de la sesión y así poder detectar el error.

    Para realizar el comentado trace, podemos ocupar otro utilitario no documentado :>> parece cuento , este utilitario es el oradebug , para ello ocupamos los siguientes comandos.

    SQL>
    SQL> oradebug setmypid
    Statement processed.
    SQL> oradebug unlimit
    Statement processed.
    SQL> oradebug hanganalyze 3
    Hang Analysis in /u01/app/oracle/admin/orcl/udump/orcl_ora_5417.trc


    Ahora viene la explicación de los comandos utilizados

  • oradebug setmypid : Es un debug para el actual proceso que ejecuto el comando
  • oradebug hanganalyze 3 : Este comando sirve para generar un trace por HANG de la base de datos, de acuerdo al nivel que se le ha otorgado
  • Este nivel puede ser :

  • 1 y 2 : Sólo un análisis de HANG
  • 3 : Nivel 2 más los procesos con HANG
  • 4 : Nivel 3 más un vacíado de información de los bloqueadores
  • 5 : Nivel 4 más un vacíado de todos los procesos involucrados en el HANG
  • 10 : Un volcado de todos los procesos existentes (muy costoso)
  • Y claro , ahora viene la revisión del archivo de trace generado , la visualización del problema y el reinicio de la instancia Oracle ;)

    El tamaño del archivo de trace esta dado por el parámetro MAX_DUMP_FILE_SIZE , pero si queremos un tamaño mayor , ejecutamos el comando

    SQL> oradebug unlimit

    Antes de hacer el debug del trace

    Espero les sirva


    by Ligarius
    27.08.09. 18:19:56. 480 words, 1110 views. Categories: Base de datos, Tuning / Performance, Sql*Plus , 1 comment »Send a trackback »