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,可见一般
性能调整篇01
最近在看某某大牛的性能调整篇,结合个人理解和熟悉陆续会整理一系列的性能调整方面的理解。接触oracle大半年了,32位oracle和64位oracle,最近才摸清这缘由。32位系统肯定只能安装32位的oracle,不过32位的oracle使用的内存有限(大概只有1.7G),就是即使再多的物理内存也没办法真正使用,这在大型数据库中的性能扩展可想而知。64位系统安装了64位oracle,oracle使用的内存也没有上限,所以企业一般都是64位的吧!锁定内存到物理内存sga_lock:说到了内存,这些天看oracle-concepts有个参数sga_lock的主要适用于锁定oracle所使用的内存存
可传输表空间记载
今天泡pub看到一个网友说到跨平台迁移表空间,把a库的表空间迁移到b库中,往常的可以通过exp和imp或者数据磊工具导入导出,记得在oracle concepts中提到了关于可传输表空间的功能,在oracle 10G中可以跨平台迁移。这里假设a库是源库,b库是目标库select a.platform_name,b.endian_format from v$database a,v$transportable_platform bwhere a.platform_name=b.platform_nameplatform_name endian_format分别在a库和b库这里主要是查看数据库所在的服务器的os上的信息。在oracle 10g的视图Select platform_id,platform_name,endian_forma
profile资源限制基础记载
Profile资源限制Show parameter resource_limit.默认在数据库中resource_limited=false限制了资源限制Alter system set resource_limit=true开启资源限制。一般create profile命令Create profile test01_profile limitSessions_per_user 4 –user并行的最大连接数,当超过这个并行连接数时会出现ORA-02391 exceeded simultaneous SESSIONS_PER_USER limitConnect_time 60 –一个连接session的最长连接时间,超过后会断开,回滚当前事务,单位为分钟。Idle_time 10—一个连接session的最长空闲时间,当超过idle_time时会断开,回滚当前事务
直接加载和并行-02
还是继上次说说并行parallel,首先并行原理是:oracle创建一个进程用于协调并行服务进程之间的信息和任务分配,把一个任务分割成很多小任务分配给并行服务进程,并行进程同时处理各自分配任务,直到任务全部结束,最后协调进程负责将各进程任务合并为最终执行结果返回给用户。并行在OLAP用的比较多,OLAP系统表一般为大表,OLTP上的表很多都以索引访问为主,不过一切都要看实际业务情况,一般如果有多cpu,操作的对象很大开启并行是可以明显提高效率的。一个查询的parallelAlter table tt01 parallel 2;SQL> select count(*) from tt01
直接加载和并行记载-01
不久之前记得做过几个测试关于nologging和append的产生redo的。看并行和直接加载刚好有点需要记载的地方就贴blog上了。直接路径加载将直接绕过buffer cache将数据直接写入磁盘。而且会把数据写入HWM以上的数据块中,所以一般直接路径加载速度上可能比常规加载快。直接路径加载既可以并行 也可以串行,对分区表和普通表都可以。Insert /*+append*/ into tt07 select * from dba_objects当然如果是insert into …values单条插入方式,oracle10G中没有此项功能,网友说到在11G中可以insert /*+append_values*/ into tt07 values( ),不过个人没