51放假期间,同事问我一个问题,那就是dependency$被move后,数据库起不来了,虽然是测试环境。 他的环境是10204版本. 自己测试了,跟9i不太一样了,参考了dbsnake的文章,似乎差别很大。如下: [ora10g@killdb ~]$ sqlplus “/as sysdba” SQL*Plus: Release 10.2.0.5.0 – Production on Tue Apr 30 07:07:36 2013 Copyright (c) 1982, 2010, Oracle. All Rights Reserved. Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.5.0 – Production With the Partitioning, OLAP, Data Mining and Real Application Testing options SQL> select index_name from dba_indexes where [...]
落落的sql优化班级确实牛叉,我也试听了1次,学不到不少东西,如果大家有兴趣,可以加他的试听QQ群:179221471 今天抽空做了下关于子查询和谓词推入的实验,我这里通过vm 10gR2环境来模拟展示。 SQL> conn roger/roger Connected. SQL> create table t1 as select * from dba_objects where object_id < 3000; Table created. SQL> create table t2 as select * from dba_objects; Table created. SQL> create index idx_id1_t2 on t2(object_id,owner); Index created. SQL> create index idx_id1_t1 on t1(object_id); Index created. SQL> set autot traceonly exp SQL> [...]
如下是我整理的最新的10.2.0.4+版本的最新psu信息,供大家参考! ++++10.2.0.4 Oracle Database Patch Set Update Unix Comments Includes Cpu 10.2.0.4.1 8576156 Bash 10.2.0.4.0 includes CPU Jul 2009 10.2.0.4.2 8833280 Bash 10.2.0.4.0 includes CPU Oct 2009 10.2.0.4.3 9119284 Bash 10.2.0.4.0 includes CPU Jan 2010 10.2.0.4.4 9352164 Bash 10.2.0.4.0 includes CPU Apr 2010 10.2.0.4.5 9654991 该psu必须基于10.2.0.4.4 includes CPU Jul 2010 10.2.0.4.6 9952234 该psu必须基于10.2.0.4.4 includes CPU [...]
昨天朋友问到压缩表的细节问题,我准备用实验来解释,最近很久也没写博客了,就正好完善一下,贴出来。 首先我们来看下10g的表压缩: SQL> create table t1 as select * from dba_objects; Table created. SQL> create table t2_nocompress as select * from t1 where 1=2; Table created. SQL> create table t3_compress compress as select * from t1 where 1=2; Table created. SQL> set timing on SQL> insert /*+append */ into t2_nocompress select * from t1 where [...]
前段时间,在ML的群中,原厂一个哥们发了图,图中提到oracle 12c之前,asm 的读取默认都是始终从primary extent开始的,然而从12c开始发生变化。 当时的图片我找不到了,在以前的文档中,我找到如下一个图,基本上类似: —diskgroup [oracle@10gasm ~]$ export ORACLE_SID=+ASM [oracle@10gasm ~]$ asmcmd ASMCMD> lsdg State Type Rebal Unbal Sector Block AU Total_MB Free_MB Req_mir_free_MB Usable_file_MB Offline_disks Name MOUNTED EXTERN N N 512 4096 1048576 2048 687 0 687 0 DATA1/ MOUNTED NORMAL N N 512 4096 1048576 [...]
前几天跟lunar讨论问题,他提到关于数据库中段头block损坏的恢复以及假如出现位图block损坏等的情况恢复, 如何在没有备份的情况下,那就是个灾难,如果表小还好办,我们可以通过基于rowid等方式去扫描把数据抽取cats 出来,或者你可以使用odu/dul等数据抽取工具。 就像lunar提到的曾经遇到的一个case是有个表的段头坏了,但是 该表非常巨大,超过300g,在这种情况下,如果没有备份,处理起来就非常的麻烦了,虽然这样的情况很少见,但 我这里还是根据她的要求来研究下段头和位图block的结构,以便于我们在极端情况下用bbed等工具去直接修复. SQL> conn roger/roger Connected. SQL> select count(1) from t1; COUNT(1) ———- 51042 SQL> col segment_name for a20 SQL> set lines 120 SQL> l 1 select owner,SEGMENT_NAME,HEADER_FILE,HEADER_BLOCK,blocks from dba_Segments 2* where owner=’ROGER’ and segment_name=’T1′ SQL> / OWNER SEGMENT_NAME HEADER_FILE HEADER_BLOCK BLOCKS —————————— ——————– ———– ———— ———- ROGER T1 2 35 [...]
从oracle 11gR2开始,引入了ACFS,其中11gR2同时又引入了ASM Dynamic Volume Manager (ADVM)去支持ACFS。 在11.2的asm中,不仅仅用于存储database files,还能存储一些非结构化的数据,例如clusterware 文件、以及 一些通常的二进制文件、external files和text files。 总之,从11gR2开始,asm变得更加简单,智能化,也大大的降低了开销。彻底的抛开了对第三方卷组管理软件的依赖。 这一篇文章中,我们就来讲解11gR2引入的ADVM,也就是我们所看到的asm metadata file 7. SQL> select number_kffxp file#, disk_kffxp disk#, count(disk_kffxp) extents 2 from x$kffxp 3 where group_kffxp=1 4 and disk_kffxp <> 65534 5 group by number_kffxp, disk_kffxp; FILE# DISK# EXTENTS ———- ———- ———- 1 0 2 2 0 1 3 0 [...]
在asm系列的上一篇文章中,我们描述了ACD,将其比喻成oracle database中的redo,如果说起作用类似redo,那么本篇即将 描述的Continuing Operations Directory (COD),就其作用而来可能就类似undo了。当然,这是个打个比方. 在oracle asm实例中,有一些长时间运行的操作,比如当你add/drop disk时,add/delete/resize datafile时,可能运行时间 相对较长,这时asm的一些元数据信息就无法仅仅通过active change directory来记录,还需要COD来进行记录。 有一点大家需要记住的是,你的asm实例中,有多个COD,那么你的asm实例中就有多少个ASM disk group,其关系是1:1的。 大家可以看到,我这里的asm实例中,其中diskgroup 1中包含2个disk,所以通过如下sql查询的结果显示有2个COD条目: SQL> select number_kffxp file#, disk_kffxp disk#, count(disk_kffxp) extents 2 from x$kffxp 3 where group_kffxp=1 4 and disk_kffxp <> 65534 5 group by number_kffxp, disk_kffxp 6 order by 1; FILE# DISK# EXTENTS ———- ———- ———- 1 0 1 [...]
今天群中一网友在问linux rac心跳网卡冗余的问题,我这里用自己的vm环境模拟下,如下是通过vm 10gR2 rac环境, 心跳网卡冗余的配置和测试。仅供大家参考! —-停掉crs资源 步骤略 —-修改ip文件 rac1: [root@rac1 network-scripts]# pwd /etc/sysconfig/network-scripts [root@rac1 network-scripts]# cp ifcfg-eth1 ifcfg-bond0 [root@rac1 network-scripts]# cat ifcfg-bond0 # Advanced Micro Devices [AMD] 79c970 [PCnet32 LANCE] DEVICE=bond0 BOOTPROTO=static ONBOOT=yes IPADDR=192.168.73.10 –心跳ip NETWORK=192.168.73.0 BROADCAST=192.168.73.255 NETMASK=255.255.255.0 USERCTL=no BONDING_MASTER=yes TYPE=Ethernet rac2: [root@rac2 network-scripts]# pwd /etc/sysconfig/network-scripts [root@rac2 network-scripts]# cp ifcfg-eth1 ifcfg-bond0 [root@rac2 network-scripts]# [...]
前几天一朋友的客户数据库出现故障,现象的有2个datafile的文件头彻底损坏,有可能是硬件问题导致。 当时由于是windows环境,通过远程桌面操作,太卡,加上接手之前已经有人经过一系列的操作,导致恢复 相对麻烦,我采取的方式是利用他们之前create 的datafile,借助bbed修改ckpt信息,然后将库先open后。 最后再借助数据抽取软件将备份的损坏datafile数据抽取出来,然后直接加载到数据库中。 这里我来使用vm模拟下如果仅仅是datafile header block损坏的情况下,如何去手工恢复?当然,如果还有 其他block损坏,比如datafile header前面的bitmap block,那么恢复就相当复杂了。 —先模拟文件头损坏的情况 BBED> info File# Name Size(blks) —– —- ———- 1 /home/ora10g/oradata/roger/system01.dbf 0 2 /home/ora10g/oradata/roger/roger01.dbf 0 3 /home/ora10g/oradata/roger/sysaux01.dbf 0 4 /home/ora10g/oradata/roger/users01.dbf 0 6 /home/ora10g/oradata/roger/undotbs2_01.dbf 0 8 /home/ora10g/oradata/roger/sqlt_01.dbf 0 BBED> copy file 4 block 5 to file 2 block 1 Warning: contents of previous BIFILE [...]
controlfile就类似oracle的大脑,其重要程度就不言而喻了,在数据库恢复中,我们经常遇到关于controlfile的问题。 但是网上似乎没有关于controlfile的详细文章。今天花点时间来大概描述下,由于controlfile中的内容过多,所以对 照起来是相当麻烦的,所以我这里仅仅是列出我认为相对比较重要的内容。 那么controlfile中究竟包含哪些内容? 你可以通过试图去查询或通过dump 去观察,我这里直接查试图,如下: SQL> SELECT * FROM v$version WHERE rownum < 3; BANNER —————————————————————- Oracle DATABASE 10g Enterprise Edition Release 10.2.0.5.0 – Prod PL/SQL Release 10.2.0.5.0 – Production SQL> SELECT * FROM V$CONTROLFILE_RECORD_SECTION; TYPE RECORD_SIZE RECORDS_TOTAL RECORDS_USED FIRST_INDEX LAST_INDEX LAST_RECID —————————- ———– ————- ———— ———– ———- ———- DATABASE 316 [...]
上周5oracle发布了2013年第一季度安全补丁以及psu,2012年第4季度的补丁信息请参考:10.2.0.4+版本PSU以及相关bundle patch列表-(2012/10/19 update) 如下是我整理的最新的10.2.0.4+版本的最新psu信息,供大家参考! ++++10.2.0.4 Oracle Database Patch Set Update Unix Comments Includes Cpu 10.2.0.4.1 8576156 Bash 10.2.0.4.0 includes CPU Jul 2009 10.2.0.4.2 8833280 Bash 10.2.0.4.0 includes CPU Oct 2009 10.2.0.4.3 9119284 Bash 10.2.0.4.0 includes CPU Jan 2010 10.2.0.4.4 9352164 Bash 10.2.0.4.0 includes CPU Apr 2010 10.2.0.4.5 9654991 该psu必须基于10.2.0.4.4 includes CPU Jul 2010 10.2.0.4.6 9952234 [...]
今天ML的群中女神和travel在纠结一个恢复的问题,11.2.0.3版本,非归档,大概是rm掉current的log,然后重建 controlfille后恢复导致一系列问题,并最终出现ora-600 2662错误,虽然这个错误很常见,但是你发现推进scn 也是无法open,感觉有点怪,远程了女神的电脑,操作不便,最后将文件压缩传过来,我在自己的vmware进行了恢复。 由于环境的差异,所以解压后我先进行rename file操作,如下: SQL> SELECT name FROM v$datafile; NAME ———————————————— /u01/app/oracle/oradata/travel/system01.dbf ……… /u01/app/oracle/oradata/travel/users01.dbf SQL> SELECT member FROM v$logfile; MEMBER ————————————————- /u01/app/oracle/oradata/travel/redo03.log /u01/app/oracle/oradata/travel/redo02.log /u01/app/oracle/oradata/travel/redo01.log SQL> ALTER DATABASE RENAME file ‘/u01/app/oracle/oradata/travel/system01.dbf’ TO ‘/home/oracle/travel/travel/system01.dbf’; DATABASE altered. SQL> ALTER DATABASE RENAME file ‘/u01/app/oracle/oradata/travel/sysaux01.dbf’ TO ‘/home/oracle/travel/travel/sysaux01.dbf’; DATABASE altered. SQL> [...]
到这里为止,关于asm 的系列文章已经写了6篇,在这篇文章中将介绍Active Change Directory的结构。 何为ACD?大家如何把asm实例也看成一个微型的数据库实例的话,那么ACD信息,就好比是redo。换句话 将,ACD里面的信息,记录了asm的所有元数据block的操作记录。当然,有这个的好处是什么呢? 其实你可以想象,数据库实例中,如果实例crash掉,那么还可以借助redo去进行instance recover。 这里针对asm而已,ACD的功能有异曲同工之妙。 SQL> SELECT number_kffxp file#, disk_kffxp disk#, COUNT(disk_kffxp) extents 2 FROM x$kffxp 3 WHERE group_kffxp=1 4 AND disk_kffxp <> 65534 5 GROUP BY number_kffxp, disk_kffxp 6 ORDER BY 1; FILE# DISK# EXTENTS ———- ———- ———- 1 0 1 1 1 1 2 1 1 3 0 [...]
前面关于oracle asm 剖析系列已经进行了5篇,这将是第6篇。这篇的主要是内容是关于asm file 5, 也就是asm template,即asm 模板。asm中默认就存在众多模板,每种模板针对不同类似的文件。如下 来自oracle 10gR2和11gR2版本的查询结果: —10.2 SQL> SELECT * FROM V$ASM_TEMPLATE; GROUP_NUMBER ENTRY_NUMBER REDUND STRIPE S NAME ———— ———— —— —— – —————————— 1 0 UNPROT COARSE Y PARAMETERFILE 1 1 UNPROT COARSE Y DUMPSET 1 2 UNPROT FINE Y CONTROLFILE 1 3 UNPROT COARSE Y ARCHIVELOG 1 4 [...]