当前位置: 首页 > 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…...

web vue 项目 Docker化部署

Web 项目 Docker 化部署详细教程 目录 Web 项目 Docker 化部署概述Dockerfile 详解 构建阶段生产阶段 构建和运行 Docker 镜像 1. Web 项目 Docker 化部署概述 Docker 化部署的主要步骤分为以下几个阶段: 构建阶段(Build Stage)&#xff1a…...

cf2117E

原题链接&#xff1a;https://codeforces.com/contest/2117/problem/E 题目背景&#xff1a; 给定两个数组a,b&#xff0c;可以执行多次以下操作&#xff1a;选择 i (1 < i < n - 1)&#xff0c;并设置 或&#xff0c;也可以在执行上述操作前执行一次删除任意 和 。求…...

基于Docker Compose部署Java微服务项目

一. 创建根项目 根项目&#xff08;父项目&#xff09;主要用于依赖管理 一些需要注意的点&#xff1a; 打包方式需要为 pom<modules>里需要注册子模块不要引入maven的打包插件&#xff0c;否则打包时会出问题 <?xml version"1.0" encoding"UTF-8…...

selenium学习实战【Python爬虫】

selenium学习实战【Python爬虫】 文章目录 selenium学习实战【Python爬虫】一、声明二、学习目标三、安装依赖3.1 安装selenium库3.2 安装浏览器驱动3.2.1 查看Edge版本3.2.2 驱动安装 四、代码讲解4.1 配置浏览器4.2 加载更多4.3 寻找内容4.4 完整代码 五、报告文件爬取5.1 提…...

力扣-35.搜索插入位置

题目描述 给定一个排序数组和一个目标值&#xff0c;在数组中找到目标值&#xff0c;并返回其索引。如果目标值不存在于数组中&#xff0c;返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 class Solution {public int searchInsert(int[] nums, …...

JS设计模式(4):观察者模式

JS设计模式(4):观察者模式 一、引入 在开发中&#xff0c;我们经常会遇到这样的场景&#xff1a;一个对象的状态变化需要自动通知其他对象&#xff0c;比如&#xff1a; 电商平台中&#xff0c;商品库存变化时需要通知所有订阅该商品的用户&#xff1b;新闻网站中&#xff0…...

Razor编程中@Html的方法使用大全

文章目录 1. 基础HTML辅助方法1.1 Html.ActionLink()1.2 Html.RouteLink()1.3 Html.Display() / Html.DisplayFor()1.4 Html.Editor() / Html.EditorFor()1.5 Html.Label() / Html.LabelFor()1.6 Html.TextBox() / Html.TextBoxFor() 2. 表单相关辅助方法2.1 Html.BeginForm() …...

tomcat入门

1 tomcat 是什么 apache开发的web服务器可以为java web程序提供运行环境tomcat是一款高效&#xff0c;稳定&#xff0c;易于使用的web服务器tomcathttp服务器Servlet服务器 2 tomcat 目录介绍 -bin #存放tomcat的脚本 -conf #存放tomcat的配置文件 ---catalina.policy #to…...

LOOI机器人的技术实现解析:从手势识别到边缘检测

LOOI机器人作为一款创新的AI硬件产品&#xff0c;通过将智能手机转变为具有情感交互能力的桌面机器人&#xff0c;展示了前沿AI技术与传统硬件设计的完美结合。作为AI与玩具领域的专家&#xff0c;我将全面解析LOOI的技术实现架构&#xff0c;特别是其手势识别、物体识别和环境…...