上一篇
Oracle DBA必备,一键速查所有数据库实例的秘籍
- 数据库
- 2025-05-29
- 4478
在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多租户架构实践整理而成,具体权限要求以实际环境版本为准。