查看: 4483|回复: 18

[讨论] 请求数据库优化方案

[复制链接]
论坛徽章:
18
CTO参与奖
日期:2009-01-15 11:42:46奥运纪念徽章
日期:2012-11-28 09:33:31奥运纪念徽章
日期:2012-11-22 14:39:55灰彻蛋
日期:2012-05-15 14:37:582011新春纪念徽章
日期:2011-02-18 11:43:32生肖徽章2007版:兔
日期:2011-01-20 12:58:492011新春纪念徽章
日期:2011-01-04 10:35:48数据库板块每日发贴之星
日期:2010-12-09 01:01:012010广州亚运会纪念徽章:帆船
日期:2010-12-06 11:01:472010广州亚运会纪念徽章:曲棍球
日期:2010-12-06 10:59:28
发表于 2010-11-10 10:18 | 显示全部楼层 |阅读模式
最近客户有一个数据库反应比较慢,需要我们做一次数据库全面优化,要做到实际的优化效果,以下是我提供的一些信息。
请各位帮我分析一下数据库可能哪里存在性能问题

环境:
OS:AIX5.3
DB:oracle 9.2.0.8

系统信息:
使用AIX的nmon工具对CPU使用率进行跟踪如下:
statistic.jpg

topas命令如下:
Topas Monitor for host:    FHSCHN_DBT           EVENTS/QUEUES    FILE/TTY
Wed Nov 10 09:31:06 2010   Interval:  2         Cswitch    2374  Readch     0.0G
                                                Syscall    9672  Writech   27963
Kernel    2.4   |#                           |  Reads      1234  Rawin         0
User     14.2   |#####                       |  Writes       65  Ttyout      516
Wait     31.3   |#########                   |  Forks         0  Igets         0
Idle     52.1   |###############             |  Execs         0  Namei         0
                                                Runqueue    2.0  Dirblk        0
Network  KBPS   I-Pack  O-Pack   KB-In  KB-Out  Waitqueue   1.5
en3      33.9     70.0    68.0    16.3    17.6
en2       0.0      0.0     0.0     0.0     0.0  PAGING           MEMORY
lo0       0.0      0.0     0.0     0.0     0.0  Faults      793  Real,MB    7744
                                                Steals     1165  % Comp     84.8
Disk    Busy%     KBPS     TPS KB-Read KB-Writ  PgspIn        0  % Noncomp  15.9
dac0      0.0   2036.0   255.5  2028.0     8.0  PgspOut       0  % Client   15.9
dac1      0.0   1954.0   247.5  1942.0    12.0  PageIn      993
hdisk9    0.0    760.0    94.5   760.0     0.0  PageOut       4  PAGING SPACE
hdisk12   0.0    662.0    81.5   662.0     0.0  Sios        998  Size,MB    8192
hdisk11   0.0    642.0    83.0   634.0     8.0                   % Used      8.7
hdisk7    0.0    634.0    78.0   634.0     0.0  NFS (calls/sec)  % Free     91.2
hdisk10   0.0    612.0    78.5   608.0     4.0  ServerV2       0
hdisk8    0.0    600.0    76.5   592.0     8.0  ClientV2       0   Press:
hdisk6    0.0     80.0    11.0    80.0     0.0  ServerV3       0   "h" for help
hdisk1    0.0      0.0     0.0     0.0     0.0  ClientV3       0   "q" to quit
dac1utm   0.0      0.0     0.0     0.0     0.0
hdisk3    0.0      0.0     0.0     0.0     0.0
hdisk4    0.0      0.0     0.0     0.0     0.0
hdisk2    0.0      0.0     0.0     0.0     0.0
cd0       0.0      0.0     0.0     0.0     0.0

Name            PID  CPU%  PgSp Owner
oracle      8896972   5.6   5.3 oracle
oracle      9437358   1.9   7.8 oracle
oracle      8298582   1.4   5.6 oracle
topas       8417728   0.7  22.3 root  
oracle      8335554   0.6   7.6 oracle
lrud          16392   0.5   0.6 root  
oracle      8110358   0.4   7.9 oracle
oracle      8982766   0.1   7.1 oracle
syncd         45462   0.1   0.5 root  
dtgreet      286752   0.1   1.4 root  
oracle      7729408   0.0   6.8 oracle
aioserve    2400618   0.0   0.4 root  
aioserve    5583166   0.0   0.4 root  
oracle      7762372   0.0   6.2 oracle
oracle      9335020   0.0   6.1 oracle
gil           28974   0.0   0.9 root  
Signal 2 received

