滚雪球学Oracle[2.5讲]:数据库初始化配置
全文目录:
- 前言
- 一、配置文件的高级参数设置
- 1.1 `open_cursors`:游标打开数量限制
- 案例演示
- 1.2 `session_cached_cursors`:会话缓存游标数量
- 案例演示
- 1.3 `pga_aggregate_target`与`sga_target`:内存分配优化
- 案例演示
- 二、内存管理模式的选择与调优
- 2.1 自动内存管理(AMM)
- 案例演示
- 2.2 手动内存管理
- 案例演示
- 三、数据库字符集的选择与转换
- 3.1 常用字符集
- 案例演示
- 3.2 字符集转换
- 案例演示
- 四、日志模式的选择:归档与非归档模式的影响
- 4.1 归档模式(ARCHIVELOG)
- 案例演示
- 4.2 非归档模式(NOARCHIVELOG)
- 案例演示
- 五、延伸讨论:监控与调整
- 5.1 AWR报告
- 5.2 OEM工具
- 结语
前言
在上期的内容中,我们详细探讨了创建Oracle数据库实例的各项关键步骤,包括如何为数据库选择合适的参数、配置文件的基本设置以及创建实例过程中常见的问题处理。这些内容为我们后续的数据库管理和优化奠定了基础。
本期,我们将进一步深入到Oracle数据库的初始化配置与优化,其中涵盖的高级参数设置、内存管理模式的调优、字符集选择以及日志模式的设置,不仅影响数据库的性能表现,还直接决定了数据库在高并发、数据量庞大等复杂场景下的可靠性与稳定性。
通过本文的详细解读,大家将了解到如何利用这些高级参数实现数据库性能的最优化,并通过实际案例进一步理解每个设置在不同业务场景下的应用。最终,这些配置和调优将使数据库在高效的同时,保持数据的完整性与安全性。
一、配置文件的高级参数设置
Oracle数据库的运行高度依赖于配置文件,这些文件决定了数据库的内存分配、并发性能、日志管理等方面的表现。常见的配置文件包括init.ora和spfile.ora,其中包含了数据库实例启动时所需的各类参数。了解并合理设置这些参数,对于提高数据库的整体性能和资源利用率至关重要。
1.1 open_cursors:游标打开数量限制
open_cursors参数决定了每个会话能够同时打开的游标数量。Oracle数据库中,游标用于追踪SQL查询的上下文。如果该参数值设置过小,会导致会话打开的游标超过限制,从而引发ORA-01000错误(打开的游标数量过多);若设置过大,可能会导致资源浪费。
案例演示
假设数据库中的应用存在大量并发查询操作,为了避免游标超限,可以适当提高open_cursors的值。我们可以通过如下命令来实现调整:
ALTER SYSTEM SET open_cursors = 2000 SCOPE=BOTH;
在实际操作中,可以通过监控系统中并发查询的数量,来逐步调整游标数量上限,以确保不会引发游标过多的错误。
1.2 session_cached_cursors:会话缓存游标数量
session_cached_cursors参数决定了数据库为每个会话缓存的游标数量。通过缓存游标,Oracle可以减少频繁的游标解析操作,从而提升性能,特别是在相同SQL查询被频繁调用的场景下。
案例演示
假设某个系统中的会话频繁使用相同的SQL查询语句,可以通过增大session_cached_cursors的值,提升游标的缓存命中率:
ALTER SYSTEM SET session_cached_cursors = 300 SCOPE=BOTH;
这个设置可以显著减少数据库系统的游标解析负担,提升查询的响应速度。
1.3 pga_aggregate_target与sga_target:内存分配优化
pga_aggregate_target参数用于设置程序全局区(PGA)的目标内存大小,而sga_target则用于配置系统全局区(SGA)的内存大小。这两者决定了Oracle数据库在运行时所使用的内存资源配比。合理设置这两个参数,可以确保数据库高效运行,避免出现内存不足或资源浪费的情况。
案例演示
假设我们有一台服务器,物理内存为16GB。在数据库实例运行时,可能需要配置4GB用于PGA,8GB用于SGA,剩余内存用于操作系统。可以使用以下命令进行配置:
ALTER SYSTEM SET pga_aggregate_target = 4G SCOPE=BOTH;
ALTER SYSTEM SET sga_target = 8G SCOPE=BOTH;
这些设置确保了数据库在内存使用上的优化,使系统能够更好地应对复杂查询和高并发请求。
二、内存管理模式的选择与调优
Oracle提供了两种内存管理模式,分别为自动内存管理(Automatic Memory Management, AMM)和手动内存管理。不同的内存管理模式,适用于不同的应用场景,选择合适的内存管理方式可以大大提升数据库的性能。
2.1 自动内存管理(AMM)
自动内存管理模式允许Oracle数据库自行调整PGA和SGA的大小,数据库会根据当前的负载情况和可用资源,动态分配内存。AMM适合大多数情况下的应用,尤其是当数据库管理员不想频繁手动调整内存设置时,自动模式能够提供很好的平衡。
案例演示
如果我们希望在一台具有16GB内存的服务器上使用自动内存管理,可以通过如下设置:
ALTER SYSTEM SET memory_target = 12G SCOPE=BOTH;
ALTER SYSTEM SET memory_max_target = 12G SCOPE=BOTH;
通过设置memory_target和memory_max_target,Oracle将自动分配PGA和SGA的大小,确保内存利用的动态最优。
2.2 手动内存管理
在某些高性能要求的应用场景下,自动内存管理的分配方式可能无法满足精细化的性能需求。在这种情况下,可以选择手动内存管理模式,通过手动配置PGA和SGA来控制内存分配。
案例演示
手动管理内存时,我们可以根据实际的业务场景,分别设置PGA和SGA的大小。例如,在一个需要处理大量并行查询的数据库中,我们可以配置PGA为更大的值,以便充分利用并行操作的优势:
ALTER SYSTEM SET pga_aggregate_target = 6G SCOPE=BOTH;
ALTER SYSTEM SET sga_target = 6G SCOPE=BOTH;
手动管理模式适用于对内存需求精确控制的场景,例如大型数据仓库和高并发的应用环境。
三、数据库字符集的选择与转换
字符集决定了数据库如何存储和显示数据,特别是当系统需要支持多种语言时,选择合适的字符集显得尤为重要。选择错误的字符集可能会导致数据无法正确存储或显示。字符集的选择通常在数据库创建时就已经决定,但在某些情况下,可能需要进行字符集的转换。
3.1 常用字符集
在创建数据库时,需要根据具体的业务场景来选择字符集。以下是几种常见的字符集:
- AL32UTF8:适合多语言存储,支持几乎所有的字符集编码,特别适合全球化的应用程序。
- WE8MSWIN1252:适合只需要处理西方语言的场景,如英语、德语、法语等。
案例演示
创建数据库时,可以通过以下命令设置字符集为AL32UTF8:
CREATE DATABASE exampledbCHARACTER SET AL32UTF8NATIONAL CHARACTER SET AL16UTF16;
这种设置能确保数据库支持多种语言的存储和检索,适合全球化运营的企业或应用。
3.2 字符集转换
在某些情况下,业务需求发生了变化,可能需要将数据库字符集从一个字符集转换为另一个字符集。比如从WE8MSWIN1252转换为AL32UTF8。这种转换是复杂且耗时的操作,尤其是在生产环境中进行时,需要极大的谨慎。
可以使用Oracle提供的CSSCAN工具对数据库进行字符集扫描,分析转换可能会遇到的问题,随后使用CSALTER工具完成转换。
案例演示
字符集转换的具体步骤:
csscan FULL=Y TOCHAR=AL32UTF8 FROMCHAR=WE8MSWIN1252
扫描完成后,确认没有问题,再进行转换:
ALTER DATABASE CHARACTER SET AL32UTF8;
四、日志模式的选择:归档与非归档模式的影响
日志模式的选择决定了数据库的恢复能力和数据安全性。Oracle数据库可以运行在归档模式(ARCHIVELOG)和非归档模式(NOARCHIVELOG)下。
4.1 归档模式(ARCHIVELOG)
在归档模式下,所有的日志文件都会被归档,允许数据库在发生故障时通过日志进行完整恢复。这对于生产环境是必不可少的,因为它确保了即使数据库发生严重崩溃,也可以恢复到故障前的状态。
案例演示
开启归档模式的命令:
SHUTDOWN IMMEDIATE;
STARTUP MOUNT;
ALTER DATABASE ARCHIVELOG;
ALTER DATABASE OPEN;
归档模式适合于需要严格数据保护和高度可恢复性的系统环境。
4.2 非归档模式(NOARCHIVELOG)
在非归档模式下,Oracle不会保存重做日志文件的备份,因此一旦
数据库出现故障,只能恢复到最后一次备份时的状态。这种模式适合对数据恢复要求不高的开发环境或测试环境。
案例演示
禁用归档模式的步骤:
SHUTDOWN IMMEDIATE;
STARTUP MOUNT;
ALTER DATABASE NOARCHIVELOG;
ALTER DATABASE OPEN;
在非归档模式下,备份策略尤为重要,因为只有通过定期的全备份,才能减少数据丢失的风险。
五、延伸讨论:监控与调整
数据库在实际运行过程中,还需要根据负载的变化进行不断的调整和优化。通过Oracle的AWR报告(Automatic Workload Repository)和OEM(Oracle Enterprise Manager),管理员可以定期监控数据库的性能表现,查看资源的使用情况、查询的执行效率,以及可能出现的瓶颈。
5.1 AWR报告
AWR报告能够详细记录数据库的工作负载情况,并生成每个时间段的性能数据。通过分析AWR报告,管理员可以了解哪些SQL语句执行缓慢,哪些资源使用过度,从而针对性地进行优化。
5.2 OEM工具
OEM工具提供了图形化界面,方便管理员实时监控数据库的运行情况。通过OEM,管理员可以直观地查看CPU、内存、磁盘IO等资源的使用情况,快速响应系统中的异常情况。
结语
通过本期的学习,我们深入探讨了Oracle数据库初始化配置中的高级参数设置、内存管理模式的选择与优化、字符集配置以及日志模式的选择。这些内容对于数据库的性能优化、资源管理和数据安全性至关重要。
下期我们将进入一个更具实战意义的主题——SQL语言基础。这部分内容将帮助大家掌握数据库操作语言的基础语法,为日后的数据库应用打下扎实的基础。敬请期待!
参考文献:
- Oracle官方文档
- 数据库优化与调优指南
相关文章:
滚雪球学Oracle[2.5讲]:数据库初始化配置
全文目录: 前言一、配置文件的高级参数设置1.1 open_cursors:游标打开数量限制案例演示 1.2 session_cached_cursors:会话缓存游标数量案例演示 1.3 pga_aggregate_target与sga_target:内存分配优化案例演示 二、内存管理模式的选…...
Java - Spring框架 (ios+aop)
Spring 简介 Spring框架是为了解决企业应用开发的复杂性,使用基本的JavaBean代替EJB,并提供了更多的企业应用功能,Spring是一个轻量级控制反转(IOC)和面向切面(AOP)的容器框架。 Spring优点 Spring是一个开源的免费的框架(容器) Spring是一…...
计算机网络(十) —— IP协议详解,理解运营商和全球网络
目录 一,关于IP 1.1 什么是IP协议 1.2 前置认识 二,IP报头字段详解 三,网段划分 3.1 IP地址的构成 3.2 网段划分 3.3 子网划分 3.4 IP地址不足问题 四,公网IP和私有IP 五,理解运营商和全球网络 六ÿ…...
速速收藏!这些2024年上映的AI电影与短剧,申请加入你的国庆假期宅家计划!
2024年上映的AI电影 01 科幻惊悚电影《致命AI Afraid》 导演:克里斯韦兹上映日期:2024-08-30(美国)片长:84分钟剧情简介:Curtis一家被选中去测试一种革新性的居家设备:数字家庭助手AIA,包括各种感应设备和摄像头等,…...
23.2 prometheus为k8s做的4大适配工作
本节重点介绍 : k8s监控中的4大采集类型总结prometheus为k8s监控做的4大适配工作 k8s关注指标分析 在监控每个细分的领域时,我们都要先思考下到底需要关注哪些方面的指标。k8s中组件复杂,我们主要专注的无外乎四大块指标:容器基础资源指标…...
1、如何查看电脑已经连接上的wifi的密码?
在电脑桌面右下角的如下位置:双击打开查看当前连接上的wifi的名字:ZTE-kfdGYX-5G 按一下键盘上的win R 键, 输入【cmd】 然后,按一下【回车】。 输入netsh wlan show profile ”wifi名称” keyclear : 输入完成后,按一下回车&…...
循环链表和双向链表
一、 带尾指针的循环链表的合并 算法步骤: p存表头结点——pTa->next;Tb表头连接到Ta表尾——Ta->nextTb->next->next;释放Tb表头结点——delate Tb->next;修改指针——Tb->nextp; LinkList Connect(LinkList Ta,LinkList Tb){pTa->next; …...
【Linux庖丁解牛】—Linux基本指令(中)!
🌈个人主页:秋风起,再归来~🔥系列专栏: Linux庖丁解牛 🔖克心守己,律己则安 目录 1、rmdir与rm指令 2、man指令 3、cp指令 4、mv指令 5、cat与tac指令 6、重定向 7、more指令 8、…...
【电路笔记】-运算放大器微分器
运算放大器微分器 文章目录 运算放大器微分器1、概述2、运算放大器微分器的表示2.1 理想微分器2.2 输出公式2.3 交流分析3、实际微分器3.1 理想配置的局限性3.2 带串联电阻的伪微分器3.3 具有并联电容器的伪微分器4、总结1、概述 在我们之前关于积分器运算放大器的文章中,我们…...
【Unity踩坑】使用内购时获取Google Play license key
在Unity中使用了IAP(内购)后,需要设置Google Play license key。 这个key需要在Google Play Console中(https://play.google.com/console),找到相应的应用,在左侧“创收设置”里可以找到license…...
华为OD机试真题-数组拼接-2024年OD统一考试(E卷)
最新华为OD机试考点合集:华为OD机试2024年真题题库(E卷+D卷+C卷)_华为od机试题库-CSDN博客 每一题都含有详细的解题思路和代码注释,精选c++、JAVA、Python三种语言解法。帮助每一位考生轻松、高效刷题。订阅后永久可看,发现新题及时跟新。 题目描述 现在有多组整数数…...
【Android 14源码分析】Activity启动流程-2
忽然有一天,我想要做一件事:去代码中去验证那些曾经被“灌输”的理论。 – 服装…...
ubuntu 18.04 cuda 11.01 gpgpu-sim 裸机编译
1,环境 ubuntu 18.04 x86_64 cuda 11.01 gpgpu-sim master commit 90ec3399763d7c8512cfe7dc193473086c38ca38 2,预备环境 一个比较新的 ubuntu 18.04,为了迎合 cuda 11.01 的版本需求 安装如下软件: sudo apt-get instal…...
【Kubernetes】常见面试题汇总(五十二)
目录 116. K8S 集群服务暴露失败? 117.外网无法访问 K8S 集群提供的服务? 特别说明: 题目 1-68 属于【Kubernetes】的常规概念题,即 “ 汇总(一)~(二十二)” 。 题目 69-…...
o1-preview 在 IMO 2024 第一题的实测表现
相关博客:Learning to Reason with LLMs 以及 Introducing OpenAI o1-preview 测试了 IMO 2024 的第一题,OpenAI-o1-preview 的解题过程包括两部分:思考和推理。 正确答案是全体偶数,o1-preview 的 **思考方向正确,推…...
iOS--RunLoop原理
前言 曾经在写项目的时候遇到过这么一个问题。: 项目中添加了一个tableview,然后还有一个计时器,当滑动tableview的时候会阻塞计时器,你得执行这么一段代码后,计时器才能正常运行。 RunLoop.current.add(timer, for…...
并查集——从LeetCode题海中总结常见套路
目录 并查集定义 LeetCode128.最长连续序列 先去重再sort: 改进去重的方法: 参考: 并查集定义 在计算机科学中,并查集是一种树型的数据结构,用于处理一些不交集(Disjoint Sets)的合并及查…...
深入理解作用域【JavaScript】
一、作用域的内部原理 JavaScript 的作用域机制是理解变量如何被访问和存储的重要概念。下面详细介绍作用域的内部原理,包括编译、执行、查询、嵌套和异常处理这五个步骤。 1. 编译 在 JavaScript 的执行过程中,首要的步骤是编译。尽管JavaScript是解…...
微信小程序实战教程:如何使用map组件实现地图功能
在微信小程序中,map组件是一个非常实用的功能,它可以帮助我们快速实现地图展示、定位、标注等操作。本文将详细介绍如何在微信小程序中使用map组件,带你轻松掌握地图开发技能。 一、map组件概述 map组件是微信小程序官方提供的一个地图组件…...
张雪峰谈人工智能技术应用专业的就业前景!
一、张雪峰谈人工智能技术应用专业 在教育咨询领域,张雪峰老师以其深入浅出的讲解和前瞻性的视角,为广大学子提供了宝贵的专业选择建议。对于人工智能技术应用专业,张雪峰老师通常给予高度评价,认为这是一个充满无限可能且就业前…...
深度学习在微纳光子学中的应用
深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向: 逆向设计 通过神经网络快速预测微纳结构的光学响应,替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…...
Cursor实现用excel数据填充word模版的方法
cursor主页:https://www.cursor.com/ 任务目标:把excel格式的数据里的单元格,按照某一个固定模版填充到word中 文章目录 注意事项逐步生成程序1. 确定格式2. 调试程序 注意事项 直接给一个excel文件和最终呈现的word文件的示例,…...
智慧医疗能源事业线深度画像分析(上)
引言 医疗行业作为现代社会的关键基础设施,其能源消耗与环境影响正日益受到关注。随着全球"双碳"目标的推进和可持续发展理念的深入,智慧医疗能源事业线应运而生,致力于通过创新技术与管理方案,重构医疗领域的能源使用模式。这一事业线融合了能源管理、可持续发…...
RocketMQ延迟消息机制
两种延迟消息 RocketMQ中提供了两种延迟消息机制 指定固定的延迟级别 通过在Message中设定一个MessageDelayLevel参数,对应18个预设的延迟级别指定时间点的延迟级别 通过在Message中设定一个DeliverTimeMS指定一个Long类型表示的具体时间点。到了时间点后…...
uniapp微信小程序视频实时流+pc端预览方案
方案类型技术实现是否免费优点缺点适用场景延迟范围开发复杂度WebSocket图片帧定时拍照Base64传输✅ 完全免费无需服务器 纯前端实现高延迟高流量 帧率极低个人demo测试 超低频监控500ms-2s⭐⭐RTMP推流TRTC/即构SDK推流❌ 付费方案 (部分有免费额度&#x…...
【Oracle】分区表
个人主页:Guiat 归属专栏:Oracle 文章目录 1. 分区表基础概述1.1 分区表的概念与优势1.2 分区类型概览1.3 分区表的工作原理 2. 范围分区 (RANGE Partitioning)2.1 基础范围分区2.1.1 按日期范围分区2.1.2 按数值范围分区 2.2 间隔分区 (INTERVAL Partit…...
Unity | AmplifyShaderEditor插件基础(第七集:平面波动shader)
目录 一、👋🏻前言 二、😈sinx波动的基本原理 三、😈波动起来 1.sinx节点介绍 2.vertexPosition 3.集成Vector3 a.节点Append b.连起来 4.波动起来 a.波动的原理 b.时间节点 c.sinx的处理 四、🌊波动优化…...
使用Matplotlib创建炫酷的3D散点图:数据可视化的新维度
文章目录 基础实现代码代码解析进阶技巧1. 自定义点的大小和颜色2. 添加图例和样式美化3. 真实数据应用示例实用技巧与注意事项完整示例(带样式)应用场景在数据科学和可视化领域,三维图形能为我们提供更丰富的数据洞察。本文将手把手教你如何使用Python的Matplotlib库创建引…...
[免费]微信小程序问卷调查系统(SpringBoot后端+Vue管理端)【论文+源码+SQL脚本】
大家好,我是java1234_小锋老师,看到一个不错的微信小程序问卷调查系统(SpringBoot后端Vue管理端)【论文源码SQL脚本】,分享下哈。 项目视频演示 【免费】微信小程序问卷调查系统(SpringBoot后端Vue管理端) Java毕业设计_哔哩哔哩_bilibili 项…...
JavaScript 数据类型详解
JavaScript 数据类型详解 JavaScript 数据类型分为 原始类型(Primitive) 和 对象类型(Object) 两大类,共 8 种(ES11): 一、原始类型(7种) 1. undefined 定…...
