深入浅出cache buffer和shared pool记载02
当进程需要读取数据到buffer cache或cache buffer根据LRU算法进行管理,就会扫描LRU list获取可用buffer或更改buffer状态,此时在搜索过程中必须获取latch,锁定内存结构(latch是oracle的一种串行锁机制,保护共享内存结构),防止并发访问顺坏内存中的数据。SQL> col name for a25SQL> select addr,latch#,name,hash,gets,misses,immediate_gets,immediate_misses from v$latch where name='cache buffers lru chain'; ADDR LATCH# NAME HASH GETS MISSES IMMEDIATE_GETS IMMEDIATE
深入浅出buffer cache和shared pool记载01
开始静下心来好好看书了,再次翻看egyle的深入浅出的buffer cache于shared pool原理,看得够呛,eygle剖析得很有点深,记载以下书中的有些要点和个人理解! Sga的buffer cache对oracle体系有些了解的都了解一些,用户进程递交请求给服务器进程,服务器进程不会在disk磁盘上直接获取数据都会构造一个buffer cache的内存机构来缓存数据,数据的修改 读取都是在buffer cache获取然后写给磁盘,同样在大多数os上也是采取的缓存机制,自己最近也在看鸟哥的linux私房菜,文件系统的e2和e3正是采用的缓存机制交换数据,而且e3中还采用了oracle中的
10g windows安装db出现ora-24324
今早在windows下10G重新安装oracle数据库,往常安装数据库一般很顺利,因为是windows上不需要设置环境变量,内核参数,还有文件夹权限设置等相比linux上简单太多,不过这次貌似出现了一点小插曲,安装时候出现下列几个错误!oracle_home/cfgtoollogs/dbca有相应的dbca创建创建db的logORA-24324: 未初始化服务句柄ORA-24323: 不允许此值ORA-03113: 通信通道的文件结束这个错误自己在尝试在测试库用隐含参数_allow_resetlogs_corruption=true略去一致性然后alter database open resetlogs无法打开数据库时报错上述错误,第一次发现首次安装数
空表bytes依然很大的一些想法
最近对于学习有个新的领悟,并不是所谓的技术上面的,更多知识习惯上和心路上的体会,以前每天看完oracle都腾不出时间来看看关于linux的东西,现在自己在工作中要每天抽出点时间学习linux,然后个人发觉学习要一直进行下去,如果你中途有一段时间脱离了这个状态,你再想进入就会很花时间而且很需要毅力,自己也一直再改进自己的学习方法和习惯,也希望大家能找到适合自己的高效方法!还是说一下技术的话题吧! 还是一篇pub的帖子http://www.itpub.net/thread-1519595-1-1.html 说到了一个没有数据的表却占有40G的空间,当时由于以前对于hw
%rowtype和数组的基本记载
这里提一点关于oracle开发上面的一点小知识细节,由于自己对于oracle开发上面相对于管理来说比较弱!不管是开发还是管理在日常管理中都是非常重要的!SQL> desc jj_one;Name Type Nullable Default Comments ---- --------- -------- ------- -------- ID NUMBER(5) Y NAME CHAR(40) Y SQL> declare 2 v_ab jj_one%rowtype; 3 begin 4 select * into v_ab from jj_one where rownum=1; 5 insert into jj_one values v_ab; 6 end;7 /定义定量的方式A%rowtype,这
noarchivelog下rman做的冷备份ora-19602和深入浅出pga的一些摘要-02
今早pub上和一个帖子是关于noarchivelog模式下rman做的冷备份,总是出现了noarchivelog下无法备份,从冷备份的原理来说:冷备份与数据库归档模式无关,刚好自己测试也可以通过ora-19602: cannot backup or copy active file in NOARCHIVELOG mode *Cause: You tried to copy or backup a file that was not closed cleanly, and the database was in NOARCHIVELOG mode. This is not allowed because when restored, the file will require redo application before it is usable, and redo is not currentl
深入浅出sga和pga章节记载-01
今早重新又翻看了eygle的深入浅出的关于sga和pga的章节,对于sga和pga如何设置可以说一直没有什么定性的标准,这里先说一下关于自动管sga和pga管理中参考的两个视图v$sga_target_advice和v$pga_target_adviceSQL> desc v$sga_target_advice;Name Type Nullable Default Comments ------------------- ------ -------- ------- -------- SGA_SIZE NUMBER Y SGA_SIZE_FACTOR NUMBER Y 此表中的sga_size和当前parameter中sga大小比值ESTD_DB_TIME NUMBER Y
用归档实现无备份下的数据文件恢复和最近学习记载
最近这半个月来自己的学习效率太低了,接下来要好好调整自己,按着自己的习惯去学习,然后最大的还是培养的linux的兴趣,linux上自己虽然已经坚持了快两个月了。但是自己觉得还是完全没有达到自己对oracle的学习习惯,遇到了问题和精彩的知识点总是避开,那是不对的,linux也有丰富的内部世界,同样是一个值得学习的领域,虽然学习我们不可能面面俱到,但是就自己现在对linux的掌握还远远不够,剩下来的三个多月的时间里自己真应该好好抓紧。好了,扯点技术的吧!晚上看pub的一个网友提到了删除了数据文件无备份,但是有归档是否可以恢复.
丢失undo文件和隐含参数_allow_resetlogs_corruption恢复
今早的pub的一个帖子引起了自己的兴趣,说到是错误删除undo表空间数据文件无法打开,此时如果我们有恢复,那直接restore然后recover就行了!模拟下不用备份集恢复的情况吧!关闭数据库在os上删除数据文件13SQL> shutdown abort;数据库已经关闭。已经卸载数据库。ORACLE 例程已经关闭。SQL> startup;ORA-32004: obsolete and/or deprecated parameter(s) specifiedORACLE 例程已经启动。Total System Global Area 524288000 bytesFixed Size 1249968 bytesVariable Size 390073680 bytesDatabase Buf
游标参数shared_cached_cursors和软软解析
继续整理关于游标 解析 绑定变量。这里说下几个参数,里面内容有点深,自己也是迷迷糊糊的!Oracle 10G下SQL> show parameter cursor; NAME TYPE VALUEcursor_sharing string EXACTcursor_space_for_time boolean FALSEopen_cursors integer 300session_cached_cursors integer 20session_cached_cursors:一个sql语句会首先在uga中缓存区存放与之关联的游标,然后打开创建游标 解析游标 执行游
父游标 子游标和软硬解析记载-02
继续整理关于父游标 子游标和软硬解析的东东.根据前篇blog的http://dotaddjj.itpub.net/post/43172/525234的关于父子游标的整理,这里再次补充一下。父游标和v$sqlarea信息相关联,而子游标和v$sql信息相关联。Shared cursor而共享游标shared cursor是在sql语句在游标解析阶段生成获得,位于library cache中的sql语句或匿名的pl/sql块,如果library cache的父游标和子游标能够被共享,此时则为共享游标。父游标能够共享则为共享父游标,子游标共享则是共享的子游标。Session cursorOracle为session分配缓冲区存放sql语句执行结果,用户通过
v$sql v$sqlarea和父游标 子游标记载01
这个双休去了常州,blog好久没更新了,又偷懒了。今早群里在聊绑定变量,其实对于绑定变量自己也是糊里糊涂的,对于实质的还远远理解不够,pub的老谢给了我们一篇帖子,细细读下去还是受益匪浅啊。http://www.itpub.net/thread-965919-1-1.html在oltp事务处理系统中,绑定变量和索引可以说是这个系统中比较重要的两部分,对于索引自己慢慢也有了一定的理解,在索引那些事中自己还是整理了一些心得的。从老谢的帖子中让自己以前的有些错误理解纠正了,记得看杨老大的blog中关于分页查询的分析也让自己恍然大悟,(看过老杨大的物化视图,大
深入浅出-检查点scn
最近又开始重新查看eygle的深入浅出了,大师的书籍确实值得一读再读,这里摘要下大师的第一张数据库启动关闭的一些个人觉得需要细细理解的知识点。checkponit cnt在open状态检验我们说过:当我们使用file_hdrs事件来转储数据文件头信息时,Oracle会转储两部分信息,一部分来自控制文件,一部分来自数据文件,在数据库启动过程中,这两部分信息要用来进行启动验证。在数据库open的过程中,Oracle要进行检查中包含以下两个过程:第一次检查数据文件头中的Checkpoint cnt是否与对应控制文件中的Checkpoint cnt一致.如果相等,进行第二次检查.第二
exp和expdp排除部分表
两种导出工具exp和expdp,数据磊工具确实好用,不管是在性能还是在功能上都比exp等导出工具强大,不过需要在服务器端运行,利用oracle内部的队列和任务job机制,听到很多网友说到如何去除部分表或者部分对象导出,这个如果在expdp中可以很简单的实现。Expdp ashuang/ashuang@orcl dumpfile=test01.dmp logfile=test01.log exclude=trigger,table:”in(‘SF01’,’SF02’)”总是出现了所谓的ora-39001参数值无效ora-39071 exclude值的格式错误找了半天还是找不出这个格式哪里写错了,网上收索了下又是该死的转义字符,记得以前写query时就是
无事瞎扯
看完4篇杨老大的分页查询,发现有些东西理解比以前更清晰了,也更觉得自己多么的小菜鸟了,别浮夸,自己还很渺小,只有多做多练,多看。泡pub 写bolg 看document希望能早点带领自己走入oracle的精彩的内部世界,让学习oracle成为一种快乐,习惯![@more@]
local 索引和global 索引记载
最近发觉自己有个一直很不好的习惯,上pub 看问题碰见自己不会的总是避开,而且喜欢逃避问题,虽然自己现在还没有碰见,但是不代表以后不会遇见。而且有些问题其实并不是去寻求绝对的对错,在思考的过程中真的要养成自己会思考,会用实际的测试来验证某个结论,会把以前的不懂联合起来,然后慢慢地把以前的知识也有更深的理解,成为一个会学习的学习者!全局索引和本地索引:全局索引以整个表的数据为对象创建索引,其实也就是脱离了表分区键值,只考虑索引键值,索引中的索引条目可能有相同的键值但是来自不同的分区。 创建一张分区表Cre
redo的等待log file sync和log file parallel write和redo size设置
今早上pub,看到pub的一篇帖子中提到了如何设置redo log的大小,利用视图v$log_history可以查看redo的切换的具体信息来判断。Select round(first_time,’DD’),thead#,count(sequence#) from v$Log_history group round(first_time,’DD’),thread#order by 1,2主要是通过每天的日志切换量来判断。select a.recid,a.first_time,b.first_time last_time,(b.first_time-a.first_time)*24 redo_replacefrom v$log_history a,v$log_history bwhere a.recid=b.recid-1order by a.first_time desc这个sql可以查出两个日志切换时间间隔,单位时
有关性能调整的查询和pub上的一个sql调优!
查看数据字典命中率Select 1-sum(gets)/sum(getmisses) from v$rowcache数据字典命中率应该在95%以上,如果命中率过低要考虑增加shared_pool,简单介绍一下v$rowcache数据字典视图的column:Parameter 缓存名Count:缓存项总数Gets:请求总数Getmisses:请求失败次数Scans:扫描请求数Scanmisses:扫描请求失败数Usage:包含有效数据的缓存项数查看共享池中sql语句或pl/sql命中率select sum(gethits)/sum(gets),(sum(pinhits)-sum(reloads))/sum(pins) from v$librarycache查看buffer命中率Select name,1-physical_reads/(db_block_gets+con
clustering factor索引聚簇因子和执行计划
今天在pub上看见网友提到了关于索引的顺序读,谈谈个人自己对索引的理解吧!走索引(这里的索引不包括全索引扫描和全索引快速扫描)和全表扫描一直是我们这些初学者对cbo执行计划的迷糊地方,何时走索引,为什么不走索引,群里的朋友经常问到这些问题,其实自己之前的blog也多多少少提到了索引的一些知识点,自己多索引的理解也是从最开始只知道索引效率高到现在慢慢知道clustering factor,结构,存储数据的原理,如何查找数据。简要摘要一下clustering factor的理解。Clutering factor索引聚簇因子,也就是表中row存储的顺序,clusterin
性能调整记载02
接着对oracle性能调整记载(二)Disk_asynch_io,dbwr_io_slaves和异步I/O异步I/O是线程发送一个I/O请求到内核,然后就可以处理其他的事情了,内核完成I/O请求后,将会通知线程I/O操作完成。同步I/O是线程发送一个I/O请求到内核就进入等待状态,知道I/O操作完成后才继续执行别的事情。Dbwr_io_slaves主要用于模拟异步环境,DB_WRITER_PROCESSES,和DBWR_IO_SLAVES是有区别的。DB_WRITER_PROCESSES生成多个DBWR进程;而DBWR_IO_SLAVES生效时,只有一个DBWR进程,仅当系统需要时,才生成多个DBWR从属进程。(默认dbwr_io_slaves为0,可见一般