实例内存优化

开启自动内存管理

1. 设置memory_max_target

alter system set memory_max_target=1G scope=spfile;
/*init.ora memory_max_target = 2000M memory_target = 1000M*/

2. 关闭sga_target和pga_aggregate_target的设置

alter system set sga_target = 0;
alter system set pga_aggregate_target = 0;

3. 设置memory_target来开启自动内存管理

alter system set memory_target=1000M

数据库开始自动内存管理,通过memory_target/memory_max_target设置的数据,系统会根据工作负载来增加或减少分配给不同组件的内存值(memory_max_target > PGA + SGA)

sga,读取数据块的cache,共享语句,日志等的cache

pga,排序,散列等

如果使用了一个较小的缓冲池,为防止过期,可以使用多个缓冲池,缓冲区告诉缓存之外,包含keep/recycle缓冲区,作用就是将频繁访问的数据集中化独立cache,将大对象访问几次的及时回收

db_keep_cache_size=1000m
db_recycle_cache_size=1000m
alter table tt storage (buffer_pool=keep)

虽然是自动内存管理,但可以设置pga_aggregate_target的值而不必重启db,将会从memory_target减去下面的设置分配个sga

alter system set pga_aggregate_target = 1000M;

查看实例中内存分配的情况

select  * from v$memory_dynamic_components

在运行完一个具有代表性的工作负载之后,运行视图来快速查看数据库中memory_target分配的优化程度

select  * from v$memory_target_advice

还可以查看过去800个已经完成的内存调整操作

select * from v$memory_resize_ops

pga命中率相关查询,尽量通过调整pga最小值可以让排序和散列都在内存完成,减少io提升运算速度

select * from v$pgastat
select * from v$sgastat
select * from v$sysstat
select * from v$sql_workarea_histogra

为oracle分配一部分查询缓存,存储sql查询结果以及plsql函数的结果,跟物化视图相比的话,物化视图是存储在磁盘上,这个结果缓存是保存在sga共享缓冲池,有利于频繁执行的,结果大的sql

RESULT_CACHE_MAXSIZE=500M /* 0-禁用服务器结果缓存 */
RESULT_CACHE_MAX_RESULT=20
RESULT_CACHE_REMOTE_EXPIRATION=3600

检查服务器缓存的状态

select dbms_result_cache.status() from dual;
set serveroutput on;
execute dbms_result_cache.memory_report;
select * from v$result_cache_statstics;

对于单条查询和表使用缓存,force强制查询结果都缓存,manual仅在应用了提示或表设置之后才缓存,表设置在user_tables中有result_cache列

RESULT_CACHE_MODE
/* 动态参数,FORCE: 强制所有sql查询结果都被数据库缓存起来, MANUAL: 数据库仅将使用查询提示或者表注释来启用缓存的特定查询结果进行缓存
* select /*+ RESULT_CACHE*/ ****
* select /*+ NO_RESULT_CACHE*/ ****
*/
alter table stores RESULT_CACHE (MODE FORCE)

缓存结果在客户端,仅推荐只读或几乎只读的查询使用,客户端缓存是基于进程,所以多个客户端会话能共享一个缓存结果集,这些会话可以同时通过多个线程和多个语句来访问同一个结果集

CLIENT_RESULT_CACHE_SIZE /* 启用则设置一个大于32k的值,设为0关闭 */
CLIENT_RESULT_CACHE_LAG /* 缓存落后于真实值的时间 */

