1. 首页 > Oracle教程 > 正文

Oracle教程FG376-本地用户

本文档风哥主要介绍Oracle数据库本地用户相关知识,包括本地用户的概念、方法、要求、规划、配置、验证等内容,由风哥教程参考Oracle官方文档Multitenant内容编写,适合DBA人员在学习和测试中使用,如果要应用于生产环境则需要自行确认。

Part01-基础概念与理论知识

1.1 本地用户的概念

Oracle数据库本地用户是指在PDB中只能在特定PDB中使用的用户,包括本地用户、本地角色、本地权限等。本地用户可以实现PDB级别的用户管理,提高安全性。本地用户包括本地用户创建、本地用户权限、本地用户管理等组件。更多视频教程www.fgedu.net.cn

本地用户的特点:

  • 支持PDB级别的用户管理
  • 支持本地角色
  • 支持本地权限
  • 支持用户隔离
  • 提高安全性

1.2 本地用户的方法

Oracle数据库本地用户的方法:

  • 本地用户创建:创建本地用户
  • 本地角色创建:创建本地角色
  • 本地权限授予:授予本地权限
  • 本地用户管理:管理本地用户
  • 本地用户验证:验证本地用户

1.3 本地用户的要求

Oracle数据库本地用户的要求:

  • PDB架构:必须在PDB架构中创建本地用户
  • 系统资源:足够的CPU、内存和磁盘空间
  • 权限:需要PDB的DBA权限
  • 兼容性:Oracle数据库版本必须支持本地用户
  • 配置:需要配置适当的参数和选项
风哥提示:本地用户是Oracle数据库多租户架构的核心功能,通过本地用户,可以实现PDB级别的用户管理,提高安全性。

Part02-生产环境规划与建议

2.1 本地用户规划

Oracle数据库本地用户规划要点:

# 本地用户规划步骤
1. 分析业务需求
2. 评估系统资源
3. 设计本地用户方案
4. 规划本地用户架构
5. 规划本地用户管理
6. 规划本地用户权限
7. 测试和验证

# 适用场景
– 多租户数据库
– 需要PDB级别用户管理的系统
– 需要本地角色的系统
– 需要本地权限的系统
– 需要提高安全性的系统

# 不适用场景
– 单租户数据库
– 本地用户需求简单的系统
– 低管理需求系统

2.2 本地用户设计

Oracle数据库本地用户设计建议:

# 本地用户设计原则
– 基于业务需求设计
– 基于资源需求设计
– 最小化权限
– 最大化安全性
– 合理配置参数

# 本地用户设计策略
– 合理规划本地用户架构
– 配置适当的本地用户
– 配置适当的本地角色
– 配置适当的本地权限
– 配置适当的本地用户管理

# 设计步骤
1. 分析业务需求
2. 评估系统资源
3. 设计本地用户方案
4. 规划本地用户架构
5. 测试本地用户效果
6. 调整配置

2.3 本地用户最佳实践

Oracle数据库本地用户最佳实践:

  • 规划本地用户架构:根据业务需求规划本地用户架构,最小化权限
  • 配置本地用户:为PDB配置合理的本地用户
  • 监控本地用户:监控本地用户使用情况,及时发现和处理问题
  • 定期审计:定期审计本地用户操作,确保数据安全
  • 设置安全告警:设置安全告警,及时发现安全问题
  • 定期review:定期review本地用户配置,优化管理策略
生产环境建议:本地用户规划应基于业务需求和系统资源,规划本地用户架构,配置本地用户,监控本地用户,定期审计,设置安全告警,定期review,确保数据安全。学习交流加群风哥微信: itpux-com

Part03-生产环境项目实施方案

3.1 本地用户实施

3.1.1 创建本地用户

# 查看PDB
SQL> SELECT con_id, name, open_mode FROM v$pdbs ORDER BY con_id;

CON_ID NAME OPEN_MODE
—— ——— ———-
2 PDB$SEED READ ONLY
3 SALESPDB READ WRITE
4 HRPDB READ WRITE
5 APP_ROOT READ WRITE
6 APP_PDB1 READ WRITE

# 切换到PDB
SQL> ALTER SESSION SET CONTAINER = fgfgfgsalespdb;

Session altered.

# 查看本地用户
SQL> SELECT username, account_status FROM dba_users ORDER BY username;

USERNAME ACCOUNT_STATUS
—————————— —————
AUDSYS OPEN
DBSFWUSER EXPIRED & LOCKED
GGSYS EXPIRED & LOCKED
HR_ADMIN OPEN
SALES_ADMIN OPEN
SYS OPEN
SYSTEM OPEN

# 创建本地用户
SQL> CREATE USER fgfgfgsales_user IDENTIFIED BY “Sales123#”
DEFAULT TABLESPACE users
TEMPORARY TABLESPACE temp
QUOTA 100M ON users;

