oracle12c 内存表怎么把这个表一直放在内存中

查看Oracle中存储过程长时间被卡住的原因 - _harvey - 博客园
随笔 - 95, 文章 - 3, 评论 - 4, 引用 - 0
1:查V$DB_OBJECT_CACHE
SELECT * FROM V$DB_OBJECT_CACHE WHERE name='CUX_OE_ORDER_RPT_PKG' AND LOCKS!='0';
注意:CUX_OE_ORDER_RPT_PKG 为存储过程的名称。
发现 locks=2
2:按对象查出sid的值
select /*+ rule*/& SID from V$ACCESS WHERE object='CUX_OE_ORDER_RPT_PKG';
注意:CUX_OE_ORDER_RPT_PKG 为存储过程的名称。
3:查sid,serial#
SELECT SID,SERIAL#,PADDR FROM V$SESSION WHERE SID='刚才查到的SID';
4、根据会话id(sid),此会话的等待事件:
select&*&from&v$session&where&sid=***;&&
event字段即为等待事件。查询后我们发现这个会话等待事件为SQL*Net message from dblink;在查看会话的logon_time为两天前。这个时间远超过我们估计时间。
5、根据会话id查看此会话正在执行的sql语句
select&sql_text&from&v$sqlarea&where&address=&(select&&&sql_address&&from&v$session&where&sid=***);&&
查询后发现正在执行的sql语句为通过dblink到远程数据库上A表查询数据,插入到B表。
6、连接远程数据库,查询当前被锁的对象
select&*&from&v$locked_object&lo&,&&&
all_objects&&ao&&&&where&lo.OBJECT_ID=&ao.object_id&;&&
查看后发现远程数据库中并没有涉及到A、B表被锁
7、查看远程数据的会话:
select&*&from&v$session&where&terminal&like&'%机器名%'&&and&program='Oracle.exe'&&
使用dblink连接远程数据库,在远程数据库上的会话的program应该是是oracle.exe
查询后发现,两个远程库有时候根本没有相关会话,有时候可能有相关会话,但其等待事件是 SQL*Net message from client 远程库在等待本地Oracle给他发请求。
本地库等dblink远程库,远程库等待client消息。看来这个存储过程是不可能执行完了。
具体什么原因造成了,还不清楚。
这里给出的处理方法就是杀死会话
具体步骤可参考上面的文章豆丁微信公众号
君,已阅读到文档的结尾了呢~~
oca笔记及部分真题,申论真题及答案,国考真题及答案下载,高考数学真题及答案,2014行测真题及答案,六级真题及答案下载,四级真题及答案下载,国考真题及答案,2013行测真题及答案,mba真题及答案
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
oca笔记及部分真题
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='http://www.docin.com/DocinViewer-4.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口查看: 11308|回复: 23
如何将表数据加载到内存
论坛徽章:0
数据库是10g,
一个表t_a数据量大概100万,
查询语句是:select * from t_a where b = ~~&&;
b字段上没有索引,查询时间大概是3.5秒,
执行 ALTER TABLE t_a STORAGE ( BUFFER_POOL KEEP);后,查询时间也是3.5秒,效率没有提高,而且查询时硬盘灯一直在闪,明显是直接读的硬盘。
重启数据库也是一样。
想问下哪里出错了吗,谢谢各位!
论坛徽章:398
100万行,多少M字节
论坛徽章:0
回复 #2 〇〇 的帖子
论坛徽章:398
show parameter db_block_buffers
论坛徽章:398
可以简单的通过ALTER TABLE tablename CACHE来实现,在ORACLE8i之后可以使用ALTER TABLE table STORAGE(BUFFER_POOL KEEP)。一般来说,可以考虑把200数据块之内的表放在keep池中,当然要根据内存大小等因素来定。关于如何查出那些表或索引符合条件,可以使用本文提供的access.sql和access_report.sql。这两个脚本是著名的Oracle专家 Burleson写的,你也可以在读懂了情况下根据实际情况调整一下脚本。对于索引,可以通过ALTER INDEX indexname STORAGE(BUFFER_POOL KEEP)来钉在KEEP池中。
将表定在KEEP池中需要做一些准备工作。对于ORACLE9i 需要设置DB_KEEP_CACHE_SIZE,对于8i,需要设置buffer_pool_keep。在8i中,还要修改db_block_lru_latches,该参数默认是1,无法使用buffer_pool_keep。该参数应该比2*3*CPU数量少,但是要大于1,才能设置DB_KEEP_CACHE_BUFFER。buffer_pool_keep从db_block_buffers中分配,因此也要小于db_block_buffers。设置好这些参数后,就可以把常用对象永久钉在内存里。
论坛徽章:0
回复 #4 〇〇 的帖子
SQL& show parameter db_block_
NAME& && && && && && && && && && && &TYPE& && &&&VALUE
------------------------------------ ----------- ------------------------------
db_block_buffers& && && && && && && &integer& &&&0
论坛徽章:86
你buffer_pool_keep设置的多少?也就是你的KEEP池有多大?能不能放下这个结果的BLOCK?
论坛徽章:0
谢谢各位!
问题没解决,很多概念不懂,之前都是碰到什么问题直接百度,以至于学的东西比较零散,没有系统的概念,想找本书好好学学
论坛徽章:37
show parameter buffer_pool_keep
论坛徽章:37
对于放入KEEP POOL中的表数据,要么全表放入,要么全表都不放入,不会只放入一部分数据。如果你buffer_pool_keep不能全部放入这张表,设置了也没用。
itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有    
 北京市公安局海淀分局网监中心备案编号:10 广播电视节目制作经营许可证:编号(京)字第1149号博主最新文章
