一个男人该有的内涵和一个女人该有的内涵
一个男人该有的内涵: 一个男人,一定要有一个男人的样子,利利索索、痛痛快快,千万不要扭扭捏捏、婆婆妈妈。 一个男人,要懂得保护女人和尊重女人,尤其是后者,千万不要强迫她做她不愿意的事情,不要打女人,无论她伤过你还是骗过你…… 一个男人,要说话算话,吐出去的东西再咽回来,自己都...
OracleDBA技术分类
OracleDBA技术的大类[@more@]1.ORACLE基本架构,基本原理,基本知识,基本手段,基本经验。2.TroubleShooting3.PerformanceStunning4.Backup&Restore5.Internal6.HA(RAC&DataGuard)7.Oracle高级工具
Linux ORACLE RAC 10201升级10203
Linux ORACLE RAC 10201升级10203[@more@]一.准备工作1.有效备份作好对ORACLE软件和数据库的物理备份.2.检查无效对象。3.确保SYSTEM的空闲空间在50M以上。4. SHARED_POOL_SIZE 和 JAVA_POOL_SIZE 至少为150Mb。5.关闭数据库,关闭oracle进程。6.备份相关配置文件二.备份TSTZ下载并解压Patch 5601428,应用该Patch(应用该Patch不需要关闭数据库)参考399832.1。$unzip p5601428_10201_GENERIC.zip 5601428$cd 5601428$opatch apply$sqlplus ‘/as sysdba’SQL>@?/rdbms/admin/utltzuv2.sqlSQL>host$cd $ORACLE_HOME /oracore/zonei
DBA
知识的海洋是无限广无限深的,穷其一生,你也不可能学全,很有可能你所学到的所掌握的只是冰山一角。更何况现在的IT技术是日新月异!所以你要挑重要的学挑需要的学。何谓重要?何为需要?这个会因人而异,但有一点绝对是共同的,那就是基础理论知识和基本实践能力。实践是检验能力的惟一标准。[@more@]看了很多书,处理了很多问题。当让自己说具体的哪些书名,说自己处理的哪些问题,还真不是轻易说出来。这个还要总结一下,把思路理一下,把经典案例整理一下。
ORACLE大师THOMAS经典之五共享与专一模式
本文由一木译编著请您多指正![@more@]我们会发现用得最多的连接情况是通过TCP/IP网络的连接。在这种情况里,客户端在一台机器上,服务在另一台机器上,它们之间通过TCP/IP网络进行连接。连接从客户端开始,客户端通过ORACLE客户端软件发送请求到数据库里。TNS是透明网络层(Transparent Network Substrate)简称,且是ORACLE客户端安装过程中已被打包一起安装了,这是作为ORACLE客户端到远程连接。TNS连接字符串能告诉ORACLE软件怎样连到远程的数据库。通常在你机器运行的客户端软件会去读TNSNAMES.ORA文件,而这个字符配置文件通常在$ORACL
ORACLE大师THOMAS经典之四共享与专一模式
本文由一木译编著请您多指正![@more@]在一节里,我们要学习一下客户端请求被ORACLE服务服务时两种最普通方式:专一模式和共享模式后面的机制。我们将要学习在客户端和服务端建立连接时会发生些什么,以致我们能登录到数据库并在库里工作。最后,我们要简短了解一下怎么建立TCP/IP连接(TCP/IP是通过网络联接到ORACLE的所有网络协议中应用得最广泛的协议)和在服务器上的监听进程是怎么回事。监听是用作建立客户端到我们服务器的物理联接的,但是在专一模式或共享模式下是工作方式是不同的。会话就是在连接的基础上有用户的sql在跑。我们可以
ORACLE大师THOMAS经典之三ORACLE之windows与unix
本文由一木译编著请您多指正![@more@]ORACLE有一大块称作SGA的内存,它将作如下举例的工作:管理所有进程需要访问的许多内部数据结构。缓冲从磁盘来的数据,缓存被写到磁盘前重做数据。保持已分析的SQL执行计划等。ORACLE的一些进程跟系统全局区紧密相关,但它们相关的机制因为操作系统不同而不同。在UNIX环境里,他们将与被操作系统分配的一大块共享内存段物理相关,这一大块内存段可以被很多进程并发访问使用。但在WINDOWS平台上,这些进程只简单使用C请求和malloc()来分配内存。因为它们实际上是一个进程的线程,同时共享同一个虚拟内存
ORACLE大师THOMAS经典之二数据库与实例
本文由一木译编著请您多指正![@more@]数据库和实例这两个术语放在ORACLE环境里,会引起很多误解。在ORACLE术语中,它们的定义如下:数据库:物理操作系统文件或磁盘的集合。当使用ORACLE10G的自动存储管理或裸设备分区时,数据库在操作系统上没有表现为单独分开的文件,但是定义还是一样的。实例:ORACLE后台进程或线程及共享内存区域的集合,这些共享内存区域是在一台机器上跑的进程或线程间共享内存区域。一个数据库实例可以离开磁盘存储空间而存在,尽管这个实例存对这个世界没有什么作用,但它的确可以离开数据库单独存在。经这样思考
ORACLE大师THOMAS经典之一引子
本文由一木译编著请您多指正![@more@]ORACLE数据库有非常好的兼容性。它可以在每一个妥当的平台上使用,从Windows到Unix,从PC机再到大型机。所以,ORACLE的物理结构在不同操作系统上看起来肯定是不同的。如在UNIX平台上,你能看到ORACLE由不同的操作进程来执行,这些操作进程每个进程都有惟一的主要功能。在UNIX平台上,ORACLE是作为一个多进程的集合来执行的,但是在Windows平台上,这个结构是不妥当或不能很好工作(如果这样会使ORACLE性能更慢并缺乏扩容性)。在Windows平台上,ORACLE是通过单进程多线程来实现的。而在跑OS/390或z/OS的
ORACLE问题集
问题一ORACLE9i以后,出现多类型多大小buffer cache.除了default cache以外,还有recycle keep buffer cache.除了标准块buffer外,还支持多块2-32k buffer cache.这些buffer cache跟default buffer cache的工作原理是不是一样?有什么区别?问题二一个数据库的buffer cache只有一个ckpt queue,有多个lru list dirty list,什么时候,谁把dirty buffer从dirty list移到ckpt queue?问题三一个SGA自动管理的问题,如果系统进行了自动调整,调整结果设置存放在系统哪里?下次重启数据库会从那里读SGA配置信息?问题四常见latch周期问题。什么样情
浅谈10G SGA自动管理
SGA自动管理一些简单实用知识[@more@]SGA自动管理概述1.为什么SGA自动管理?SGA自动管理可以避免手工管理的局限和不便,简化数据库管理工作。2.如何在SGA自动管理与手工管理之间切换?通过设置sga_target为零和非零值,可以完成手工和自动管理切换。3.常用SGA参数问题:sga_max_size 表示系统可以分配给SGA最大内存大小。如果这个参数设置小于SGA各组件大小的和(包括自动管理和手工管理,明式设置和隐含设置),则系统会忽略这个参数设置。但在实例启动后,查询这个参数的值自动改为系统实际使用的值。在这种情况下,不能再动态加大sga_targ
浅论ORA-01555
ORA-01555是ORACLE中一个经典报错。这个在错误相对在新开发平台或刚刚更改的应用中更为常见,如果在一个日常生产系统中经常出现ORA-01555报错,这将是一个代价非常大的报错,绝对是性能杀手或计算机资源杀手。所以如果日常生产系统经常出现这个问题,就要考虑优化相关SQL代码和优化数据库设置。ORA-01555报错跟一致性读和事务一致性有很大关系。而ORACLE的一致性读是优胜于当前其它数据库一个重要特征。ORA-01555报错产生根本原因1.一致性读所需要的回滚段里的相关undo信息被覆盖或undo tablespace 空间被回收而导致这些undo信息不可用。2
latch分类
从oracle 9201起,oracle根据不同的spin_count对latch进行了分类。为什么要进行这样的分类了?因为以前版本中,改一个latch的spin_count,会牵一发而动全身,让所有latch的spin_count都被同样地改变了。这种做法明显不太具有实际应用的可行性。所以oracle根据不同的spin_count对latch分成了8类,说明你可以把系统中的latch按它们的不同spin_count分成8类,但它们的系统默认值spin_count都是16000。这样做有什么应用前景?可以根据系统自身资源使用情况,针对不同latch不同资源使用特点,优化各个latch的spin_count.如某个latch的spin成功率
latch的层次概念
latch的层次概念为什么要有这个层次概念?大家都知道oracle锁有一个死锁问题,那么latch了?有没有可能两个进程都持有对方正在等待的latch而形成死锁现象?oracle的latch没有这个现象,为什么?就因为有层次的概念,有效的防止latch死锁现象。那么是如何防止的了?那就要说oracle是怎么用这个level的。关层次oracle有两个规则分别对应不同的latch请求模式:一个是在愿意等待模式下,一个进程请求的latch的level必须高于这个进程现有持有的latch level。一个是在不愿意等待模式下,一个进程不能出现持有两个以上同一层次上的latch的情况。这
Enqueue&Lock and Latch
Enqueue&Lock and Latch Enqueue 和Latch的层次是不一样的,它们不是类似物,不具可比性。而latch 同lock是一个层面的。而enqueue是oracle系统内一个队列,一个等待某个锁的队列,保证对这个锁请求的有序性,FIFO。所以主要讲一下Latch 和Lock1.保护对象不同,一个保护内存结构,一个保护对象结构。2.保护方法不同,一个无序竞争,一个是有序竞争。3.请求模式不同,前者只有二种,后者多达6种。4.可见范围不同,latch保护的是SGA里面的东东,所以当然与实例有密不可分的关系。某个实例里的latch跟其它的实例不搭界的。而lock就不同了,
Free buffer waits
Free buffer waits顾名思义就是data buffer里没有空闲可用buffer,使得当前会话当前进程处于Free buffer wiats等待事件。而oracle这时在做的是DBWR写脏块,清理buffer.为什么会产生这个等待事件?很直接的一个反应是data buffer不够大。这是可能原因之一:原因还有其它如:1.DBWn进程写速度不够快,或触发不够勤快,或有没有使用足够DBWn进程。2.系统本身I/O速度比较慢。3.延迟块清除。4.SQL语句太滥。这么多原因如何判断具体是那个原因导致这个等待事件?如果Buffer cache size不够大。有可能所有buffer都在使用中,且没有dirty buffer可写
我为什么要写等待事件的学习笔记
写等待事件的学习笔记写博客时我是诚惶诚恐!因为一来,我写的学习笔记不是在自己的私人笔记本里,而是在公开blog上,(虽然不一定会有看众,但毕竟是很多人都有可能看到!)一提到公开,公布于众,让大众来查看,评判,我便惶恐起来。厚积薄发的道理我还是懂的,且深以为然。所以按我的性子,即使我是TOM那样的大师,如果要把自己对oracle的一些看法和理解公布于众,我也会三思而行,宜少不多宜精不滥,能省则省。二来我毕竟不是什么大师,不是高手,只是一个中级菜鸟,且我深信山外有山楼外有楼,个人有能力是很有限的,更何况我这个庸人!那我
Buffer busy waits
Buffer busy waits 等待事件表示当前在等待中的会话想操作的buffer 正在被别的会话占有使用或正在被别的会话读入到buffer中。所以要等待别的会话使用完后释放这个buffer。产生这个等待事件的原因很多。我就挑二个主要和常见的原因讲述我的见解。第一种数据块在buffer中,被其它会话占有进行DML操作,导致后面的会话大量buffer busy waits等待。解决办法1.减少每一个块的row数。a.修改pctfree参数.重建对象,把pctfree参数值增加,注:增加后与pctused的差不要太近,如果这个差太小会造成free_list的竟争。如把pctfree设为49 pctused为50,
等待事件之log篇
Log buffer space 表示会话正在进行把UGA中redo entries 复制到log buffer中,但是log buffer里没有可用的空间,(在当前设置下lgwr写速度跟不上产生速度过快的日志量)所以等待log buffer中的可用空间。这时系统等待log buffer清理,以便释放buffer。也就是等待触发lgwr进行redo entries 写操作的事件。可能原因是1。log buffer size 不妥当2。lgwr写性能有问题,一些原因导致写的速度比较慢。解决办法1。加大log buffer。注没必要把log buffer设的太大,具体size看系统是不是很忙。一般系统不是特大特忙的系统1M左右或以这个基础上稍微调整