119-Oracle CDB 下修改和重置 SYS SYSTEM密码记录

小伙伴们有没有遇见等保需要强制定期修改密码的要求,按照业务要求,重新梳理按照策略修改老库的sys和system密码。现场环境:是从单实例的11g迁移到19C CDB模式下,由于业务非常重要,做修改前做技术准备和记录,同时测试如何sys密码忘记后重置密码操作。

按照官方手册,Oracle从 Oracle 12c 开始,多租户(CDB/PDB)架构逐渐成为企业级数据库部署的标准形态。在日常安全运维与合规审计中,修改管理员账号密码是常规操作,但在多租户架构下,带着多个疑问:CDB 根容器和 PDB 的 SYS 密码是独立的吗?修改密码会不会中断正在运行的业务?PDB 中的业务连接会不会受到波及?

一、核心概念:CDB 架构下的账号属性

要理清密码修改的逻辑,首先要明确多租户架构下两类用户的本质区别:

  • 公共用户(Common User):在整个 CDB 范围内有效,在 CDB$ROOT 和所有 PDB 中是同一个用户身份,共享同一份凭证。SYS、SYSTEM是 Oracle 预置的原生公共用户,也是权限最高的管理员账号。
  • 本地用户(Local User):仅存在于单个 PDB 中,账号、密码和权限都独立管理,对其他容器不可见。绝大多数业务系统使用的都是 PDB 本地业务账号。
    从密码存储机制来看:
  • SYS的密码同时存储在数据字典 和外部密码文件( orapw**)**中,远程 SYSDBA 身份登录依赖外部密码文件认证。
  • SYSTEM的密码仅存储在数据字典中,通过 SQL 语句即可完成全部修改。

二、修改密码对业务连接可能的影响

核心逻辑:Oracle 的密码验证仅在会话建立(登录)阶段执行,已认证通过的会话不会因密码修改而中断。

1. 对整体实例业务的影响

  • 已有连接完全不受影响:已经成功建立的业务会话,无论使用什么账号,都不会因为管理员密码修改而被强制断开,会持续保持连接直到会话主动退出、超时终止或被管理员手动杀掉。
  • 业务账号无感知:如果业务系统使用独立的业务 Schema 账号(而非 SYS/SYSTEM)连接数据库,修改管理员密码对这些业务的新、旧连接均没有任何影响。
  • 仅影响管理员账号的新登录:只有当业务系统直接使用 SYS 或 SYSTEM 作为连接账号时,密码修改后新发起的登录请求才会返回ORA-01017: 用户名/密码无效错误,需要同步更新业务配置中的密码后才可恢复。

2. 对 PDB 中业务的影响

PDB 中的业务连接遵循完全一致的逻辑,不会因为多租户架构产生额外影响:

  • 如果 PDB 业务使用本地业务账号:修改 SYS/SYSTEM 密码对其无任何影响。
  • 如果业务使用自定义公共业务用户:只要未修改该业务用户本身的密码,就不会产生影响。
  • 只有直接使用 SYS/SYSTEM 连接 PDB 的场景:新的登录请求需要使用新密码,而已建立的 PDB 会话不会被强制断开。

三、CDB 与 PDB:SYS/SYSTEM 密码是否统一

核心结论:是同一个。SYS、SYSTEM 的密码全局统一,在 CDB$ROOT 修改后所有 PDB 自动同步生效。

  • 密码全局唯一SYS、SYSTEM 作为 CDB 级公共用户,在整个 CDB 环境中只有一份密码配置。它们不是每个容器各有一个独立账号,而是同一个账号在所有容器中可见。因此不存在 "CDB 的 SYS 密码" 和 "某个 PDB 的 SYS 密码" 之分。
  • 修改入口唯一 公共用户的管理权限归属 CDB 根容器,只能在 CDB$ROOT 中修改密码,无法在单个 PDB 中单独修改 SYS/SYSTEM 的密码。如果在 PDB 中尝试执行ALTER USER SYS语句,要么直接报错,要么不会产生实际效果。
  • 自动同步机制在 CDB$ROOT 中执行密码修改后,Oracle 会自动将新密码同步到该 CDB 下的所有 PDB,无需逐个容器操作,也不需要重启数据库或 PDB。
  • 插拔 PDB 的特殊规则当将外部非 CDB 数据库作为 PDB 插入 CDB 时,原有 CDB 公共用户的密码会覆盖新插入 PDB 中同名的管理员账号,最终以 CDB 根容器的配置为准。

四、CDB 模式下修改 SYS/SYSTEM 密码的标准操作

方法一:ALTER USER 命令(日常运维推荐)

适用于数据库正常运行、可正常以 SYSDBA 身份登录的场景,是最常用的标准方式。

前提条件
  • 1、必须在CDB$ROOT容器中执行
  • 2、初始化参数REMOTE_LOGIN_PASSWORDFILE = EXCLUSIVE(安装默认值),此模式下ALTER USER会同时更新数据字典和外部密码文件
操作步骤
  • 1、登录并确认当前容器,执行密码修改
sql 复制代码
-- 本地操作系统认证登录(无需密码)
sqlplus / as sysdba

-- 确认当前容器,必须返回 CDB$ROOT
SHOW CON_NAME;

-- 若当前在PDB中,切换到根容器
ALTER SESSION SET CONTAINER = CDB$ROOT;

