NESTED LOOP(嵌套循环) 对于被连接的数据子集较小的情况,被驱动表有索引,nested loop连接是个较好的选择。 可用 USE_NL(table_name1 table_name2)提示来强制使用nested loop。 HASH JOIN(散列连接) hash join是CBO 做大数据集连接时的常用方式。以小表散列作驱动表,不需要索引。 可用USE_HASH(table_name1 table_name2)提示来强制使用hash join。 SELECT /*+USE_HASH(BSEMPMS,BSDPTMS)*/ * FROM BSEMPMS,BSDPTMS WHERE BSEMPMS.DPT_NO=BSDPTMS.DPT_NO; SORT MERGE JOIN(排序合并连接) sort merge join的操作:对连接的每个表做table access full;排序;进行merge join 对排序结果进行合并。性能不太好,现在一般使用HASH JOIN来替代,如果原数据集已排 序的话,性能比HASH JOIN好。 可用 USE_MERGE(table_name1 table_name2)提示强制使用sort merge join。 不过上面这些与优化器有关的连接方式与语法上的左、右或外连接没啥关系
Posts Tagged ‘Oracle’
Oracle登录认证方式
十一月 16th, 2011
lookdata SQLNET.AUTHENTICATION_SERVICES= (NTS)是基于操作系统验证;SQLNET.AUTHENTICATION_SERVICES= (NONE)是基于Oracle验证;SQLNET.AUTHENTICATION_SERVICES= (NONE,NTS)是二者共存 在linux下规则如下: 默认情况下linux下的oracle数据库sqlnet.ora文件没有SQLNET.AUTHENTICATION_SERVICES参数,此时是基于操作系统认证和oracle密码验证共存的,加上SQLNET.AUTHENTICATION_SERVICES参数后,不管SQLNET.AUTHENTICATION_SERVICES设置为NONE或者NTS,都是基于oracle密码验证的。 Windows下设置oracle登录验证为操作系统验证方式的方法: 1:把os用户加到ora_dba组 2:设置sqlnet.ora SQLNET.AUTHENTICATION_SERVICES = (NTS) 或者你可以重建口令文件来改密码,只不过原来授予sysdba和sysoper权限的用户,就不再具有这2个权限了。
manual drop database
十一月 15th, 2011
lookdata –===================== –手动删除oracle数据库 –===================== 在很多情况下,或无法使用dbca工具的时候,我们需要手动来删除数据库。对此,可以借助drop database命令来实现,下面的描述中给出手动删除数据库 的具体步骤,包含文件系统数据库以及ASM数据库。环境:OracleEnterpriseLinux5.4+ Oracle10gR2. 一、手动删除文件系统数据库 1.停止监听与OEM $ lsnrctlstoplistener_name $ emctlstopdbconsole 2.获得数据文件,日志文件及控制文件的相关信息,包含归档 $ sqlplus /assysdba SQL>selectstatus,name from v$controlfile; –获取控制文件的位置信息 SQL>select * from v$dbfile; –获取数据文件的位置信息 SQL>select * from v$logfile; –获取日志文件的位置信息 SQL>archivelog list; –查看归档的sequence及位置信息 SQL>shutdown abort; –因数据不再需要,直接shutdown abort 3.启动到mount状态(使用exclusive restart) SQL> startup mount exclusiverestrict; 4.修改参数为允许受限的会话模式 SQL>alter system enable restrictedsession; 5.使用drop database命令来清除数据库 SQL>drop database; SQL>exit 6.手动清除相关文件 $ echo $ORACLE_SID –确认当前的ORACLE_SID [...]
RSS Feed
Posted in
Tags: