Pular para o conteúdo
Visualizando 5 posts - 1 até 5 (de 5 do total)
  • Autor
    Posts
  • #90898
    priscilla
    Participante

      Bom dia pessoal,

      Alguém pode me ajudar com o seguinte script:

      — **************************************
      — Notes:
      — This file is used to add yourself as BAM admin
      — in your XP OS if your computer is using a central
      — domain controller.
      — Steps: Store this file in your c:temp directory
      — Loginto SQL plus as orabam user and run this file
      — sqlplus orabam/orabam@oraclebam
      — @makemeanadcadmin.sql
      — **************************************
      SET SERVEROUTPUT ON

      DECLARE
      user_name VARCHAR2(255);
      user_exists NUMBER(1);
      user_id NUMBER(19);
      user_is_admin NUMBER(1);
      role_user_mapping_id NUMBER(19);

      BEGIN
      user_name := SYS_CONTEXT(‘USERENV’, ‘EXTERNAL_NAME’);
      IF (user_name IS NULL) THEN
      DBMS_OUTPUT.PUT_LINE(‘FAILED.’);
      DBMS_OUTPUT.PUT_LINE(‘Windows user name cannot be determined; exiting.’);
      DBMS_OUTPUT.PUT_LINE(‘The database server is probably in a different domain, or is a Unix machine.’);
      RETURN;
      END IF;

      DBMS_OUTPUT.PUT_LINE(‘You are: ‘ || user_name);

      SELECT COUNT(*) INTO user_exists FROM “SysIterUser” WHERE “SysIterName” = user_name;

      IF (user_exists > 0) THEN
      SELECT “SysIterID” INTO user_id FROM “SysIterUser” WHERE “SysIterName” = user_name;
      DBMS_OUTPUT.PUT_LINE(‘Your user ID is ‘ || TO_CHAR(user_id) || ‘.’);

      SELECT COUNT(*) INTO user_is_admin FROM “SysIterRoleUserMapping” WHERE “RoleName” = ‘SOABAMTSTadministrator’ AND “UserID” = user_id;

      IF (user_is_admin > 0) THEN
      DBMS_OUTPUT.PUT_LINE(‘Surprise! You were already an admin!’);
      RETURN;
      END IF;

      ELSE
      DBMS_OUTPUT.PUT_LINE(‘You are not in the ADC; being added for the first time.’);

      SELECT MAX(“SysIterID”) + 1 INTO user_id FROM “SysIterUser”;

      INSERT INTO “SysIterUser”
      (“SysIterID”, “SysIterTrID”, “SysIterTotalsChild”, “SysIterOwnerID”, “SysIterCreated”, “SysIterLastModified”, “SysIterLastModifiedBy”, “SysIterName”, “UserName”, “FullName”)
      VALUES
      (user_id, 0, 0, 1, SYSDATE, SYSDATE, 1, user_name, user_name, user_name);

      DBMS_OUTPUT.PUT_LINE(‘Your user ID is ‘ || TO_CHAR(user_id) || ‘.’);
      END IF;

      SELECT NVL(MAX(“SysIterID”) + 1,1) INTO role_user_mapping_id FROM “SysIterRoleUserMapping”;
      INSERT INTO “SysIterRoleUserMapping”
      (“SysIterID”, “SysIterTrID”, “SysIterTotalsChild”, “SysIterOwnerID”, “SysIterCreated”, “SysIterLastModified”, “SysIterLastModifiedBy”, “RoleName”, “UserID”)
      VALUES
      (role_user_mapping_id, 0, 0, 1, SYSDATE, SYSDATE, 1, ‘SOABAMTSTadministrator’, user_id);

      DBMS_OUTPUT.PUT_LINE(‘Congratulations! You are now an admin… use your powers wisely 🙂 .’);

      END;

      O problema que está acontecendo é que na função SYS_CONTEXT(‘USERENV’, ‘EXTERNAL_NAME’); não está retornando nada. Gostaria de saber se alguém pode me ajudar.

      att.

      Priscilla

      #90900
      diegolenhardt
      Participante

        O que deveria retornar ?

        Desconheco o retorno para EXTERNAL_NAME,

        Veja se o que você precisa retorna na consulta abaixo:


        select
        SYS_CONTEXT('USERENV','SESSIONID') sessionid,
        SYS_CONTEXT('USERENV','CURRENT_USER') current_user,
        SYS_CONTEXT('USERENV','CURRENT_USERID') current_userid,
        SYS_CONTEXT('USERENV','SESSION_USER') session_user,
        SYS_CONTEXT('USERENV','SESSION_USERID') session_userid,
        SYS_CONTEXT('USERENV','PROXY_USER') proxy_user,
        SYS_CONTEXT('USERENV','PROXY_USERID') proxy_userid,
        SYS_CONTEXT('USERENV','DB_DOMAIN') db_domain,
        SYS_CONTEXT('USERENV','DB_NAME') db_name,
        SYS_CONTEXT('USERENV','HOST') host,
        SYS_CONTEXT('USERENV','OS_USER') os_user,
        SYS_CONTEXT('USERENV','TERMINAL') terminal,
        SYS_CONTEXT('USERENV','EXTERNAL_NAME') external_name,
        SYS_CONTEXT('USERENV','IP_ADDRESS') ip_address
        from dual;
        [/code]

        #90902
        Ishii
        Participante

          Olá,

          Não seria SESSION_USER em vez de EXTERNAL_NAME?

          http://download.oracle.com/docs/cd/B19306_01/server.102/b14200/functions165.htm#i1038176

          Em todo caso o link acima é para os casos do SYS_CONTEXT

          []s Ishii

          #90903
          Avatar photoRegis Araujo
          Participante

            Ola Priscilla, bom dia..!

            Qual informação vc precisa pegar? O usuário logado na máquina ou o usuário que iniciou a sessão..!

            Se for o usuário da máquina vc usa o SYS_CONTEXT(‘USERENV’,’OS_USER’)… e se for o usuário da sessão.. vc utiliza o SYS_CONTEXT(‘USERENV’,’CURRENT_USER’)…

            Espero ter ajudado..! Qualquer coisa.. coloca o que vc precisa..!!

            Abraços..!

            #90906
            fsitja
            Participante

              O parâmetro EXTERNAL_NAME consta como depracated na documentação. É claro que depende da sua versão, mas tenta verificar se um dos dois abaixo não atende o que você quer.


              select SYS_CONTEXT('USERENV', 'AUTHENTICATED_IDENTITY') AUTH_ID,
              SYS_CONTEXT('USERENV', 'ENTERPRISE_IDENTITY') ENTER_ID
              from dual

              Dá uma olhada no link abaixo:
              http://download.oracle.com/docs/cd/E118 … ons182.htm

            Visualizando 5 posts - 1 até 5 (de 5 do total)
            • Você deve fazer login para responder a este tópico.
            plugins premium WordPress