Oracle中建立到CDB和PDB的连接 适用范围适用于Oracle 19c CDB架构方案概述在CDB架构下我们要对CDB和PDB进行管理维护首先要连接进来。一、默认服务CDB成功创建后与非CDB架构相比会创建一些新的对象和组件。两个容器根容器和种子 PDB若干服务数量和容器数量相同根容器服务名是在创建 CDB 时给定的 CDB 名 称该名称会与域名连接在一起。每个新 PDB 都会分配一个服务名服务名是在创 建 PDB 时给定的 PDB 名称该名称会与域名连接在一起。如果创建或插入PDB其服务名为 PDB的名字该名称会与域名连接在一起。可以在 CDB_SERVICES 视图中查找在 CDB 中维护的所有服务名。公用用户在所有容器、根和种子中会创建 SYS、SYSTEM 向所有容器中的所有用户授予公用权限所有容器、根和种子中的预定义公用角色表空间与每个容器关联的SYSTEM、SYSAUX、TEMP--连接到CDB中检查serviceSELECTname,pdbFROMcdb_services;SYScdb19c(CDB$ROOT)showcon_name CON_NAME------------------------------CDB$ROOT SYScdb19c(CDB$ROOT)SELECTPDB,NETWORK_NAME,CON_IDFROMCDB_SERVICESWHEREPDBISNOTNULLORDERBYPDB;PDB NETWORK_NAME CON_ID--------------- -------------------- ----------CDB$ROOT1CDB$ROOT1CDB$ROOT cdb19cXDB1CDB$ROOT cdb19c1HRPDB hrpdb3RCATPDB RCATPDB66rowsselected.SYScdb19c(CDB$ROOT)SYScdb19c(CDB$ROOT)SELECTPDB,NETWORK_NAME,CON_IDFROMV$SERVICESWHEREPDBISNOTNULLORDERBYPDB;PDB NETWORK_NAME CON_ID--------------- -------------------- ----------CDB$ROOT1CDB$ROOT cdb19cXDB1CDB$ROOT cdb19c1CDB$ROOT1HRPDB hrpdb3RCATPDB rcatpdb66rowsselected.SYScdb19c(CDB$ROOT)--切换到PDB中检查serviceSYScdb19c(CDB$ROOT)SELECTPDB,NETWORK_NAME,CON_IDFROMCDB_SERVICESWHEREPDBISNOTNULLORDERBYPDB;PDB NETWORK_NAME CON_ID--------------- -------------------- ----------HRPDB hrpdb3SYScdb19c(CDB$ROOT)SELECTPDB,NETWORK_NAME,CON_IDFROMV$SERVICESWHEREPDBISNOTNULLORDERBYPDB;PDB NETWORK_NAME CON_ID--------------- -------------------- ----------HRPDB hrpdb3SYScdb19c(CDB$ROOT)SYScdb19c(CDB$ROOT)关闭PDB service 在cdb_service查询不到该PDB对应的服务名了v$service中还可以查到。 SYScdb19c(CDB$ROOT)SELECTPDB,NETWORK_NAME,CON_IDFROMCDB_SERVICESWHEREPDBISNOTNULLORDERBYPDB;SELECTPDB,NETWORK_NAME,CON_IDFROMCDB_SERVICESWHEREPDBISNOTNULLORDERBYPDB*ERROR at line1: ORA-01219:databaseorpluggabledatabasenotopen: queries allowedonfixedtablesorviews only SYScdb19c(CDB$ROOT)SELECTPDB,NETWORK_NAME,CON_IDFROMV$SERVICESWHEREPDBISNOTNULLORDERBYPDB;PDB NETWORK_NAME CON_ID--------------- -------------------- ----------HRPDB hrpdb3SYScdb19c(CDB$ROOT)SYScdb19c(CDB$ROOT)conn/assysdba Connected.Hello------------------------------------------------Welcome!you are connectedtoCDB19CdatabaseCONNAME--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------CDB$ROOT SYScdb19c(CDB$ROOT)SELECTPDB,NETWORK_NAME,CON_IDFROMCDB_SERVICESWHEREPDBISNOTNULLORDERBYPDB;PDB NETWORK_NAME CON_ID--------------- -------------------- ----------CDB$ROOT1CDB$ROOT1CDB$ROOT cdb19cXDB1CDB$ROOT cdb19c1RCATPDB RCATPDB6SYScdb19c(CDB$ROOT)SELECTPDB,NETWORK_NAME,CON_IDFROMV$SERVICESWHEREPDBISNOTNULLORDERBYPDB;PDB NETWORK_NAME CON_ID--------------- -------------------- ----------CDB$ROOT1CDB$ROOT cdb19cXDB1CDB$ROOT cdb19c1CDB$ROOT1HRPDB hrpdb3RCATPDB rcatpdb66rowsselected.SYScdb19c(CDB$ROOT)每个 PDB 都有一个默认服务。服务名必须在各个 CDB 中都是唯一的。当PDB关闭时cdb_services中将不能查询到该PDB的service。二、创建服务创建服务如果数据库不是由 Oracle Restart 或 Oracle Clusterware 管理可以使用 DBMS_SERVICE 程序包为每个 PDB 创建或修改服务。连接到当前执行操作的PDB中。SQLCONNECTsystemhrpdbSQLEXECDBMS_SERVICE.CREATE_SERVICE(hrpdb,hrpdb)SQLEXECDBMS_SERVICE.START_SERVICE 要为每个 PDB 创建或修改服务还可以使用 Server Control 实用程序和 srvctl service 命令通过额外的属性 –pdb 指定 PDB 名 $ srvctladdservice-db mycdb-service hrpdb-pdb hrpdb $ srvctlstartservice-db mycdb-service hrpdb生产RAC环境如需要创建service建议优先使用srvctl add service方式。三、连接到CDB和PDB1、基于OS认证的方式–确认$ORACLE_SID环境变量[oracle19cdb01~]$ ps-ef|grep smon oracle1264510Jun18 ?00:00:00ora_smon_cdb19c oracle3095929011003:49pts/000:00:00grep--colorauto smon[oracle19cdb01~]$.oraenv ORACLE_SID[cdb19c]? The Oracle base remains unchangedwithvalue/u01/app/oracle[oracle19cdb01~]$ echo $ORACLE_SID cdb19c[oracle19cdb01~]$–以sysdba身份连接CDB[oracle19cdb01~]$ sqlplus/assysdbaSQL*Plus:Release19.0.0.0.0-ProductiononFri Jun1903:50:512026Version19.27.0.0.0Copyright(c)1982,2024,Oracle.Allrights reserved.Connectedto: OracleDatabase19c Enterprise EditionRelease19.0.0.0.0-Production Version19.27.0.0.0Hello------------------------------------------------Welcome!you are connectedtoCDB19CdatabaseCONNAME--------------------------------------------------------------------------------CDB$ROOT SYScdb19c(CDB$ROOT)showcon_name CON_NAME------------------------------CDB$ROOT SYScdb19c(CDB$ROOT)--以sysdba身份连接到PDB设置环境变量ORACLE_PDB_SID[oracle19cdb01~]$ export ORACLE_PDB_SIDhrpdb[oracle19cdb01~]$ sqlplus/assysdbaSQL*Plus:Release19.0.0.0.0-ProductiononFri Jun1904:12:052026Version19.27.0.0.0Copyright(c)1982,2024,Oracle.Allrights reserved.Connectedto: OracleDatabase19c Enterprise EditionRelease19.0.0.0.0-Production Version19.27.0.0.0Hello------------------------------------------------Welcome!you are connectedtoCDB19CdatabaseCONNAME--------------------------------------------------------------------------------HRPDB SYScdb19c(HRPDB)2、EasyConnect方式sqlplus usernamehostname:portnumber/service_name--检查hostname[oracle19cdb01~]$ hostname19cdb01[oracle19cdb01~]$--使用sys用户以sysdba身份连接连接到CDB[oracle19cdb01~]$ sqlplus sys/password19cdb01:1525/cdb19cassysdbaSQL*Plus:Release19.0.0.0.0-ProductiononFri Jun1903:53:552026Version19.27.0.0.0Copyright(c)1982,2024,Oracle.Allrights reserved.Connectedto: OracleDatabase19c Enterprise EditionRelease19.0.0.0.0-Production Version19.27.0.0.0Hello------------------------------------------------Welcome!you are connectedtoCDB19CdatabaseCONNAME--------------------------------------------------------------------------------CDB$ROOT SYS19cdb01:1525/cdb19c(CDB$ROOT)showcon_name CON_NAME------------------------------CDB$ROOT SYS19cdb01:1525/cdb19c(CDB$ROOT)--使用sys用户以sysdba身份连接连接到PDB[oracle19cdb01~]$ sqlplus sys/password19cdb01:1525/hrpdbassysdbaSQL*Plus:Release19.0.0.0.0-ProductiononFri Jun1903:58:372026Version19.27.0.0.0Copyright(c)1982,2024,Oracle.Allrights reserved.Connectedto: OracleDatabase19c Enterprise EditionRelease19.0.0.0.0-Production Version19.27.0.0.0Hello------------------------------------------------Welcome!you are connectedtoCDB19CdatabaseCONNAME--------------------------------------------------------------------------------HRPDB SYS19cdb01:1525/hrpdb(HRPDB)showcon_name CON_NAME------------------------------HRPDB SYS19cdb01:1525/hrpdb(HRPDB)3、 tnsnames.ora 中的别名连接检查tnsnames.ora文件[oracle19cdb01~]$ cat $ORACLE_HOME/network/admin/tnsnames.ora# tnsnames.ora Network Configuration File: /u01/app/oracle/product/19c/db_1/network/admin/tnsnames.ora# Generated by Oracle configuration tools.CDB19C(DESCRIPTION(ADDRESS_LIST(ADDRESS(PROTOCOLTCP)(HOST19cdb01)(PORT1525)))(CONNECT_DATA(SERVICE_NAMEcdb19c)))HRPDB(DESCRIPTION(ADDRESS_LIST(ADDRESS(PROTOCOLTCP)(HOST19cdb01)(PORT1525)))(CONNECT_DATA(SERVICE_NAMEhrpdb)))--连接到CDB[oracle19cdb01~]$ sqlplus sys/passwordcdb19cassysdbaSQL*Plus:Release19.0.0.0.0-ProductiononFri Jun1903:56:172026Version19.27.0.0.0Copyright(c)1982,2024,Oracle.Allrights reserved.Connectedto: OracleDatabase19c Enterprise EditionRelease19.0.0.0.0-Production Version19.27.0.0.0Hello------------------------------------------------Welcome!you are connectedtoCDB19CdatabaseCONNAME--------------------------------------------------------------------------------CDB$ROOT SYScdb19c(CDB$ROOT)showcon_name CON_NAME------------------------------CDB$ROOT SYScdb19c(CDB$ROOT)--连接到PDB[oracle19cdb01~]$ sqlplus sys/passwordhrpdbassysdbaSQL*Plus:Release19.0.0.0.0-ProductiononFri Jun1903:57:402026Version19.27.0.0.0Copyright(c)1982,2024,Oracle.Allrights reserved.Connectedto: OracleDatabase19c Enterprise EditionRelease19.0.0.0.0-Production Version19.27.0.0.0Hello------------------------------------------------Welcome!you are connectedtoCDB19CdatabaseCONNAME--------------------------------------------------------------------------------HRPDB SYShrpdb(HRPDB)showcon_name CON_NAME------------------------------HRPDB SYShrpdb(HRPDB)四、切换连接CDB 管理员可以使用重新连接 CONNECT 或 ALTER SESSION SET CONTAINER 在容器之间切换从而连接到 CDB 中的任意容器。例如CDB 管理员可以在一个会话中连接到根然 后在同一会话中切换到 PDBHR 容器。这要求用户是这两个容器的已知公用用户并且拥 有系统权限 SET CONTAINER。使用 CONNECT 命令时能以公用或本地用户身份进行连接。使用 ALTER SESSION SET CONTAINER 时只能以授予新系统权限 SET CONTAINER 的公用用户身份进行连接。--通过connect连接到PDB[oracle19cdb01~]$ sqlplus/assysdbaSQL*Plus:Release19.0.0.0.0-ProductiononFri Jun1904:05:202026Version19.27.0.0.0Copyright(c)1982,2024,Oracle.Allrights reserved.Connectedto: OracleDatabase19c Enterprise EditionRelease19.0.0.0.0-Production Version19.27.0.0.0Hello------------------------------------------------Welcome!you are connectedtoCDB19CdatabaseCONNAME--------------------------------------------------------------------------------CDB$ROOT SYScdb19c(CDB$ROOT)connecthrhrpdbEnter password:--通过ALTER SESSION SET CONTAINER切换到PDB[oracle19cdb01~]$ sqlplus/assysdbaSQL*Plus:Release19.0.0.0.0-ProductiononFri Jun1904:06:072026Version19.27.0.0.0Copyright(c)1982,2024,Oracle.Allrights reserved.Connectedto: OracleDatabase19c Enterprise EditionRelease19.0.0.0.0-Production Version19.27.0.0.0Hello------------------------------------------------Welcome!you are connectedtoCDB19CdatabaseCONNAME--------------------------------------------------------------------------------CDB$ROOT SYScdb19c(CDB$ROOT)showpdbs CON_ID CON_NAMEOPENMODERESTRICTED---------- ------------------------------ ---------- ----------2PDB$SEEDREADONLYNO3HRPDB MOUNTED6RCATPDBREADWRITENOSYScdb19c(CDB$ROOT)altersessionsetcontainerhrpdb;Sessionaltered.SYScdb19c(CDB$ROOT)showcon_name CON_NAME------------------------------HRPDB--通过CONNECT连接到CDBSYScdb19c(CDB$ROOT)conn/assysdba Connected.Hello------------------------------------------------Welcome!you are connectedtoCDB19CdatabaseCONNAME--------------------------------------------------------------------------------CDB$ROOT SYScdb19c(CDB$ROOT)-the end-

