Re: RES: RES: RES: RES: RES: [oracle_br] Re: delete

2016-09-18 Por tôpico jlchia...@yahoo.com.br [oracle_br]
Nelson, na verdade a nota é bem específica, reportando sobre o bug "ACCESSING 
REMOTE OBJECT ON 10.2 DB THRU DBLINK FROM 9.2.0.7 DB FAILS", que acontecia em 
conexões entre  9.2.0.7 x 10.2.0.3 - ele já foi corrigido nos patchsets 
posteriores 9.2.0.8 e 10.2.0.4/acima ... Como o colega lá reportor que o banco 
9i já está em 9.2.0.8 E o banco 11g está em 11.2.0.4, com certeza esse bugfiz 
já está presente...
 Já que a nota Oficial de compatibilidade entre client x server (nota "Client / 
Server Interoperability Support Matrix for Different Oracle Versions" (Doc ID 
207303.1) ) confirma Suporte entre conexões 9.2.0.8 x 11.2.0.4 em princípio nós 
CREMOS que deveria funcionar sem probs - eu até Recomendei acesso ao Suporte, 
para que seja verificada a remota chance de re-raise desse bug ou de similares, 
mas isso em pricnípio É suportado e Não deveria acontecer aqui...
 
 A minha Suposição na situação reportada pelo colega não é de bug nem de 
incompatibilidade já detectada mas sim de questão local causando demora anormal 
: digamos, o tempo de resposta do acesso ao dicionário no banco remoto tá 
anormalmente alto, ou alguém/alguma coisa tá usando recurso (tabela, latch) 
necessário para o PL/SQL, que aí fica waiting 
 
 
  []s
  
Chiappa
 

Re: RES: RES: RES: RES: RES: [oracle_br] Re: delete

2016-09-17 Por tôpico Nelson Cartaxo ncart...@yahoo.com [oracle_br]
Amigo,

Só uma coisa que acho que não se ligou. Conexão entre oracle 9i e 11g não são 
suportadas pela oracle, principalmente através de packages. Da uma olhada nesse 
doc id no metalink ID:340597.1

Abraços 

Att,
Nelson Cartaxo

Enviado via iPhone

> Em 16 de set de 2016, às 15:15, 'Ednilson Silva' ednilson.si...@jbs.com.br 
> [oracle_br]  escreveu:
> 
> Chiappa,
> 
> Segue resultados dos scripts, do Banco Origem. No Banco Destino nem chega a 
> abrir sessão.
> 
>  
> 
> No 9i não existe o DBMS_STATS.gather_dictionary_stats então fui executar o 
> dbms_stats.gather_schema_stats('SYS'); e ocorreu erro.
> 
>  
> 
> ERROR at line 1:
> 
> ORA-01422: exact fetch returns more than requested number of rows
> 
> ORA-06512: at "SYS.DBMS_STATS_INTERNAL", line 160
> 
> ORA-06512: at "SYS.DBMS_STATS", line 10031
> 
> ORA-06512: at "SYS.DBMS_STATS", line 10324
> 
> ORA-06512: at "SYS.DBMS_STATS", line 10378
> 
> ORA-06512: at "SYS.DBMS_STATS", line 10355
> 
> ORA-06512: at line 1
> 
>  
> 
> Não sei informar como esta as estatísticas do SYS, por isso pensei em 
> executar. Com qualquer outro usuário executa com sucesso.
> 
>  
> 
> SQL> set linesize 132
> 
> SQL> SELECT a.sid, a.saddr, b.ses_addr, a.username, b.xidusn, b.used_urec, 
> b.used_ublk
> 
> FROM   v$session a, v$transaction b
> 
> WHERE  a.saddr = b.ses_addr;
> 
>   23
> 
>SID SADDRSES_ADDR USERNAME   XIDUSN  
> USED_UREC  USED_UBLK
> 
> --   -- -- 
> -- --
> 
> 18 6920A568 6920A568 PRODUCAO3
>   1  1
> 
> 12 6B206C24 6B206C24 PRODUCAO4  
> 21646254
> 
>  
> 
> SQL> SELECT * from dba_waiters;
> 
>  
> 
> no rows selected
> 
>  
> 
> SQL> SELECT
> 
> DECODE(request,0,'Holder: ','Waiter: ')||sid sess,
> 
> id1, id2, lmode, request, type
> 
>   FROM V$LOCK
> 
> WHERE (id1, id2, type) IN
> 
>(SELECT id1, id2, type FROM V$LOCK WHERE request>0)
> 
> ORDER BY id1,   request;
> 
>   234567
> 
> no rows selected
> 
>  
> 
> SQL> SELECT
> 
>   2  a.osuser || ':' || a.username   UserID
> 
>   3, a.sid || '/' || a.serial#   usercode
> 
>   4, b.lock_type Type, b.mode_held   Hold
> 
>   5, c.owner || '.' || c.object_name Object
> 
>   , ROUND(d.seconds_in_wait/60,2)   WaitMin
> 
>   67, a.program   Program
> 
> FROM
> 
> v$session   a
> 
>   89   10, dba_locks   b
> 
> 11, dba_objects c
> 
> 12, v$session_wait  d
> 
> 13  WHERE
> 
> 14a.sid=  b.session_id
> 
> 15AND b.lock_type  IN ('DML','DDL')
> 
> 16AND b.lock_id1   =  c.object_id
> 
> 17AND b.session_id  =  d.sid
> 
> 18  /
> 
>  
> 
> USERID
> 
> -
> 
> USERCODE  
> TYPE
> 
> -
>  --
> 
> HOLD
> 
> 
> 
> OBJECT
> 
> 
> 
>WAITMIN PROGRAM
> 
> -- 
> 
> :PRODUCAO
> 
> 12/4  
> DML
> 
> Row-X (SX)
> 
> PRODUCAO.IND_MOV_TEMPORANEA_EURO
> 
>  0
> 
>  
> 
> :PRODUCAO
> 
> 12/4  
> DML
> 
> Row-X (SX)
> 
> PRODUCAO.IND_MOV_TEMPORANEA_EURO_AUX
> 
>  0
> 
>  
> 
> :PRODUCAO
> 
> 12/4  
> DML
> 
> Row-X (SX)
> 
> PRODUCAO.IND_STATUS_TEMPORANEA_EURO
> 
>  0
> 
>  
> 
> :PRODUCAO
> 
> 12/4  
> DML
> 
> Row-X (SX)
> 
> PRODUCAO.IND_RASTR_TEMPORANEA_EURO
> 
>  0
> 
>  
> 
> :PRODUCAO
> 
> 12/4  
> DML
> 
> Row-X (SX)
> 
> PRODUCAO.IND_FILA_RASTR_TEMP
> 
>  0
> 
>  
> 
> :PRODUCAO
> 
> 12/4  
> DML
> 
> Row-X (SX)
> 
> PRODUCAO.IND_FILA_RASTR_TEMP_HIST
> 
>  0
> 
>  
> 
> :PRODUCAO
> 
> 12/4  
> DML
> 
> Row-X (SX)
> 
> PRODUCAO.IND_RASTR_TEMPORANEA_PER
> 
>  0
> 
>  
> 
>  
> 
> 7 rows selected.
> 
>  
> 
> SQL> select  substr(username,1,12) "User",
> 
>   substr(lock_type,1,18) "Lock Type",
> 
>   substr(mode_held,1,18) "Mode Held"
> 
>from sys.dba_lock a, v$session b
> 
>where lock_type not in 

