library cache pin和lock的区别

 
     这个问题在面试中曾被问倒过,网络上能找到的资料也比较少,后来和yyxup,久游的一个puber讨论了半天,总算搞懂了一点 
     library cache object在内存中是分成2部分来存储的,第一部分是头信息,叫做handle,头信息里保存了指向具体保存该对象的地址,这个叫做heap.一个对象可能分为很多个heap要访问或者修改一个对象,首先要锁住其头信息,也就是handle,以防止其他session同时访问或者修改该对象,这是library cache lock要做的事情而当实际的访问或者修改对象的内容时,则要根据头信息去访问或者修改具体的heap的,那么也要防止其他session同时访问或者修改这些heap,所以对heap需要加library cache pin来保护(Nigoo的描述)
 
下面是我这一年来比较常用的几个脚本,基本上处理问题就靠这些sql混了,现记录下来
1.查看用户的session信息    
select * from v$session where username='ETL'
2.查看sid所对应的spid   
select se.SID,se.SERIAL#,pr.SPID from v$session se,v$process pr   where pr.ADDR=se.PADDR and se.SID=71
3.查看sid相应的执行sql
SELECT   sql_text    FROM v$sqltext a  WHERE a.hash_value = (SELECT sql_hash_value   FROM v$session b   WHERE b.SID = '48')  ORDER BY piece ASC
4.查看spid相应执行sql
SELECT /*+ ORDERED */ sql_text   FROM v$sqltext a  WHERE (a.hash_value, a.address) IN
         (SELECT DECODE(sql_hash_value, 0, prev_hash_value, sql_hash_value),
               DECODE(sql_hash_value, 0, prev_sql_addr, sql_address)
          FROM v$session b
         WHERE b.paddr =
               (SELECT addr FROM v$process c WHERE c.spid = '15125'))
 ORDER BY piece ASC
5.查看block所在的表空间
SELECT tablespace_name, segment_type, owner, segment_name   FROM dba_extents    WHERE file_id = 44  and 35245 between block_id AND block_id + blocks
6.产生批处理可以执行文件
begin
for i in -60..-1 loop
dbms_output.put_line('exec proc_tbl_sms_order_from(sysdate'||i||') ;');
end loop;
end ;
7.ALTER TABLE tbl_mt_succ DROP partition TBL_MT_SUCC_2006P9; --删除表分区
ALTER TABLE tbl_mt_succ ADD PARTITION TBL_MT_SUCC_2008P3 VALUES LESS THAN (TO_DATE('2008-04-01','YYYY-MM-DD') ) ; --增加分区
8.事务的uno
select used_ublk   from v$transaction   where addr = (select taddr   from v$session   where sid = (select sid from v$mystat where rownum = 1))
9.事务的redo
select my.SID, st.NAME, my.VALUE   from v$mystat my, v$statname st   where st.STATISTIC# = my.STATISTIC#  and st.NAME = 'redo size'
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
在这个情况下,"impdp library cache pin"是指在使用impdp命令导入数据时,出现了"library cache pin"等待事件。\[2\] "library cache pin"事件是用来管理library cache的并发访问的,当一个session需要修改或检测一个object时,它必须在锁住后取得一个pin。\[2\] 在这个具体的案例中,当执行impdp命令导入数据时,发现所有的DW会话都在等待"library cache lock",并且其中一个session阻塞了自身,形成了一个死锁。\[3\] 这个问题的原因是之前有一次impdp中途终止,再次执行impdp时使用了TABLE_EXISTS_ACTION=REPLACE选项,但是在创建一个TYPE时,另一个TYPE依赖于它,导致无法替换这个TYPE,从而引发了死锁。\[3\] 解决这个问题的办法是先将相关的SCHEMA B删除,然后重新执行impdp命令。这样可以解除死锁并成功导入数据。\[3\] #### 引用[.reference_title] - *1* [一次library cache pin故障的解决过程](https://blog.csdn.net/conglueh193642/article/details/100469095)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [解决library cache pin等待事件](https://blog.csdn.net/weixin_28996271/article/details/116441997)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [impdp时卡住,DW等待library cache lock](https://blog.csdn.net/zhou1862324/article/details/46746561)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值