Blog
25 de maio de 2020
Criando um usuário comum no Oracle 12/18/19c sem o prefixo C##
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>
Postado por:
Jhonata Lamim
188 visualizações