La vista v$sql_cursor contiene información de los cursores (incluyendo el CURNO), pero sólo los del usuario que acceda a la misma. ¿Alguien podría decirme una vista en donde pueda encontrar el CURNO de TODOS los cursores de la base de datos?
Gracias por anticipado.
Like it on Facebook, +1 on Google, Tweet it or share this topic on other bookmarking websites.
  • Re: ¿Cómo obtener los cursores de todos los usuarios?

    by » 12 years ago


    Qué tal,
    Esto lo logras usando la vista "v$sql_bind_data" y el campo "cursor_num"

    También si quieres, puedes hacer un join con "cursor_num" y "v$sql_cursor.curno".

    Saludos,
    Carlos I. Contreras
    DBASupport.

    DBASupport Team

  • Re: ¿Cómo obtener los cursores de todos los usuarios?

    by » 12 years ago


    ¡Hola!

    Creo que la vista v$sql_bind_data tiene el mismo problema que la v$sql_cursor, y es que parece tener acceso solamente a las variables vinculadas a cursores únicamente del usuario que hace el select. Lo digo porque en la bd que estoy consultando hay multitud de conexiones con cursores, ya que acceden varias aplicaciones a través de pools establecidos desde sus servidores de aplicaciones, y sólo veo un pool de 64 variables bind (que supongo que se reutilizarán en forma LRU), y ninguna de ellas aparece utilizada. Otro inconveniente que veo es que los cursores que estén sirviendo a consultas sql sin variabls vinculadas tampoco podrán aparecer guiando la consulta por v$sql_bind_data.

  • Re: ¿Cómo obtener los cursores de todos los usuarios?

    by » 12 years ago


    mmm... entiendo tu punto... puede ser que te sirva entonces la vista V$OPEN_CURSOR.

    Carlos I. Contreras.
    DBASupport

    DBASupport Team

  • Re: ¿Cómo obtener los cursores de todos los usuarios?

    by » 12 years ago


    ¡Hola!

    Creo que la vista V$open_cursor es la adecuada. La query que pongo a continuación va bien:

    SELECT s.username, s.SID, s.serial#, s.saddr, s.status, s.program, aa.NAME,
    t.piece, t.sql_text
    FROM v$open_cursor c, v$session s, v$sqltext t, audit_actions aa
    WHERE s.saddr = c.saddr
    AND s.status = 'ACTIVE'
    AND t.address = c.address
    AND t.hash_value = c.hash_value
    AND aa.action = t.command_type
    ORDER BY s.username, s.SID, c.address, c.hash_value, t.piece;

    pero me enfrento con el problema de relacionar un cursor con su CURNO. El CURNO lo quiero porque en el alert.log tengo errores ORA-00600 con el primar parámetro [12209] y, consultando en metalink me enteré que el siguiente número es el CURNO del cursor que produjo el cascajo. Averiguando esto podré identificar la aplicación, usuario e instrucción SQL que produjo el estropicio.
    Saludos.

  • Re: ¿Cómo obtener los cursores de todos los usuarios?

    by » 12 years ago


    Te falta hacer el join que comenta ccontreras:

    con &quot;cursor_num&quot; y &quot;v$sql_cursor.curno&quot;.<br><br>Post edited by: G3DBA, at: 2009/06/17 12:55

You do not have permissions to reply to this topic.
Powered by CjForum