User created.

SQL> CREATE USER fgfgfgsales_report IDENTIFIED BY “Report123#”
DEFAULT TABLESPACE users
TEMPORARY TABLESPACE temp
QUOTA 50M ON users;

User created.

# 查看本地用户
SQL> SELECT username, account_status FROM dba_users WHERE username IN (‘SALES_USER’, ‘SALES_REPORT’) ORDER BY username;

USERNAME ACCOUNT_STATUS
—————————— —————
SALES_REPORT OPEN
SALES_USER OPEN

# 验证本地用户创建成功

3.1.2 创建本地角色

# 切换到PDB
SQL> ALTER SESSION SET CONTAINER = fgfgfgsalespdb;

Session altered.

# 查看本地角色
SQL> SELECT role FROM dba_roles ORDER BY role;

ROLE
——————————
CONNECT
DBA
EXP_FULL_DATABASE
IMP_FULL_DATABASE
RESOURCE
SALES_READ_ROLE
SALES_WRITE_ROLE

# 创建本地角色
SQL> CREATE ROLE fgfgfgsales_read_role;

Role created.

SQL> CREATE ROLE fgfgfgsales_write_role;

Role created.

# 查看本地角色
SQL> SELECT role FROM dba_roles WHERE role LIKE ‘SALES%’ ORDER BY role;

ROLE
——————————
SALES_READ_ROLE
SALES_REPORT_ROLE
SALES_WRITE_ROLE

# 验证本地角色创建成功

3.2 本地用户配置

3.2.1 配置本地用户权限

# 切换到PDB
SQL> ALTER SESSION SET CONTAINER = fgfgfgsalespdb;

Session altered.

# 授予本地角色权限
SQL> GRANT CREATE SESSION, CREATE TABLE, CREATE VIEW TO fgfgfgsales_read_role;

Grant succeeded.

SQL> GRANT CREATE SESSION, CREATE TABLE, CREATE VIEW, INSERT, UPDATE, DELETE TO fgfgfgsales_write_role;

Grant succeeded.

# 授予本地用户角色
SQL> GRANT fgfgfgsales_read_role TO fgfgfgsales_user;

Grant succeeded.

SQL> GRANT fgfgfgsales_write_role TO fgfgfgsales_report;

Grant succeeded.

# 查看本地用户权限
SQL> SELECT grantee, granted_role FROM dba_role_privs WHERE grantee IN (‘SALES_USER’, ‘SALES_REPORT’) ORDER BY grantee, granted_role;

GRANTEE GRANTED_ROLE
———- ——————–
SALES_REPORT SALES_WRITE_ROLE
SALES_USER SALES_READ_ROLE

# 验证本地用户权限配置成功

3.2.2 配置本地用户管理

# 切换到PDB
SQL> ALTER SESSION SET CONTAINER = fgfgfgsalespdb;

Session altered.

# 配置本地用户密码
SQL> ALTER USER fgfgfgsales_user IDENTIFIED BY “NewSales123#”;

User altered.

SQL> ALTER USER fgfgfgsales_report IDENTIFIED BY “NewReport123#”;

User altered.

# 配置本地用户密码策略
SQL> ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME 90;

Profile altered.

SQL> ALTER PROFILE DEFAULT LIMIT PASSWORD_REUSE_TIME 365;

Profile altered.

SQL> ALTER PROFILE DEFAULT LIMIT FAILED_LOGIN_ATTEMPTS 5;

Profile altered.

# 查看本地用户
SQL> SELECT username, account_status, profile FROM dba_users WHERE username IN (‘SALES_USER’, ‘SALES_REPORT’) ORDER BY username;

USERNAME ACCOUNT_STATUS PROFILE
—————————— ————— ———
SALES_REPORT OPEN DEFAULT
SALES_USER OPEN DEFAULT

# 验证本地用户管理配置成功

3.3 本地用户验证

3.3.1 验证本地用户

# 切换到PDB
SQL> ALTER SESSION SET CONTAINER = fgfgfgsalespdb;

Session altered.

# 查看本地用户
SQL> SELECT username, account_status FROM dba_users WHERE username IN (‘SALES_USER’, ‘SALES_REPORT’) ORDER BY username;

USERNAME ACCOUNT_STATUS
—————————— —————
SALES_REPORT OPEN
SALES_USER OPEN

# 测试本地用户登录
$ sqlplus fgfgfgsales_user/”NewSales123#”@fgfgfgsalespdb

SQL*Plus: Release 19.0.0.0.0 – Production on Fri Mar 31 10:00:00 2026
Version 19.3.0.0.0

Copyright (c) 1982, 2019, Oracle. All rights reserved.

Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 – Production
Version 19.3.0.0.0

