Fazer execute esta rotina com trace 10046 e enviei o resultado.

para ativar o trace:
alter session set events ´10046 trace name context forever, level 8';
alter session tracefile_identifier=update;

para desativar o trace
alter session ser events ´10046 trace name context off´;

para tratar o trace

tkprof nomedoarquivo_update.trc update.txt sort=exeela,prsela,fchela sys=no

copie o trecho referente ao update incluse com os wait events.





________________________________
De: limaleodavid <[EMAIL PROTECTED]>
Para: oracle_br@yahoogrupos.com.br
Enviadas: Quarta-feira, 5 de Novembro de 2008 8:51:43
Assunto: [oracle_br] Otimizacao( Tuning )


Senhores 
Bom  dia .... 
Tenho uma tabela  que estou precisando diminuir o tempo de 
execucao 
dos processos, basicamente e uma tabela de transformacao (delete 
eupdate ), hoje ela esta demorando  ( 1/2 a 1 hora ), posso 
reescrever esta query, mas  antes  preciso de uma luz, dos 
conhecimentos de vcs, 

segue o desc da tabela ... 
CREATE TABLE SIM_RFCDEV.TMP_ PESSOA
(
MANDT             VARCHAR2(3 BYTE),
ID                VARCHAR2(10 BYTE),
CD_PESSOA         VARCHAR2(14 BYTE),
DT_INICIAL        VARCHAR2(11 BYTE),
NM_RAZAO_SOCIAL   VARCHAR2(70 BYTE),
DS_ENDERECO       VARCHAR2(60 BYTE),
DS_BAIRRO         VARCHAR2(60 BYTE),
DS_MUNICIPIO      VARCHAR2(100 BYTE),
UF                VARCHAR2(2 BYTE),
DS_PAIS           VARCHAR2(20 BYTE),
NR_CEP            VARCHAR2(8 BYTE),
NR_CNPJ_CPF       VARCHAR2(14 BYTE),
NR_INSCR_EST      VARCHAR2(20 BYTE),
NR_INSCR_MUNIC    VARCHAR2(14 BYTE),
NR_CEI            VARCHAR2(12 BYTE),
COD_GRUPOEMPRESA  VARCHAR2(4 BYTE),
COD_EMPRESA       VARCHAR2(4 BYTE),
COD_FILIAL        VARCHAR2(4 BYTE),
DT_MOVIMENTO      VARCHAR2(11 BYTE),
NR_INSCR_SUBST    VARCHAR2(14 BYTE),
CD_SUFRAMA        VARCHAR2(9 BYTE),
NR_NUMERO         VARCHAR2(10 BYTE),
DS_COMPLEMENTO    VARCHAR2(60 BYTE),
NR_CEP_CP         VARCHAR2(8 BYTE),
NR_CP             VARCHAR2(10 BYTE),
NR_FONE           VARCHAR2(15 BYTE),
NR_FAX            VARCHAR2(15 BYTE),
DM_RELACIONADO    VARCHAR2(1 BYTE),
DT_INI_REL        VARCHAR2(11 BYTE),
DT_FIN_REL        VARCHAR2(11 BYTE),
NR_NIT            VARCHAR2(11 BYTE),
CD_CNAE           VARCHAR2(20 BYTE),
NR_CATEGORIA      VARCHAR2(2 BYTE),
DT_IMPORTACAO     VARCHAR2(11 BYTE),
ID_USUARIO_IMP    VARCHAR2(5 BYTE),
NR_RG             VARCHAR2(20 BYTE),
CD_MUNICIPIO      VARCHAR2(7 BYTE),
CD_PAIS           VARCHAR2(5 BYTE),
DM_OPTANTE_SIMP   VARCHAR2(1 BYTE),
DS_EMAIL          VARCHAR2(60 BYTE),
NR_TERMINAL_ TEL   VARCHAR2(10 BYTE),
NR_CONTA_CONS     VARCHAR2(10 BYTE),
UF_HABILITACAO    VARCHAR2(2 BYTE),
DS_FIM            VARCHAR2(1 BYTE)
);

REATE TABLE SIM_RFCDEV.IN_ IMPORTACAO
(
ID_ARQUIVO              NUMBER                NOT NULL,
ID_EMPRESA              NUMBER(4)             NOT NULL,
DT_MOVIMENTO            DATE                  NOT NULL,
DM_SITUACAO             VARCHAR2(1 BYTE)      NOT NULL,
ID_USUARIO              NUMBER(5)             NOT NULL,
DS_MOTIVO_ENCERRAME NTO  CLOB
);

