数据迁移后性能受到影响,需要将老数据库中keep到内存中的表在新库中keep到内存中,使用如下方法。

新库设置db_keep_cache_size为适当值,这个值的大小不能小于需要keep的表的大小。

查看老库中需要keep的表信息:
select s.owner,
       s.segment_name,
       s.partition_name,
       s.bytes / 1024 / 1024 as "size(m)"
  from dba_segments s
 where owner = 'XXX'
   and segment_name in
       (select table_name from dba_tables where owner = 'XXX' and buffer_pool='KEEP')
 order by 4 desc

查询老库中需要keep表总大小:
select sum(s.bytes / 1024 / 1024 / 1024) as "total keep size(G)"
  from dba_segments s
 where segment_name in
       (select table_name from dba_tables where owner = 'XXX' and buffer_pool='KEEP')

生成keep脚本:   
select 'alter table XXX.'||s.segment_name||' storage(buffer_pool keep);' as "脚本"
  from dba_segments s
 where owner = 'XXX'
   and segment_name in
       (select table_name from dba_tables where owner = 'XXX' and buffer_pool='KEEP')
  
keep表到内存中:
select 'alter table XXX.'||s.segment_name||' cache;' as "脚本2"
  from dba_segments s
 where owner = 'XXX'
   and segment_name in
       (select table_name from dba_tables where owner = 'XXX' and buffer_pool='KEEP')
   
上两个脚本整合:
select 'alter table XXX.'||s.segment_name||' storage(buffer_pool keep) cache;' as "脚本"
  from dba_segments s
 where owner = 'XXX'
   and segment_name in
       (select table_name from dba_tables where owner = 'XXX' and buffer_pool='KEEP')

上述三个脚本输出结果放在plsql中执行即可。

附录:与cache到内存相关的命令
--表缓存 
alter table ..... storage(buffer_pool keep);  
--查看哪些表被放在缓存区 但并不意味着该表已经被缓存 
select table_name from dba_tables where buffer_pool='keep';
--查询到该表是否已经被缓存 
select table_name,cache,buffer_pool from user_TABLES where cache like '%Y';
--已经加入到KEEP区的表想要移出缓存,使用 
alter table table_name nocache;  
--查询当前用户下表的情况 
select table_name,cache,buffer_pool from user_TABLES;  
--对于普通LOB类型的segment的cache方法 
alter table t2 modify lob(c2) (storage (buffer_pool keep) cache);  
--取消缓存 
alter table test modify lob(address) (storage (buffer_pool keep) nocache);  
--查询段 
select segment_name,segment_type,buffer_pool from user_segments;  
--对基于CLOB类型的对象的cache方法   
alter table lob1 modify lob(c1.xmldata) (storage (buffer_pool keep) cache);   
--查询该用户下所有表内的大字段情况 
select column_name,segment_name from user_lobs;   
--取消表缓存
alter table XXX storage(buffer_pool default);

ps:
查看keep空间的剩余大小:
select p.name,a.cnum_repl "total buffers",a.anum_repl "free buffers" 
      from x$kcbwds a, v$buffer_pool p
      where a.set_id=p.LO_SETID and p.name='KEEP';

查看keep空间的大小:
select component,current_size from v$sga_dynamic_components
    where component='KEEP buffer cache';