相关新闻

最新新闻

GBase 8a数据库集群多维度资源管控策略矩阵讲解

GBase 8a数据库集群多维度资源管控策略矩阵讲解

南大通用GBase 8a MPP Cluster集群(gbase database)资源管理功能可以对 SELECT 和 DML 等受控 SQL 在运行过程中使用的 CPU、内存、I/O 和磁盘空间等资源进行合理管控,以达到资源合理利用,系统稳定性运行的要求。其中:…

2026/8/14 16:21:34
C语言基础:操作符详解(一)

C语言基础:操作符详解(一)

目录 一、操作符的分类 二、二进制和进制转换 但我们该怎么完成常用进制之间的进制转换呢? 如何完成十进制到二进制 ​编辑如何完成二进制转到八进制 如何完成二进制转到十六进制 如何完成其他进制的转换 前言 C语言中提供了非常丰富的操作符 一、操作符的…

2026/8/14 16:21:34
第一次让 AI 帮你写代码:用 JavaScript 完成一个待办事项清单

第一次让 AI 帮你写代码:用 JavaScript 完成一个待办事项清单

文章目录一、先明确我们要做什么二、先让 AI 拆解需求三、再让 AI 生成代码四、完整可运行代码五、如何运行这段代码六、如何验证 AI 生成的代码七、AI 生成代码时常见的问题1. 代码看起来完整,但无法运行2. 只实现了正常情况3. 代码能运行,但自己看不懂…

