当前位置: 首页 > news >正文

滚雪球学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.oraspfile.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_targetsga_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_targetmemory_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 五,理解运营商和全球网络 六&#xff…...

速速收藏!这些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组件是微信小程序官方提供的一个地图组件…...

张雪峰谈人工智能技术应用专业的就业前景!

一、张雪峰谈人工智能技术应用专业 在教育咨询领域,张雪峰老师以其深入浅出的讲解和前瞻性的视角,为广大学子提供了宝贵的专业选择建议。对于人工智能技术应用专业,张雪峰老师通常给予高度评价,认为这是一个充满无限可能且就业前…...

浅谈 React Hooks

React Hooks 是 React 16.8 引入的一组 API,用于在函数组件中使用 state 和其他 React 特性(例如生命周期方法、context 等)。Hooks 通过简洁的函数接口,解决了状态与 UI 的高度解耦,通过函数式编程范式实现更灵活 Rea…...

装饰模式(Decorator Pattern)重构java邮件发奖系统实战

前言 现在我们有个如下的需求,设计一个邮件发奖的小系统, 需求 1.数据验证 → 2. 敏感信息加密 → 3. 日志记录 → 4. 实际发送邮件 装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其…...

解决Ubuntu22.04 VMware失败的问题 ubuntu入门之二十八

现象1 打开VMware失败 Ubuntu升级之后打开VMware上报需要安装vmmon和vmnet,点击确认后如下提示 最终上报fail 解决方法 内核升级导致,需要在新内核下重新下载编译安装 查看版本 $ vmware -v VMware Workstation 17.5.1 build-23298084$ lsb_release…...

【ROS】Nav2源码之nav2_behavior_tree-行为树节点列表

1、行为树节点分类 在 Nav2(Navigation2)的行为树框架中,行为树节点插件按照功能分为 Action(动作节点)、Condition(条件节点)、Control(控制节点) 和 Decorator(装饰节点) 四类。 1.1 动作节点 Action 执行具体的机器人操作或任务,直接与硬件、传感器或外部系统…...

视频字幕质量评估的大规模细粒度基准

大家读完觉得有帮助记得关注和点赞!!! 摘要 视频字幕在文本到视频生成任务中起着至关重要的作用,因为它们的质量直接影响所生成视频的语义连贯性和视觉保真度。尽管大型视觉-语言模型(VLMs)在字幕生成方面…...

Python爬虫(一):爬虫伪装

一、网站防爬机制概述 在当今互联网环境中,具有一定规模或盈利性质的网站几乎都实施了各种防爬措施。这些措施主要分为两大类: 身份验证机制:直接将未经授权的爬虫阻挡在外反爬技术体系:通过各种技术手段增加爬虫获取数据的难度…...

GitHub 趋势日报 (2025年06月08日)

📊 由 TrendForge 系统生成 | 🌐 https://trendforge.devlive.org/ 🌐 本日报中的项目描述已自动翻译为中文 📈 今日获星趋势图 今日获星趋势图 884 cognee 566 dify 414 HumanSystemOptimization 414 omni-tools 321 note-gen …...

Matlab | matlab常用命令总结

常用命令 一、 基础操作与环境二、 矩阵与数组操作(核心)三、 绘图与可视化四、 编程与控制流五、 符号计算 (Symbolic Math Toolbox)六、 文件与数据 I/O七、 常用函数类别重要提示这是一份 MATLAB 常用命令和功能的总结,涵盖了基础操作、矩阵运算、绘图、编程和文件处理等…...

pikachu靶场通关笔记22-1 SQL注入05-1-insert注入(报错法)

目录 一、SQL注入 二、insert注入 三、报错型注入 四、updatexml函数 五、源码审计 六、insert渗透实战 1、渗透准备 2、获取数据库名database 3、获取表名table 4、获取列名column 5、获取字段 本系列为通过《pikachu靶场通关笔记》的SQL注入关卡(共10关&#xff0…...

Mac下Android Studio扫描根目录卡死问题记录

环境信息 操作系统: macOS 15.5 (Apple M2芯片)Android Studio版本: Meerkat Feature Drop | 2024.3.2 Patch 1 (Build #AI-243.26053.27.2432.13536105, 2025年5月22日构建) 问题现象 在项目开发过程中,提示一个依赖外部头文件的cpp源文件需要同步,点…...