Dúvida sobre Namespaces

Informações sobre as certificações oracle, dúvidas, exemplos, OCP, OCA, OCM, etc.
Responder
ademilton
Rank: Estagiário Pleno
Rank: Estagiário Pleno
Mensagens: 3
Registrado em: Sáb, 12 Jul 2014 12:39 pm

Olá.

Esta é uma dúvida bem conceitual. Estudando para a prova 1Z0-047 vejo pela explicação sobre NAMESPACES que os objetos ROLES, USERS e PUBLIC SYNONYMS ocupam um namespace no database.

Logo, não posso criar uma ROLE com o mesmo nome de um USER. Mas consigo criar um PUBLIC SYNONYM com o mesmo nome de um USER. Consigo também criar um PUBLIC SYNONYM com o mesmo nome de uma ROLE.

Sendo assim não é mais correto afirmar que PUBLIC SYNONYM ocupa um namespace diferente de ROLES e USERS, que por sua vez ocupam um outro namespace em comum ?
Avatar do usuário
stcoutinho
Moderador
Moderador
Mensagens: 850
Registrado em: Qua, 11 Mai 2011 5:15 pm
Localização: são Paulo - SP

Oi Ademilton,

Engraçado, tentei reproduzir suas afirmações em minha base 11g com os mesmos resultados.

Selecionar tudo

SQL> CREATE USER LIXO IDENTIFIED BY LIXO;
User created.

SQL> CREATE ROLE LIXO;
CREATE ROLE LIXO
            *
ERROR at line 1:
ORA-01921: role name 'LIXO' conflicts with another user or role name

SQL> CREATE PUBLIC SYNONYM LIXO FOR DUAL;
Synonym created.

Acho que - com base em sua experiência - podemos considerar o PUBLIC SYNONYM como um NAMESPACE "à parte", sendo que ROLES e USER compartilham do mesmo NAMESPACE.

Mas para efeito do exame 1Z0-047, você deve considerar sempre que USER,ROLE e PUBLIC SYNONYM compartilham do mesmo NAMESPACE.

Procurei sobre o tema nos manuais da ORACLE, mas não encontrei nenhuma observação sobre este tema. Pode ser que algum forista possa indicar alguma passagem na documentação sobre NAMESPACES.

Abraços,

Sergio
ademilton
Rank: Estagiário Pleno
Rank: Estagiário Pleno
Mensagens: 3
Registrado em: Sáb, 12 Jul 2014 12:39 pm

Olá.

Grato pelo retorno.

Este trecho da documentação parece confirmar o raciocínio de que os objetos do PUBLIC ocupam um namespace à parte:

Selecionar tudo

"If the object name provided is not qualified with the user that owns it, then the search order for an object is as follows:

    Search for any match from all object names within the current user namespace. If there is a match, the object name is resolved.

    If no match is found in the user namespace, search for any match from the PUBLIC namespace, which contains objects such as public synonyms. Public synonyms are pre-defined for SYS and TTREP objects. If there is a match, the object name is resolved. Otherwise, the object does not exist."
(extraído de http://docs.oracle.com/cd/E21901_01/doc ... m#TTSQL445 )

Fico pensando no seguinte... se fixar a idéia de que o mesmo NAMESPACE abriga USER, ROLE e PUBLIC SYNONYM, e cair uma questão simplesmente demonstrando uma sequencia de comandos como esta que você testou e pedindo para responder quais executariam com sucesso e quais falhariam... eu não estaria propenso a errar ?
Avatar do usuário
stcoutinho
Moderador
Moderador
Mensagens: 850
Registrado em: Qua, 11 Mai 2011 5:15 pm
Localização: são Paulo - SP

Ademilton,

Já cheguei a ler várias documentações e materiais de preparação para este exame, e tudo o que me ensinaram foi que USER/ROLES/PUBLIC SYNONYM ficam na mesma tablespace, o que não seria 100% verdadeiro, conforme o que você mesmo pode comprovar.

Acho que se cair uma questão de NAMESPACE na prova, é bem provável que não apareça uma questão colocando estas alternativas:
A) A same namesplace for USER, ROLES AND PUBLIC SYNONYMS
B) A same namesplace for USER AND ROLES
C) Outras ...
Se por acaso ocorrer uma situação como esta ("A","B") diria para responder "B".
Na ausência da alternativa "B", responda então "A", mesmo sabendo que isso não é 100% verdade.

É mais uma sugestão, ok?

Abraços,

Sergio
ademilton
Rank: Estagiário Pleno
Rank: Estagiário Pleno
Mensagens: 3
Registrado em: Sáb, 12 Jul 2014 12:39 pm

Valeu mais uma vez !!
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 6 visitantes