2026/8/14 16:21:34
Java RAG 实战(第 6 篇):Markdown 知识库与 RAG

Java RAG 实战(第 6 篇):Markdown 知识库与 RAG

系列导航 所属专栏:《Java 开发者从零实现 RAG 知识库》学习位置:第 6 篇 / 共 12 篇上一篇:《第5篇:Embedding 与语义检索》下一篇:《第7篇:使用 Qdrant 保存和检索向量》 本篇先不引入向量数据库&#x…

2026/8/14 16:21:34
继承体系搭好了,方法找不到了

继承体系搭好了,方法找不到了

系列回顾:上一篇毛毛姐叠了三个装饰器,执行顺序全反了——洋葱模型 + 协议覆盖,元编程的两把双刃剑。这一篇,毛毛姐搭了个粉丝管理的多重继承体系,结果方法调用顺序完全不对。 📋 本期坑点速览:多重继承 MRO 顺序反直觉 super() 在闭包中绑定错误类 __name 名称修饰不…

2026/8/14 16:21:34
手把手教你学 Simulink—— 基于强化学习(DDPG)的电机无位置传感器控制仿真

手把手教你学 Simulink—— 基于强化学习(DDPG)的电机无位置传感器控制仿真

目录 手把手教你学 Simulink —— 基于强化学习(DDPG)的电机无位置传感器控制仿真 一、为什么 DDPG 做无感控制必须"降维使用"

2026/8/14 16:16:33