-- 修改SYS密码
ALTER USER SYS IDENTIFIED BY "OraclePACS";

-- 修改SYSTEM密码
ALTER USER SYSTEM IDENTIFIED BY "OraclePACS";

--验证生效
-- 用新密码测试登录
CONNECT SYS/新密码 AS SYSDBA;
SHOW USER;

密码包含特殊字符时必须用双引号包裹;

建议符合 Oracle 密码复杂度策略,包含大小写字母、数字和特殊字符。

方法二:orapwd 工具(应急场景)

当忘记 SYS 密码无法登录数据库、密码文件损坏或丢失,或REMOTE_LOGIN_PASSWORDFILE设为SHARED模式时,使用orapwd工具重建外部密码文件。

操作步骤
  • 1、关闭数据库实例
sql 复制代码
sqlplus / as sysdba
SHUTDOWN IMMEDIATE;
EXIT;
  • 2、重建密码文件
  • Linux/Unix 默认路径:$ORACLE_HOME/dbs/orapw
  • Windows 默认路径:%ORACLE_HOME%\database\PWD.ora

orapw 语法

orapwd FILE=<密码文件完整路径> PASSWORD=<OraclePACS> FORCE=Y FORMAT=12.2

--完整路径为上面的真实路径,密码OraclePACS为此处现场密码,请根据真实环境使用

--FORCE=Y:强制覆盖已存在的旧密码文件

--FORMAT=12.2:使用 12c 及以上版本格式,支持密码概要文件策略

举例(Linux环境,CDB实例SID为cdbpacs)

orapwd FILE=$ORACLE_HOME/dbs/orapwpacscdb PASSWORD=OraclePACS FORCE=Y FORMAT=12.2

  • 3、重启数据库并同步数据字典
sql 复制代码
sqlplus / as sysdba
STARTUP;

-- 执行ALTER USER确保数据字典与密码文件密码完全一致
ALTER USER SYS IDENTIFIED BY "OraclePACS";

五、运维最佳实践与常见误区

常见误区

  1. 误区:每个 PDB 有独立的 SYS 密码,需要逐个修改公共用户全局唯一,只需在 CDB$ROOT 修改一次,所有 PDB 自动同步。
  2. 误区:修改密码会中断业务连接密码仅在登录时校验,已建立的会话不会被中断;只要业务不直接使用 SYS/SYSTEM 账号,就完全无感知。
  3. 误区:在 PDB 中执行 ALTER USER 修改 SYS 密码PDB 没有管理公共用户的权限,操作要么报错要么不生效,必须切换到 CDB$ROOT 执行。

最佳实践

  1. 权限隔离:业务系统严禁使用 SYS、SYSTEM 账号连接数据库,使用独立业务账号并分配最小权限,从根源上避免密码修改影响业务。
  2. 操作规范:统一在 CDB$ROOT 中执行管理员密码修改,操作前确认当前容器。
  3. 窗口期选择:虽然不影响已有连接,但仍建议在业务低峰期执行,预留配置同步验证时间。
  4. RAC 环境注意:使用ALTER USER修改时只需在一个节点执行,会自动同步;若重建密码文件,需将新文件复制到所有节点的对应目录。
  5. 合规管理:启用密码概要文件(Password Profile),强制复杂度、有效期和历史密码复用规则,定期轮换管理员密码。

TIPS:

  1. CDB 模式下 SYS、SYSTEM 是全局公共用户,密码全 CDB 统一,仅能在 CDB$ROOT 修改,自动同步所有 PDB。
  2. 修改密码仅影响使用该账号的新登录请求,已建立的业务会话不受任何影响。
  3. 只要业务不直接使用 SYS/SYSTEM 账号,无论是 CDB 还是 PDB 中的业务,都不会受到密码修改的影响。
  4. 日常运维推荐使用ALTER USER命令,忘记密码等应急场景使用orapwd工具重建密码文件。
相关推荐
橙光成长1 小时前
Context Mode 深度解析:用沙盒、SQLite 与钩子路由,把 AI 编码 Agent 的上下文消耗削减 98%
数据库·人工智能·sqlite
大大大大晴天️1 小时前
每天认识一个组件:Elasticsearch
大数据·elasticsearch
yyk333241 小时前
Spark介绍
大数据·分布式·spark
科创致远1 小时前
第一代 e+SOP 盒子配显示器实测:物美价廉的产线可视化方案
大数据·网络·人工智能·信息可视化·计算机外设·制造·精益工程
ruxshui1 小时前
Hadoop 生产运维实战手册
大数据·运维·hadoop
数据库小学妹1 小时前
MySQL时区问题排查:TIMESTAMP和DATETIME的区别与跨时区对账踩坑
数据库·mysql·datetime·时区·timestamp·跨时区对账
QYR-分析1 小时前
汽车可开启全景天窗:座舱舒适核心配置,智能化升级打开产品溢价空间
大数据·人工智能·汽车
Raas1001 小时前
2026年AI网关推荐?MAI Gateway(魔芋企业级AI网关)等主流方案横评
大数据·人工智能·ai·gateway·ai网关·mai gateway
创世虚拟世界2 小时前
把 3D 虚拟世界拉到本地:vibe coding 的手感,是从看见自己那一行改动开始的
javascript·数据库·人工智能·3d·gitee·虚拟现实