A partir da versão 12c a Oracle introduziu várias mudanças na "arquitetura", o que influenciou inclusive na criação de usuários no banco de dados.
Agora ao criar um usuário, podemos definir se este é um local user, ou seja, um usuário que existe apenas em um PDB ou um common user, que é um usuário existente em todos os PDB's e CDB's.
Para mais informações a respeito desta arquitetura no que tange a usuários, sugiro a leitura do artigo Tudo o que você precisa saber sobre o Common e o Local no Oracle Database 12c que explica a mesma, de uma forma bastante completa.
Vale destacar a existência das seguintes restrições na criação de usuários nesta nova arquitetura:
- O nome dos usuários comuns (common users) devem sempre iniciar com C## ou c##;
- Usuários locais (local users), não podem iniciar com C## ou c##;
- Usuários e roles não podem ter o mesmo nome;
Apesar do nome dos usuários comuns terem sempre que iniciar com os caracteres C## ou c##, existe a possibilidade de criar um usuário comum sem esses caracteres.
O exemplo abaixo utiliza-se da alteração de um parâmetro oculto. Para alteração de qualquer parâmetro oculto, sempre consulte o suporte da Oracle.
[oracle@lamimtst12c: cdbtst1 ~] $ sqlplus SQL*Plus: Release 12.1.0.2.0 Production on Wed Mar 15 13:10:06 2017 Copyright (c) 1982, 2014, Oracle. All rights reserved. Enter user-name: / as sysdba Connected to: Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production With the Partitioning, Automatic Storage Management, OLAP, Advanced Analytics and Real Application Testing options cdbtst1@CDB$ROOT> create user lamim identified by lamim container=all; create user lamim identified by lamim container=all * ERROR at line 1: ORA-65096: invalid common user or role name cdbtst1@CDB$ROOT> alter session set "_ORACLE_SCRIPT"=true; Session altered. cdbtst1@CDB$ROOT> create user lamim identified by lamim container=all; User created. cdbtst1@CDB$ROOT> col USERNAME for a20 cdbtst1@CDB$ROOT> set lines 190 cdbtst1@CDB$ROOT> select USERNAME,COMMON from dba_users where username='LAMIM'; USERNAME COM -------------------- --- LAMIM YES cdbtst1@CDB$ROOT>
Olá, Lamin
ResponderExcluirEssa dica me ajudou hoje na criação de um usuário no Oracle XE 18c.
O que achei intrigante foi que ao tentar criar pelo Enterprise Manager, ele deu o mesmo erro. Teoricamente o EM deveria fazer essa tratativa também.
Que bom que pude ajuda-lo :)
ResponderExcluir"_ORACLE_SCRIPT"=TRUE PARAMETER Should not be Invoked by Users (Doc ID 2378735.1)
ResponderExcluirNão deve, não significa que não possa.
Excluir;)
Lamim, Muito obrigado!!! cara, tava quebrando a cabeça aqui acostumado a moda antiga ainda.
ResponderExcluir