标签:通知 自己的 网络 服务器 磁盘 完整 ack 脏数据 wait
这个数据字典表可以查询数据库中所有的对象,通过where中的type列和subtype$可以做过滤,比如通过以下sql可以查询所有用户自创建的表:
select * from SYS.SYSOBJECTS where subtype$ = ‘UTAB‘;
(SELECT * FROM ALL_TABLES;当然也可以通过这个视图查询,类似视图还有all_users/all_views/all_objects等等;)
这两个一样,主要排查数据字典缓冲区的信息
SELECT * FROM V$DB_CACHE
SELECT * FROM V$DICT_CACHE
这两个一样,主要是排查数据字典的所存的系统对象的信息:
select * from V$DICT_CACHE_ITEM where type = ‘TABLE‘;
SELECT * FROM V$DB_OBJECT_CACHE WHERE TYPE = ‘TABLE‘;
select * from v$dm_INI;
select * from V$license; select * from v$version; #数据库服务器版本 select id_code;
很多时候,主备机的lsn因为网络问题会导致不一致,导致的现象就是数据库在执行任何sql时都会不定时的卡顿个几秒或十几秒然后又好了,原因是故障处理备机lsn要追赶主机lsn。在此时需要检查一下两台服务器日志的lsn,可以通过如下方式:
select * from V$RLOG;
观察目前服务器有多少个会话连接,是否已经超过ini参数中max_sessions的限制
select * from v$sessions
观察事务阻塞和死锁;
阻塞:相同数据的并发操作是主因,比如一个事务在操作这个数据时,需要等待另外一个先操作这个数据的事务commit后,才可以成功操作数据不然就一直等待。
select * from v$trx; select * from V$TRXWAIT select * from v$lock; select * from V$DEADLOCK_HISTORY
select * from V$CKPT #当前检查点信息 select * from V$CKPT_HISTORY #历史检查点的信息
检查点lsn和redo日志文件lsn有什么 区别:
检查点的lsn的到了5种情况下才会产生,然后活动事务对数据任何修改(包括rollback,commit语句)都会产生file lsn。
检查点和commit的区别:
所以COMMIT操作就不一定保证事务对DB的修改写到磁盘即脏数据页刷盘,但可以保证commit可以保证日志刷盘。
2、检查点时刻系统将缓冲区中的日志和脏数据页都刷盘
在系统恢复时,那些已经执行了COMMIT操作但修改仍留在内存缓冲区的事务需要做恢复工作,可以直接重做redo日志来恢复。具体原理如下:由于在事务执行时,会在日志中记下事务的开始标记、结束标志以及事务对DB的每一个修改,所以在系统恢复时,直接在热动日志中,通过检查故障点lsn(即系统恢复时启动的当前检查点)与最近一个检查点lsn(即上一个检查点)之间,哪些事务执行了COMMIT操作(这些事务应重做),哪些事务还未结束(这些事务应撤销)。
标签:通知 自己的 网络 服务器 磁盘 完整 ack 脏数据 wait
原文地址:https://www.cnblogs.com/EricShen/p/14637894.html