博主热门文章
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)查看: 11649|回复: 25
如何查看ORACLE把哪些表缓存表到内存了
论坛徽章:12
现在想查看一下哪些表已经缓存再BUFFER中了,有什么SQL语句可以使用吗
论坛徽章:57
SQL& show user
User is &SYS&
SQL& select owner,object_id from dba_objects where object_name='A';
OWNER& && && && && && && && && &OBJECT_ID
------------------------------ ----------
ROME& && && && && && && && && && &&&60026
SQL& select count(*) from x$bh where obj=60026;
&&COUNT(*)
----------
& && && &0
SQL& select * from rome.a;
& && && && && && &ID
--------------------
& && && && &&&10.100
& && && && &&&10.110
& && && && &&&10.111
SQL& select count(*) from x$bh where obj=60026;
&&COUNT(*)
----------
& && && &6
SQL& select count(*) from x$bh where obj=60026 and state=1;
&&COUNT(*)
----------
& && && &6
SQL& alter system flush buffer_
System altered
SQL& select count(*) from x$bh where obj=60026 and state=1;
&&COUNT(*)
----------
& && && &0
SQL& select * from rome.a;
& && && && && && &ID
--------------------
& && && && &&&10.100
& && && && &&&10.110
& && && && &&&10.111
SQL& select count(*) from x$bh where obj=60026 and state=1;
&&COUNT(*)
----------
& && && &6
如果有兴趣可以看一下执行计划在cache和no cache情况下物理读的变化。
论坛徽章:4
select d_o.owner, d_o.object_name, object_type, o.buffers, o.avg_touches
&&from (select obj object, count(1) buffers, avg(tch) avg_touches
& && && & from x$bh
& && && &group by obj) o,
& && & dba_objects d_o
where o.object = d_o.data_object_id
order by owner, object_name
论坛徽章:33
最初由 zhouwf0726 发布
[B]SQL& show user
User is &SYS&
SQL& select owner,object_id from dba_objects where object_name='A';
OWNER& && && && && && && && && &OBJECT_ID
------------------------------ ----------
ROME& && && && && && && && && && &&&60026
SQL& select count(*) from x$bh where obj=60026;
&&COUNT(*)
----------
& && && &0
SQL& select * from rome.a;
& && && && && && &ID
--------------------
& && && && &&&10.100
& && && && &&&10.110
& && && && &&&10.111
SQL& select count(*) from x$bh where obj=60026;
&&COUNT(*)
----------
& && && &6
SQL& select count(*) from x$bh where obj=60026 and state=1;
&&COUNT(*)
----------
& && && &6
SQL& alter system flush buffer_
System altered
SQL& select count(*) from x$bh where obj=60026 and state=1;
&&COUNT(*)
----------
& && && &0
SQL& select * from rome.a;
& && && && && && &ID
--------------------
& && && && &&&10.100
& && && && &&&10.110
& && && && &&&10.111
SQL& select count(*) from x$bh where obj=60026 and state=1;
&&COUNT(*)
----------
& && && &6
如果有兴趣可以看一下执行计划在cache和no cache情况下物理读的变化。 [/B]
state字段代表什么意思??
论坛徽章:12
我的意思是如何查看哪些表是使用了KEEP池.
论坛徽章:12
比如,我吧TEST表放到KEEP池中,那么后面通过哪个语句可以看到这个表在KEEP池中.
Create Table test(code Varchar2(10),Name Varchar2(10))
alter table test storage (buffer_pool keep);
论坛徽章:12
zhouwf0726的ORACLE版本是多少哟,我的怎么输入flush要出错.
SQL& alter system flush buffer_
alter system flush buffer_cache
ORA-02000: 缺少SHARED_POOL关键字
论坛徽章:4
那就来个全的:
select decode(wbpd.bp_id,
& && && && &&&1,'keep',
& && && && &&&2,'recycle',
& && && && &&&3,'default',
& && && && &&&4,'2k pool',
& && && && &&&5,'4k pool',
& && && && &&&6,'8k pool',
& && && && &&&7,'16k pool',
& && && && &&&8,'32k pool',
& && && && &&&'unknown') pool,
& && & bh.owner,
& && & bh.object_name object_name,
& && & count(1) numOfBuffers
&&from x$kcbwds wds,
& && & x$kcbwbpd wbpd,
& && & (select set_ds, x.addr, o.name object_name, u.name owner
& && && & from sys.obj$ o, sys.user$ u, x$bh x
& && && &where o.owner# = u.user#
& && && &&&and o.dataobj# = x.obj
& && && &&&and x.state != 0
& && && &&&and o.owner# != 0
& && && & ) bh
where wds.set_id &= wbpd.bp_lo_sid
& &and wds.set_id &= wbpd.bp_hi_sid
& &and wbpd.bp_size != 0
& &and wds.addr = bh.set_ds
group by decode(wbpd.bp_id,
& && && && && &&&1,'keep',
& && && && && &&&2,'recycle',
& && && && && &&&3,'default',
& && && && && &&&4,'2k pool',
& && && && && &&&5,'4k pool',
& && && && && &&&6,'8k pool',
& && && && && &&&7,'16k pool',
& && && && && &&&8,'32k pool',
& && && && && &&&'unknown'),
& && && & bh.owner,
& && && & bh.object_name
order by 1, 4, 3, 2
论坛徽章:12
下面是结果,也没有看到呀.
default& & & & ODM& & & & AQ$_DMS_QUEUE_TABLE_T& & & & 1
default& & & & QS_CBADM& & & & AQ$_QS_CBADM_ORDERS_SQTAB_T& & & & 1
default& & & & QS& & & & AQ$_QS_ORDERS_SQTAB_T& & & & 1
default& & & & SYSTEM& & & & AQ$_QUEUE_TABLES_PRIMARY& & & & 1
default& & & & SYSTEM& & & & DEF$_AQCALL& & & & 1
default& & & & SYSTEM& & & & DEF$_AQERROR& & & & 1
default& & & & QS& & & & SYS_IOT_TOP_29877& & & & 1
default& & & & QS_ES& & & & SYS_IOT_TOP_29921& & & & 1
default& & & & QS_ES& & & & SYS_IOT_TOP_29939& & & & 1
default& & & & QS_WS& & & & SYS_IOT_TOP_29966& & & & 1
default& & & & QS_WS& & & & SYS_IOT_TOP_29984& & & & 1
default& & & & QS_OS& & & & SYS_IOT_TOP_30011& & & & 1
default& & & & QS_OS& & & & SYS_IOT_TOP_30029& & & & 1
default& & & & QS_CBADM& & & & SYS_IOT_TOP_30062& & & & 1
default& & & & QS_CS& & & & SYS_IOT_TOP_30086& & & & 1
default& & & & SYSTEM& & & & AQ$_QUEUES& & & & 2
default& & & & SYSTEM& & & & AQ$_QUEUE_TABLES& & & & 7
招聘 : 论坛徽章:10
user_tables-&buffer_pool
itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有    
 北京市公安局海淀分局网监中心备案编号:10 广播电视节目制作经营许可证:编号(京)字第1149号

我要回帖

更多关于 oracle 内存设置 的文章

 

随机推荐