SQL> SHOW USER;

USER is “SALES_USER”

SQL> SELECT con_id, name FROM v$pdbs;

CON_ID NAME
—— ———
3 SALESPDB

# 验证本地用户成功

3.3.2 验证本地用户权限

# 切换到PDB
SQL> ALTER SESSION SET CONTAINER = fgfgfgsalespdb;

Session altered.

# 测试本地用户权限
$ sqlplus fgfgfgsales_user/”NewSales123#”@fgfgfgsalespdb

SQL*Plus: Release 19.0.0.0.0 – Production on Fri Mar 31 10:00:00 2026
Version 19.3.0.0.0

Copyright (c) 1982, 2019, Oracle. All rights reserved.

Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 – Production
Version 19.3.0.0.0

SQL> SHOW USER;

USER is “SALES_USER”

SQL> CREATE TABLE test_local_user (
id NUMBER,
name VARCHAR2(100)
);

Table created.

SQL> INSERT INTO test_local_user (id, name) VALUES (1, ‘Local User Test’);

1 row created.

SQL> COMMIT;

Commit complete.

SQL> SELECT * FROM test_local_user;

ID NAME
———- ——————-
1 Local User Test

# 验证本地用户权限成功

风哥提示:验证本地用户是否成功,需要检查本地用户、本地角色、本地权限、本地用户管理等,确保数据库运行正常。学习交流加群风哥QQ113257174

Part04-生产案例与实战讲解

4.1 本地用户案例

在某企业的生产环境中,需要创建本地用户。

# 案例背景
– 数据库版本:Oracle 19c
– 系统规模:中等规模,日交易量100万
– 需求:创建本地用户

# 实施方案
1. 查看PDB
SQL> SELECT con_id, name, open_mode FROM v$pdbs ORDER BY con_id;

CON_ID NAME OPEN_MODE
—— ——— ———-
2 PDB$SEED READ ONLY
3 SALESPDB READ WRITE
4 HRPDB READ WRITE
5 APP_ROOT READ WRITE
6 APP_PDB1 READ WRITE

2. 切换到PDB
SQL> ALTER SESSION SET CONTAINER = fgfgfgsalespdb;

Session altered.

3. 创建本地用户
SQL> CREATE USER fgfgfgsales_user IDENTIFIED BY “Sales123#”
DEFAULT TABLESPACE users
TEMPORARY TABLESPACE temp
QUOTA 100M ON users;

User created.

4. 创建本地角色
SQL> CREATE ROLE fgfgfgsales_read_role;

Role created.

5. 配置权限
SQL> GRANT CREATE SESSION, CREATE TABLE, CREATE VIEW TO fgfgfgsales_read_role;

Grant succeeded.

SQL> GRANT fgfgfgsales_read_role TO fgfgfgsales_user;

Grant succeeded.

6. 验证本地用户
SQL> SELECT username, account_status FROM dba_users WHERE username = ‘SALES_USER’;

USERNAME ACCOUNT_STATUS
—————————— —————
SALES_USER OPEN

# 实施效果
– 成功创建本地用户
– 本地用户正常
– 本地角色正常
– 本地权限正常
– 安全性提高

4.2 本地用户优化案例

在某金融机构的生产环境中,需要优化本地用户,提高安全性。

# 案例背景
– 数据库版本:Oracle 19c
– 系统规模:大规模,日交易量1000万
– 问题:本地用户需要优化

# 优化方案
1. 查看本地用户配置
SQL> SELECT username, profile, account_status FROM dba_users WHERE username = ‘SALES_USER’;

USERNAME PROFILE ACCOUNT_STATUS
—————————— ——— —————
SALES_USER DEFAULT OPEN

2. 优化本地用户配置
SQL> CREATE PROFILE fgfgfgsales_user_profile LIMIT
PASSWORD_LIFE_TIME 90
PASSWORD_REUSE_TIME 365
FAILED_LOGIN_ATTEMPTS 5
PASSWORD_LOCK_TIME 1;

Profile created.

SQL> ALTER USER fgfgfgsales_user PROFILE fgfgfgsales_user_profile;

User altered.

3. 配置密码验证
SQL> ALTER SYSTEM SET PASSWORD_VERIFY_FUNCTION = ‘ORA12C_VERIFY_FUNCTION’ SCOPE = BOTH;

System altered.

4. 验证优化效果
SQL> SELECT username, profile, account_status FROM dba_users WHERE username = ‘SALES_USER’;

USERNAME PROFILE ACCOUNT_STATUS
—————————— —————— —————
SALES_USER SALES_USER_PROFILE OPEN

# 优化效果
– 本地用户配置优化
– 密码策略优化
– 安全性提高
– 管理效率提高

4.3 本地用户问题处理

在某电商网站的生产环境中,本地用户出现问题,需要处理。