Re: RES: RES: RES: RES: RES: [oracle_br] Re: delete

2016-09-16 Por tôpico jlchia...@yahoo.com.br [oracle_br]
Opa : então, foi cortada a sua msg, provavelmente por causa de limite de 
tamanho - sobe um arquivo-texto pra algum serviço de compartilhamento de 
arquivos e passa o link pra gente A gente não conseguiu ver mas ** creio ** 
que vc executou os scripts nos ** DOIS  ** bancos (nos DOIS, pois mesmo que não 
haja sessão sendo criada ainda nós Queremos ver os outros 
waits/locks/acessos/transações que possam estar havendo), no momento em que a 
sessão que está tentando criar a package tá em waiting/congelada, né ? 
  Nós queremos  ver Principalmente o resultado nos dois bancos de algumas 
execuções intervaladas daquele script para consultar sessões e seus WAITs, 
executadas nesse intervalo de tempo em que a sessão tentando criar a package 
congela...

Bem, mesmo sem a info completa algumas coisas podemos comentar : 

=> sim, poderia ser questão de estatísticas faltantes/incompletas no dicionário 
de dados, mas iirc na versão 9i ainda NÂO EXISTIA como vc as coletar  
manualmente (a DBMS_STATS.GATHER_FIXED_STATS só foi introduzida na 10g), ou 
mesmo (por causa de tablespace SYSTEM não criada como LMT) possa ser 
fragmentação NO caso, na época do 9i justamente por não termos outra opção 
quando tínhamos algum problema desse tipo de estatísticas o Suporte Oracle 
indicava algum HINT, ou te autorizava a recriar os objetos do SYS... Imagino 
que vc não tem Contrato de Suporte extendido ativo pra esse database 9i, pra 
eventualmente abrir um Chamado e solicitar atuação desse tipo do Suporte, né ?

=> eu vi em msgs anteriores que vc só tava botando dentro de BEGIN/END o 
DELETE, ie, tava usando um bloco anônimo : vc Testou colocando ao invés o 
DELETE num stored procedure nomeado, seja Procedure, Function ou Package ? É o 
mesmo sintoma ?

=> para tentar evitar envio de dados do banco remoto pela rede, vc já pensou em 
criar Lá no banco remoto uma procedure/function/package que faça o DELETE (aí, 
obviamente, vc não terá refereência a dblink na rotina, tudo será acesso local 
ao dicionário local) ? Se isso for bem, aí vc simplesmente executa no banco 
local a procedure remota que está criada lá no banco-remoto com um 
@nomedoplsql@nomedodatabaselink

=> teste também o HINT de DRIVING SITE, cfrme o manual 9i de Tuning , online em 
https://docs.oracle.com/cd/B10500_01/server.920/a96533/hintsref.htm#5699

