yashandb教程FG167-YashanDB资源限制配置
本文档风哥主要介绍YashanDB资源限制的相关知识,包括YashanDB资源限制的概念、类型、优势、规划策略、配置方法、参数调优、监控管理等内容,风哥教程参考YashanDB官方文档资源管理相关内容编写,适合DBA人员在学习和生产环境中使用。更多视频教程www.fgedu.net.cn
Part01-基础概念与理论知识
1.1 YashanDB资源限制概念
YashanDB资源限制是一种用于控制和管理数据库资源使用的机制,通过设置各种资源限制参数,限制用户、会话或系统级别的资源使用,以确保数据库系统的稳定运行和资源的合理分配。资源限制可以防止单个用户或会话过度消耗系统资源,影响其他用户的正常使用。
- 可以限制用户、会话或系统级别的资源使用
- 可以控制CPU、内存、I/O等资源的使用
- 可以防止资源滥用和系统过载
- 可以根据不同用户或应用的需求设置不同的限制
- 可以提高系统的稳定性和可靠性
1.2 YashanDB资源限制类型
YashanDB资源限制主要包括以下类型:
- 用户级资源限制:针对特定用户设置的资源限制
- 会话级资源限制:针对特定会话设置的资源限制
- 系统级资源限制:针对整个系统设置的资源限制
- 语句级资源限制:针对特定SQL语句设置的资源限制
- 并行度资源限制:针对并行操作设置的资源限制
1.3 YashanDB资源限制优势
YashanDB资源限制的主要优势包括:
- 资源合理分配:确保系统资源在不同用户和应用之间合理分配
- 系统稳定性:防止单个用户或会话过度消耗资源导致系统不稳定
- 性能优化:通过限制资源使用,提高系统整体性能
- 安全保障:防止恶意用户通过资源消耗攻击系统
- 成本控制:合理使用资源,降低硬件成本
Part02-生产环境规划与建议
2.1 YashanDB资源限制规划
YashanDB资源限制规划要点:
– 系统资源总量:评估CPU、内存、I/O等资源的总量
– 并发用户数:估算系统的并发用户数
– 应用类型:分析不同应用的资源需求
– 业务重要性:区分不同业务的重要程度
# 限制策略制定
– 基于用户类型:为不同类型的用户设置不同的限制
– 基于应用类型:为不同类型的应用设置不同的限制
– 基于时间:在不同时间段设置不同的限制
– 基于优先级:为高优先级业务设置更高的资源限额
# 限制参数选择
– CPU限制:设置CPU使用时间和百分比
– 内存限制:设置内存使用量和PGA大小
– I/O限制:设置I/O操作次数和带宽
– 会话限制:设置最大会话数和并发数
– 语句限制:设置SQL语句执行时间和资源使用
# 监控与调整
– 建立资源使用监控机制
– 定期分析资源使用情况
– 根据实际情况调整限制参数
– 建立资源限制调整流程
2.2 YashanDB资源限制策略
YashanDB资源限制策略建议:
– 管理员用户:较高的资源限制
– 应用用户:根据应用需求设置合理的限制
– 普通用户:较低的资源限制
– 临时用户:严格的资源限制
# 应用级资源限制策略
– 核心应用:较高的资源限制
– 一般应用:中等的资源限制
– 批处理应用:在特定时间段设置较高限制
– 报表应用:在非高峰期设置较高限制
# 时间级资源限制策略
– 高峰期:严格的资源限制
– 平峰期:中等的资源限制
– 低峰期:宽松的资源限制
– 维护期:特殊的资源限制
# 系统级资源限制策略
– 最大并发会话数:根据系统资源设置
– 最大并行度:根据CPU核心数设置
– 最大内存使用:根据内存总量设置
– 最大I/O带宽:根据存储系统性能设置
2.3 YashanDB资源限制性能考虑
YashanDB资源限制性能考虑:
- 限制过严:可能影响正常业务的运行
- 限制过松:可能导致资源滥用和系统不稳定
- 平衡考虑:需要在系统稳定性和业务需求之间找到平衡
- 动态调整:根据系统负载和业务需求动态调整限制
- 监控反馈:通过监控结果不断优化资源限制设置
Part03-生产环境项目实施方案
3.1 YashanDB资源限制配置
3.1.1 YashanDB用户资源限制配置
CREATE PROFILE fgedu_app_profile LIMIT
SESSIONS_PER_USER 10
CPU_PER_SESSION DEFAULT
CPU_PER_CALL 3000
CONNECT_TIME 60
IDLE_TIME 30
LOGICAL_READS_PER_SESSION DEFAULT
LOGICAL_READS_PER_CALL 1000
PRIVATE_SGA 1024K
FAILED_LOGIN_ATTEMPTS 5
PASSWORD_LIFE_TIME 90
PASSWORD_REUSE_TIME 180
PASSWORD_REUSE_MAX UNLIMITED
PASSWORD_VERIFY_FUNCTION DEFAULT
PASSWORD_LOCK_TIME 1
PASSWORD_GRACE_TIME 7;
— 为用户分配资源配置文件
ALTER USER fgedu PROFILE fgedu_app_profile;
— 查看用户资源配置
SELECT
username,
profile
FROM dba_users
WHERE username = ‘FGEDU’;
— 输出结果
USERNAME PROFILE
——– —————-
FGEDU FGEDU_APP_PROFILE
— 查看资源配置文件详情
SELECT
profile,
resource_name,
resource_type,
limit
FROM dba_profiles
WHERE profile = ‘FGEDU_APP_PROFILE’
ORDER BY resource_name;
3.1.2 YashanDB系统资源限制配置
SHOW PARAMETER resource;
— 输出结果(示例)
NAME TYPE VALUE
———————————— ———– ——————————
resource_limit boolean TRUE
resource_manager_plan string
— 修改系统资源限制参数
ALTER SYSTEM SET resource_limit = TRUE SCOPE=BOTH;
— 创建资源管理器计划
BEGIN
DBMS_RESOURCE_MANAGER.CREATE_PLAN(
plan => ‘FGEDU_RESOURCE_PLAN’,
comment => ‘资源管理计划’
);
— 创建资源消费者组
DBMS_RESOURCE_MANAGER.CREATE_CONSUMER_GROUP(
consumer_group => ‘OLTP_GROUP’,
comment => ‘OLTP应用组’
);
DBMS_RESOURCE_MANAGER.CREATE_CONSUMER_GROUP(
consumer_group => ‘REPORT_GROUP’,
comment => ‘报表应用组’
);
— 分配资源
DBMS_RESOURCE_MANAGER.CREATE_PLAN_DIRECTIVE(
plan => ‘FGEDU_RESOURCE_PLAN’,
group_or_subplan => ‘OLTP_GROUP’,
comment => ‘OLTP应用资源分配’,
cpu_p1 => 70,
cpu_p2 => 20,
cpu_p3 => 10
);
DBMS_RESOURCE_MANAGER.CREATE_PLAN_DIRECTIVE(
plan => ‘FGEDU_RESOURCE_PLAN’,
group_or_subplan => ‘REPORT_GROUP’,
comment => ‘报表应用资源分配’,
cpu_p1 => 30,
cpu_p2 => 50,
cpu_p3 => 20
);
— 启用资源管理计划
DBMS_RESOURCE_MANAGER.SET_CONSUME_GROUP_MAPPING(
attribute => ‘ORACLE_USER’,
value => ‘FGEDU’,
consumer_group => ‘OLTP_GROUP’
);
END;
/
— 启用资源管理计划
ALTER SYSTEM SET resource_manager_plan = ‘FGEDU_RESOURCE_PLAN’ SCOPE=BOTH;
3.2 YashanDB资源限制参数调优
3.2.1 YashanDB资源限制关键参数
## 1. resource_limit
– 说明:是否启用资源限制
– 取值:TRUE/FALSE
– 建议:生产环境设置为TRUE
## 2. resource_manager_plan
– 说明:资源管理器计划名称
– 取值:资源计划名称
– 建议:根据需要设置
## 3. processes
– 说明:最大进程数
– 取值:根据系统资源设置
– 建议:根据并发用户数和应用需求设置
## 4. sessions
– 说明:最大会话数
– 取值:通常为processes的1.1-1.5倍
– 建议:根据并发用户数设置
## 5. pga_aggregate_target
– 说明:PGA总目标大小
– 取值:根据内存大小设置,一般为内存的20-30%
– 建议:根据实际PGA使用情况调整
## 6. sga_target
– 说明:SGA目标大小
– 取值:根据内存大小设置,一般为内存的40-60%
– 建议:根据实际SGA使用情况调整
## 7. parallel_max_servers
– 说明:最大并行服务器数
– 取值:根据CPU核心数设置
– 建议:CPU核心数的2-4倍
## 8. open_cursors
– 说明:最大打开游标数
– 取值:根据应用需求设置
– 建议:1000-3000
3.2.2 YashanDB资源限制参数调优建议
ALTER SYSTEM SET processes = 300 SCOPE=SPFILE;
ALTER SYSTEM SET sessions = 330 SCOPE=SPFILE;
ALTER SYSTEM SET pga_aggregate_target = 2G SCOPE=BOTH;
ALTER SYSTEM SET sga_target = 8G SCOPE=BOTH;
ALTER SYSTEM SET parallel_max_servers = 32 SCOPE=BOTH;
ALTER SYSTEM SET open_cursors = 2000 SCOPE=BOTH;
— 重启数据库使参数生效
— SHUTDOWN IMMEDIATE;
— STARTUP;
— 查看参数设置
SHOW PARAMETER processes;
SHOW PARAMETER sessions;
SHOW PARAMETER pga_aggregate_target;
SHOW PARAMETER sga_target;
SHOW PARAMETER parallel_max_servers;
SHOW PARAMETER open_cursors;
— 输出结果(示例)
NAME TYPE VALUE
———————————— ———– ——————————
processes integer 300
NAME TYPE VALUE
———————————— ———– ——————————
sessions integer 330
NAME TYPE VALUE
———————————— ———– ——————————
pga_aggregate_target big integer 2G
NAME TYPE VALUE
———————————— ———– ——————————
sga_target big integer 8G
NAME TYPE VALUE
———————————— ———– ——————————
parallel_max_servers integer 32
NAME TYPE VALUE
———————————— ———– ——————————
open_cursors integer 2000
3.3 YashanDB资源限制监控
3.3.1 YashanDB资源限制监控查询
SELECT
username,
profile,
round(CPU_USED/100, 2) as cpu_used_seconds,
round(CPU_LIMIT/100, 2) as cpu_limit_seconds,
SESSIONS_PER_USER_CURRENT as current_sessions,
SESSIONS_PER_USER_LIMIT as max_sessions
FROM dba_rsrc_consumer_group_privs
JOIN dba_users USING (username)
WHERE username = ‘FGEDU’;
— 查看会话资源使用情况
SELECT
sid,
serial#,
username,
program,
status,
cpu_used,
logical_reads,
elapsed_time
FROM v$session
WHERE username = ‘FGEDU’
ORDER BY cpu_used DESC;
— 查看系统资源使用情况
SELECT
resource_name,
current_utilization,
max_utilization,
initial_allocation,
limit_value
FROM v$resource_limit
WHERE resource_name IN (‘processes’, ‘sessions’, ‘enqueue_locks’, ‘transactions’);
— 查看资源管理器状态
SELECT
name,
is_top_plan,
status
FROM v$rsrc_plan
WHERE is_top_plan = ‘TRUE’;
— 查看资源消费者组使用情况
SELECT
consumer_group_name,
cpu_wait_time,
cpu_waits,
consumed_cpu_time,
avg_active_sessions
FROM v$rsrc_consumer_group
ORDER BY consumed_cpu_time DESC;
Part04-生产案例与实战讲解
4.1 YashanDB用户资源限制实战
案例背景:某企业需要为不同类型的用户设置不同的资源限制,确保核心业务用户有足够的资源,同时防止普通用户滥用资源。
— 创建管理员资源配置文件
CREATE PROFILE admin_profile LIMIT
SESSIONS_PER_USER UNLIMITED
CPU_PER_SESSION UNLIMITED
CPU_PER_CALL UNLIMITED
CONNECT_TIME UNLIMITED
IDLE_TIME UNLIMITED
LOGICAL_READS_PER_SESSION UNLIMITED
LOGICAL_READS_PER_CALL UNLIMITED
PRIVATE_SGA UNLIMITED
FAILED_LOGIN_ATTEMPTS 10
PASSWORD_LIFE_TIME 180;
— 创建核心应用用户资源配置文件
CREATE PROFILE core_app_profile LIMIT
SESSIONS_PER_USER 20
CPU_PER_SESSION DEFAULT
CPU_PER_CALL 6000
CONNECT_TIME 120
IDLE_TIME 60
LOGICAL_READS_PER_SESSION 100000
LOGICAL_READS_PER_CALL 10000
PRIVATE_SGA 2048K
FAILED_LOGIN_ATTEMPTS 5
PASSWORD_LIFE_TIME 90;
— 创建普通用户资源配置文件
CREATE PROFILE normal_user_profile LIMIT
SESSIONS_PER_USER 5
CPU_PER_SESSION DEFAULT
CPU_PER_CALL 3000
CONNECT_TIME 60
IDLE_TIME 30
LOGICAL_READS_PER_SESSION 10000
LOGICAL_READS_PER_CALL 1000
PRIVATE_SGA 512K
FAILED_LOGIN_ATTEMPTS 3
PASSWORD_LIFE_TIME 60;
— 步骤2:为不同用户分配资源配置文件
ALTER USER sys PROFILE admin_profile;
ALTER USER system PROFILE admin_profile;
ALTER USER fgedu PROFILE core_app_profile;
ALTER USER fgedu01 PROFILE normal_user_profile;
ALTER USER fgedu02 PROFILE normal_user_profile;
— 步骤3:验证资源配置
SELECT
username,
profile
FROM dba_users
WHERE username IN (‘SYS’, ‘SYSTEM’, ‘FGEDU’, ‘FGEDU01’, ‘FGEDU02’);
— 输出结果
USERNAME PROFILE
——– ——————–
SYS ADMIN_PROFILE
SYSTEM ADMIN_PROFILE
FGEDU CORE_APP_PROFILE
FGEDU01 NORMAL_USER_PROFILE
FGEDU02 NORMAL_USER_PROFILE
— 步骤4:监控用户资源使用情况
SELECT
username,
profile,
round(CPU_USED/100, 2) as cpu_used_seconds,
SESSIONS_PER_USER_CURRENT as current_sessions
FROM dba_rsrc_consumer_group_privs
JOIN dba_users USING (username)
WHERE username LIKE ‘FGEDU%’;
4.2 YashanDB会话资源限制实战
案例背景:某企业需要限制会话的资源使用,防止单个会话过度消耗系统资源,影响其他会话的正常运行。
ALTER SYSTEM SET resource_limit = TRUE SCOPE=BOTH;
— 步骤2:创建会话资源限制配置文件
CREATE PROFILE session_limit_profile LIMIT
CPU_PER_SESSION 3600
CPU_PER_CALL 600
CONNECT_TIME 120
IDLE_TIME 30
LOGICAL_READS_PER_SESSION 100000
LOGICAL_READS_PER_CALL 10000
PRIVATE_SGA 1024K;
— 步骤3:为用户分配资源配置文件
ALTER USER fgedu PROFILE session_limit_profile;
— 步骤4:测试会话资源限制
— 连接到数据库
— sqlplus fgedu/fgedu@fgedudb
— 执行消耗资源的操作
— BEGIN
— FOR i IN 1..1000000 LOOP
— NULL;
— END LOOP;
— END;
— /
— 步骤5:监控会话资源使用
SELECT
sid,
serial#,
username,
program,
status,
cpu_used,
logical_reads,
elapsed_time,
round(cpu_used/100, 2) as cpu_seconds
FROM v$session
WHERE username = ‘FGEDU’
ORDER BY cpu_used DESC;
— 输出结果
SID SERIAL# USERNAME PROGRAM STATUS CPU_USED LOGICAL_READS ELAPSED_TIME CPU_SECONDS
———- ———- ——– —————- ——– ———- ————- ———— ————
123 456 FGEDU sqlplus.exe ACTIVE 1250 1000 15000 12.5
— 步骤6:调整会话资源限制
ALTER PROFILE session_limit_profile LIMIT
CPU_PER_SESSION 7200
CPU_PER_CALL 1200;
4.3 YashanDB系统资源限制实战
案例背景:某企业需要设置系统级别的资源限制,确保系统资源的合理分配和使用,防止系统过载。
ALTER SYSTEM SET processes = 300 SCOPE=SPFILE;
ALTER SYSTEM SET sessions = 330 SCOPE=SPFILE;
ALTER SYSTEM SET pga_aggregate_target = 2G SCOPE=BOTH;
ALTER SYSTEM SET sga_target = 8G SCOPE=BOTH;
ALTER SYSTEM SET parallel_max_servers = 32 SCOPE=BOTH;
ALTER SYSTEM SET open_cursors = 2000 SCOPE=BOTH;
— 步骤2:创建资源管理器计划
BEGIN
— 创建资源计划
DBMS_RESOURCE_MANAGER.CREATE_PLAN(
plan => ‘PRODUCTION_RESOURCE_PLAN’,
comment => ‘生产环境资源管理计划’
);
— 创建资源消费者组
DBMS_RESOURCE_MANAGER.CREATE_CONSUMER_GROUP(
consumer_group => ‘CRITICAL’,
comment => ‘关键业务组’
);
DBMS_RESOURCE_MANAGER.CREATE_CONSUMER_GROUP(
consumer_group => ‘NORMAL’,
comment => ‘普通业务组’
);
DBMS_RESOURCE_MANAGER.CREATE_CONSUMER_GROUP(
consumer_group => ‘BATCH’,
comment => ‘批处理组’
);
— 分配资源
DBMS_RESOURCE_MANAGER.CREATE_PLAN_DIRECTIVE(
plan => ‘PRODUCTION_RESOURCE_PLAN’,
group_or_subplan => ‘CRITICAL’,
comment => ‘关键业务资源分配’,
cpu_p1 => 60,
cpu_p2 => 30,
cpu_p3 => 10,
parallel_degree_limit_p1 => 16
);
DBMS_RESOURCE_MANAGER.CREATE_PLAN_DIRECTIVE(
plan => ‘PRODUCTION_RESOURCE_PLAN’,
group_or_subplan => ‘NORMAL’,
comment => ‘普通业务资源分配’,
cpu_p1 => 30,
cpu_p2 => 50,
cpu_p3 => 20,
parallel_degree_limit_p1 => 8
);
DBMS_RESOURCE_MANAGER.CREATE_PLAN_DIRECTIVE(
plan => ‘PRODUCTION_RESOURCE_PLAN’,
group_or_subplan => ‘BATCH’,
comment => ‘批处理资源分配’,
cpu_p1 => 10,
cpu_p2 => 20,
cpu_p3 => 70,
parallel_degree_limit_p1 => 32
);
— 映射用户到消费者组
DBMS_RESOURCE_MANAGER.SET_CONSUME_GROUP_MAPPING(
attribute => ‘ORACLE_USER’,
value => ‘FGEDU’,
consumer_group => ‘CRITICAL’
);
DBMS_RESOURCE_MANAGER.SET_CONSUME_GROUP_MAPPING(
attribute => ‘ORACLE_USER’,
value => ‘FGEDU01’,
consumer_group => ‘NORMAL’
);
DBMS_RESOURCE_MANAGER.SET_CONSUME_GROUP_MAPPING(
attribute => ‘ORACLE_USER’,
value => ‘FGEDU02’,
consumer_group => ‘BATCH’
);
END;
/
— 步骤3:启用资源管理计划
ALTER SYSTEM SET resource_manager_plan = ‘PRODUCTION_RESOURCE_PLAN’ SCOPE=BOTH;
— 步骤4:监控系统资源使用
SELECT
resource_name,
current_utilization,
max_utilization,
initial_allocation,
limit_value
FROM v$resource_limit
WHERE resource_name IN (‘processes’, ‘sessions’, ‘enqueue_locks’, ‘transactions’);
— 输出结果
RESOURCE_NAME CURRENT_UTILIZATION MAX_UTILIZATION INITIAL_ALLOCATION LIMIT_VALUE
———————- ——————- ————— —————— ———–
processes 50 120 300 300
sessions 65 150 330 330
enqueue_locks 120 250 2048 2048
transactions 35 80 363 363
— 步骤5:监控资源消费者组使用情况
SELECT
consumer_group_name,
cpu_wait_time,
cpu_waits,
consumed_cpu_time,
avg_active_sessions
FROM v$rsrc_consumer_group
ORDER BY consumed_cpu_time DESC;
Part05-风哥经验总结与分享
5.1 YashanDB资源限制最佳实践
YashanDB资源限制最佳实践:
- 分级设置:根据用户和应用的重要程度设置不同的资源限制
- 动态调整:根据系统负载和业务需求动态调整资源限制
- 监控预警:建立资源使用监控和预警机制
- 合理配置:根据系统资源和业务需求合理配置资源限制参数
- 测试验证:在生产环境部署前进行充分的测试验证
- 文档记录:详细记录资源限制的配置和调整过程
- 定期评估:定期评估资源限制的有效性和合理性
- 培训教育:对开发人员和用户进行资源使用培训
5.2 YashanDB资源限制检查清单
– [ ] 系统资源总量是否充足
– [ ] 资源限制参数是否合理配置
– [ ] 用户资源配置文件是否创建
– [ ] 不同用户是否分配了适当的资源配置文件
– [ ] 系统级资源限制是否设置
– [ ] 资源管理器计划是否创建和启用
– [ ] 资源消费者组是否合理设置
– [ ] 资源使用监控机制是否建立
– [ ] 资源使用预警机制是否建立
– [ ] 资源限制调整流程是否建立
# 资源限制配置步骤
1. 评估系统资源总量和业务需求
2. 创建资源配置文件
3. 为用户分配资源配置文件
4. 设置系统级资源限制参数
5. 创建资源管理器计划
6. 配置资源消费者组
7. 启用资源管理计划
8. 监控资源使用情况
9. 调整资源限制参数
10. 定期评估和优化
# 资源限制监控要点
– 会话数量和状态
– CPU使用情况
– 内存使用情况
– I/O使用情况
– 资源等待事件
– 资源消费者组使用情况
– 系统负载变化
– 业务高峰期资源使用
5.3 YashanDB资源限制常见问题处理
YashanDB资源限制常见问题及处理方法:
– 现象:用户无法正常执行操作,出现资源限制错误
– 处理:调整资源限制参数,放宽限制
# 常见问题2:资源限制过松导致系统过载
– 现象:系统资源使用率过高,响应缓慢
– 处理:调整资源限制参数,收紧限制
# 常见问题3:资源分配不均
– 现象:某些用户或应用占用过多资源
– 处理:调整资源管理器计划,重新分配资源
# 常见问题4:资源监控不到位
– 现象:无法及时发现资源使用异常
– 处理:建立完善的资源监控机制
# 常见问题5:资源限制参数配置错误
– 现象:资源限制不生效或设置错误
– 处理:检查参数配置,确保正确设置
# 常见问题6:资源管理器计划未启用
– 现象:资源限制不生效
– 处理:启用资源管理器计划
# 常见问题7:用户资源配置文件未分配
– 现象:用户使用默认资源配置
– 处理:为用户分配适当的资源配置文件
# 常见问题8:资源使用峰值导致系统不稳定
– 现象:业务高峰期系统不稳定
– 处理:设置动态资源限制,根据时间调整限制
本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html
