Acabei de instalar o oracle11g e faltava o esquema Scott. Portanto, estou tentando gerá-lo sozinho. Peguei o script sql do esquema "Scott", mas quando tento executar a consulta "criar usuário Scott identificado pelo tigre;" ele exibe o seguinte erro:
ORA-65096: usuário comum inválido ou nome de função no oracle.
Basicamente, ele não está me permitindo criar um usuário "Scott". Por que isso acontece e como posso resolver meu problema?
11g
, você deveria estar ligado12c
.Respostas:
PERIGO
A definição de parâmetros não documentados como este (conforme indicado pelo sublinhado inicial) só deve ser feita sob a orientação do Suporte Oracle. Alterar esses parâmetros sem tal orientação pode invalidar seu contrato de suporte. Portanto, faça isso por sua própria conta e risco.
Especificamente, se você definir
"_ORACLE_SCRIPT"=true
, algumas alterações no dicionário de dados serão feitas com a coluna ORACLE_MAINTAINED definida como 'Y'. Esses usuários e objetos serão excluídos incorretamente de alguns scripts DBA. E eles podem ser incluídos incorretamente em alguns scripts do sistema.Se você concorda com os riscos acima e não deseja criar usuários comuns da maneira correta, use a resposta abaixo.
Antes de criar o usuário, execute:
Eu encontrei a resposta aqui
fonte
Não, você instalou o Oracle 12c . Esse erro só pode estar ativado
12c
e não pode estar ativado11g
.Sempre verifique a versão do seu banco de dados com até 4 casas decimais:
O banco de dados de contêiner multitenant Oracle 12c tem:
Você deve ter criado o banco de dados como um banco de dados de contêiner . Enquanto estiver tentando criar um usuário no container, ou seja, CDB $ ROOT , você deve criar o usuário no banco de dados PLUGGABLE .
Você não deve criar objetos relacionados ao aplicativo no contêiner, pois o contêiner contém os metadados para os bancos de dados conectáveis. Você deve usar o banco de dados conectável para as operações gerais do banco de dados. Caso contrário, não o crie como contêiner e não use multilocação . No entanto, 12cR2 em diante, você não pode criar um banco de dados não contêiner de qualquer maneira.
E muito provavelmente, os esquemas de amostra já podem ter sido instalados, você só precisa desbloquear los no banco de dados conectável.
Por exemplo, se você criou um banco de dados plugável como
pdborcl
:Para mostrar os PDBs e se conectar a um banco de dados plugável do contêiner raiz:
Sugiro ler, Passos obrigatórios pós-instalação do Oracle 12c
Nota : Respostas que sugerem o uso do
_ORACLE_SCRIPT
parâmetro oculto para definir como verdadeiro são perigosas em um sistema de produção e também podem invalidar seu contrato de suporte. Cuidado, sem consultar o suporte da Oracle, NÃO use parâmetros ocultos .fonte
No Oracle 12c e superior, temos dois tipos de bancos de dados:
Se quiser criar um usuário, você tem duas possibilidades:
Você pode criar um "usuário de contêiner", também conhecido como "usuário comum".
Os usuários comuns pertencem aos CBDs, bem como aos PDBs atuais e futuros. Isso significa que eles podem realizar operações em Container DBs ou Pluggable DBs de acordo com os privilégios atribuídos.
create user c##username identified by password;
Você pode criar um "usuário conectável" ou "usuário local".
Os usuários locais pertencem apenas a um único PDB. Esses usuários podem receber privilégios administrativos, mas apenas para o PDB dentro do qual eles existem. Para isso, você deve se conectar a um datable plugável assim:
alter session set container = nameofyourpluggabledatabase;
e aí, você pode criar usuário como normalmente:
create user username identified by password;
Não se esqueça de especificar o (s) espaço (s) de tabela a usar, pode ser útil durante a importação / exportação de seus bancos de dados. Veja isto para obter mais informações sobre isso https://docs.oracle.com/database/121/SQLRF/statements_8003.htm#SQLRF01503
fonte
alterar conjunto de sessões "_ORACLE_SCRIPT" = verdadeiro;
criar o usuário sec_admin identificado por "Chutinhbk123 @!";
fonte
Criar dependência do usuário nas ferramentas de conexão de banco de dados
fonte
Pode ser uma alternativa mais segura
"_ORACLE_SCRIPT"=true
para mudar"_common_user_prefix"
deC##
para uma string vazia. Quando é nulo - qualquer nome pode ser usado para o usuário comum. Encontrado lá .Durante a alteração desse valor você pode enfrentar outro problema - ORA-02095 - parâmetro não pode ser modificado, que pode ser corrigido de várias maneiras, com base na sua configuração ( fonte ).
Então, para mim funcionou:
fonte