CREATE TABLE SIM_RFCDEV.CTRL_ EMPRESA
(
ID_EMPRESA                NUMBER(4)           NOT NULL,
NM_FANTASIA               VARCHAR2(60 BYTE)   NOT NULL,
ENDERECO_EMPRESA          VARCHAR2(40 BYTE)   NOT NULL,
NM_EMPRESA                VARCHAR2(60 BYTE)   NOT NULL,
BAIRRO_EMPRESA            VARCHAR2(30 BYTE)   NOT NULL,
CEP_EMPRESA               VARCHAR2(10 BYTE)   NOT NULL,
MUNICIPIO_EMPRESA         VARCHAR2(25 BYTE)   NOT NULL,
UF_EMPRESA                VARCHAR2(2 BYTE)    NOT NULL,
TELEFONE_EMPRESA          VARCHAR2(20 BYTE),
FAX_EMPRESA               VARCHAR2(20 BYTE),
EMAIL_EMPRESA             VARCHAR2(60 BYTE),
CEI_EMPRESA               VARCHAR2(20 BYTE),
INSCR_EMPRESA             VARCHAR2(20 BYTE)   NOT NULL,
CNPJ_EMPRESA              VARCHAR2(20 BYTE)   NOT NULL,
LICENCA_EMPRESA           NUMBER(10)          NOT NULL,
QTDE_USUARIO              NUMBER(4)           NOT NULL,
DT_INICIO                 DATE                NOT NULL,
DT_FINAL                  DATE                NOT NULL,
DM_IMPRIME_LOGO           VARCHAR2(1 BYTE)    NOT NULL,
ID_PESSOA                 NUMBER,
ID_FILIAL                 NUMBER,
ID_SEGMENTO_ EMPRESA       NUMBER(3)           NOT NULL,
DT_ANIVERSARIO            DATE,
COD_GRUPOEMPRESA          VARCHAR2(4 BYTE),
NR_JUNTA_COMERCIAL        VARCHAR2(20 BYTE),
DT_JUNTA_COMERCIAL        DATE,
CNAE_EMPRESA              VARCHAR2(9 BYTE),
COMPL_EMPRESA             VARCHAR2(30 BYTE),
NUMERO_EMPRESA            VARCHAR2(10 BYTE)   NOT NULL,
CD_NIT                    NUMBER(11),
CD_MUNICIPIO_ IBGE         NUMBER(7),
NR_INSCR_MUNICIPAL        VARCHAR2(20 BYTE),
NR_SUFRAMA                VARCHAR2(9 BYTE),
DM_CENTRALIZACAO          VARCHAR2(1 BYTE)    NOT NULL,
NR_CEP_CP                 VARCHAR2(10 BYTE),
NR_CAIXA_POSTAL           NUMBER,
NR_CACEAL                 NUMBER(9),
ALIQ_ICMS_ESTADO          NUMBER(5,2)         NOT NULL,
ID_REF_331_MUNICIPI O      NUMBER,
NR_INSCR_SUBSTITUTO _TRIB  NUMBER(14),
CD_BACEN                  VARCHAR2(20 BYTE),
CD_CVM                    VARCHAR2(20 BYTE),
CD_SUSEP                  VARCHAR2(20 BYTE),
CD_SPC                    VARCHAR2(20 BYTE),
NR_NIRE                   VARCHAR2(20 BYTE),
ID_NATUREZA_ JURIDICA      NUMBER,
DM_DECDIPJ                VARCHAR2(1 BYTE),
COD_EMPRESA               VARCHAR2(5 BYTE),
COD_FILIAL                VARCHAR2(5 BYTE),
CD_ANP_AGENTE             NUMBER(10),
LOGO                      BLOB,
ID_CNAE                   NUMBER,
NM_PREFEITURA             VARCHAR2(200 BYTE),
CNPJ_PREFEITURA           VARCHAR2(20 BYTE),
DM_REGIME_DECLARANT E      VARCHAR2(1 BYTE),
COD_CLIENTE_ SAP           VARCHAR2(10 BYTE),
NR_REG_EXPORTACAO         VARCHAR2(20 BYTE)
);

..  indices
CREATE  INDEX IDX ON TMP_PESSOA(ID) NOLOGGING COMPUTE STATISTICS ;

CREATE BITMAP INDEX IDX2 ON TMP_PESSOA 
(COD_EMPRESA, COD_FILIAL) NOLOGGING COMPUTE STATISTICS ; 

lembrando que  CTRL_EMPRESA tem poucos dados (2 mil no maximo),
e a IN_IMPORTACAO (200 mil );

TMP_PESSOA  (APROX . 2 MILHOES );

SEGUE A QUERY ... 
DELETE  FROM TMP_PESSOA TMP
WHERE EXISTS ( SELECT IMP.*
FROM IN_IMPORTACAO IMP
WHERE IMP.ID_ARQUIVO  IN ( 19,369,431)
AND IMP.DM_SITUACAO IN ( '4','5' )
AND IMP.ID_EMPRESA = ( SELECT CTRL.ID_EMPRESA
FROM CTRL_EMPRESA CTRL
WHERE CTRL.COD_EMPRESA 
= TRIM(TMP.COD_ EMPRESA) AND  (TMP.COD_EMPRESA IS NOT NULL OR 
TMP.COD_FILIAL IS NOT NULL )
AND 
((CTRL.COD_FILIAL IS NULL AND SUBSTR(CTRL. CNPJ_EMPRESA, 12,4) = '0001')
OR 
(CTRL.COD_FILIAL IS NOT NULL AND CTRL.COD_FILIAL = TRIM
(TMP.COD_FILIAL) ))
AND ROWNUM = 1)
AND IMP.DT_MOVIMENTO = TO_DATE('01/ '||
TO_CHAR(TO_DATE
(TMP.DT_INICIAL) ,'MM') || '/' ||
TO_CHAR(TO_DATE
(TMP.DT_INICIAL) ,'YYYY'), 'DD/MM/YYYY' ))
AND TMP.ID IS NOT NULL; 

desde ja agradeco 

 


      Novos endereços, o Yahoo! que você conhece. Crie um email novo com a sua 
cara @ymail.com ou @rocketmail.com.
http://br.new.mail.yahoo.com/addresses

[As partes desta mensagem que não continham texto foram removidas]

Responder a