FlashBack SQL

Alguns exemplos de consultas que podem usufruir dos comandos SQL.

Para descobrir as versoes das transações presentes no banco:

SELECT versions_xid, versions_startscn, versions_endscn, versions_operation, rowid, owner, object_name, object_type
FROM t
VERSIONS BETWEEN SCN MINVALUE AND MAXVALUE;

Exemplo de utilizacao do Flash back no tempo:

SELECT DISTINCT TBCLIENTE.*
FROM TBCLIENTE AS OF TIMESTAMP SYSTIMESTAMP – INTERVAL ’20’ MINUTE;

Custos no AWR – AWR – SQL Costs

SQL para mostrar as instrucoes que tendem a ter mais impacto no seu banco:

spool SQL_DELINQUENTE.LOG
col c1 heading ‘ID’ format a13
col c2 heading ‘Custo’ format 9,999,999
col c3 heading ‘Texto SQL’ format a200
select p.sql_id c1,p.cost c2,DBMS_LOB.SUBSTR(s.sql_text,4000,1) c3
from dba_hist_sql_plan p,dba_hist_sqltext s
where p.id = 0and p.sql_id = s.sql_id
and p.cost is not null
order by p.cost desc;

spool off

Alertas Advisor na pagina HOME do Enterprise Manager

Como visualizar as mensagens, dos alertas que aparecem na pagina home ou a pagina inicial do database control ?

–ALERTAS AINDA NAO RESOLVIDOS

SELECT REASON,OBJECT_TYPE TYPE,OBJECT_NAME NAMEFROM DBA_OUTSTANDING_ALERTS;

–ALERTAS RESOLVIDOS NO DBA_OUTSTANDING_ALERTS

SELECT REASON,OBJECT_TYPE TYPE,OBJECT_NAME NAMEFROM DBA_ALERT_HISTORY;

Criar dois arquivos ASMFAKE

# o comando abaixo interrompe o servico de acesso a dispositivos
# brutos – RAW
/etc/init.d/rawdevices stop
# apagar o conteudo da pasta /dev/raw -r recursivo -f sem questionar = force
rm -rf /dev/raw

