- Este tópico contém 4 respostas, 5 vozes e foi atualizado pela última vez 15 anos, 6 meses atrás por
fsitja.
-
AutorPosts
-
13 de novembro de 2009 às 5:00 pm #90898
priscilla
ParticipanteBom 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 ONDECLARE
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
13 de novembro de 2009 às 5:10 pm #90900diegolenhardt
ParticipanteO que deveria retornar ?
Desconheco o retorno para EXTERNAL_NAME,
Veja se o que você precisa retorna na consulta abaixo:
[/code]
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;13 de novembro de 2009 às 5:39 pm #90902Ishii
ParticipanteOlá,
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
13 de novembro de 2009 às 5:40 pm #90903Regis Araujo
ParticipanteOla 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..!
13 de novembro de 2009 às 5:55 pm #90906fsitja
ParticipanteO 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 -
AutorPosts
- Você deve fazer login para responder a este tópico.