prtconf命令如下:
FHSCHN_DBT:root::/KIC/NMON_LOG> prtconf | more
System Model: IBM,9117-570
Machine Serial Number: 06AA9FF
Processor Type: PowerPC_POWER5
Number Of Processors: 4
Processor Clock Speed: 1900 MHz
CPU Type: 64-bit
Kernel Type: 64-bit
LPAR Info: 1 06-AA9FF
Memory Size: 7744 MB
Good Memory Size: 7744 MB
Platform Firmware level: SF240_320
Firmware Version: IBM,SF240_320
Console Login: enable
Auto Restart: true
Full Core: false

Network Information
        Host Name: FHSCHN_DBT
        IP Address: 10.86.5.4
        Sub Netmask: 255.255.255.240
        Gateway: 10.86.5.1
        Name Server:
        Domain Name:

Paging Space Information
        Total Paging Space: 8192MB
        Percent Used: 9%
        
ORACLE相关参数配置:
SQL> show parameter sga

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
lock_sga                             boolean     FALSE
pre_page_sga                         boolean     FALSE
sga_max_size                         big integer 1480651688

SQL> show parameter pga

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
pga_aggregate_target                 big integer 1132462080

SQL> show parameter pool

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
buffer_pool_keep                     string      
buffer_pool_recycle                  string      
global_context_pool_size             string      
java_pool_size                       big integer 33554432
large_pool_size                      big integer 16777216
olap_page_pool_size                  integer     33554432
shared_pool_reserved_size            big integer 15938355
shared_pool_size                     big integer 318767104

SQL> show parameter cursor

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
cursor_sharing                       string      EXACT
cursor_space_for_time                boolean     FALSE
open_cursors                         integer     300
session_cached_cursors               integer     0


statspack信息:
请见附件,谢谢!
sp_19433_19490.txt (118.67 KB, 下载次数: 30)
招聘 : Java研发
认证徽章
论坛徽章:
71
马上加薪
日期:2014-02-19 11:55:14蜘蛛蛋
日期:2012-12-26 18:16:01茶鸡蛋
日期:2012-11-16 08:12:48ITPUB 11周年纪念徽章
日期:2012-10-09 18:05:07奥运会纪念徽章:网球
日期:2012-08-23 14:58:08奥运会纪念徽章:沙滩排球
日期:2012-07-19 17:28:14版主2段
日期:2012-07-07 02:21:02咸鸭蛋
日期:2012-03-23 18:17:482012新春纪念徽章
日期:2012-02-13 15:13:512012新春纪念徽章
日期:2012-02-13 15:13:51
发表于 2010-11-10 10:29 | 显示全部楼层
1、可根据实际情况加大SGA大小
2、优化SQL可能仍然是是能达到优化效果的最终手段

使用道具 举报

回复
论坛徽章:
311
行业板块每日发贴之星
日期:2012-07-12 18:47:29双黄蛋
日期:2011-08-12 17:31:04咸鸭蛋
日期:2011-08-18 15:13:51迷宫蛋
日期:2011-08-18 16:58:25紫蛋头
日期:2011-08-31 10:57:28ITPUB十周年纪念徽章
日期:2011-09-27 16:30:47蜘蛛蛋
日期:2011-10-20 15:51:25迷宫蛋
日期:2011-10-29 11:12:59ITPUB十周年纪念徽章
日期:2011-11-01 16:19:41鲜花蛋
日期:2011-11-09 20:33:30
发表于 2010-11-10 10:40 | 显示全部楼层
1  重新创建STATS, 时间夸大不要太大,工作期间的2小时足以。
2  把SGA 加大到5G,
3  优化这类语句
SELECT ROW_CNT ,A.BIZ_PTNR_TO ,A.POD ,A.POD_NATION_CD ,A.FDEST ,
A.FDEST_NATION_CD ,A.TARIFF_NO ,A.TARIFF_SEQ ,DECODE(A.FRT_CC_CH
K ,'Y' , DECODE(A.BUY_SALES_TYPE,'B','S','S','B') , A.BUY_SALES_
TYPE ) BUY_SALES_TYPE ,A.BIZ_UNIT_CD ,A.FRT_CD ,A.CURR_CD ,A.SHI
P_MODE ,A.CNTR_SIZE_CD ,A.CNTR_TYPE_CD ,A.APPLY_RANGE ,A.APPLY_R


