本文档风哥主要介绍Oracle数据库PDB代理相关知识,包括PDB代理的概念、方法、要求、规划、配置、验证等内容,由风哥教程参考Oracle官方文档Multitenant内容编写,适合DBA人员在学习和测试中使用,如果要应用于生产环境则需要自行确认。
Part01-基础概念与理论知识
1.1 PDB代理的概念
Oracle数据库PDB代理是指在多租户容器数据库(CDB)中对PDB进行代理连接管理,包括PDB代理、代理用户、代理连接等。PDB代理可以实现PDB级别的连接代理,提高系统安全性和管理效率。PDB代理包括PDB代理、代理用户、代理连接、代理认证、代理监控等组件。更多视频教程www.fgedu.net.cn
- 支持PDB级别的连接代理
- 支持代理用户
- 支持代理连接
- 支持代理认证
- 提高系统安全性和管理效率
1.2 PDB代理的方法
Oracle数据库PDB代理的方法:
- PDB代理:配置PDB代理
- 代理用户:创建代理用户
- 代理连接:配置代理连接
- 代理认证:配置代理认证
- 代理监控:监控代理连接
1.3 PDB代理的要求
Oracle数据库PDB代理的要求:
- PDB架构:必须在PDB架构中配置代理
- 系统资源:足够的CPU、内存和磁盘空间
- 权限:需要PDB的SYSDBA权限
- 兼容性:Oracle数据库版本必须支持PDB代理
- 配置:需要配置适当的参数和选项
Part02-生产环境规划与建议
2.1 PDB代理规划
Oracle数据库PDB代理规划要点:
1. 分析业务需求
2. 评估系统资源
3. 设计PDB代理方案
4. 规划PDB代理架构
5. 规划代理用户策略
6. 规划代理连接策略
7. 测试和验证
# 适用场景
– 多租户数据库
– 需要PDB级别代理的系统
– 需要连接代理的系统
– 需要提高安全性的系统
– 需要提高管理效率的系统
# 不适用场景
– 单租户数据库
– PDB代理需求简单的系统
– 低管理需求系统
2.2 PDB代理设计
Oracle数据库PDB代理设计建议:
– 基于业务需求设计
– 基于资源需求设计
– 最小化代理开销
– 最大化系统安全性
– 合理配置参数
# PDB代理设计策略
– 合理规划PDB代理架构
– 配置适当的代理用户
– 配置适当的代理连接
– 配置适当的代理认证
– 配置适当的代理监控
# 设计步骤
1. 分析业务需求
2. 评估系统资源
3. 设计PDB代理方案
4. 规划PDB代理架构
5. 测试PDB代理效果
6. 调整配置
2.3 PDB代理最佳实践
Oracle数据库PDB代理最佳实践:
- 规划PDB代理架构:根据业务需求规划PDB代理架构,最小化代理开销
- 配置代理用户:为PDB配置合理的代理用户
- 监控代理连接:监控PDB代理连接,及时发现和处理问题
- 定期调优:定期调优PDB代理,确保系统性能
- 设置代理告警:设置代理告警,及时发现代理问题
- 定期review:定期review代理配置,优化管理策略
Part03-生产环境项目实施方案
3.1 PDB代理实施
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.
# 查看PDB用户
SQL> SELECT username, account_status, created
FROM dba_users
WHERE username NOT LIKE ‘SYS%’
AND username NOT LIKE ‘DBS%’
ORDER BY username;
USERNAME ACCOUNT_STATUS CREATED
—————————— ————- ———
HR OPEN 01-JAN-26
SCOTT OPEN 01-JAN-26
SYSTEM OPEN 01-JAN-26
# 验证PDB查看成功
3.1.2 创建代理用户
SQL> ALTER SESSION SET CONTAINER = cdb$root;
Session altered.
# 创建代理用户
SQL> CREATE USER proxy_user IDENTIFIED BY proxy_password;
User created.
# 授予代理用户权限
SQL> GRANT CREATE SESSION TO proxy_user;
Grant succeeded.
# 授予代理用户PDB访问权限
SQL> ALTER USER proxy_user GRANT CONNECT THROUGH fgfgfgsales_admin;
User altered.
# 验证代理用户创建成功
3.2 PDB代理配置
3.2.1 配置代理连接
SQL> ALTER SESSION SET CONTAINER = fgfgfgsalespdb;
Session altered.
# 创建被代理用户
SQL> CREATE USER fgfgfgsales_admin IDENTIFIED BY fgfgfgsales_password;
User created.
# 授予被代理用户权限
SQL> GRANT CONNECT, RESOURCE TO fgfgfgsales_admin;
Grant succeeded.
SQL> GRANT CREATE TABLE, CREATE VIEW TO fgfgfgsales_admin;
Grant succeeded.
# 授予代理用户权限
SQL> ALTER USER fgfgfgsales_admin GRANT CONNECT THROUGH proxy_user;
User altered.
# 验证代理连接配置成功
3.2.2 配置代理认证
SQL> ALTER USER fgfgfgsales_admin GRANT CONNECT THROUGH proxy_user
AUTHENTICATED USING PASSWORD;
User altered.
# 查看代理用户配置
SQL> SELECT proxy, client, authentication_type
FROM dba_proxies
WHERE proxy = ‘PROXY_USER’;
PROXY CLIENT AUTHENTICATION_TYPE
———- ———— ——————–
PROXY_USER SALES_ADMIN PASSWORD
# 验证代理认证配置成功
3.3 PDB代理验证
3.3.1 测试代理连接
$ sqlplus proxy_user[fgfgfgsales_admin]/proxy_password@orclcdb
SQL*Plus: Release 19.0.0.0.0 – Production on Mon Mar 31 10:00:00 2026
Version 19.24.0.0.0
Copyright (c) 1982, 2024, Oracle. All rights reserved.
Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 – Production
Version 19.24.0.0.0
# 查看当前用户
SQL> SHOW USER
USER is “SALES_ADMIN”
# 查看会话信息
SQL> SELECT username, proxy_user, con_id
FROM v$session
WHERE username = ‘SALES_ADMIN’;
USERNAME PROXY_USER CON_ID
———- ———- ——
SALES_ADMIN PROXY_USER 3
# 验证代理连接成功
3.3.2 测试代理权限
SQL> CREATE TABLE fgfgfgsales.test_table (
id NUMBER,
name VARCHAR2(100)
);
Table created.
SQL> INSERT INTO fgfgfgsales.test_table VALUES (1, ‘Test Data’);
1 row created.
SQL> COMMIT;
Commit complete.
SQL> SELECT * FROM fgfgfgsales.test_table;
ID NAME
———- ————-
1 Test Data
# 验证代理权限成功
Part04-生产案例与实战讲解
4.1 PDB代理案例
在某企业的生产环境中,需要配置PDB代理。
– 数据库版本:Oracle 19c
– 系统规模:中等规模,日交易量100万
– 需求:配置PDB代理
# 实施方案
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. 创建代理用户
SQL> ALTER SESSION SET CONTAINER = cdb$root;
Session altered.
SQL> CREATE USER proxy_user IDENTIFIED BY proxy_password;
User created.
SQL> GRANT CREATE SESSION TO proxy_user;
Grant succeeded.
3. 配置代理连接
SQL> ALTER SESSION SET CONTAINER = fgfgfgsalespdb;
Session altered.
SQL> CREATE USER fgfgfgsales_admin IDENTIFIED BY fgfgfgsales_password;
User created.
SQL> GRANT CONNECT, RESOURCE TO fgfgfgsales_admin;
Grant succeeded.
SQL> ALTER USER fgfgfgsales_admin GRANT CONNECT THROUGH proxy_user;
User altered.
4. 测试代理连接
$ sqlplus proxy_user[fgfgfgsales_admin]/proxy_password@orclcdb
SQL*Plus: Release 19.0.0.0.0 – Production on Mon Mar 31 10:00:00 2026
Version 19.24.0.0.0
Copyright (c) 1982, 2024, Oracle. All rights reserved.
Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 – Production
Version 19.24.0.0.0
SQL> SHOW USER
USER is “SALES_ADMIN”
# 实施效果
– 成功配置PDB代理
– 代理用户创建正常
– 代理连接配置正常
– 代理认证配置正常
– 系统安全性提高
– 管理效率提高
4.2 PDB代理优化案例
在某金融机构的生产环境中,需要优化PDB代理,提高代理效率。
– 数据库版本:Oracle 19c
– 系统规模:大规模,日交易量1000万
– 问题:PDB代理需要优化
# 优化方案
1. 查看代理配置
SQL> SELECT proxy, client, authentication_type
FROM dba_proxies
WHERE proxy = ‘PROXY_USER’;
PROXY CLIENT AUTHENTICATION_TYPE
———- ———— ——————–
PROXY_USER SALES_ADMIN PASSWORD
2. 优化代理配置
SQL> ALTER USER fgfgfgsales_admin GRANT CONNECT THROUGH proxy_user
AUTHENTICATED USING PASSWORD
WITH ROLES (CONNECT, RESOURCE);
User altered.
3. 配置代理监控
SQL> CREATE TABLE proxy_audit (
audit_id NUMBER,
proxy_user VARCHAR2(100),
client_user VARCHAR2(100),
login_time TIMESTAMP,
logout_time TIMESTAMP
);
Table created.
SQL> CREATE SEQUENCE proxy_audit_seq;
Sequence created.
4. 验证优化效果
SQL> SELECT proxy, client, authentication_type
FROM dba_proxies
WHERE proxy = ‘PROXY_USER’;
PROXY CLIENT AUTHENTICATION_TYPE
———- ———— ——————–
PROXY_USER SALES_ADMIN PASSWORD
# 优化效果
– 代理配置优化
– 代理权限优化
– 代理监控配置
– 代理效率提高
– 系统安全性提高
4.3 PDB代理问题处理
在某电商网站的生产环境中,PDB代理出现问题,需要处理。
– PDB代理连接失败
– 代理用户无法连接
– 代理权限异常
# 分析步骤
1. 测试代理连接
$ sqlplus proxy_user[fgfgfgsales_admin]/proxy_password@orclcdb
SQL*Plus: Release 19.0.0.0.0 – Production on Mon Mar 31 10:00:00 2026
Version 19.24.0.0.0
Copyright (c) 1982, 2024, Oracle. All rights reserved.
ERROR:
ORA-01045: user PROXY_USER lacks CREATE SESSION privilege; logon denied
2. 查看代理用户配置
SQL> SELECT username, account_status
FROM dba_users
WHERE username = ‘PROXY_USER’;
USERNAME ACCOUNT_STATUS
—————————— —————–
PROXY_USER OPEN
3. 查看代理权限
SQL> SELECT granted_role, admin_option
FROM dba_role_privs
WHERE grantee = ‘PROXY_USER’;
no rows selected
# 问题原因
– 代理用户缺少权限
– 代理连接配置错误
– 代理权限配置错误
# 解决方案
1. 授予代理用户权限
SQL> GRANT CREATE SESSION TO proxy_user;
Grant succeeded.
2. 重新配置代理连接
SQL> ALTER USER fgfgfgsales_admin GRANT CONNECT THROUGH proxy_user;
User altered.
3. 验证解决效果
$ sqlplus proxy_user[fgfgfgsales_admin]/proxy_password@orclcdb
SQL*Plus: Release 19.0.0.0.0 – Production on Mon Mar 31 10:00:00 2026
Version 19.24.0.0.0
Copyright (c) 1982, 2024, Oracle. All rights reserved.
Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 – Production
Version 19.24.0.0.0
SQL> SHOW USER
USER is “SALES_ADMIN”
# 解决效果
– 代理用户权限修复
– 代理连接配置修复
– 代理权限配置修复
– 代理连接正常
– 系统安全性恢复
Part05-风哥经验总结与分享
5.1 PDB代理经验
Oracle数据库PDB代理经验:
- 规划PDB代理架构:根据业务需求规划PDB代理架构,最小化代理开销
- 配置代理用户:为PDB配置合理的代理用户
- 监控代理连接:监控PDB代理连接,及时发现和处理问题
- 定期调优:定期调优PDB代理,确保系统性能
- 设置代理告警:设置代理告警,及时发现代理问题
- 定期review:定期review代理配置,优化管理策略
5.2 PDB代理检查清单
– [ ] 检查系统资源
– [ ] 检查PDB架构
– [ ] 检查代理需求
– [ ] 检查代理配置
– [ ] 检查代理用户
– [ ] 检查代理连接
– [ ] 规划PDB代理架构
– [ ] 配置代理用户
– [ ] 配置代理连接
– [ ] 验证代理功能
# PDB代理问题处理流程
1. 检查系统资源
2. 检查PDB架构
3. 检查代理需求
4. 规划PDB代理架构
5. 配置代理用户
6. 配置代理连接
7. 验证代理功能
8. 处理代理问题
9. 优化配置
10. 监控代理使用情况
5.3 PDB代理工具
Oracle数据库PDB代理常用工具:
- SQL*Plus:SQL命令行工具,用于执行SQL命令
- Oracle Enterprise Manager:图形化管理工具,用于监控和管理数据库
- SQL Developer:SQL开发工具,用于开发和调试SQL
- DBA_PROXIES:数据字典视图,用于查看代理配置
- V$SESSION:动态性能视图,用于监控会话
- AUDIT:审计功能,用于审计代理连接
本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html
