segunda-feira, 11 de março de 2019

How to get last executed SQL (oracle)

How to get last executed SQL (oracle)



You can use the below query to get the last sql executed based on last sql which was active in database
select ltrim(sq.sql_text)
  from v$sql sq, v$session se, v$open_cursor oc
 where sq.sql_id = oc.sql_id
   and se.saddr = oc.saddr
   and se.sid = oc.sid
   and se.audsid = SYS_CONTEXT('userenv', 'sessionid')
 order by oc.LAST_SQL_ACTIVE_TIME desc;



terça-feira, 26 de fevereiro de 2013

Oracle SHUTDOWN IMMEDIATE Travado!

SHUTDOWN IMMEDIATE Travado!


Problemas com travamento ao tentar fazer um SHUTDOWN IMMEDIATE.
Após algum tempo o PMON não consegue encerrar todas as conexões e a instância fica travada.

$sqlplus / as sysdba

SQL*Plus: Release 11.2.0.3.0 Production on Tue Feb 26 14:16:59 2013
Copyright (c) 1982, 2011, Oracle.  All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL> shutdown immediate;





No arquivo alert_<instancia>.log fica repetindo a mensagem:

SHUTDOWN: waiting for active calls to complete.
Tue Feb 26 14:52:06 2013


Sugestão para resolver no Linux:

Evitar matar os processos via SO.
 
Abrir outra sessão de terminal com usuário oracle.
entrar como sysdba
executar
  SHUTDOWN ABORT
  STARTUP RESTRICT
  SHUTDOWN NORMAL

$ sqlplus / as sysdba
SQL*Plus: Release 11.2.0.3.0 Production on Tue Feb 26 14:51:52 2013
Copyright (c) 1982, 2011, Oracle.  All rights reserved.

Connected.


SQL> conn / as sysdba
Connected to an idle instance.
 

SQL> shutdown abort;ORACLE instance shut down.
SQL>
SQL> startup restrictORACLE instance started.

Total System Global Area 1.7003E+10 bytes
Fixed Size                  2245352 bytes
Variable Size            8992591128 bytes
Database Buffers         7985954816 bytes
Redo Buffers               22159360 bytes
Database mounted.
Database opened.
 

SQL>
SQL> select status from v$instance;

STATUS
------------
OPEN

SQL>
SQL> shutdown normalDatabase closed.
Database dismounted.
ORACLE instance shut down.
 

Pronto. Agora a instância está encerrada e os processos Oracle no Servidor também.
Desse modo ao fazer o startup há um recover da instância, mas não há arquivos corrompidos.


terça-feira, 18 de dezembro de 2012

SQL Fomatter

Ferramenta muito boa para formatar código SQL.

http://www.freeformatter.com/sql-formatter.html

Apresenta opções de colar código SQL na janela ou informar URL.
Tem ainda uma grande variedade de linguagens que podem ser formatadas.

Após a formatação basta clicar no botão COPY TO CLIPBOARD  e depois colar onde quiser.

Nota:
A única ressalva é tomar cuidado com comentários no código SQL, que podem ser formatados fora de posição.






terça-feira, 10 de janeiro de 2012

connection string oracle websphere

Problems to connect to Oracle RAC Server via WebSphere Application server.

Classical connection String

 jdbc:oracle:thin:@//ORACLE-SERVER:1521/SERVICE

works fine on Oracle sqldeveloper and Weblogic Application Server.

But, connecting via WebSphere requires a complete string like.

jdbc:oracle:thin:@(DESCRIPTION=(LOAD_BALANCE=off)(FAILOVER=on)(ADDRESS_LIST=(ADDRESS=(protocol=tcp)(host=node1)(port=1521))(ADDRESS=(protocol=tcp)(host=node2)(port=1521)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=service)))


Note: Don´t breake this line.

segunda-feira, 9 de janeiro de 2012

Reiniciar serviço de sincronização no Linux

Problemas com sincronização dos servidores de ntp?
Executar um comando simples para reiniciar o serviço.
Principalmente em servidores em cluster, com Oracle RAC ou websphere é de suma importância sincronizar a data.


# service ntpd restart
Shutting down ntpd: [ OK ]
ntpd: Synchronizing with time server: [ OK ]
Starting ntpd: [ OK ]

terça-feira, 3 de janeiro de 2012

Criar Objeto TYPE no Oracle 11g

Criar Objeto TYPE no Oracle 11g

Para a criação de procedure com retorno de multiplas linhas é necessário criar um ou mais objetos TYPE no Oracle 11g.

Perdi um bom tempo lidando com erros de compilação na minha procedure, com o compilador considerando meu TYPE como not Declared.
Seguindo os padrões da Empresa de criação de objetos no banco de dados fiz algo assim:


CREATE OR REPLACE TYPE      "tpDescricao01Descricao02"  

AS OBJECT
( cdColuna01 NUMBER(10),
cdColuna02 NUMBER(10),
cdColuna03 NUMBER(10) );


O nome está alternando maiusculas e minusculas. Até ai tudo bem, o compilador do Oracle aceita e cria o objeto TYPE.
No entanto, ao tentar usar em uma procedure, a mesma não compila.

Erro(1,81): PLS-00201: identifier 'TPDESCRICAO01DESCRICAO02' must be declared

SOLUÇÃO:
Sempre criar os nomes de objeto TYPE com letras maiúsculas, pois o Oracle faz um UPPERCASE para trabalhar com os TYPES.