SELECT ROW_CNT ,BIZ_PTNR_TO AS BIZ_PTNR_CD ,POD ,POD_NATION_CD ,
FDEST ,FDEST_NATION_CD ,TARIFF_NO ,TARIFF_SEQ ,BUY_SALES_TYPE AS
BUY_SALES_TYPE ,BIZ_UNIT_CD ,FRT_CD ,CURR_CD AS CURR_CD ,SHIP_M
ODE ,CNTR_SIZE_CD AS CNTR_SIZE ,CNTR_TYPE_CD AS CNTR_TYPE ,APPLY
_RANGE ,APPLY_RATE ,DC_AMT ,APPLY_AMT ,FROM_DT ,MIN_AMOUNT AS MI


SELECT A.ACC_UNIT
                        AS ACC_UNIT          ,
        A.BUY_SAL
ES_TYPE

select * from tb_int031 a , tb_eai_if_system b   where a.interfa

使用道具 举报

回复
论坛徽章:
18
CTO参与奖
日期:2009-01-15 11:42:46奥运纪念徽章
日期:2012-11-28 09:33:31奥运纪念徽章
日期:2012-11-22 14:39:55灰彻蛋
日期:2012-05-15 14:37:582011新春纪念徽章
日期:2011-02-18 11:43:32生肖徽章2007版:兔
日期:2011-01-20 12:58:492011新春纪念徽章
日期:2011-01-04 10:35:48数据库板块每日发贴之星
日期:2010-12-09 01:01:012010广州亚运会纪念徽章:帆船
日期:2010-12-06 11:01:472010广州亚运会纪念徽章:曲棍球
日期:2010-12-06 10:59:28
 楼主| 发表于 2010-11-10 10:48 | 显示全部楼层
原帖由 anlinew 于 2010-11-10 10:29 发表
1、可根据实际情况加大SGA大小
2、优化SQL可能仍然是是能达到优化效果的最终手段

可是那个SQL头绪太乱了,优化它真一个很可怕的事情
下面statapack里 Buffer Gets最多的一个SQL,用了表函数,很是麻烦:
  Buffer Gets    Executions  Gets per Exec  %Total Time (s)  Time (s) Hash Value
--------------- ------------ -------------- ------ -------- --------- ----------
    490,223,355        1,215      403,476.0   43.2  3752.16   4671.93 2040113071

