首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何具体说明我想连接到哪个CDB包装PDB?

如何具体说明我想连接到哪个CDB包装PDB?
EN

Database Administration用户
提问于 2018-02-09 20:21:19
回答 1查看 657关注 0票数 3

我对甲骨文很陌生。我创建了一个类似于cdb1的CDB,然后在pdb1中创建了一个PDB。现在,我可以使用如下方式连接到我的PDB:

sqlplus user/password@server:port/pdb1

但是,我不能在不同的CDBs中有两个同名的PDB吗?如果发生这种情况,sqlplus将不知道我想连接到哪个PDB。侦听器是否有一些健壮的方法来映射连接到运行监听器的计算机上的CDB中的实际PDB的PDB?

编辑:我发现当我在pdb1连接标识符中写入sqlplus时,实际上不是PDB的名称,而是服务的名称,它恰好与PDB的名称相同。

据我所知,我可以使用select name, pdb from v$services;将服务名称映射到PDB名称。

它似乎将服务映射到CDBs,我需要输入lsnrctl service。然后我得到了输出,就像:

代码语言:javascript
复制
Service "pdb1" has 1 instance(s).
  Instance "cdb1", status READY, has 1 handler(s) for this service...
    Handler(s):
      "DEDICATED" established:0 refused:0 state:ready
         LOCAL SERVER

那么,我猜cdb1指的是国开行cdb1吗?或者它也只是碰巧有相同的名字?

再一次,声明它有一个实例的服务意味着它可以有两个实例,这些实例可以指向独立的CDBs,这使我回到了如何区分同名的不同PDB的最初问题。

EN

回答 1

Database Administration用户

发布于 2018-02-10 16:04:30

很容易。

的完整语法是:

理解容易连接的命名方法

代码语言:javascript
复制
CONNECT username@[//]host[:port][/service_name][:server][/instance_name]

您只需要指定service_nameinstance_name

代码语言:javascript
复制
$ lsnrctl services
...
Service "pdb1" has 2 instance(s).
  Instance "RAIN", status READY, has 1 handler(s) for this service...
    Handler(s):
      "DEDICATED" established:3 refused:0 state:ready
         LOCAL SERVER
  Instance "WIND", status READY, has 1 handler(s) for this service...
    Handler(s):
      "DEDICATED" established:3 refused:0 state:ready
         LOCAL SERVER

您将有多个实例为同一服务提供服务。下面可以连接到任何实例,但侦听器决定它转发给请求的是哪个实例,而不是您:

代码语言:javascript
复制
sqlplus user/password@localhost:1521/pdb1

下面的命令总是连接到其中一个实例。如果该实例已关闭,则连接尝试将失败,即使有另一个实例提供了相同的服务:

代码语言:javascript
复制
sqlplus user/password@localhost:1521/pdb1/rain
sqlplus user/password@localhost:1521/pdb1/wind
票数 2
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/197528

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档