- 博客(58)
- 收藏
- 关注
原创 并行HASH JOIN小表广播问题
小表没广播的: Plan hash value: 3863004939 --------------------------------------------------------------------------------------------------------------------------------------------------------------
2013-12-31 10:02:56 1665
原创 WITH AS 优化逻辑读
SQL> select * from fxqd_list_20131115_new where (acct_no, oper_no, seqno, trans_amt) not in (select acct_no, oper_no, seqno, trans_amt from fxqd_list where reg_date =
2013-12-31 08:50:42 668
原创 利用WITH AS 优化FILTER
SQL> explain plan for select * from fxqd_list_20131115_new where (acct_no, oper_no, seqno, trans_amt) not in (select acct_no, oper_no, seqno, trans_amt from fxqd_list
2013-12-31 08:40:20 830
原创 WITH AS and materialize hints
WITH AS: 就是将一个子查询部分独立出来,有时候是为了提高SQL语句的可读性,有时候是为了提高SQL语句性能。 如果一个SQL语句中,某个表会被访问多次,而且每次访问的限制条件一样的话,就可以使用with as来提高性能。 注意:如果 with as 短语没有被调用2次以上,CBO就不会讲这个短语获取的数据放入temp表,如果想要讲数据放入temp
2013-12-30 22:18:21 1526
原创 NOT EXISTS优化
INSERT INTO F_PTY_INDIV (PTY_ID, PTY_NAME, GENDER_CD, BIRTHDAY, CERT_TYPE, CERT_NO, SOCINSUR_NO, COUNTRY_CD, NATION, POLITICS_CD, MARRIAGE_STAT, FAMILY_
2013-12-30 20:53:23 1000
转载 Oracle 直接路径读
在11g中,全表扫描可能使用direct path read方式,绕过buffer cache,这样的全表扫描就是物理读了。 在10g中,都是通过gc buffer来读的,所以不存在direct path read的问题。 direct path read较高的可能原因有: 1. 大量的磁盘排序操作,order by, group by, union, distinct, ro
2013-12-28 08:45:36 3313
原创 IN改写关联注意事项!
SQL> select * from a1; ID NAME---------- ---------- 1 a 2 aSQL> select * from a2; ID NAME---------- ---------- 1 a 3 aSQL> select * from a1 where id in (select id from
2013-12-27 22:19:31 661
原创 Oracle 搜集统计信息
常用的统计信息收集脚本:非分区表:BEGIN DBMS_STATS.GATHER_TABLE_STATS(ownname => 'SCOTT', tabname => 'DEPT', estimate_percent
2013-12-27 19:19:20 759
原创 确认执行计划中分区号对应的分区
explain plan for select *from (SELECT 20131223 AS DATA_DATE, NVL(T1.ACCT_NO, T2.ACCT_NO) AS ACCT_NO, NVL(T1.ACCT_ORD, T2.ACCT_ORD) AS ACCT_ORD, NVL(
2013-12-27 11:33:57 641
原创 char类型关联
SQL> create table a1(id int,name char(10));Table created.SQL> create table a2(id int,name char(10));Table created.SQL> insert into a1 values(1,'a');1 row created.SQL> commit;
2013-12-26 11:09:47 607
原创 神一样的代码
declare cursor c_update is select b.acct_skid, a.acct_id from opt_acct_fdim a, opt_acct_fdim_bkp b where a.acct_id = b.acct_id; v_counter number;begin v_counter := 0; for v_row
2013-12-25 20:56:05 715
原创 JAVA程序,SESSION没有关闭导致数据库异常
可以看到连接到数据库的机器名为perass:PROCESS 1234表示是JDBC的进程
2013-12-25 16:42:43 1669 1
原创 Oracle导出存储过程
SQL> SELECT * FROM dba_directories ;OWN DIRECTORY_NAME DIRECTORY_PATH------- ---------------------- ---------------SYS DPUMPDIR /oracle/bakup
2013-12-25 15:16:04 935
原创 正在执行的SQL和之前执行的SQL
SQL> select * from v$mystat where rownum<2; SID STATISTIC# VALUE---------- ---------- ---------- 1996 0 0SQL> select count(*), USERNAME from v$session group by use
2013-12-25 13:52:29 575
原创 查看TEMP使用情况
SQL> select * from v$mystat where rownum SID STATISTIC# VALUE---------- ---------- ---------- 1996 0 0SQL> create index acct_dtl_af_idx4 on T_PM_ACCT_DTL_AF (acct_flag
2013-12-25 13:04:51 734
原创 Oracle TEMP表空间切换
SQL> select * from v$mystat where rownum SID STATISTIC# VALUE---------- ---------- ---------- 88 0 1 88 1 1SQL> select sid, SQL_A
2013-12-25 12:40:01 655
原创 VARCHAR2字段关联
SQL> desc a1 Name Null? Type ----------------------------------------- -------- ---------------------------- ID
2013-12-25 09:46:35 712
原创 PL/SQL 异常处理
SQL> set serveroutput on SQL> declare name varchar2(10);begin select ename into name from emp where empno = &no; dbms_output.put_line(name);EXCEPTION when NO_DATA_FOUND THEN dbm
2013-12-24 20:51:55 689
原创 pl/sql 关于变量定义的问题
1.create or replace procedure test_prc(p_data_dt in date) IS e_name emp.ename%type; begin select ename into e_name from emp where hiredat
2013-12-24 17:31:09 948 1
原创 FILTER优化
explain plan for select a.* from fxqd_list_20131115_new_100 a where (acct_no, oper_no, seqno, trans_amt) not in (select acct_no, oper_no, seqno, trans_amt from fxqd_list b
2013-12-24 11:29:14 761
原创 PL/SQL拼接和使用绑定变量
begin for iin1 ..1000000loop executeimmediate'insert into p1 values(' || i || ',' || i ||')'; commit; endloop;end; 可以看到动态使用拼接的是使用的常值 使用绑定变量看到的就是变量的形
2013-12-24 09:58:12 1082
原创 循环处理数据提交
DECLARE V_COUNTER NUMBER; begin V_COUNTER := 0; for i in 1 .. 1000022 loop insert into p1 values(i, 'a' || i); V_COUNTER := V_COUNTER + 1; IF (V_COUNTER >= 10000) THEN CO
2013-12-23 16:08:40 663
原创 游标溢出问题
SQL> set serveroutput onSQL> DECLARE CURSOR cur IS SELECT DATA_DATE, ACCT_NO , ACCT_ORD , ACCT_NO_PK , CARD_CODE , CUST_NO , BANK_CORP_CODE, MGR_C
2013-12-23 11:45:34 641
原创 查看SGA和PGA使用率
select name,total,round(total-free,2) used, round(free,2) free,round((total-free)/total*100,2) pctused from (select 'SGA' name,(select sum(value/1024/1024) from v$sga) total,(select sum(bytes/1024
2013-12-23 10:59:07 6566
原创 根据rowid回表
select rowid from T_PM_DEPOSIT_HIS partition(DEPOSIT_HIS_20120104) ;SQL> set linesize 200SQL> set pagesize 200SQL> set autot trace----该条数据取自partition(DEPOSIT_HIS_20120104) 分区SQL> selec
2013-12-23 08:49:42 645
原创 利用row_number over 函数删除重复记录
SQL> desc a1 Name Null? Type ----------------------------------------- -------- ---------------------------- ID NUMBER(38) NAME CHAR(10)SQL> select id,name ,count
2013-12-22 16:39:17 892
原创 sequence使用
SQL> create sequence seq1minvalue 1maxvalue 999999999999999999999999999start with 0increment by 1cache 20; 2 3 4 5 6 create sequence seq1*ERROR at line 1:ORA-04006: STA
2013-12-22 15:45:44 1228
原创 为什么不走INDEX FAST FULL SCAN呢
create table test as select * from dba_objects;create index test_idx1 on test(object_name);BEGIN DBMS_STATS.GATHER_TABLE_STATS(ownname => 'HR', t
2013-12-21 19:06:45 919
原创 INDEX FAST FULL SCAN和INDEX FULL SCAN
INDEX FULL SCAN 索引全扫描。单块读 。它扫描的结果是有序的,因为索引是有序的。它通常发生在 下面几种情况(注意:即使SQL满足以下情况 不一定会走索引全扫描) 1. SQL语句有order by选项,并且orde
2013-12-21 18:41:19 820
原创 利用ROWID快速执行关联更新
一.构造相关表P1,P2create table p1(id int,name char(10));create table p2(id int,name char(10));二.批量插入数据begin for i in 1 .. 100000 loop insert into p1 values(i,'a'||i); end loop ; commit;
2013-12-20 22:06:44 893
原创 利用ROWID 快速更新单表记录
-----对于普通表实现: UPDATE T_PM_DEPOSIT_HIS b SET flag = SUBSTR( flag, 1, 8 )||'4'|| CASE WHEN term THEN '1' ELSE '2' END A
2013-12-20 13:02:11 785
原创 PL/SQL游标使用
游标是用来处理使用SELECT语句从数据库中检索到的多行记录的工具。借助游标的功能,数据库应用程序可以对一组记录逐个进行处理,每次处理一行。--普通游标,游标本身就是一个变量SQL> DECLARE 2 emp_id employees_test.employee_id%type; 3 CURSOR cur IS 4 SELECT b.employe
2013-12-19 22:42:03 577
原创 IPCS资源
ipcrm用法 ipcrm -M shmkey 移除用shmkey创建的共享内存段ipcrm -m shmid 移除用shmid标识的共享内存段ipcrm -Q msgkey 移除用msqkey创建的消息队列ipcrm -q msqid 移除用msqid标识的消息队列ipcrm -S semkey 移除用semkey创建的信号ipcrm -s semid 移
2013-12-19 14:00:49 743
原创 sort merge join,hash join,netsloop join
Join Operations? SORT-MERGE JOIN– Sorts tables on the join key and then merges them together– Sorts are expensive? NESTED LOOPS– Retrieves a row from one table and finds the corresponding
2013-12-19 12:06:13 632
原创 通过dblink impdp导入
实验:源数据库:10.5.129.160 dwhtest需要导入的数据库:10.5.129.130 dwhtest在10.5.129.130上创建DBLINKSQL> create public database link DBL_DWHTEST connect to dwf identified by dwf using 'dwhtest160';Database link
2013-12-18 10:16:21 1239
原创 创建range分区
drop table T_PM_ACCT_DTL_AF_TEST;create table T_PM_ACCT_DTL_AF_TEST ( DATA_DATE date, ACCT_NO VARCHAR2(100), ACCT_ORD VARCHAR2(30), ACCT_NO_PK VARCHAR2(10
2013-12-17 20:14:18 589
原创 在线重定义
分区转换步骤1.检查源表是否能重定义: SQL> exec dbms_redefinition.can_redef_table('DWF','F_AGT_BUSINESS_CONTRACT_H'); PL/SQL procedure successfully completed.注意:在线重定义,必须要有主键。 2.创建我们需要重新定义的中间表,这个是一个分
2013-12-17 20:01:09 721
原创 创建LIST分区
一:创建分区表create table T_PM_ACCT_DTL_AF_TEST( DATA_DATE NUMBER(8), ACCT_NO VARCHAR2(100), ACCT_ORD VARCHAR2(30), ACCT_NO_PK VARCHAR2(100), ACCT_BAL NUMBER(1
2013-12-16 17:08:35 619
原创 绑定变量窥探和直方图
一、绑定变量的窥探(peek)1、Oracle在处理带有绑定变量的SQL时候,只会在硬解析的时候才会“窥探”一下SQL中绑定变量的值,然后会根据窥探到的值来决定整个SQL的执行计划。参数:_optim_peek_user_binds2、绑定变量窥探的案例create table t8(id int ,name varchar2(100));begin
2013-12-13 14:06:22 679
原创 关于IN-LIST迭代
IN-list iterator (IN-list迭代)字段有索引,in里有多少个值就执行多少次索引扫描。不管值是否在字段里存在~SQL> create table t1 as select * from dba_objects;表已创建。SQL> create index idx_object_id on t1(object_id);索引已创建。SQL
2013-12-12 21:29:56 799
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人