Select Row_Cnt,
                         a.Biz_Ptnr_To,
                         a.Pod,
                         a.Pod_Nation_Cd,
                         a.Fdest,
                         a.Fdest_Nation_Cd,
                         a.Tariff_No,
                         a.Tariff_Seq,
                         Decode(a.Frt_Cc_Chk,
                                                        'Y',
                                                        Decode(a.Buy_Sales_Type, 'B', 'S', 'S', 'B'),
                                                        a.Buy_Sales_Type) Buy_Sales_Type,
                         a.Biz_Unit_Cd,
                         a.Frt_Cd,
                         a.Curr_Cd,
                         a.Ship_Mode,
                         a.Cntr_Size_Cd,
                         a.Cntr_Type_Cd,
                         a.Apply_Range,
                         a.Apply_Rate,
                         a.Dc_Amt,
                         a.Apply_Amt,
                         a.From_Dt,
                         a.Min_Amount,
                         a.Max_Amount,
                         a.Cntr_Own_Type,
                         a.Biz_Ptnr_Nm,
                         a.Pc_Term,
                         a.Tariff_Per_Cd,
                         Case
                                 When a.Tariff_Per_Cd In ('05') Then
                                        a.Cntr_Qty
                                 When a.Tariff_Per_Cd In ('04') Then
                                        a.Rton
                                 Else
                                        1
                         End As Apply_Qty
        From (Select a.Biz_Ptnr_To,
                                                         a.Pod,
                                                         a.Pod_Nation_Cd,
                                                         a.Fdest,
                                                         a.Fdest_Nation_Cd,
                                                         a.Tariff_No,
                                                         b.Tariff_Seq,
                                                         a.Buy_Sales_Type,
                                                         Nvl((Select 'Y'
                                                                                 From MNGFNS.Tb_Sad001 Td
                                                                                Where Td.Mbl_Mngr_No = c.Mbl_Mngr_No
                                                                                        And Td.Frt_Term_Pp_Cc = 'CC'
                                                                                        And c.Frt_Term_Pp_Cc = 'CC'
                                                                                        And a.Frt_Cd = 'HDC'
                                                                                        And a.Buy_Sales_Type = 'B'),
                                                                         'N') Frt_Cc_Chk,
                                                         c.Biz_Unit_Cd,
                                                         a.Frt_Cd,
                                                         a.Curr_Cd,
                                                         a.Ship_Mode,
                                                         Decode(b.Cntr_Size_Cd, Null, Null, Cntr.Cntr_Size_Cd) Cntr_Size_Cd,
                                                         Decode(b.Cntr_Type_Cd, Null, Null, Cntr.Cntr_Type_Cd) Cntr_Type_Cd,
                                                         Nvl(b.Apply_Range, 0) Apply_Range,
                                                         b.Apply_Rate,
                                                         b.Apply_Rate Dc_Amt,
                                                         b.Apply_Rate Apply_Amt,
                                                         a.From_Dt,
                                                         a.Min_Amount,
                                                         a.Max_Amount,
                                                         Decode(b.Cntr_Own_Type, Null, Null, Cntr.Cntr_Own_Type) Cntr_Own_Type,
                                                         Decode(b.Cntr_Size_Cd,
                                                                                        Null,
                                                                                        (Select Nvl(Sum(t.Cntr_Cnt), 0)
                                                                                                 From (Table(Pkg_So_Auto_Rating.Fc_So_Hbl_Cntr_Sum(:B1))) t),
                                                                                        Decode(b.Cntr_Type_Cd,
                                                                                                                 Null,
                                                                                                                 (Select Nvl(Sum(t.Cntr_Cnt), 0)
                                                                                                                                From (Table(Pkg_So_Auto_Rating.Fc_So_Hbl_Cntr_Sum(:B1))) t
                                                                                                                         Where t.Cntr_Size_Cd = b.Cntr_Size_Cd),
                                                                                                                 Cntr.Cntr_Cnt)) As Cntr_Qty,
                                                         Decode(c.Biz_Unit_Cd,
                                                                                        'SI',
                                                                                        '',
                                                                                        Fc_Af_Get_Nm('CUST_NM', a.Biz_Ptnr_To)) As Biz_Ptnr_Nm,
                                                         a.Pc_Term,
                                                         a.Tariff_Per_Cd,
                                                         c.Rton,
                                                         Row_Number() Over(Partition By a.Tariff_Kind, a.Biz_Ptnr_To, a.Buy_Sales_Type, a.Frt_Cd, Decode(a.Tariff_Per_Cd, '05', Cntr.Cntr_Size_Cd, b.Cntr_Size_Cd), Decode(a.Tariff_Per_Cd, '05', Cntr.Cntr_Type_Cd, b.Cntr_Type_Cd), Decode(a.Tariff_Per_Cd, '05', Cntr.Cntr_Own_Type, b.Cntr_Own_Type) Order By a.Shpr_Type, a.Cnee_Type, a.Biz_Ptnr_To, a.From_Dt Desc, a.Shpr_Cd, a.Ntfy_Cd, Nvl(a.Line_Family_Cd, 'X'), a.Pol, a.Pol_Nation_Cd, a.Pod, a.Pod_Nation_Cd, a.Cargo_Type, a.Voyage_Flt_No, a.Pc_Term, a.Incot_Cd, a.Item_Cd, b.Apply_Range Desc) Row_Cnt,
                                                         Nvl((Select 'Y'
                                                                                 From MNGFNS.Tb_Sac001 a
                                                                                Where a.Hbl_Mngr_No = c.Hbl_Mngr_No
                                                                                        And Nvl(a.Multi_Ptnr_Yn, 'N') = 'N'
                                                                                        And a.Del_Yn = 'N'
                                                                         Union
                                                                         Select Nvl(x.Hdc_Yn, 'N')
                                                                                 From MNGFNS.Tb_Sac036 x
                                                                                Where x.Hbl_Mngr_No = c.Hbl_Mngr_No
                                                                                        And x.Del_Yn = 'N'
                                                                                        And c.Multi_Ptnr_Yn = 'Y'
                                                                                        And x.To_Ptnr_Cd = a.Biz_Ptnr_To
                                                                                        And x.Settle_Yn = 'Y'
                                                                                        And Rownum = 1),
                                                                         'N') Hdc_Yn
                                        From MNGFNS.Tb_Sae051 a,
                                                         MNGFNS.Tb_Sae052 b,
                                                         MNGFNS.Tb_Sac001 c,
                                                         Table(Pkg_So_Auto_Rating.Fc_So_Hbl_Cntr_Sum(:B1)) Cntr
                                 Where a.Tariff_Kind In ('P001', 'P002')
                                         And a.Biz_Ptnr_Fr = :B3
                                         And a.Tariff_No = b.Tariff_No
                                         And a.Use_Yn = 'Y'
                                         And b.Use_Yn = 'Y'
                                         And a.Biz_Ptnr_To In
                                                         (Select Fc_Eu_Get_Nm('UPPER_PTNR', Arr_Ptnr_Cd)
                                                                        From MNGFNS.Tb_Sac001 a
                                                                 Where a.Hbl_Mngr_No = :B1
                                                                         And Nvl(a.Multi_Ptnr_Yn, 'N') = 'N'
                                                                         And Nvl(a.Del_Yn, 'N') = 'N'
                                                                Union
                                                                Select Fc_Eu_Get_Nm('UPPER_PTNR', To_Ptnr_Cd)
                                                                        From MNGFNS.Tb_Sac001 a, MNGFNS.Tb_Sac036 b
                                                                 Where a.Hbl_Mngr_No = b.Hbl_Mngr_No
                                                                         And a.Hbl_Mngr_No = :B1
                                                                         And Nvl(a.Del_Yn, 'N') = 'N'
                                                                         And Nvl(a.Multi_Ptnr_Yn, 'N') = 'Y'
                                                                         And b.Fr_Ptnr_Cd = :B3
                                                                         And b.Settle_Yn = 'Y'
                                                                         And b.Del_Yn = 'N')
                                         And a.From_Dt <= c.Ob_Dt
                                         And Nvl(a.To_Dt, '29991231') >= c.Ob_Dt
                                         And a.Biz_Unit_Cd = Decode(c.Biz_Unit_Cd, 'SO', '200', '100')
                                         And c.Hbl_Mngr_No = :B1
                                         And c.Hbl_Mngr_No = Cntr.Hbl_Mngr_No(+)
                                         And c.Del_Yn = 'N'
                                         And a.Use_Yn = 'Y'
                                         And Nvl(Decode(c.Frt_Term_Pp_Cc, 'PK', 'PP', c.Frt_Term_Pp_Cc),
                                                                         '%') Like Nvl(a.Pc_Term, '%') || '%'
                                         And (Nvl(Fc_Eu_Get_Nm('NEXT_CUST_CD', c.Actual_Shpr_Cd), '%') Like
                                                         Nvl(a.Shpr_Cd, '%') || '%' Or
                                                         Nvl(c.Actual_Shpr_Cd, '%') Like Nvl(a.Shpr_Cd, '%') || '%')
                                         And (Nvl(Fc_Eu_Get_Nm('NEXT_CUST_CD', c.Ntfy_Cd), '%') Like
                                                         Nvl(a.Ntfy_Cd, '%') || '%' Or
                                                         Nvl(c.Ntfy_Cd, '%') Like Nvl(a.Ntfy_Cd, '%'))
                                         And (Nvl(Fc_Eu_Get_Nm('NEXT_CUST_CD', c.Cnee_Cd), '%') Like
                                                         Nvl(a.Cnee_Cd, '%') || '%' Or
                                                         Nvl(c.Cnee_Cd, '%') Like Nvl(a.Cnee_Cd, '%'))
                                         And Nvl(Fc_Get_Gcms901('LINE_FAMILY_CODE',
                                                                                                                                        c.Carrier_Cd,
                                                                                                                                        'MAP_CODE'),
                                                                         '%') Like Nvl(a.Line_Family_Cd, '%') || '%'
                                         And Nvl(Fc_Get_Gcms901('LG_GC', c.Actual_Shpr_Cd, 'LG'), '%') Like
                                                         Nvl(a.Shpr_Type, '%') || '%'
                                         And Nvl(Fc_Get_Gcms901('LG_GC', c.Cnee_Cd, 'LG'), '%') Like
                                                         Nvl(a.Cnee_Type, '%') || '%'
                                         And Exists
                                 (Select 'T'
                                                                        From MNGFNS.Tb_Sae051 d
                                                                 Where d.Tariff_Kind = 'P002'
                                                                         And d.Tariff_No = a.Tariff_No
                                                                         And Substr(Nvl(c.Ptnr_Incoterms, c.Incoterms), 1, 1) In
                                                                                         ('C', 'D')
                                                                         And Nvl(d.Shpr_Type, '%') Like
                                                                                         Nvl(Fc_Get_Gcms901('LG_GC', c.Actual_Shpr_Cd, 'LG'),
                                                                                                         '%')
                                                                Union
                                                                Select 'T'
                                                                        From MNGFNS.Tb_Sae051 d
                                                                 Where d.Tariff_Kind = 'P002'
                                                                         And d.Tariff_No = a.Tariff_No
                                                                         And Substr(Nvl(c.Ptnr_Incoterms, c.Incoterms), 1, 1) In
                                                                                         ('E', 'F')
                                                                         And Nvl(d.Cnee_Type, '%') Like
                                                                                         Nvl(Fc_Get_Gcms901('LG_GC', c.Cnee_Cd, 'LG'), '%')
                                                                Union
                                                                Select 'T'
                                                                        From MNGFNS.Tb_Sae051 d
                                                                 Where d.Tariff_Kind <> 'P002'
                                                                         And d.Tariff_No = a.Tariff_No)
                                         And Nvl(c.Por_Nation_Cd, '%') Like
                                                         Nvl(a.Por_Nation_Cd, '%') || '%'
                                         And Nvl(c.Por, '%') Like Nvl(a.Por, '%') || '%'
                                         And Nvl(c.Pol_Nation_Cd, '%') Like
                                                         Nvl(a.Pol_Nation_Cd, '%') || '%'
                                         And Nvl(c.Pol, '%') Like Nvl(a.Pol, '%') || '%'
                                         And Nvl(c.Pod_Nation_Cd, '%') Like
                                                         Nvl(a.Pod_Nation_Cd, '%') || '%'
                                         And Nvl(c.Pod, '%') Like Nvl(a.Pod, '%') || '%'
                                         And Nvl(c.Pdel_Nation_Cd, '%') Like
                                                         Nvl(a.Pdel_Nation_Cd, '%') || '%'
                                         And Nvl(c.Pdel, '%') Like Nvl(a.Pdel, '%') || '%'
                                         And Nvl(c.Fdest_Nation_Cd, '%') Like
                                                         Nvl(a.Fdest_Nation_Cd, '%') || '%'
                                         And Nvl(c.Fdest, '%') Like Nvl(a.Fdest, '%') || '%'
                                         And Nvl(Nvl(c.Ptnr_Incoterms, c.Incoterms), '%') Like
                                                         Nvl(a.Incot_Cd, '%') || '%'
                                         And Nvl(c.Voyage_Flt_No, '%') Like
                                                         Nvl(a.Voyage_Flt_No, '%') || '%'
                                         And Nvl(c.Rep_Item_Cd, '%') Like Nvl(a.Item_Cd, '%') || '%'
                                         And Nvl(c.Loading_Term, '%') Like Nvl(a.Loading_Term, '%') || '%'
                                         And Nvl(c.Discharge_Term, '%') Like
                                                         Nvl(a.Discharge_Term, '%') || '%'
                                         And Nvl(c.Cargo_Type, '%') Like Nvl(a.Ship_Mode, '%') || '%'
                                         And Nvl(Fc_Eu_Get_Nm('METHOD', c.Ts_Type), '%') Like
                                                         Nvl(a.Ship_Method, '%') || '%'
                                         And Nvl(Cntr.Cntr_Size_Cd, '%') Like
                                                         Nvl(b.Cntr_Size_Cd, '%') || '%'
                                         And Nvl(Cntr.Cntr_Type_Cd, '%') Like
                                                         Nvl(b.Cntr_Type_Cd, '%') || '%'
                                         And Nvl(Cntr.Cntr_Own_Type, '%') Like
                                                         Nvl(b.Cntr_Own_Type, '%') || '%'
                                         And (Case a.Tariff_Per_Cd When '01' Then 1 When '03' Then
                                                                c.Shpr_Chg_Wt When '04' Then c.Shpr_Grs_Vol When '06' Then
                                                                c.Shpr_Grs_Wt Else 1 End) >= Nvl(b.Apply_Range, 0)
                                         And Nvl(a.Except_Yn, 'N') = :B2) a