[]s

  Chiappa

RES: RES: RES: RES: RES: [oracle_br] Re: delete

2016-09-16 Por tôpico 'Ednilson Silva' ednilson.si...@jbs.com.br [oracle_br]
Chiappa,

Segue resultados dos scripts, do Banco Origem. No Banco Destino nem chega a 
abrir sessão.

 

No 9i não existe o DBMS_STATS.gather_dictionary_stats então fui executar o 
dbms_stats.gather_schema_stats('SYS'); e ocorreu erro.

 

ERROR at line 1:

ORA-01422: exact fetch returns more than requested number of rows

ORA-06512: at "SYS.DBMS_STATS_INTERNAL", line 160

ORA-06512: at "SYS.DBMS_STATS", line 10031

ORA-06512: at "SYS.DBMS_STATS", line 10324

ORA-06512: at "SYS.DBMS_STATS", line 10378

ORA-06512: at "SYS.DBMS_STATS", line 10355

ORA-06512: at line 1

 

Não sei informar como esta as estatísticas do SYS, por isso pensei em executar. 
Com qualquer outro usuário executa com sucesso.

 

SQL> set linesize 132

SQL> SELECT a.sid, a.saddr, b.ses_addr, a.username, b.xidusn, b.used_urec, 
b.used_ublk

FROM   v$session a, v$transaction b

WHERE  a.saddr = b.ses_addr;

  23

   SID SADDRSES_ADDR USERNAME   XIDUSN  
USED_UREC  USED_UBLK

--   -- -- 
-- --

18 6920A568 6920A568 PRODUCAO3  
1  1

12 6B206C24 6B206C24 PRODUCAO4  
21646254

 

SQL> SELECT * from dba_waiters;

 

no rows selected

 

SQL> SELECT

DECODE(request,0,'Holder: ','Waiter: ')||sid sess,

id1, id2, lmode, request, type

  FROM V$LOCK

WHERE (id1, id2, type) IN

   (SELECT id1, id2, type FROM V$LOCK WHERE request>0)

ORDER BY id1,   request;

  234567

no rows selected

 

SQL> SELECT

  2  a.osuser || ':' || a.username   UserID

  3, a.sid || '/' || a.serial#   usercode

  4, b.lock_type Type, b.mode_held   Hold

  5, c.owner || '.' || c.object_name Object

  , ROUND(d.seconds_in_wait/60,2)   WaitMin

  67, a.program   Program

FROM

v$session   a

  89   10, dba_locks   b

11, dba_objects c

12, v$session_wait  d

13  WHERE

14a.sid=  b.session_id

15AND b.lock_type  IN ('DML','DDL')

16AND b.lock_id1   =  c.object_id

17AND b.session_id  =  d.sid

18  /

 

USERID

-

USERCODE
  TYPE

-
 --

HOLD



OBJECT



   WAITMIN PROGRAM

-- 

:PRODUCAO

12/4
  DML

Row-X (SX)

PRODUCAO.IND_MOV_TEMPORANEA_EURO

 0

 

:PRODUCAO

12/4
  DML

Row-X (SX)

PRODUCAO.IND_MOV_TEMPORANEA_EURO_AUX

 0

 

:PRODUCAO

12/4
  DML

Row-X (SX)

PRODUCAO.IND_STATUS_TEMPORANEA_EURO

 0

 

:PRODUCAO

12/4
  DML

Row-X (SX)

PRODUCAO.IND_RASTR_TEMPORANEA_EURO

 0

 

:PRODUCAO

12/4
  DML

Row-X (SX)

PRODUCAO.IND_FILA_RASTR_TEMP

 0

 

:PRODUCAO

12/4
  DML

Row-X (SX)

PRODUCAO.IND_FILA_RASTR_TEMP_HIST

 0

 

:PRODUCAO

12/4
  DML

Row-X (SX)

PRODUCAO.IND_RASTR_TEMPORANEA_PER

 0

 

 

7 rows selected.

 

SQL> select  substr(username,1,12) "User",

  substr(lock_type,1,18) "Lock Type",

  substr(mode_held,1,18) "Mode Held"

   from sys.dba_lock a, v$session b

   where lock_type not in ('Media Recovery','Redo Thread')

   and a.session_id = b.sid;

  23456

 

User Lock Type  Mode Held

 -- --

 XR Null

PRODUCAO TransactionExclusive

PRODUCAO JQ Exclusive

PRODUCAO CU Exclusive

PRODUCAO DMLRow-X (SX)

PRODUCAO DMLRow-X (SX)

PRODUCAO TransactionExclusive

PRODUCAO DMLRow-X (SX)

PRODUCAO DMLRow-X (SX)

PRODUCAO DMLRow-X (SX)

PRODUCAO DMLRow-X (SX)

PRODUCAO DMLRow-X (SX)

 

12 rows selected.

 

SQL> SQL> select  substr(username,1,12) "User",

  substr(owner,1,8) "Owner",

  substr(name,1,15) "Name",

  substr(a.type,1,20) "Type",