Oracle 学习总结 - 内存优化的更多相关文章

  1. Redis学习手册(内存优化)

    自从Redis 2.2之后,很多数据类型都可以通过特殊编码的方式来进行存储空间的优化.其中,Hash.List和由Integer组成的Sets都可以通过该方式来优化存储结构,以便占用更少的空间,在有些 ...

  2. [转]探索 Android 内存优化方法

    前言 这篇文章的内容是我回顾和再学习 Android 内存优化的过程中整理出来的,整理的目的是让我自己对 Android 内存优化相关知识的认识更全面一些,分享的目的是希望大家也能从这些知识中得到一些 ...

  3. oracle内存优化

    一直都想总结一下oracle内存调整方面的知识,最近正好优化一个数据库内存参数,查找一些资料并且google很多下.现在记录下来,做下备份.         一.概述:                ...

  4. Redis学习-内存优化

    以下为个人学习Redis的备忘录--内存优化 1.随时查看info memory,了解内存使用状况:127.0.0.1:6379> info memory# Memoryused_memory: ...

  5. MYSQL进阶学习笔记十三:MySQL 内存优化!(视频序号:进阶_31)

    知识点十四:MySQL 内存的优化(31) 一.优化MySQL SERVER 7组后台进程: masterthread:主要负责将脏缓存页刷新到数据文件,执行purge操作,触发检查点,合并插入缓冲区 ...

  6. Oracle学习线路

    出自huyangg的博客,地址是:oracle学习路线图 1.sql.pl/sql(网上有很多的视频,可以做一个简单的入手,然后看几本书,多做实验)    作为oracle的基本功,需要大家对sql和 ...

  7. Oracle 11g R2性能优化 10046 event

    作为SQL Trace的扩展功能,Oracle 10046 event(10046事件)是一个重要的调试事件,也可以说是系统性能分析时最重要的一个事件,它包含比SQL Trace更多的信息.但可惜的是 ...

  8. Oracle学习笔记—数据字典和常用命令(转载)

    转载自: oracle常用数据字典和SQL语句总结 Oracle常用命令大全(很有用,做笔记) 一.Oracle数据字典 数据字典是Oracle存放有关数据库信息的地方,其用途是用来描述数据的.比如一 ...

  9. 【Java EE 学习 28 上】【oracle学习第二天】【子查询】【集合运算】【几种数据库对象】

    一.子查询 1.为什么要使用子查询:问题不能一步求解或者一个查询不能通过一步查询得到. 2.分类:单行子查询和多行子查询. 3.子查询的本质:一个查询中包含了另外一个或者多个查询. 4.使用子查询的规 ...

随机推荐

  1. failed to launch: nice -n 0 /home/hadoop/spark-2.3.3-bin-hadoop2.7/bin/spark-class org.apache.spark.deploy.worker.Worker --webui-port 8081 spark://namenode1:7077

    spark2.3.3安装完成之后启动报错: [hadoop@namenode1 sbin]$ ./start-all.shstarting org.apache.spark.deploy.master ...

  2. 使用LiteOrm删除数据对象失败的坑

    使用 LiteOrm.newSingleInstance(BaseApplication.getInstance(), Constant.DB_NAME); 在不同进程中创建了两次对象,在保存和删除的 ...

  3. C# SQL查询结果ToDataTable

    作者:卞功鑫 转载请保留:http://www.cnblogs.com/BinBinGo/p/6400944.html 最最常用的SQL 查询的返回结果,插入到DataTable 中 //1 连接字符 ...

  4. Spring MVC 处理JSON | JSONP类型数据

    SpringMVC返回JSON格式的数据: 1 添加jar包(gson-2.8.0.jar): <dependency> <groupId>com.google.code.gs ...

  5. DOM内容操作和自定义、样式改变

    自定义 function 方法名或函数名(参数1,参数2,...) { 方法体: return返回值:(可不写) } function abc() { alert("123"); ...

  6. python实现排序算法(一)——插入排序算法

    ''' 插入排序算法 原始数据data 排序数据后数据SortedData,默认是从小打大排序 1.从data第一个元素开始,该元素赋值给SortedData[0],可以认为SortedData已经被 ...

  7. Java基础方面

    1.作用域public,private,protected,以及不写时的区别 答:区别如下: 作用域        当前类     同一package       子孙类     其他package ...

  8. Solr——从postgresql数据库导入数据

    1,配置准备 本文的前提是你已经配置好了solr,并新创建了一个core,我们下面都会按照前一篇文章中的core_demo为基础开始 2,修改soreconfig.xml 在soreconfig.xm ...

  9. ES6的学习记录

    1.let命令: 基本用法: ES6新增了let命令,用来声明变量.用法类似于var,但是所声明的变量只在let命令所在的代码块内有效. { let a = 10; var b = 1; } cons ...

  10. 计算机网络知识—(TCP)

    计算机网络在IT行业的重要性 IT即互联网技术,从事的工作和网络有很大的关系,前端要负责和后台(服务器)进行交互,其必然得经过网络,所以懂点网络知识有很大的帮助. 网络模型数据处理过程 传输层协议的作 ...