Where a.Row_Cnt = 1
         And a.Frt_Cd = Decode(a.Frt_Cd,
                                                                                                 'HDC',
                                                                                                 Decode(Nvl(a.Hdc_Yn, 'Y'), 'Y', a.Frt_Cd, '* *'),
                                                                                                 a.Frt_Cd)

Pkg_So_Auto_Rating包bodies的部分内容:
  FUNCTION FC_SO_HBL_CNTR_SUM
  (
      arg_hbl_mngr_no    IN  NUMBER
  ) RETURN CNTR_SUM_STR_T PIPELINED
  IS
  BEGIN
      FOR CUR01 IN (
        SELECT   HBL_MNGR_NO
           , CNTR_SIZE_CD
           , CNTR_TYPE_CD
           , SUBSTR(CNTR_OWN_TYPE,1,2) AS CNTR_OWN_TYPE
           , CNT
        FROM (SELECT  C.HBL_MNGR_NO
                    , C.CNTR_SIZE_CD
                    , C.CNTR_TYPE_CD
                    , D.CNTR_OWN_TYPE
                    , CASE WHEN D.CNTR_OWN_TYPE = 'SO' THEN MAX(C.SOC_QTY)
                           WHEN D.CNTR_OWN_TYPE = 'DP' THEN MAX(C.DP_QTY)
                           ELSE MAX(C.CNTR_TOT_QTY) - MAX(C.SOC_QTY) - MAX(C.DP_QTY)
                      END CNT
              FROM (SELECT A.HBL_MNGR_NO
                         , A.CNTR_SIZE_CD
                         , A.CNTR_TYPE_CD
                       , CNTR_TOT_QTY
                     ,(SELECT COUNT(1)
                       FROM TB_SAC010
                       WHERE HBL_MNGR_NO   = A.HBL_MNGR_NO
                       AND   CNTR_SIZE_CD  = A.CNTR_SIZE_CD
                       AND   CNTR_TYPE_CD  = A.CNTR_TYPE_CD
                       AND   PART_YN       = 'N'
                       AND   DEL_YN        = 'N'
                       AND   DECODE(NVL(SOC_YN,'N'),'Y','SO','CO') = 'SO') AS SOC_QTY
                     ,(SELECT COUNT(1)
                       FROM TB_SAC010
                       WHERE HBL_MNGR_NO = A.HBL_MNGR_NO
                       AND   CNTR_SIZE_CD = A.CNTR_SIZE_CD
                       AND   CNTR_TYPE_CD = A.CNTR_TYPE_CD
                       AND   DEL_YN       = 'N'
                       AND   NVL(CNTR_OWN_TYPE,'CO') = 'DP') AS DP_QTY
                FROM  TB_SAC009 A
                WHERE A.HBL_MNGR_NO = arg_hbl_mngr_no
                AND   DEL_YN = 'N'    )                 C
                  ,(SELECT 'CO' AS CNTR_OWN_TYPE FROM DUAL UNION ALL
                    SELECT 'SO'                  FROM DUAL UNION ALL
                    SELECT 'DP'                  FROM DUAL) D
              GROUP BY  C.HBL_MNGR_NO
                      , C.CNTR_SIZE_CD
                      , C.CNTR_TYPE_CD
                      , D.CNTR_OWN_TYPE
             )
        WHERE CNT > 0
      ) LOOP
          PIPE ROW (CUR01);
      END LOOP;
      RETURN;
  EXCEPTION
      WHEN OTHERS THEN
          RETURN;
  END FC_SO_HBL_CNTR_SUM;

