上一篇                     
               
			  Oracle DBA必备,一键速查所有数据库实例的秘籍
- 数据库
- 2025-05-29
- 3332
 在Oracle中,通常一个实例仅关联一个数据库,直接查询
 
 
v$database(显示当前连接的数据库)或
 dba_databases(需权限,通常也仅返回一个),若要查看多租户容器数据库(CDB)中的可插拔数据库(PDB),使用
 show pdbs命令或查询
 dba_pdbs、
 cdb_pdbs视图。
Oracle中查看数据库信息的方法详解
在Oracle数据库管理中,“查看有哪些数据库”是一个常见需求,需特别说明:Oracle的架构与MySQL等数据库不同,传统意义上,一个Oracle实例通常关联一个数据库(由数据文件、控制文件等组成),但在12c版本后引入的多租户架构中,一个容器数据库(CDB)可包含多个可插拔数据库(PDB)。“有哪些数据库”实际可能指两类信息:
- 当前实例关联的数据库名称
- CDB环境中的PDB列表
以下是具体操作方法和命令:
一、查看当前数据库基本信息
这些命令适用于所有Oracle环境,显示当前连接的数据库信息。
-  查看数据库名称(DB_NAME)和唯一标识(DBID) SELECT name AS DB_NAME, dbid AS DBID FROM v$database; 输出示例: DB_NAME DBID ---------- ---------- ORCL 123456789
-  查看实例名称和状态  SELECT instance_name, status, database_status FROM v$instance; 输出示例: INSTANCE_NAME STATUS DATABASE_STATUS ------------- ------------ --------------- orcl OPEN ACTIVE
二、查看可插拔数据库(PDB)列表(仅限CDB环境)
若使用Oracle 12c及以上版本且启用了多租户架构,可通过以下方式查看PDB:
-  查看所有PDB及其状态 SELECT name, open_mode, con_id FROM v$pdbs; 关键字段解释: - NAME:PDB名称
- OPEN_MODE:打开状态(- MOUNTED/- READ WRITE等)
- CON_ID:容器ID
 
-  通过容器视图查询  SELECT pdb_name, status FROM cdb_pdbs; 
三、查看用户/模式(Schema)信息
当用户需要“查看有哪些数据库”时,实际可能想了解当前数据库中的用户(模式),每个模式可理解为逻辑上的独立数据空间。
SELECT username AS schema_name, created, account_status FROM dba_users ORDER BY created DESC;
输出示例:
SCHEMA_NAME  CREATED    ACCOUNT_STATUS
------------ --------- --------------
HR           2025-01-01 OPEN
SCOTT        2022-12-01 OPEN
SYS          2022-01-01 OPEN四、其他相关查询方式
-  查看数据库全局名称(包含域名) SELECT * FROM global_name; 
-  检查是否处于CDB环境 SELECT name, cdb FROM v$database; 若输出 CDB=YES则为多租户架构。 
-  *通过SQLPlus命令快速查看** SHOW PARAMETER db_name; -- 显示数据库名 SHOW PARAMETER instance_name; -- 显示实例名 
️ 注意事项
- 权限要求: 
  - 查询 v$database、v$instance需SELECT_CATALOG_ROLE权限
- 访问 dba_users需DBA角色
 
- 查询 
- 架构区别: 
  - 单租户(非CDB):只有一个数据库
- 多租户(CDB):一个CDB + 多个PDB
 
- 误操作风险: 
  - 对PDB的操作(如开启/关闭)需在CDB$ROOT下执行
- 修改核心参数(如db_name)需重启实例
 
| 需求场景 | 推荐命令 | 
|---|---|
| 查看数据库名称和实例 | SELECT name FROM v$database;+SELECT instance_name FROM v$instance; | 
| 查看CDB中的PDB列表 | SELECT name FROM v$pdbs; | 
| 查看所有用户(模式) | SELECT username FROM dba_users; | 
| 快速检查数据库信息(命令行) | SHOW PARAMETER db_name; | 
关键理解:Oracle中一个实例通常关联一个物理数据库(包含多个逻辑模式),而多租户架构通过PDB实现“一实例多数据库”,日常管理中,需明确区分物理数据库、PDB和用户模式的概念差异。
引用说明: 基于Oracle官方文档《Database Reference》中关于数据字典视图(V$DATABASE, V$PDBS)和用户权限管理的章节,结合Oracle 12c/19c多租户架构实践整理而成,具体权限要求以实际环境版本为准。
 
  
			