Oracle调优-常用表KEEP到内存中的更多相关文章

  1. Oracle调优总结(经典实践 重要)

    转载:http://langgufu.iteye.com/blog/1974211 Problem Description:1.每个表的结构及主键索引情况2.每个表的count(*)记录是多少3.对于 ...

  2. Oracle调优之buffer pool相关

    一个oracle block与data buffer中的一个buffer对应.用户进程(server process)负责读取磁盘上的block到data buffer cache中,DEWn进程负责 ...

  3. Oracle调优总结

    Oracle调优总结(经典实践 重要) https://blog.csdn.net/dtjiawenwang88/article/details/74892245 https://www.cnblog ...

  4. oracle中如何将表缓存到内存中

    oracle快速将表缓存到内存中,使得访问速度加快. 共有2种方法:   1)alter table fisher cache; 2)alter table fisher storage(buffer ...

  5. Oracle SQL调优之表设计

    在看<收获,不止sql优化>一书,并做了笔记,本博客介绍一下一些和调优相关的表比如分区表.临时表.索引组织表.簇表以及表压缩技术 分区表使用与查询频繁而更新数据不频繁的情况,不过要记得加全 ...

  6. MySql(十一):MySQL性能调优——常用存储引擎优化

    一.前言 MySQL 提供的非常丰富的存储引擎种类供大家选择,有多种选择固然是好事,但是需要我们理解掌握的知识也会增加很多.本章将介绍最为常用的两种存储引擎进行针对性的优化建议. 二.MyISAM存储 ...

  7. Oracle调优之看懂Oracle执行计划

    @ 目录 1.文章写作前言简介 2.什么是执行计划? 3.怎么查看执行计划? 4.查看真实执行计划 5.看懂Oracle执行计划 5.1 查看explain 5.2 explain执行顺序 5.3 访 ...

  8. JVM调优常用参数和注意点备忘录

    本文主要是工作过程中总结的一些jvm调优的参数和注意的地方,作为一个备忘录,先占个坑,有时间在来细化具体的实例. gc日志是覆盖的方式如果文件名字固定会导致上一次被覆盖可以采用这个-Xloggc:ba ...

  9. JVM监控和调优常用命令工具总结

    JVM监控和调优 在Java应用和服务出现莫名的卡顿.CPU飙升等问题时总是要分析一下对应进程的JVM状态以定位问题和解决问题并作出相应的优化,在这过程中Java自带的一些状态监控命令和图形化工具就非 ...

随机推荐

  1. [转]【NODE】用WS模块创建加密的WS服务(WSS)

    [From] https://luojia.me/2015/07/21/%E3%80%90node%E3%80%91%E7%94%A8ws%E6%A8%A1%E5%9D%97%E5%88%9B%E5% ...

  2. 2019.3.20 I/O相关

    I/O 相关简介 什么是I/O? IO,即Input (输入)和Output (输出)的首字母缩写. 什么是流? 流(Stream)是抽象概念,它代表任何有能力产出数据的数据源对象或者是与能力接收数据 ...

  3. PIE SDK专题制图另存模板

    1.功能简介 在PIE SDK中,所有的制图元素.视图范围以及排版等都可以保存成一个模板,以供多次重复使用.使用模板时只需要打开该模板,加载相应数据,就可以直接出图,省去了重复制作图幅的麻烦,方便快捷 ...

  4. vue组件(持续更新)

    1.vee-validate :vue的表单验证组件 网友博客介绍:https://www.cnblogs.com/xxwang/p/6104715.html

  5. JS如何获取屏幕、浏览器及网页高度宽度?

    屏幕的尺寸是指当前分辨率下的高度.宽度,而不是物理高度.宽度. 如:一个22寸的显示器,屏幕分辨率为1366 * 768,那么我们可以获取到的屏幕高度为1366px,宽度为768px. 屏幕宽度和高度 ...

  6. for循环注意案例

    1.在for循环中,三个表达式都可以省略,但是分号必须编写,但会出现死循环(无限循环) 2.在for循环中,省略表达式1,则出现编译错误,解决办法:在表达式1编写在for循环上面 3.在for循环中, ...

  7. ubuntu安装VMware Tools报错enter the path to the kernel header files

    $ sudo apt-get install build-essential linux-headers-$(uname -r) cd /lib/modules/$(uname -r)/build/i ...

  8. 用PHP实现同一个帐号不允许同时登陆,只允许一个帐号登录?

    数据库表 user_login_info 字段:id,user_ip,user_id,last_access_time user_id 做唯一性索引 1. 用户登录后 如果没有当前用户的数据,插入一条 ...

  9. SpringBoot | 第三十一章:MongoDB的集成和使用

    前言 上一章节,简单讲解了如何集成Spring-data-jpa.本章节,我们来看看如何集成NoSQL的Mongodb.mongodb是最早热门非关系数据库的之一,使用也比较普遍.最适合来存储一些非结 ...

  10. js经验点滴js apply/call/caller/callee/bind使用方法与区别分析

    一.call 方法 调用一个对象的一个方法,以另一个对象替换当前对象(其实就是更改对象的内部指针,即改变对象的this指向的内容). Js代码 call([thisObj[,arg1[, arg2[, ...