使用道具 举报

回复
论坛徽章:
52
摩羯座
日期:2015-07-23 16:30:53马上有车
日期:2014-02-18 16:41:112014年新春福章
日期:2014-02-18 16:41:11问答徽章
日期:2014-01-14 17:25:10兰博基尼
日期:2013-12-16 09:09:38大众
日期:2013-12-11 15:24:03林肯
日期:2013-12-04 12:21:38保时捷
日期:2013-11-22 15:45:33雪佛兰
日期:2013-09-12 12:10:44奥迪
日期:2013-08-22 17:17:49
发表于 2010-11-10 11:02 | 显示全部楼层
一段一段优化

使用道具 举报

回复
论坛徽章:
18
CTO参与奖
日期:2009-01-15 11:42:46奥运纪念徽章
日期:2012-11-28 09:33:31奥运纪念徽章
日期:2012-11-22 14:39:55灰彻蛋
日期:2012-05-15 14:37:582011新春纪念徽章
日期:2011-02-18 11:43:32生肖徽章2007版:兔
日期:2011-01-20 12:58:492011新春纪念徽章
日期:2011-01-04 10:35:48数据库板块每日发贴之星
日期:2010-12-09 01:01:012010广州亚运会纪念徽章:帆船
日期:2010-12-06 11:01:472010广州亚运会纪念徽章:曲棍球
日期:2010-12-06 10:59:28
 楼主| 发表于 2010-11-10 15:24 | 显示全部楼层