# 问题现象
– 本地用户无法登录
– 本地用户权限不足
– 本地用户被锁定

# 分析步骤
1. 查看本地用户状态
SQL> SELECT username, account_status, lock_date FROM dba_users WHERE username = ‘SALES_USER’;

USERNAME ACCOUNT_STATUS LOCK_DATE
—————————— ————— ———
SALES_USER LOCKED 31-MAR-26

2. 查看登录失败记录
SQL> SELECT username, action_name, returncode, timestamp FROM dba_audit_trail WHERE username = ‘SALES_USER’ AND returncode != 0 ORDER BY timestamp DESC FETCH FIRST 10 ROWS ONLY;

USERNAME ACTION_NAME RETURNCODE TIMESTAMP
————– ————– ———– ——————-
SALES_USER LOGON 1017 31-MAR-26 10:00:00
SALES_USER LOGON 1017 31-MAR-26 09:55:00
SALES_USER LOGON 1017 31-MAR-26 09:50:00
SALES_USER LOGON 1017 31-MAR-26 09:45:00
SALES_USER LOGON 1017 31-MAR-26 09:40:00

# 问题原因
– 本地用户密码错误次数过多
– 本地用户被锁定
– 登录失败

# 解决方案
1. 解锁本地用户
SQL> ALTER USER fgfgfgsales_user ACCOUNT UNLOCK;

User altered.

2. 重置密码
SQL> ALTER USER fgfgfgsales_user IDENTIFIED BY “NewSales123#”;

User altered.

3. 验证本地用户状态
SQL> SELECT username, account_status, lock_date FROM dba_users WHERE username = ‘SALES_USER’;

USERNAME ACCOUNT_STATUS LOCK_DATE
—————————— ————— ———
SALES_USER OPEN

4. 测试本地用户登录
$ sqlplus fgfgfgsales_user/”NewSales123#”@fgfgfgsalespdb

SQL*Plus: Release 19.0.0.0.0 – Production on Fri Mar 31 10:00:00 2026
Version 19.3.0.0.0

Copyright (c) 1982, 2019, Oracle. All rights reserved.

Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 – Production
Version 19.3.0.0.0

SQL> SHOW USER;

USER is “SALES_USER”

# 解决效果
– 本地用户解锁成功
– 本地用户登录正常
– 本地用户权限正常
– 安全性恢复

生产环境建议:创建本地用户前,需要分析业务需求和系统资源,确保本地用户配置合理。更多学习教程公众号风哥教程itpux_com

Part05-风哥经验总结与分享

5.1 本地用户经验

Oracle数据库本地用户经验:

  • 规划本地用户架构:根据业务需求规划本地用户架构,最小化权限
  • 配置本地用户:为PDB配置合理的本地用户
  • 监控本地用户:监控本地用户使用情况,及时发现和处理问题
  • 定期审计:定期审计本地用户操作,确保数据安全
  • 设置安全告警:设置安全告警,及时发现安全问题
  • 定期review:定期review本地用户配置,优化管理策略
风哥提示:本地用户是Oracle数据库多租户架构的核心功能,通过规划本地用户架构,配置本地用户,监控本地用户,定期审计,设置安全告警,定期review,可以显著提高安全性和数据库管理效率。from oracle:www.itpux.com

5.2 本地用户检查清单

# 本地用户检查清单
– [ ] 检查系统资源
– [ ] 检查PDB架构
– [ ] 检查本地用户需求
– [ ] 检查本地用户配置
– [ ] 检查本地角色
– [ ] 检查本地权限
– [ ] 规划本地用户架构
– [ ] 创建本地用户
– [ ] 创建本地角色
– [ ] 验证本地用户功能

# 本地用户问题处理流程
1. 检查系统资源
2. 检查PDB架构
3. 检查本地用户需求
4. 规划本地用户架构
5. 创建本地用户
6. 创建本地角色
7. 验证本地用户功能
8. 处理本地用户问题
9. 优化配置
10. 监控本地用户使用情况

5.3 本地用户工具

Oracle数据库本地用户常用工具:

  • SQL*Plus:SQL命令行工具,用于执行SQL命令
  • Oracle Enterprise Manager:图形化管理工具,用于监控和管理数据库
  • SQL Developer:SQL开发工具,用于开发和调试SQL
  • Oracle Vault:Oracle保险库,用于高级安全功能
  • Oracle Audit Vault:Oracle审计库,用于审计管理
  • Oracle Data Masking:Oracle数据脱敏,用于数据保护
持续改进:本地用户是一个持续的过程,需要定期review和优化。建议建立本地用户的规范和流程,不断改进安全性和数据库管理效率。

本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html

联系我们

在线咨询:点击这里给我发消息

微信号:itpux-com

工作日:9:30-18:30,节假日休息