如何连接到 docker Oracle 实例

Chu*_*uck 8 oracle docker

我正在遵循这些说明

我创建了一个这样的 docker 容器:

docker run --name oracle \
-p 1521:1521  \
-e ORACLE_SID=ORASID \
-e ORACLE_PDB=ORAPDB \
-e ORACLE_PWD=F1f@f23_ \
-v /mnt_point/oradata:/home/oracle/oradata \
oracle/database:12.2.0.1-ee
Run Code Online (Sandbox Code Playgroud)

输出是:

#########################
DATABASE IS READY TO USE!
#########################
The following output is now a tail of the alert.log:
Completed: alter pluggable database ORAPDB open
2017-08-07T19:16:31.190780+00:00
ORAPDB(3):CREATE SMALLFILE TABLESPACE "USERS" LOGGING  DATAFILE  '/opt/oracle/oradata/ORASID/ORAPDB/users01.dbf' SIZE 5M REUSE AUTOEXTEND ON NEXT  1280K MAXSIZE UNLIMITED  EXTENT MANAGEMENT LOCAL  SEGMENT SPACE MANAGEMENT  AUTO
ORAPDB(3):Completed: CREATE SMALLFILE TABLESPACE "USERS" LOGGING  DATAFILE  '/opt/oracle/oradata/ORASID/ORAPDB/users01.dbf' SIZE 5M REUSE AUTOEXTEND ON NEXT  1280K MAXSIZE UNLIMITED  EXTENT MANAGEMENT LOCAL  SEGMENT SPACE MANAGEMENT  AUTO
ORAPDB(3):ALTER DATABASE DEFAULT TABLESPACE "USERS"
ORAPDB(3):Completed: ALTER DATABASE DEFAULT TABLESPACE "USERS"
2017-08-07T19:16:32.867558+00:00
ALTER SYSTEM SET control_files='/opt/oracle/oradata/ORASID/control01.ctl' SCOPE=SPFILE;
   ALTER PLUGGABLE DATABASE ORAPDB SAVE STATE
Completed:    ALTER PLUGGABLE DATABASE ORAPDB SAVE STATE
Run Code Online (Sandbox Code Playgroud)

我通过 ctrl+c 杀死它。然后我运行:

docker start oracle
docker logs -f oracle

#########################
DATABASE IS READY TO USE!
#########################
The following output is now a tail of the alert.log:
ORAPDB(3):Undo initialization finished serial:0 start:508498668 end:508498772 diff:104 ms (0.1 seconds)
ORAPDB(3):Database Characterset for ORAPDB is AL32UTF8
ORAPDB(3):Opatch validation is skipped for PDB ORAPDB (con_id=0)
2017-08-07T19:25:39.799508+00:00
ORAPDB(3):Opening pdb with no Resource Manager plan active
Pluggable database ORAPDB opened read write
Starting background process CJQ0
Completed: ALTER DATABASE OPEN
2017-08-07T19:25:40.536753+00:00
CJQ0 started with pid=38, OS id=239
2017-08-07T19:25:42.538433+00:00
Shared IO Pool defaulting to 64MB. Trying to get it from Buffer Cache for process 77.
===========================================================
Dumping current patch information
===========================================================
No patches have been applied
===========================================================
Run Code Online (Sandbox Code Playgroud)

然后我尝试像这样连接:

docker exec -ti oracle sqlplus pdbadmin@ORAPDB
Run Code Online (Sandbox Code Playgroud)

结果是:

ORA-12154: TNS:could not resolve the connect identifier specified
Run Code Online (Sandbox Code Playgroud)

然后它要求我输入用户名。无论是SYS、SYSTEM还是PDBADMIN用户,我都无法连接。我已经多次重新输入密码 (F1f@f23_) 以确保它不是打字错误。对此的任何想法将不胜感激。

小智 5

我也遇到过这些图像。您必须先打开可插拔数据库,然后才能连接到它。

我用这样的东西来做到这一点:

docker exec -ti oracle sqlplus / as sysdba
alter pluggable database pdb1 open;
Run Code Online (Sandbox Code Playgroud)

  • 我很欣赏你的回答。有时您无法找到您要查找的内容,因为搜索词有误。你的回答促使我进入这个链接,在那里我学到了更多。https://www.toadworld.com/platforms/oracle/b/weblog/archive/2017/06/21/modularization-by-using-oracle-database-containers-and-pdbs-on-docker-engine (3认同)

Pet*_*eoh 5

是的,在 docker 中设置 Oracle 数据库后我也遇到了同样的错误。

因此,首先检查实例是否正在运行(并查找 ORACLE_SID):

在此输入图像描述

Oracle SID 是 ORCLLCDB。

如果您没有为 ORACLE_SID 设置环境,您将得到:

在此输入图像描述

连接失败。

但是设置 ORACLE_SID 后:

在此输入图像描述

现在您不再收到连接失败错误,而是收到不同的 SYSDBA。

只需将“/ as sysdba”添加到整个 sqlplus 命令中即可。