自己顶下

使用道具 举报

回复
发表于 2010-11-10 16:43 | 显示全部楼层
帮顶。。

使用道具 举报

回复
论坛徽章:
12
生肖徽章2007版:鸡
日期:2009-04-07 10:25:03红旗
日期:2013-12-30 23:09:11茶鸡蛋
日期:2012-02-13 22:39:292012新春纪念徽章
日期:2012-01-04 11:54:462011新春纪念徽章
日期:2011-02-18 11:42:47生肖徽章2007版:兔
日期:2011-01-20 12:58:49ITPUB9周年纪念徽章
日期:2010-10-08 09:32:25数据库板块每日发贴之星
日期:2009-10-11 01:01:03祖国60周年纪念徽章
日期:2009-10-09 08:28:00生肖徽章2007版:兔
日期:2009-09-12 17:11:11
发表于 2010-11-11 00:56 | 显示全部楼层
关注!!!!!!!!!!

使用道具 举报

回复
论坛徽章:
6
生肖徽章2007版:猪
日期:2009-09-10 11:32:46ITPUB9周年纪念徽章
日期:2010-10-08 09:28:522010广州亚运会纪念徽章:自行车
日期:2010-11-12 16:45:312010广州亚运会纪念徽章:手球
日期:2010-12-06 10:58:292011新春纪念徽章
日期:2011-02-18 11:43:35ITPUB十周年纪念徽章
日期:2011-11-01 16:24:51
发表于 2010-11-11 08:12 | 显示全部楼层
需要调整。

