使用 V$PARAMETER 视图 (最常用)
这是在数据库已启动时查看当前生效参数值的标准方法,它显示的是内存中的参数值。

(图片来源网络,侵删)
查看所有参数
SELECT name, value, description FROM v$parameter ORDER BY name;
查看特定参数
如果你想查找特定的参数,可以使用 LIKE 操作符或直接指定名称。
-- 查找所有与 'db_block' 相关的参数 SELECT name, value FROM v$parameter WHERE name LIKE 'db_block%'; -- 查找 'db_block_size' 参数 SELECT name, value FROM v$parameter WHERE name = 'db_block_size';
区分默认值和修改过的值
V$PARAMETER 视图中的 ISDEFAULT 列可以告诉你该参数是否使用了 Oracle 的默认值。
SELECT name, value, isdefault FROM v$parameter WHERE isdefault = 'FALSE';
这个查询非常有用,因为它能快速显示出所有被手动修改过的参数,帮助你进行配置审计。
使用 V$SYSTEM_PARAMETER 视图
这个视图与 V$PARAMETER 类似,但它只显示那些属于 SCOPE=SPFILE 或 SCOPE=BOTH 的系统级参数,它通常用于查看那些可以在运行时修改并持久化到 SPFILE 的参数。
SELECT name, value, isdefault, isses_modifiable, issys_modifiable FROM v$system_parameter ORDER BY name;
isses_modifiable 和 issys_modifiable 列可以告诉你该参数是否可以在会话或系统级别动态修改。
使用 SHOW 命令 (SQL*Plus)
如果你正在使用 SQL*Plus 工具,SHOW 命令是最快捷的查看方式之一。
查看所有参数
SHOW ALL
查看特定参数
-- 查看 db_block_size SHOW PARAMETERS db_block_size -- 查看所有以 'control_files' 开头的参数 SHOW PARAMETERS control_files
使用 SPFILE 或 PFILE 文件 (查看源配置文件)
这些视图直接从服务器参数文件或初始化参数文件中读取参数值,反映了数据库启动时使用的配置,而不是内存中的当前值。
从 SPFILE 查看参数
如果你的数据库使用的是 SPFILE (Server Parameter File),这是查看所有参数(包括那些未在内存中生效的)的最佳方式。
-- 查看所有参数及其来源文件
SELECT name, value, isspecified, value_from
FROM v$parameter
WHERE isspecified = 'TRUE'
ORDER BY name;
-- 或者,更直接地查询 SPFILE 的内容(需要特定权限)
-- 这个查询会解析 SPFILE 并显示所有参数
CREATE TABLE temp_params AS
SELECT * FROM TABLE(dbms_utility.get_parameter_value('你的SPFILE路径, /u01/app/oracle/product/19c/dbhome_1/dbs/spfileorcl.ora'));
-- 查询创建的临时表
SELECT * FROM temp_params;
注意:直接解析 SPFILE 的方法比较复杂,通常使用 V$PARAMETER 视图并结合 isspecified 列就足够了。
从 PFILE 查看参数
如果你的数据库使用的是 PFILE (Plain Text Parameter File),你可以直接用操作系统命令查看。
- 在 Linux/Unix 上:
cat /u01/app/oracle/product/19c/dbhome_1/dbs/init<ORACLE_SID>.ora
- 在 Windows 上:
type C:\app\oracle\product\19c\dbhome_1\dbs\init<ORACLE_SID>.ora
使用 ALTER SYSTEM 命令查看动态修改的参数
当你使用 ALTER SYSTEM SET ... 命令修改参数后,可以通过以下视图查看修改历史和当前状态。
-- 查看所有通过 ALTER SYSTEM 命令修改过的参数及其当前值 SELECT name, value FROM v$parameter WHERE isspecified = 'TRUE';
总结与对比
| 方法 | 适用场景 | 优点 | 缺点 |
|---|---|---|---|
V$PARAMETER |
数据库已启动,查看当前内存中的参数值 | 标准视图,信息全面,包含 ISDEFAULT 等关键字段 |
无法直接显示 SPFILE 中存在但未生效的参数 |
V$SYSTEM_PARAMETER |
数据库已启动,查看系统级可修改参数 | 区分会话和系统级修改能力 | 范围比 V$PARAMETER 小 |
SHOW 命令 |
在 SQL*Plus 中快速查询 | 简单、快捷,适合交互式操作 | 仅限 SQL*Plus 环境 |
SPFILE / PFILE |
查看源配置文件中的参数值 | 最权威,反映启动配置,不受运行时修改影响 | 需要文件访问权限或使用特定 SQL 函数 |
ALTER SYSTEM |
查看动态修改过的参数 | 快速定位被手动更改的配置 | 无法显示默认或静态参数 |
实用建议
- 日常查看:使用
SELECT name, value, isdefault FROM v$parameter WHERE isdefault = 'FALSE';,这是最常用、最高效的方式,能帮你快速了解所有非默认配置。 - 快速检查:在 SQL*Plus 中使用
SHOW PARAMETERS <parameter_name>。 - 源文件审计:当你需要比对启动配置和当前运行状态时,直接查看
SPFILE或PFILE文件。 - 参数修改历史:使用
isspecified = 'TRUE'来追踪哪些参数被动态修改过。