# va ate a pasta /dev
cd /dev
# verifica qual a pasta atual
pwd
# recria os links de acesso aos dispositivos brutos
MAKEDEV raw
# lista a pasta /dev/raw
ls /dev/raw
# apaga o conteudo e a pasta abaixo se existir.
rm -rf /u01/asmdisks/*
# cria a pasta abaixo -p = parent nao precisa estar dentro da pasta para emitir o comando.
mkdir -p /u01/asmdisks
# troca o usuario e grupo do arquivo -R recursivo e force sem questionar
chown oracle:oinstall -Rf /u01/asmdisks
# va para a pasta
cd /u01/asmdisks
# verifica qual a pasta atual
pwd
# Preenche o arquivo abaixo com zero o arquivo em 200 x blocos de 1024k
dd if=/dev/zero of=/u01/asmdisks/asm_disk1 bs=1024k count=200
# Preenche o arquivo abaixo com zero o arquivo em 200 x blocos de 1024k
dd if=/dev/zero of=/u01/asmdisks/asm_disk2 bs=1024k count=200
# Altera a permissao liberando o arquivo totalmente
chmod 777 /dev/raw/raw*
chmod 777 /u01/asmdisks/*
# Altera usuario e grupo dos arquivos raw1 a raw5
chown oracle:oinstall /dev/raw/raw[1-5]
# inicio da associacao do dispositivo bruto ao Sistema operacional
losetup /dev/loop1 /u01/asmdisks/asm_disk1
losetup /dev/loop2 /u01/asmdisks/asm_disk2

# preencher o arquivo rawdevices para que no proximo Boot ele ja tenha conhecimento dos rawdevices
cat /dev/null > /etc/sysconfig/rawdevices

echo “/dev/raw/raw1 /dev/loop1” >> /etc/sysconfig/rawdevices
echo “/dev/raw/raw2 /dev/loop2” >> /etc/sysconfig/rawdevices

# grupo
chown root:oinstall /dev/loop[1-5]
# permissao
chmod 777 /dev/loop[1-5]

# Iniciar servico de rawdevices
/etc/init.d/rawdevices start

# Listar o rawdevices do SO
raw -qa

# reiniciar o clusterware
/u01/app/oracle/product/10.2.0/db_1/bin/localconfig reset
/u01/app/oracle/product/10.2.0/db_1/bin/localconfig delete
/u01/app/oracle/product/10.2.0/db_1/bin/localconfig add

# Listar os dispositivos reconhecidos pelo Oracle.
su – oracle
export ORACLE_SID=+ASM
/u01/app/oracle/product/10.2.0/db_1/bin/sqlplus sys/oracle as sysdba <startup;
alter system set “_asm_allow_only_raw_disks”=false scope=spfile;
alter system set asm_diskstring=’/u01/asmdisks/*’ scope=both;
shutdown immediate;
startup;
select path
from V$ASM_DISK;
exit;
EOF

exit

Exercicios: Confirme se a sua instancia ASM esta enxergando os discos fisicos. Para isso inicie o ASM e logo depoisverifique as informacoes na V$ASM_DISK, esta view mostra os discos descobertos pela instancia ASM.
Faça um script para isso:
Arquivo: listadiscoraw.shexport ORACLE_SID=+ASMsqlplus / as sysdba @listadiscoraw.sql
Arquivo: listadiscoraw.sql############### INICIOSET ECHO OFFselect *from V$ASM_DISK;############### TERMINO
Crie um script para criar os diskgroups passando como parametro o rawdevice, ou seja o numero do diskgroup aser criado. Com o script crie dois diskgroups: 1 e 2.Os nomes dos diskgroups sao dgroup1 e dgroup2Pode ser criado pelo dbca.
Arquivo: criadiskgroup.shexport ORACLE_SID=+ASMsqlplus / as sysdba @criadiskgroup.sql
Arquivo: criadiskgroup.sql############### INICIOCREATE DISKGROUP dgroup&EXTERNAL REDUNDANCYDISK ‘/u01/asmdisks/asm_disk&&’;############### TERMINO
Faça um script para confirmar se o seu diskgroup foi criado.Confirme se o diskgroup foi criado.
Arquivo: mostradiskgroups.sh#export ORACLE_HOMEexport ORACLE_SID=+ASMsqlplus / as sysdba @criadiskgroup.sql
Arquivo: mostradiskgroups.sql############### INICIOuse a V$ASM_DISKGROUP e V$ASM_FILE############### TERMINO
Metodos de utilizacao da ASM
Crie um script para criar a seguinte tablespace e logo depoisinserir dados em uma tabela CLIASM criada nesta TBS.
Arquivo: criatbs.sh#export ORACLE_HOMEexport ORACLE_SID=+ASMsqlplus / as sysdba @criatbs.sql
ARQUIVO criatbs.sql############### INICIOCREATE TABLESPACE TBSASM1 including datafiles and contents;CREATE TABLESPACE TBSASM1DATAFILE ‘+dgroup1’ SIZE 10M AUTOEXTEND ON;
create table CLIASM(CODIGO NUMBER,NOME VARCHAR2(100))tablespace TBSASM1;
insert into CLIASMvalues(1,’CLITESTE 1′);
insert into CLIASMvalues(2,’CLITESTE 2′);
commit;
select * from CLIASM;
select table_name, tablespace_name from user_tables;
exit;
############### TERMINOCrie a tabela a seguir:
create table dicionario as select * from dict;
Crie a tablespace TBSASM2 baseado no diskgroup2.
Mova os dados da tabela dicionariopara a tablespace TBSASM2.
alter table DICIONARIOtablespace TBSASM2;
Verifique atraves da tabela do dicionario DBA_SEGMENTS:
SELECT SUBSTR (s.owner, 1, 15) “OWNER “,SUBSTR (s.segment_name, 1, 30) “SEGMENT_NAME “,SUBSTR (s.segment_type, 1, 10) segment_tp, s.tablespace_name,s.next_extentFROM dba_segments sWHERE s.next_extent > (SELECT MAX (f.BYTES)FROM dba_free_space fWHERE f.tablespace_name = s.tablespace_name)/ Faca um script para fazer o backup copy dos datafilesda tablespace USERS.Restaure o datafile em questao para a TBSASM1.

Erro reports builder

Deparamos com um problema no reports builder exatamente quando se faz a visualizacao do relatorio pelo report builder em maquinas que tem a placa de video do tipo ATI Rage. Mas so conseguimos contornar visualizando o relatorio, pela opcao arquivo-> visualizar e nao usar a ferramenta de live preview.

O problema foi reduzido fazendo:

rwbuilder.exe userid=ora1/oracle@reportsdb JVMOPTIONS=”=-Xms512m -Xmx512m -Dsun.java2d.ddscale=true -Dsun.java2d.noddraw=true”

REP-3300 Fatal Error in Toolkit UI-4099

Atualizar a versao do java JRE que fica no painel de controle.

14.2.3 Java AWT Windows Hangs with Specific Graphics Cards
When you start Reports Server with rwserver.exe, the UI may not display and Reports Server may hang on computers with specific graphics cards (for example, ATI Rage XL PCI card). This occurs due to a problem with the UI mechanism used in Java.

As a workaround, start Reports Server with the JVMOPTIONS command line keyword set as shown in the following example:

rwserver SERVER=test JVMOPTIONS=”-Dsun.java2d.noddraw=true”

Oracle & SUN

De graça:

Nao adianta imaginar, pensar, ou refletir que um codigo aberto é simplesmente de graça, isso ate agride a inteligencia de qualquer ser humano – alguem sempre ta pagando a conta. De gratis, so o AR que respiramos.
E que se é open é o melhor e o mais rapido, e que nunca ira se pagar algo pra se ter uma solucao. Sempre tem um plugin pra se licenciar. Sempre temos um bom produto com boas pessoas e uma boa empresa por tras que nos garante isso. E isso OBVIAMENTE precisa de dinheiro, de todas as formas imaginaveis, ate para pagar a energia eletrica do servidor que hospeda o servidor de arquivos do servidor “FREE!!!”.
A Oracle, no meu ponto de vista, investiu no melhor e obviamente vai melhorar os produtos. Eu acho correto cobrar pelo suporte porque se voce quer uma configuracao melhor e maior deve pagar, ja patch e correcoes ja devem fazer parte do produto nao devem ser adquiridos a parte (vc errou vc deve corrigir). A SUN pagava a conta por ter o java, e o vendeu, se fosse extremamente lucrativo teria vendido ?

O que acho:

Os produtos que sao melhores devem sobreviver. Os que nao sao tao bons quanto o que existem da oracle, devem se manter na mesma versao que se encontram.
Veja o AS10g – agora seu kernel (servidor) é o BEA. O AS10g em alguns sites era penalizado em termos de performance, mas existe algum servidor que roda todos os produtos Oracle ? Ja viram um produto cliente servidor ir pra WEB sem mudar uma linha de codigo como o Oracle Forms ? Rodar o java puro e simples ate tomcat faz. Agora J2EE puro, tudo bem temos o Jboss, mas roda o que alem do java J2EE ? Qual produto ? Alias qual a gama de produtos ?
A Oracle foi uma das primeiras a criar seu servidor proprio (tinha seu proprio container, OAS 4.0) A Oracle pra mim continua a melhor de todas juntas.

Solaris ?

Nao se preocupe, Solaris tem varias caracteristicas que o Linux nao tem, o SO é incrivel.

Java vai acabar ?

Só se for para interromper 90% das paginas WEB da internet, fora os sistemas. O java é bytecode interpretado, lento pra até morrer, o que a Oracle deveria era criar um codigo que aumenta a sua velocidade e melhoria de uso de memoria. Bom seria isso que encontramos – estou com medo do java acabar – nas listas de discussao ?

Mysql codigo encerrado ?

Deveria ser encorporado ao banco oracle express que atualmente é free até 4GB como uma option quem sabe! O Oracle express atende aos pequenos e quando for grande, compre a licenca standard e cresça ! Quem usa somente o mysql nao sabe o que esta perdendo.

Minha conclusao:

A grande maioria dos softwares que rodam em piloto automatico, nao atendem aos gigantes. Os pequenos se acham resolvidos e portanto acham que a solucao é identica pra todos. Gente, entenda e estudo o software Oracle ou pelo menos leiam sobre os produtos, veja uma solução usando RAC na pratica, um AS10G em cluster na pratica, desenvolvimento e utilização do ADF e OFA, BAM, SOA suite, ERP Ebussines suite….

E nao somente dizer:

RODA, eu ja instalei, é next next finish, eu vi na internet uma reportagem….

A concorrencia é saudavel, portanto pessoal acho que alguns devem ficar acordados mais algumas milhares de noites para não deixar passar …

Exemplo para se criar uma Trigger

create or replace trigger
before insert or update
on

for each row
declare

begin

exception

end ;
/

create or replace trigger TRG_BI_TTCPJ
before insert on TTCPJ
for each row
begin
select SEQ_TTCPJ into :NEW.CODIGO from dual;
end;
/

Exemplo UTL_FILE

create or replace procedure criaarquivo (
path in varchar2,
filename in varchar2
)
is
output_file utl_file.file_type;
begin
output_file := utl_file.fopen (path,filename, ‘W’);

for cur_rec in (select linhas from TTCPJ order by codigo) loop
utl_file.put_line (output_file, cur_rec.linhas);
end loop;

utl_file.fclose(output_file);

–exception
— when others then null;
end;
/

Simulando ASM no Windows

SQL> alter system set “_asm_allow_only_raw_disks”=false scope=spfile;

No prompt do DOS crie sua pastinha onde estiver espaco pelo menos 1G.

cria a pasta em g:asmfake

Baixar
Ja o DD para windows esta no link:
http://www.chrysocome.net/download

De volta ao sqlplus:
set ORACLE_SID=+ASMsqlplus / as sysdba
SQL> alter system set asm_diskstring=’.ORCLDISK*’,’g:asmfake*’ scope=both;
SQL>shutdown
SQL>startup

Faça o download do DD e coloque em uma pasta para ser executado – http://www.chrysocome.net/dd

Pasta de G:asmfake

26/02/2007 23:50 342.016 dd.exe
13/03/2009 19:20 300 fake.bat
13/03/2009 19:22 10.240.000 fakeasm1
13/03/2009 19:22 10.240.000 fakeasm2
13/03/2009 19:22 10.240.000 fakeasm3
13/03/2009 19:22 10.240.000 fakeasm4
13/03/2009 19:22 10.240.000 fakeasm5
7 arquivo(s) 51.542.316 bytes
2 pasta(s) 6.377.570.304 bytes disponíveis

G:asmfake>type fake.bat
dd if=/dev/zero of=g:asmfakefakeasm1 bs=102400 count=100
dd if=/dev/zero of=g:asmfakefakeasm2 bs=102400 count=100
dd if=/dev/zero of=g:asmfakefakeasm3 bs=102400 count=100
dd if=/dev/zero of=g:asmfakefakeasm4 bs=102400 count=100
dd if=/dev/zero of=g:asmfakefakeasm5 bs=102400 count=100

G:asmfake>

Sem essa alteracao no sqlplus com ASM nao ira funcionar nao …

SQL> alter system set “_asm_allow_only_raw_disks”=false scope=spfile;

Pare e inicie de novo!

Faça a confirmacao dos discos ASM:

SQL> select path from v$asm_disk;
PATH
———————————————–
G:ASMFAKEFAKEASM1
G:ASMFAKEFAKEASM2
G:ASMFAKEFAKEASM5
G:ASMFAKEFAKEASM4
G:ASMFAKEFAKEASM3

Agora é so acionar o dbca e criar os discos normalmente.

Problema acionamento do ASM no windows

Bom tive este problema recentemente e nao deixei de registrar (memoria é muito curta) entao,
vi alguns comentarios e nada pra resolver meu probleminha.

A solucao vou ir no olhometro e acabei encontrando ai nessa pasta os logs para o css

C:appAdministradorproduct11.1.0db_1logtechmaxxpclient

Olha o erro:

2009-03-13 18:27:52.057: [ OCROSD][2480]utdvch: cannot write the new dev [C:appAdministradorproduct11.1.0db_1cdatalocalhostlocal.ocr] at offset 268537856 (26)2009-03-13 18:27:52.057: [ OCRRAW][2480]iniconf: failed trying to extend OCR location [C:appAdministradorproduct11.1.0db_1cdatalocalhostlocal.ocr] to size [268537856] with return [31]2009-03-13 18:27:52.057: [ OCRAPI][2480]a_init:5!: Setup unsuccessful : [31][ default][2480]procr_init failure of 31. Error:PROC-31: Dispositivo de armazenamento para o registro de cluster é muito pequeno Erro do sistema operacional [Espaço insuficiente no disco.] [112]

depois disso vou executar:

$ORACLE_HOMEbinlocalconfig reset
$ORACLE_HOMEbinlocalconfig add