使用道具 举报

回复
论坛徽章:
86
2015中国数据库技术大会纪念徽章
日期:2015-04-24 16:04:24马上有车
日期:2014-02-19 11:55:14马上有车
日期:2014-02-18 16:41:112014年新春福章
日期:2014-02-18 16:41:11优秀写手
日期:2013-12-18 09:29:11日产
日期:2013-10-17 08:44:39马自达
日期:2013-08-26 16:28:022013年新春福章
日期:2013-02-25 14:51:24ITPUB 11周年纪念徽章
日期:2012-10-23 16:55:51马上有房
日期:2014-02-19 11:55:14
发表于 2010-11-11 09:16 | 显示全部楼层
这个服务器还做什么用?按照你CPU的图,15-17点应该是业务高峰期,但是对应statspack却显示Redo size、Logical reads都不高。并且,sga+pga不大,居然有page。

当然,SQL也是很大的问题。最好贴出你的执行计划,应该存在一些不合理的全表扫描。

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

SACC2019中国系统架构师大会

【数字转型 架构演进】SACC2019中国系统架构师大会,7折限时优惠重磅来袭!
2019年10月31日~11月2日第11届中国系统架构师大会(SACC2019)将在北京隆重召开。四大主线并行的演讲模式,1个主会场、20个技术专场、超千人参与的会议规模,100+来自互联网、金融、制造业、电商等领域的嘉宾阵容,将为广大参会者提供一场最具价值的技术交流盛会。

限时七折期:2019年8月31日前


----------------------------------------

大会官网>>
TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 
京ICP备09055130号-4  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表