Instalei esta imagem do Docker hoje: https://hub.docker.com/_/oracle-database-enterprise-edition
Eu segui as instruções aqui: https://www.youtube.com/watch?v=ciYsDbBx80s . Basicamente executei os seguintes comandos:
docker pull store/oracle/database-enterprise:12.2.0.1
docker run -d -p 1521:1521 --name oracle store/oracle/database-enterprise:12.2.0.1
docker exec -it 0500ab7ee75c bash -c "source /home/oracle/.bashrc; sqlplus /nolog"
Então no sqlpus:
connect sys as sysdba
Enter password: anyrandompassword
alter session set "_ORACLE_SCRIPT"=true;
create user dummy identified by dummy;
SQL> GRANT ALL PRIVILEGES TO dummy;
SQL>ALTER USER sysdba IDENTIFIED BY Password1 ACCOUNT UNLOCK;
Eu tenho duas perguntas:
Por que a senha do SQLDeveloper para o usuário fictício: dummy. Eu não especifiquei isso.
Parece que agora posso fazer login no SQL Developer com as seguintes credenciais (conforme descrito aqui: https://stackoverflow.com/questions/9129664/unable-to-log-in-to-database-as-sys-with-oracle -sql-desenvolvedor ):
Nome de usuário: SYS AS SYSDBA Senha: Senha1
No entanto, quando executo o seguinte comando no sqlplus
connect sys as sysdba
Em seguida, sou solicitado a fornecer uma senha, no entanto, qualquer senha parece funcionar.
create user dummy identified by dummy;
dba
grupo ou qualquer grupo especificado como oOSDBA
grupo pode efetuar login localmente como sysdba sem fornecer uma senha (ou fornecer qualquer senha).Eu recomendo que você esqueça esta parte:
Tutoriais com esta solução alternativa (
alter session set "_ORACLE_SCRIPT"=true;)
são o resultado de preguiça ou falta de conhecimento sobre a arquitetura CDB introduzida no Oracle 12c. É assim que as "soluções" incorretas se espalham. O autor esqueceu de dizer que ao fazer o acima, você quebra um princípio básico de a arquitetura CDB (porque você cria um novo usuário que é tratado como usuários integrados gerenciados pelo Oracle + seus dados no futuro devem ser armazenados em bancos de dados plugáveis, não no container root) Não é assim que um banco de dados container é usado.Em vez de fazer o acima, depois de obter o prompt SQL com this
docker exec -it 0500ab7ee75c bash -c "source /home/oracle/.bashrc; sqlplus /nolog"
, você deve seguir como abaixo.Conecte-se à instância do banco de dados, abaixo se conecta ao container raiz do banco de dados. Não se preocupe com uma senha neste momento:
Liste bancos de dados conectáveis, você deverá ver um banco de dados conectável chamado
ORCLDB1
.Conecte-se a esse banco de dados conectável:
E crie o usuário lá:
Agora você pode se conectar com o usuário fictício, que está no banco de dados conectável ORCLPDB1, e não no contêiner raiz. Para isso, use
orclpdb1.localdomain
como nome de serviço e nãoORCLCDB.localdomain
.