oracle内存占用过高和修改不当无法启动oracle实例的解决办法[通俗易懂]

oracle内存占用过高和修改不当无法启动oracle实例的解决办法[通俗易懂]今天,在自己机器上装了oracle 12c,发现Oracle的服务Oracle RDBMS Kenel Executable (OracleServiceORCL)占用内存高达5G,本人电脑内存才16

今天,在自己机器上装了oracle 12c,发现Oracle的服务Oracle RDBMS Kenel  Executable (OracleServiceORCL)占用内存高达5G,本人电脑内存才16G。如此高的占用率,真让人心疼。于是就对Oracle的内存进行调整。具体办法如下:

1. 在cmd命令中输入如下命令启动sqlplus:

sqlplus /nolog

代码100分

2. sql启动后,连接数据库,命令如下:

代码100分conn / as sysdba;

3. 如果是oracle 11g以后版本,可以修改MEMORY_MAX_TARGET的值来设置自己想要内存值,我这里设置为1024M。

alter system set memory_max_target=1204M scope=SPFILE;

4. 关闭数据库实例

代码100分shutdown immediate

5.启动Oracle实例,基于spfile里面设置情况。

startup

 

注意事项:

1)MEMORY_MAX_TARGET是MEMORY_TARGET的最大阈值,MEMORY_TARGET是Oracle使用机器内存的总量,默认值为0,即由oracle自动根据机器内存来分配,MEMORY_TARGET = SGA_TARGET + PGA_AGGREGATE_TARGET,当SGA_TARGET和PGA_AGGREGATE_TARGET都设置为0时,Oracle会自动根据MEMORY_TARGET对两者进行内存分配。

2)如果更改过SGA_TARGET和PGA_AGGREGATE_TARGET的值,请用下面语句将其恢复0。记得不太清楚的,可以通过show parameter命令来查看内存的情况。

ALTER SYSTEM SET SGA_TARGET =0 SCOPE = SPFILE;
ALTER SYSTEM SET PGA_AGGREGATE_TARGET = 0 SCOPE = SPFILE;

show parameter命令例子如下,注意下面命令的sga可以换成target或者memory来查看memory_max_target和memory_target的值。

show parameter sga;

3)如果是oracle 10g,不支持MEMORY_MAX_TARGET和MEMORY_TARGET这两个参数,内存的调整可以通过sga_target或sga_max_size来手动设置实现,注意sga_target必须要小于等于sga_max_size,否则oracle库会运行不起来。

alter system set sga_max_size=1024m scope=spfile; 

alter system set sga_target=1024m scope=spfile;

有时候犯糊涂设置错了,导致数据库实例运行不起来的话,可以通过从二进制配置文件spfile来创建pfile的文本文件,来手动修改解决,在由pfile重建spfile文件。例如我将sga_max_size和sga_target都设置为512M,就启动不起来了,启动时,错误为ORA-00821: Specified value of sga_target 512M is too small, needs to be at least 636M,这时候,可以通过下面四部解决。

(1). 在sqlplus里面由spfile创建pfile文件,为了方便,自定义pfile的存放目录为“e:\ini.ora.temp”,不指定会默认为spfile同目录,本人在windows上的12c目录为”{oracle安装目录}product12.2.0dbhome_1database”目录下的SPFILEORCL.ORA,文件名遵循格式spfile${SID}.ora。

create pfile="e:\ini.ora.temp" from spfile;

(2). 因为pfile为文本文件,用文本应用程序打开你指定的路径文件来进行编辑,修改sga_max_size和sga_target为0,保存文件。

(3).由pfile来重建spfile文件

create spfile from pfile="e:\ini.ora.temp";

(4).默认基于新的spfile,启动Oracle实例。

startup

 

一些可能用到的其他命令:

显示spfile的文件存放路径:

show parameter spfile;

显示pfile的文件存放路径:

show parameter pfile;

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/10791.html

(0)
上一篇 2022-12-21
下一篇 2022-12-21

相关推荐

  • 数据库常用的sql语句大全图片_进入数据库的sql语句是什么

    数据库常用的sql语句大全图片_进入数据库的sql语句是什么前言 本片博客使用mysql数据库进行数据操作,使用Navicat for mysql 这个IDE进行可视化操作。每个SQL语句都是亲身实验验证的,并且经过自己的思考的。能够保证sql语句的可运行性。

    2023-05-10
    148
  • 日本大型移动支付软件 PayPay 的 TiDB 迁移实践[亲测有效]

    日本大型移动支付软件 PayPay 的 TiDB 迁移实践[亲测有效]作者简介:Munenori Hirakawa,PayPay Senior Manager at Product Tech Division。 PayPay 成立于 2018 年 10 月,由软银集团…

    2023-03-13
    146
  • SQL Server解惑——为什么你的查询结果超出了查询时间范围[通俗易懂]

    SQL Server解惑——为什么你的查询结果超出了查询时间范围[通俗易懂]废话少说,直接上SQL代码(有兴趣的测试验证一下),下面这个查询语句为什么将2008-11-27的记录查询出来了呢?这个是同事遇到的一个问题,个人设计了一个例子。 USE AdventureWorks

    2022-12-17
    144
  • Python elif简明教程

    Python elif简明教程Python是一门非常简单易学的编程语言,拥有强大的功能和丰富的库。在Python中,if语句是最基本的流程控制语句之一,它可以帮助我们根据不同的条件执行不同的操作。而在实际的编程中,我们会发现仅仅只有if语句有时候并不能满足我们的需求。比如,我们想要判断一个数是否在一定范围内,如果在范围内则输出“在范围内”,如果不在则输出“不在范围内”。这就需要我们使用到Python的另一个流程控制语句-elif语句。

    2024-05-31
    57
  • redis的基本操作_redis ziplist

    redis的基本操作_redis ziplistRedis 有序集合和集合一样也是string类型元素的集合,且不允许重复的成员。 不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。 有序

    2023-03-08
    162
  • MongoDB(四):数据类型、插入文档、查询文档

    MongoDB(四):数据类型、插入文档、查询文档1. 数据类型 MongoDB支持许多数据类型。 字符串 – 这是用于存储数据的最常用的数据类型。MongoDB中的字符串必须为UTF-8。 整型 – 此类型用于存储数值。 整数可以是32位或64位,

    2022-12-22
    152
  • Python脚本开发实战

    Python脚本开发实战随着技术的迅猛发展,Python 作为一种高级语言,被越来越多的开发者所熟知和使用。Python 不仅可以用来进行 web 开发,在数据分析、人工智能、自动化测试和脚本开发等领域都有着广泛的应用。

    2024-04-19
    66
  • Python Series排序

    Python Series排序在计算机编程领域中,排序(Sorting)是一种基础算法。其主要目的是将一组数据按照预设的规则进行排列。排序起源于计算机诞生的早期,至今依然广泛使用。对于常用的编程语言Python,其排序功能也是非常强大。

    2024-05-12
    73

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注