Hash join算法原理
自从oracle 7.3以来,oracle提供了一种新的join技术,就是hash join。Hash Join只能用于相等连接,且只能在CBO优化器模式下。相对于nested loop join,hash join更适合处理大型结果集。Hash join不需要在驱动表上存在索引。[@more@]一、Hash Join概述Hash join算法的一个基本思想就是根据小的row sources(称作build input,我们记较小的表为S,较大的表为B) 建立一个可以存在于hash area内存中的hash table,然后用大的row sources(称作probe input) 来探测前面所建的hash table。如果hash area内存不够大,hash table就无法完全存放在has
OCR和voting disk的备份
Oracle会自动对CRS的配置信息OCR盘进行备份,Oracle会自动选择将备份文件存储在哪个节点上,通过ocrconfig命令我们可以知道最近的ocr备份信息的存储情况。[@more@][oracle@HERMES-E ~]$ ocrconfig -showbackuphermes-e 2007/10/27 20:16:30 /opt/oracle/product/10.2.0/crs_1/cdata/crshermes-e 2007/10/27 16:16:29 /opt/oracle/product/10.2.0/crs_1/cdata/crshermes-e 2007/10/27 12:16:29 /opt/oracle/product/10.2.0/crs_1/cdata/crshermes-e 2007/10/26 04:16:26 /opt/oracle/product/10.2.0/crs_1/cdata/crshermes-f 2007/10/19 21
RAC笔记之instance recovery
当RAC的某个实例crash,RAC是如何进行instance recovery的呢?[@more@]1、GES接管enqueue,GCS接管相关无主资源,GRD被重新配置。此时GCS被冻结2、SMON读取crash实例的相关redo,决定恢复集(recovery set)3、SMON提交GRD请求去获取所有需要恢复的块,其它块此时可用4、前滚5、后滚
RAC笔记之service
可以配置一个service,让它运行在某几个instances上,让另外的instances作为备用。-----即所谓高可用性[@more@]
RAC笔记之gcs/ges/grd
Global Resource Directory (GRD) 用于记录资源被使用的信息Global Cache Service (GCS)和Global Enqueue Service (GES)用于管理GRD的信息。GES主要管理的资源是dictionary cache locks和library cache locksGCS保证多个cache的一致性。某个实例读取数据时必须保证数据是最新的,如果数据没有写入磁盘,必须询问GCS才知道最新的数据在哪个实例的cache中。某个实例cache空间不够,需要将一些数据写入磁盘时必须保证写入的数据是最新的,只有GCS才知道哪个实例cache中有相关数据的最新版本。数据写入后,持有相关数据的次新版本的cache中的数
关于Oracle Cluster Software-----下面的解释更通俗,容易理解
Oracle Cluster Software 包括下列组件:Cluster Synchronization Services (CSS)、Cluster Ready Service (CRS) 和 Event Management (EVM)。CSS 可管理 Oracle 群集成员并将其自身的组成员服务提供给 RAC 实例。-----cluster同步,管理voting diskCRS 根据配置管理 Oracle 的群集资源,包括资源的启动、停止、监视和故障切换。----与高可用性相关,管理OCR文件EVM 发布由 CRS 生成的事件,并且当特定事件发生时,可运行脚本。[@more@]
最近遇到的几个LINUX问题
前几天给某个客户在LINUX平台装RAC,其中涉及到几个LINUX的问题,这里给个总结:[@more@]1、如何该主机名称需要修改文件/etc/sysconfig/network,也可以使用命令hostname设置主机名称2、配置rsh后,执行rsh HERMES-F时出现下面的提示而不能立即显示命令提示符:[oracle@lHERMES-E ~]$ rsh HERMES-Fconnect to address 192.168.0.220: Connection refusedTrying krb4 rlogin...connect to address 192.168.0.220: Connection refusedtrying normal rlogin (/usr/bin/rlogin)Your default context is user_u:system_r:unconfined_t. Do you
DBMS_SUPPORT包
最近给用户做数据库升级,涉及到DBMS_SUPPORT包,关于这个包的安装及使用介绍,请参考:http://www.eygle.com/faq/DBMS_SUPPORT.htm[@more@]
关于隐含参数_b_tree_bitmap_plans
最近碰到这样一个SQL:SELECT DISTINCT T_GOODS_DECL.DECL_NO,T_GOODS_DECL.DECL_REG_NO,T_GOODS_DECL.DECL_PERSON_CODE,T_GOODS_DECL.DECL_DATE,T_GOODS_DECL.CONSIGNOR_CNAME,T_GOODS_DECL.CONSIGNEE_CNAME, T_GOODS_DECL.PROCESS_STATUS,T_GOODS_DECL.DECL_GET_NO,T_GOODS_DECL.DEST_CODE,T_GOODS_DECL.DECL_TYPE_CODE,T_GOODS_DECL.INSP_ORG_CODE,T_GOODS_DECL.INSP_ORG_CODE||T_GOODS_DECL.INSP_DEPT_1,T_GOODS_DECL.DEST_ORG_CODE FROM T_GOODS_DECL,T_DECL_GOODS WHERE ( T_GOODS_DECL.DECL_NO = T_DECL_GOODS.DECL_NO ) AND t_goo
索引以NOLOGGING方式重建对备份恢复的影响
如果数据库为归档模式,你先对数据库做了冷备,后来又以NOLOGGING的模式对索引进行了重建,有一天你的数据库CRASH了,必须进行恢复,那么会发生什么事情呢?最近有个客户就发生了这样的事情。当数据库RECOVER,然后OPEN,应用不能使用,原因是走索引读取某个表的数据时因索引在最近一次数据库冷备后以NOLOGGING方式被重建过而无法获取表的数据。进一步检查还发现存放这些以NOLOGGING方式重建过的索引的数据文件出现大范围的坏块。[@more@]
今天遇到一个VERITAS NBU的BUG
今天客户要求对9月27日到28日的归档日志用LOGMINER进行分析,由于日志被VERITAS 的NBU备份走了,于是用RMAN还原那两天的归档日志,但是还原时出错:[@more@]RMAN> run {2> allocate channel c1 type 'sbt_tape' connect 'sys/96315@jxdc1';3> allocate channel c2 type 'sbt_tape' connect 'sys/96315@jxdc2';4> restore archivelog from sequence 2133 thread 1 until sequence 2141 thread 1;5> restore archivelog from sequence 1599 thread 2 until sequence 1606 thread 2;6> release channel c1;7> rel
关于英文名GAVIN
决定来现在的公司的时候,TEAM LEADER叫取个英文名字,选来选去,决定用GAVIN.GAVIN古德语,意为"白鹰"或"战鹰"。在古威尔士语中,Gawain或Gawen是『小鹰』的意思。『鹰』一直成为古代德国、英国等国家人民崇奉的对象。他们把『鹰』看做『战斗』的象征,是他们心目中的战友。--------关于鹰[@more@]老鹰是世界上寿命最长的鸟类它一生的年龄可达70岁在40岁时它的爪子开始老化无法有效地抓住猎物它的嘴变得又长又弯几乎碰到胸膛它的翅膀变得十分沉重因为它的羽毛长得又浓又密使得飞翔十分吃力此时它只有两种选择要么等死
rman会话中设置nls_date_format和nls_lang
run { ...... sql 'alter session set NLS_DATE_FORMAT="YYYY-MM-DD HH24:MI:SS"'; sql 'alter session set NLS_LANGUAGE="AMERICAN"'; ...... } [@more@]
8i中RMAN的几个问题:
在8I中使用RMAN,发现很多与9I不同的地方,这里将前段时间遇到的问题总结一下:1、8I中没有configure,show等命令2、restore等命令不能单独运行,必须在{}中运行3、9I中我们可以rman target / catalog ...,然后set dbid=...但是8I中不可以这样,必须rman catalog ...然后set dbid=...,最后rman target /4、8I中用RMAN做恢复必须设置NLS_DATE_FORMAT和NLS_LANG,9I中则未必,除非是做基于UNTIL TIME的恢复[@more@]
10G中连接数据库可以不需要设置tnsnames.ora
具体方法是:SQL> conn username/passwd@hostname/servicename比如:SQL> conn system/passwd@192.168.0.222/mydb[@more@]
DG中用STANDBY的数据文件恢复PRIMARY对应数据文件的方法中要注意的问题
DG中如果PRIMARY的某个数据文件丢失,我们可以通过STANDBY的相应数据文件进行恢复,但是有一点值得注意:当STANDBY一直处于恢复状态,PRIMARY 的某个数据文件丢失,此时STANDBY的数据文件的SCN#可能大于PRIMARY的SCN#,那么直接将STANDBY的数据文件拷贝过来是不能RECOVER的,此时需要手工以NORESETLOGS方式重建PRIMARY的控制文件:CREATE CONTROLFILE REUSE DATABASE "PRIMARY" NORESETLOGS FORCE LOGGING ARCHIVELOG ......[@more@]
10g的RMAN全备和9I的不同
10g的RMAN全备是先备份数据文件,然后备份控制文件,9I则相反. 这也是为什么9I中从全备中还原控制文件后,控制文件中没有备份信息的原因. 另外10G中还可以把备份集catalog到控制文件中.9I就不可以[@more@]
linux下nfs的配置
本文将分别从服务器端客户端进行说明[@more@]NFS Server端的设定 NFS Server端的设定,首先需要确认Linux主机是否可以支持NFS这项服务,然后再设定使用者的来源IP或主机名称以及共享出去的目录权限。 那么,在Client PC怎么使用这个共享出来的目录呢?首先以showmount检查Linux Server是否有可以使用的 NFS目录。如果有就将它mount在本机上面,这样就可以使用NFS Server主机提供的资源了。 1.系统要求 除了前面已经提到的两个系统守护进程portmap与nfs-utils之外,内核(Kernel)版本最好高于2.2.18。此外,如果重新编译过内核
乱码问题
前一段时间到客户那里去导入数据,结果很多存储过程的汉字都变成乱码,同事说是NLS_LANG环境变量没有正确设置所导致。修改该环境变量值,重新导入,用户数据库的乱码问题得到解决。结论:如果从表里面查出的数据是乱码,那么应是字符集问题;如果是象上面这种情况,那么应是NLS_LANG环境变量没有正确设置所导致。[@more@]
crs常用管理命令
常用的crs命令如下:[@more@]$ORA_CRS_HOME/bin/crs_stat –t 此命令主要用来检查crs资源状态例如[oracle@rac2 css]$ $ORA_CRS_HOME/bin/crs_stat -tName Type Target State Host ------------------------------------------------------------ora....CL1.srv application ONLINE ONLINE rac1 ora....CL2.srv application ONLINE ONLINE rac2 ora....TEST.cs application ONLINE ONLINE rac1 ora....L1.inst application ONLINE ONLINE rac