Avatar billede psv Nybegynder
07. juli 2000 - 08:00 Der er 4 kommentarer og
1 løsning

PL/SQL og V$SESSION

Når jeg forsøger at tilgå v$session i en stored procedure får jeg fejlen:

PLS-00201: Identifier SYS.V_$SESSION must be declared.

Det skal siges min bruger HAR rettigheder til at se v$session. Skal der mere til eller?

Alternativt hvordan kan man finde sin egen række i v$session? Jeg vil gerne hav e fat i mit sessionID (IKKE DBMS_SESSION.UNIQUE_SESSION_ID).
Avatar billede mhc Nybegynder
07. juli 2000 - 08:29 #1
Bemærk at tabellen ejet af sys hedder V_$SESSION men public synonymet, som alle har select-rettighed til, hedder V$SESSION (uden underscore).

SessionID (sid) kan findes med nedenstående træk (som jeg selv bruger som en form for unix 'WHO')

SELECT  substr(username,1,10) "User", substr(osuser,1,6) "OSuser", command "Cmd",
        to_char(logon_time, 'DD. HH.MI') "Kl.", sid,
        status, program
FROM v$session
WHERE username is not null
ORDER by 1,2
Avatar billede psv Nybegynder
07. juli 2000 - 09:10 #2
Sorry, jeg glemte en vigtig detalje. Jeg har mange klienter der bruger den samme oracle-bruger, så dit select virker ikke for mig.

Det jeg forsøger i stedet ser ud som følger:

  function GetUniqueSessionID return varchar2 is
  begin
    return DBMS_SESSION.UNIQUE_SESSION_ID;
  end;
 
  function GetSID return number is
    aSID      number;
    aUSID    varchar2(24);
    oldAction char; 
  begin
    aSID := -1;
    oldAction := INFO.GetAction;
    aUSID := GetUniqueSessionID;
    INFO.SetAction(aUSID);

    -- Dette select må jeg ikke udføre
    select v$session.sid into aSID
    from v$session
    where action=aUSID;
   
    SetAction(oldAction);
    return aSID;
  exception
    when others then
      SetAction(oldAction);
      return -1;
  end;
Avatar billede psv Nybegynder
07. juli 2000 - 09:11 #3
Hov, GetAction og SetAction opererer selvf. på v$session.action
Avatar billede psv Nybegynder
07. juli 2000 - 12:41 #4
Anyone, please!! Jeg smider gerne 100 points mere efter for et hurtigt svar!!
Avatar billede psv Nybegynder
21. juli 2000 - 13:10 #5
Fandt selv ud af det

Det rigtige svar er MEGET simplere:

select userenv(\'sessionid\') from dual som returnere audsid fra sessionens egen række i v$session. (Og ikke sid som genbruges)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester