segunda-feira, 19 de dezembro de 2011
Erro ORA-12899 em Import
ORA-12899: valor muito grande para a coluna "schema"."tabela"."coluna" (real: 105, máximo: 100).
Vale a pena observar a seguinte mensagem do log do import :
importação realizada nos conjuntos de caracteres WE8MSWIN1252 e NCHAR AL16UTF16
o servidor de importação usa o conjunto de caracteres AL32UTF8 (conversão de charset possível)
O nosso problema aconteceu pelo fato de o banco de origem ter um charset diferente do banco de destino.Qual a solução que tivemos ?No momento do export.exe devemos dizer o charset que queremos para garantir o import.
NLS_LANG="AMERICAN_AMERICA.AL32UTF8"
fica a dica
quarta-feira, 12 de outubro de 2011
Configuração do modo ARCHIVELOG
quinta-feira, 8 de setembro de 2011
Materialized view
execute dbms_mview.refresh ('');
Fazer manualmente o refresh Complete da MV :
execute dbms_mview.refresh ('','C');
terça-feira, 6 de setembro de 2011
Create Tablespace

quarta-feira, 3 de agosto de 2011
Memory_Target

Com as novas opções do Automatic Memory Management (AMM) do oracle 11g surgiu os novos para metros Memory_max_target eMemory_target.A estrutura dos paramentros de memória ficaram da seguinte forma hierarquica acima mostrada .
terça-feira, 2 de agosto de 2011
ADR - Automatic Diagnostic Repository
sexta-feira, 29 de julho de 2011
Cursor_Sharing
quarta-feira, 13 de julho de 2011
Lista de Processos Oracle em Execução na Instancia
terça-feira, 5 de julho de 2011
Forma rápida de Eliminar Sessões Maléficas
sábado, 25 de junho de 2011
Sql para Monitorar suas Tablespaces
quarta-feira, 1 de junho de 2011
Descubra o Tamanho de suas Tabelas
t.num_rows AS "Rows",
t.avg_row_len AS "Avg Row Len",
Trunc((t.blocks * p.value)/1024) AS "Size KB",
t.last_analyzed AS "Last Analyzed"
FROM dba_tables t,
v$parameter p
WHERE t.owner = :powner
AND p.name = 'db_block_size'
domingo, 29 de maio de 2011
10 Motivos para utilizar o RMAN
(1) RMAN vem com software da Oracle e é livre para usar (a partir da versão 8 do Oracle).
(2) RMAN se torna mais simples a cada dia. O simples backup BACKUP DATABASE banco de dados.
(3) Quando você usa o RMAN você está 100% certo de que é feito o backup do banco de dados.
(4) Com o RMAN pode validar um banco de dados antes de backup e também validar um banco de dados depois de ter backup.
(5) RMAN é a única ferramenta que oferece suporte a backup incremental.
(6) O RMAN faz a compressão e criptografia dos seus dados.
(7) Detecta e corrigi blocos conrropidos.
(8) Pode ter backup em paralelo e também restaurar a operação pode ser feita por paralelo.
(9) Vários relatórios e consultas através do RMAN.
(10) RMAN é uma ferramenta inteligente que nos ajudam a decidir consulta diversos como quais arquivos precisam ter backup, backup, que é obsoleto, que backup é expirado.
sábado, 28 de maio de 2011
ora-01115 io error reading block from file
EXP-00056: ORACLE error 1115 encountered
ORA-01115: IO error reading block from file 1 (block # 112022)
ORA-01110: data file 1: 'C:\ORACLE\ORADATA\SYSTEM01.DBF'
ORA-27091: skgfqio: unable to queue I/O
OSD-04006: ReadFile() failure, unable to read from file
O Banco de dados não estava em archivelog e o backup era feito apenas com export, o que fazia que uma tabela não tivesse seus dados exportados. O que podemos fazer neste caso ?Tentativa 1
Primeiro tentei recuparar o datafile com o Oracle dbv (database verify utility)
dbv file='C:\ORACLE\ORADATA\SYSTEM01.DBF'
Infelizmente o procedimento não resolveu o nosso problema ....Tentativa 2
Parti para tentar descobri que informações estão contidas no bloco do S.O defeituosos.
SELECT *
FROM DBA_EXTENTS
WHERE FILE_ID= :p1
AND :p2 BETWEEN BLOCK_ID AND BLOCK_ID + BLOCKS;
onde :p1 é o numero do datafile e :p2 é o numero do bloco defeituoso.
o que consegui fazer ? fiz um tabela clone (com a mesma estrutura da tabela com informacao em perigo) e fiz uma cópia de todas as informações possíveis.
Depois disso fiz um truncate na tabela com os dados com problema (no meu caso esta tabela não tinha relacionamento que outra tabela tivesse chave dependente).
Movi a tabela para uma nova tablespace temporário e preenchi esta tabela com os dados da tabela temporária.Depois disso fiz uma exportação Full da informação do SGDB.Troquei o HD defeituoso e refizemos a instalação do banco e o import dos dados.
Infelizmente a situação não garantiu em 100% a recuperação dos dados mas existiu uma forma de converter o problema e não torna-lo em algo ainda pior.
é muito importante uma politica de Backup segura !!!
Segue o link que me ajudou para chegar a uma solucao :
http://forums.oracle.com/forums/thread.jspa?threadID=2127758
quarta-feira, 18 de maio de 2011
Importancia do Modo archivelog
Com a utilizaçao do Rman conjuntamente o uso do Archivelog,temos um ambinete que alem de proteger as informações do SGDB de certa forma protege também todo o ambiente configurado do SGDB.Vou dar um exemplo :
Imaginemos um ambiente que trabalha 24 horas,7 dias da semana e que o backup utilizando o Rman só pode ser feito 3 dias na semana,ou seja dia sim ,dia não. Suponhamos que 20 horas após o ultimo backup schedulado,tivemos a perda de um datafile de uma tablespace muito importante.Apesar de conseguir fazer o restore com o Rman , perderiamos cerca de 20 horas de informações preciosas.Neste momento o archivelog vem nos salvar.Com os arquivos de archive ,conseguimos recuperar essas 20 horas de informação entre o backup do Rman e a pane que levou a perda do datafile.Muitas pessoas me perguntam a diferenca do recovery e do restore no Rman e fica um exemplo.
Portanto archivelog Sim !!!
Perda de um datafile de uma Tablespace
Exemplo considerando uso do modo archivelog e backup com Rman
(1) De um shutdown no database
(2) pelo Rman faça um restore dos datafiles que foram perdidos.
(3) pelo Rman faça um recovery do Banco.
(4) passe o banco para o status de open (startup open)
(5) Faça um backup das informações (exp ou Expdp)
(6) verifique a integridade da recuperação do Arquivo.
terça-feira, 17 de maio de 2011
Perda dos controlfiles
(1) Tenta levantar o banco em modo open,se não for possível , faça em modo nomount.
(2) execute o arquivo de trace,com o comando de recriação de datafile.
(3) Agora levante o banco em modo open.
(4) Faça backup full de seus dados.
(5) Analise a saúde do seu database.
Perda de Grupo de redo Log Online inativo
(1) shutdown immediate ;
(2) Startup mount ;
(3) Checar com view v$log para determinar se o arquivo foi arquivado.
(4) Checar no V$datafile para determinar se há algum datafile offline,que possa requere o log que não foi arquivado para traze-lo de volta.Faça um commando alter database clear logfile.As palavras unrecoverable datafile são necessárias.
(5) O datafile e sua tablespace devem ser dropadas,porque o redo necessário para traze-lo de volta para online foi "limpo" e não há cópia dele.
(6) adicione um novo grupo de redo log exemplo :
alter database add logfile group xxx
(7) drop o group file danificado
alter database drop logfile gorup xxxx onde xxxx é o group danificado
(8) adicione os menbros restantes do grupo excluido no novo grupo criado.
(9) abra o banco e faça um backup full dos seus dados.
quarta-feira, 11 de maio de 2011
Savepoints
Segue um exemplo bem simples de um comando que vejo ser muito pouco utilizado no controle de transações, o Savepoints .
insert into empregados (id_empregado,nome,sobrenome,salario) values (1,'Patricia','Moreira',1000) ;
insert into empregados (id_empregado,nome,sobrenome,salario) values (1,'Bruno','Gomes',1000) ;
COMMIT ;
UPDATE EMPREGADOS
SET SALARIO = 5000
WHERE SOBRENOME = 'MOREIRA';
SAVEPOINT BANDA_MOREIRA ;
UPDATE EMPREGADOS
SET SALARIO = 6000
WHERE SOBRENOME = 'GOMES';
SAVEPOINT BANDA_GOMES ;
SELECT SUM(salrio)
FROM empregados;
ROLLBACK TO SAVEPOINT BANDA_GOMES ;
UPDATE EMPREGADOS
SET SALARIO = 4000
WHERE SOBRENOME = 'GOMES' ;
commit ;
DML , DDL , DCL E TCL
DML (Data manipulation Language)
Select,Insert,Update,Delete e Merge
DDL(Data Defenition Language)
Create,Alter,Drop,Rename,Truncate e Comment
DCL ( Data Control Language)
Grant e Revoke
TCL (Transaction Control Language)
Commit,RollBack e Savepoint .
segunda-feira, 9 de maio de 2011
Exemplo de Cold Backup para Servidores Windows
Para o melhor funcionamento,devemos ter no servidor a seguinte estrutura de diretórios :
C:\cold_bkp_orcl\script .
Dentro do diretório C:\cold_bkp_orcl\script teremos os seguintes script
COLDBK.bat com o seguinte conteúdo :
rem --------------COLDBK.bat---------------
c:
cd\
cd cold_bkp_orcl
del *.* /F /Q
sqlplus "system/senha" @C:\cold_bkp_orcl\script\coldbk.SQL
sqlplus "system/senha" @C:\cold_bkp_orcl\script\Spfile-copy.SQL
COLDBK.sql com o seguinte conteúdo :
--------------COLDBK.SQL---------------
set term off
set head off
set feedback off
set verify off
spool C:\cold_bkp_orcl\startcopy.bat
select 'copy '||name||' C:\cold_bkp_orcl' from v$datafile;
select 'copy '||name||' C:\cold_bkp_orcl' from v$controlfile;
select 'copy '||name||' C:\cold_bkp_orcl' from v$tempfile;
select 'copy '||member||' C:\cold_bkp_orcl' from v$logfile;
create pfile='C:\cold_bkp_orcl\spfile.ora' from spfile ;
spool off
shutdown IMMEDIATE
host C:\cold_bkp_orcl\startcopy.bat
startup
host del C:\cold_bkp_orcl\startcopy.bat
set term on
set head on
set feedback on
set verify on
-------------------------------
basicamente fazemos o shutdown do banco de dados e depois fazemos cópias dos seguintes arquivos
datafiles
controlfiles
tempfiles
logfiles
SPfile
sexta-feira, 6 de maio de 2011
Apostila de RMAN - Conceitos Básicos
Segue o Link do material :
https://rapidshare.com/files/460918067/RMAN_-_CONCEITOS_BASICOS.pdf
sexta-feira, 15 de abril de 2011
Verificar se Indices devem passar por Rebuild
CREATE TABLE MMED_INDICE_STATUS (INDEX_NAME VARCHAR(100),PCT_DELETED NUMBER,PCT_USED NUMBER,BLOCK NUMBER,DTEXECUAO DATE DEFAULT SYSDATE) ;
ALTER TABLE MMED_INDICE_STATUS ADD CONSTRAINT PK_MMED_IND_STATUS PRIMARY KEY (INDEX_NAME,DTEXECUAO) ;
(2) -- RODAR A QUERY ABAIXO E PEGAR O RESULTADO DELA PARA EXECUAR
SELECT COMM
FROM(
SELECT 1 AS ID,
ROWNUM AS ID2,
'ANALYZE INDEX ' ||INDEX_NAME || ' VALIDATE STRUCTURE ; ' AS COMM
FROM DBA_INDEXES
WHERE OWNER = '&user'
UNION ALL
SELECT 2 AS ID,
ROWNUM ID2,
'INSERT INTO MMED_INDICE_STATUS SELECT NAME,TRUNC(100*(NVL(DEL_LF_ROWS,1)/NVL(LF_ROWS,1))) PCT_DELETED, PCT_USED ,BLOCKS ,SYSDATE FROM INDEX_STATS ;' AS COMM
FROM DBA_INDEXES
WHERE OWNER = '&user'
ORDER BY ID2,ID
)
(3) -- EXECUTAR O RESULTADO DO PASSO 3 E DAR COMMIT .
COMMIT ;
(4) -- VERIFICAR OS INDICES COM MAIS DE 30 % DE FRAGMENTAÇÃO
SELECT DISTINCT A.* ,B.TABLE_NAME
FROM MMED_INDICE_STATUS A
JOIN DBA_INDEXES B ON B.INDEX_NAME = A.INDEX_NAME
WHERE PCT_DELETED > 20 AND PCT_DELETED < 100
ORDER BY PCT_DELETED DESC
(5) -- AJUSTA OS INDICES QUE FORAM ENCONTADOS COM FRAGMENTAÇÃO MAIOR QUE 20 %
-- RODAR A QUERY ABEIXO E DEPOIS EXECUTAR O RESULTADO
SELECT DISTINCT 'ALTER INDEX ' || A.INDEX_NAME || ' REBUILD TABLESPACE TSP_CLINICA_INDEX ; ' AS RESULTADO
FROM MMED_INDICE_STATUS A
JOIN DBA_INDEXES B ON B.INDEX_NAME = A.INDEX_NAME
WHERE PCT_DELETED > 20 AND PCT_DELETED < 100
terça-feira, 12 de abril de 2011
Views importantes
Segue uma lista de Views importantes que podem ser utilizadas mesmo com o banco de dados não estando no estado de open .
Views que podem ser utilizadas no estado de NOMOUNT
V$PARAMETER : Mostra informações sobre os parametros de inicialização do sistema.
V$SGA : Informações sobre a SGA da Instancia.
V$OPTION : opções da instancia ,exemplo se está em um ambiente em cluster ou se está utilizando ASM.
V$SESSION : informações sobre as sessões existentes na Instancia.
V$VERSION : Informações sobre a versões dos aplicativos que juntos formas o seu RDBMS.
V$INSTANCE : Informações básicas da instancia oracle.
Views que podem ser utilizados no estado de MOUNT.
V$CONTROLFILE : informações sobre os arquivos de controle.
V$DATAFILE : informações sobre os data files componentes das Tablespaces.
V$LOGFILE : informações dos arquivos de Redo Log que estiverem online.
sábado, 9 de abril de 2011
Documentação Oracle
http://www.oracle.com/technetwork/indexes/documentation/index.html
quarta-feira, 6 de abril de 2011
Dicas Para Otimização de Queries
(1) Entenda como utilizar o Parce do Oracle.Isso Economiza Shared Pool
SELECT sysdate from dual ; é diferente de select sysdate from dual ;
Select * from Emp where id_emp = :pvar1 é diferente de Select * from Emp where id_emp = :pvar2
(2) Conheca os dados da sua aplicacao no momento da criacao de seu Sql.Seja seletivo na informacao que você ira trazer na sua consulta Sql.
(3) Conheça as Colunas candidatas a índices são apenas aquelas que são mencionadas após WHERE e AND, em uma cláusula SQL;
(4) não use colunas como índice se esta é sempre mencionada através do uso de uma função (exemplo, FLOOR ou ABS), ou manipulacão de string e conversão (exemplo, SUBSTR ou TO_NUMBER);
Exemplo: SELECT nm FROM empregado WHERE SUBSTR(nome,1,5) = ‘BRUNO’;
(5) Durante o processo de seleção das colunas para criaçao de um índices compostos, verifique aquelas colunas que são utilizadas no WHERE e AND juntas durante a aplicação em muitas situaçoes. Se elas são utilizadas separadamente no WHERE e AND tanto quanto em conjunto, dois índices simples pode ser melhor;
(6) Muito CUIDADO com Inner e Left Joins de suas SQL !!! Um query mal montada não tem indice que resolva !!!
segunda-feira, 21 de março de 2011
Erros ao tentar conectar uma instancia Oracle
conn [usuario]
Alguns erros comuns serão abaixo exemplificados com seus possíveis erros.
==> ORA-01017: invalid username/password; logon denied
você conseguiu estabelecer contato com sua instancia Oracle porem errou a senha do usuário .
==> ORA-12505: TNS:listener does not currently know of SID given in connect
Ou o SID é incorreto no arquivo tnsnames, ou o listener não está comnseguindo comunicacao com ele. Verifique o tnsnames.ora primeiro. Se lhe parece bem, fazer um 'status lsnrctl' em seu servidor, para ver quais bancos de dados que o ouvinte está ouvindo.
==> ORA-12514: TNS:listener could not resolve SERVICE_NAME given in connect
Isso é um erro comum e significa que, enquanto o listener se contactável, o banco de dados (ou melhor, o serviço) especificado no tnsnames não está respondendo ao listener.Provavelmente a instancia oracle desejada não está disponível.
sexta-feira, 18 de março de 2011
Teste de Comunicação entre Client e o Listener
Para fazer um simples teste podemos utilizar o comando tnsping
Ex : tnsping orcl11g

Usado o adaptador TNSNAMES para resolver o apelido
Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)
(HOST = 192.168.100.202)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = orcl)))
OK (10 ms)
Podemos receber uma mensagem de erro e ai vai algumas das mais conhecidas :
TNS-03505: Failed to resolve name
O nome do banco de dados especificado não foi encontrado no tnsnames.ora, onames ou LDAP. Isso significa que TnsPing nem mesmo ido tão longe como tentando fazer contato com um servidor - ele simplesmente não consegue encontrar nenhum registro de banco de dados que você está tentando TnsPing. Verifique se você digitou o nome do banco de dados corretamente, e que tem uma entrada no tnsnames.ora.
TNS-12545: Connect failed because target host or object does not exist
O host especificado no tnsnames não está contactável. Verifique se você digitou o nome do host corretamente. Se tiver, tente pingar o host com 'ping
O nome do host era válido, mas o Listener não estava contactável. Coisas a verificar é que o tnsnames tem a porta correta (e hostname) especificada, e que o ouvinte está rodando no servidor e usando a porta correta.
Verificar Hora que foi o ultimo Startup da Instancia
from v$instance ;
/
sexta-feira, 11 de março de 2011
Recovery Manager (RMAN) Básico em exemplos - Parte 4
Um banco de Dados inteiro
RMAN> STARTUP FORCE MOUNT;
RMAN> RESTORE DATABASE;
RMAN> RECOVER DATABASE;
RMAN> ALTER DATABASE OPEN;
Uma tablespace
RMAN> SQL 'ALTER TABLESPACE users OFFLINE';
RMAN> RESTORE TABLESPACE users;
RMAN> RECOVER TABLESPACE users;
RMAN> SQL 'ALTER TABLESPACE users ONLINE';
Um datafile
RMAN> SQL 'ALTER DATABASE DATAFILE 64 OFFLINE';
RMAN> RESTORE DATAFILE 64;
RMAN> RECOVER DATAFILE 64;
RMAN> SQL 'ALTER DATABASE DATAFILE 64 ONLINE';
Passos a serem seguidos :
(1) coloque o banco no status mount .
(2) Restore os arquivos necessários com o commando RESTORE.
(3) Recover os datafiles com o commando RECOVER .
(4) Volte o banco ao status de open
quinta-feira, 10 de março de 2011
Verificar Objetos Inválidos na instância
NAME ,
TYPE,
LINE||'/'||POSITION "LINE_COL",
TEXT "ERROR"
FROM DBA_ERRORS
ORDER BY LINE
quarta-feira, 2 de março de 2011
Recovery Manager (RMAN) Básico em exemplos - Parte 3
SHOW : Exibe as configuracoes permanentes do RMAN .Configuracoes como canais automaticos,estratégia de retenção , numero de cópias e etc... .
LIST : Exibe as informações sobre os backup efetuados.
REPORT : Bem mais sofisticado que as duas opções acima.Ira te mostar uma visão detalhado do repositório.
RMAN para Backup de Archive.
Os arquivos gerados pelo processo de archive log podem participar do backup do RMAN.
Utilizando o comando BACKUP ARCHIVELOG
a opção de escopo padrao é a ALL ,mas temos from time, until time etc...
sexta-feira, 25 de fevereiro de 2011
Recovery Manager (RMAN) Básico em exemplos - Parte 2
Para configurarmos um canal default podemos utilizar o exemplo abaixo :
configure default device type
onde :
tipo : podemos utilizar disk ou sbt(fita).
formato : nome padrao dos arquivos a serem gerados (explicado opções na post parte 1)
n : Nível de paralelismo a ser utilizado
nn : Tamanho permitido para cada pedaco dos arquivos do backup.
A Alocação poderá ser feita no momento da execucao do backup com o commando allocate
exemplo :
allocate channel teste_ram type disk format 'c:\bkp\%s_%U.bkp' ;
backup
quarta-feira, 23 de fevereiro de 2011
Recovery Manager (RMAN) Básico em exemplos - Parte 1
Para executar o RMAN , no prompt do sistema operacional chame : Rman
c:\ rman target /
Comando BACKUP
Para eloborarmos backup temos que utilizar o comando backup com as seguites opções
Full : Todos os blocos do banco target serao copiados
Incremental Level : Nivel incremental do Backup
database : Determina a cópia de todos os datafiles.Podemos também especificar a
OPÇAO INCLUDE CURRENT CONTROL FILE
Tablespace : Permite determinar a tablespace a ser parte do backup
datafile : Permite especificar um o mais datafiles :
Format : Permite determinar o nome dos arquivos onde :
%s : Numero do Backup set
%p : Identifica o peice dentro do backup
%d : Possibilita a insercao do nome do banco target
%u : Insere um conjunto de 8 caracteres .
%U : igual a %u || %p || %c
Exemplo : BACKUP format'c:\bkp\%d_%s_%p.bkp' incremental level 0 database
Parametrosde inicialização modificaveis
select name
, value
from v$parameter
where ismodified != 'FALSE'
Paramentos de incilização não Default
select name
, value
from v$parameter
where isdefault = 'FALSE'
and value is not null
order by name
sábado, 12 de fevereiro de 2011
Identificar queries com parse Alto
select sql_id,version_count from v$sqlarea where version_count > 20 ;
Exemplo de resultado :
SQL_ID VERSION_COUNT
-------------------------------------------------------------
56wzt9qfdnrju 63
9u8t5m5cqx844 81
0x5xgr3mcddb1 56
6thv1hstvkcg9 187
3083syarq6g7j 113
(2) vamos verificar qual o sql de uma destas versões .
select SQL_TEXT from v$sql where SQL_ID = '8p1pztfdxut3u' and rownum = 1
(3) depois disso pegamos o motivo das vários execuções com esse script abaixo :
select * from v$sql_shared_cursor where sql_id = '8p1pztfdxut3u'
Essa querie a partir da quinta coluna traz campos com resultado S ou N .As colunas que estiverem com 'Y'
estão dizendo o motivo dessa query filha (child_address) não ter utilizado o parse da query original (adress).
os motivos que podem acontecer são os seguintes :
UNBOUND_CURSOR,
SQL_TYPE_MISMATCH,
OPTIMIZER_MISMATCH,
OUTLINE_MISMATCH,
STATS_ROW_MISMATCH,
LITERAL_MISMATCH,
FORCE_HARD_PARSE,
EXPLAIN_PLAN_CURSOR,
BUFFERED_DML_MISMATCH,
PDML_ENV_MISMATCH,
INST_DRTLD_MISMATCH,
SLAVE_QC_MISMATCH,
TYPECHECK_MISMATCH,
AUTH_CHECK_MISMATCH,
BIND_MISMATCH,
DESCRIBE_MISMATCH,
LANGUAGE_MISMATCH,
TRANSLATION_MISMATCH,
BIND_EQUIV_FAILURE,
INSUFF_PRIVS,
INSUFF_PRIVS_REM,
REMOTE_TRANS_MISMATCH,
LOGMINER_SESSION_MISMATCH,
INCOMP_LTRL_MISMATCH,
OVERLAP_TIME_MISMATCH,
EDITION_MISMATCH,
MV_QUERY_GEN_MISMATCH,
USER_BIND_PEEK_MISMATCH,
TYPCHK_DEP_MISMATCH,
NO_TRIGGER_MISMATCH,
FLASHBACK_CURSOR,
ANYDATA_TRANSFORMATION,
INCOMPLETE_CURSOR,
TOP_LEVEL_RPI_CURSOR,
DIFFERENT_LONG_LENGTH,
LOGICAL_STANDBY_APPLY,
DIFF_CALL_DURN,
BIND_UACS_DIFF,
PLSQL_CMP_SWITCHS_DIFF,
CURSOR_PARTS_MISMATCH,
STB_OBJECT_MISMATCH,
CROSSEDITION_TRIGGER_MISMATCH,
PQ_SLAVE_MISMATCH,
TOP_LEVEL_DDL_MISMATCH,
MULTI_PX_MISMATCH,
BIND_PEEKED_PQ_MISMATCH,
MV_REWRITE_MISMATCH,
ROLL_INVALID_MISMATCH,
OPTIMIZER_MODE_MISMATCH,
PX_MISMATCH,
MV_STALEOBJ_MISMATCH,
FLASHBACK_TABLE_MISMATCH,
LITREP_COMP_MISMATCH,
PLSQL_DEBUG,
LOAD_OPTIMIZER_STATS,
ACL_MISMATCH,
FLASHBACK_ARCHIVE_MISMATCH,
LOCK_USER_SCHEMA_FAILED,
REMOTE_MAPPING_MISMATCH,
LOAD_RUNTIME_HEAP_FAILED,
HASH_MATCH_FAILED,
PURGED_CURSOR,
BIND_LENGTH_UPGRADEABLE
Backup com Datapump
create directory my_dir as 'c:\temp\'
Exportação
expdp system/****** schemas=scott dumpfile=scott.dp directory=my_dir
Importação
impdp system/****** schemas=scott dumpfile=scott.dp directory=my_dir
sexta-feira, 11 de fevereiro de 2011
Uso da PGA por sessões
SS.OSUSER ,
ST.SID "SID",
SN.NAME "TYPE",
CEIL(ST.VALUE / 1024 / 1024) "MB"
FROM V$SESSTAT ST
JOIN V$SESSION SS ON ST.SID = SS.SID
JOIN V$STATNAME SN ON ST.STATISTIC# = SN.STATISTIC#
WHERE UPPER(SN.NAME) LIKE '%PGA%'
AND SS.TYPE <> 'BACKGROUND'
ORDER BY ST.SID,ST.VALUE DESC
Capturar queries executadas em um determinado Periodo
CREATE TABLE SQL_EXEC_BEFORE AS
SELECT EXECUTIONS
, HASH_VALUE
FROM V$SQLAREA
(2) Depois gere outra tabela para guardar as queries do momento 2 :
CREATE TABLE SQL_EXEC_AFTER AS
SELECT EXECUTIONS
, HASH_VALUE
FROM V$SQLAREA
(3) Com esta querie abaixo você identifica os sql que foram executados e iniciados entre o periodo 1 e 2 :
SELECT dd.HASH_VALUE ,dd.SQL_TEXT
FROM V$SQLTEXT dd
WHERE dd.HASH_VALUE in ( SELECT AFT.HASH_VALUE
FROM SQL_EXEC_BEFORE BEF ,SQL_EXEC_AFTER AFT
WHERE AFT.EXECUTIONS > BEF.EXECUTIONS
AND AFT.HASH_VALUE = BEF.HASH_VALUE (+)
)
ORDER BY
HASH_VALUE
, PIECE
quinta-feira, 10 de fevereiro de 2011
Roles e Grants de um usuário
from(
Select x.Grantee As Usuario ,y.Granted_Role As Permissao
From Dba_Role_Privs X
join Role_Role_Privs y on y.Role = x.Granted_Role
union all
Select x.Grantee As Usuario ,y.PRIVILEGE As Permissao
From Dba_Role_Privs X
join Role_sys_Privs y on y.Role = x.Granted_Role
)
where usuario = upper(:usuario)
order by usuario desc
Oracle 11 G release 2 - DBA_users
Com isso a velha tecnica de mudar a senha de um usuario.fazr modificacoes de dados e voltar a senha deste usuário com alter user
Roles , Grants - Cuidados com permissões
Select Role ,Granted_Role As Filho , 'ROLE' As Tipo
From Role_Role_Privs
Union All
Select Role ,PRIVILEGE As Filho , 'GRANT' As Tipo
From Role_sys_Privs
order by role
Como dar acesso a todos os objetos de um schema para :
SELECT decode(object_type,
'TABLE','GRANT SELECT, INSERT, UPDATE, DELETE , REFERENCES ON'||&OWNER||'.',
'VIEW','GRANT SELECT ON '||&OWNER||'.',
'SEQUENCE','GRANT SELECT ON '||&OWNER||'.',
'PROCEDURE','GRANT EXECUTE ON '||&OWNER||'.',
'PACKAGE','GRANT EXECUTE ON '||&OWNER||'.',
'FUNCTION','GRANT EXECUTE ON'||&OWNER||'.' )||object_name||' TO MI_PROPIO_ROLE ;'
FROM user_objects
WHERE OBJECT_TYPE IN ( 'TABLE', 'VIEW', 'SEQUENCE', 'PROCEDURE', 'PACKAGE','FUNCTION')
Order By Object_Type
Roles e Grants de um usuário :
Select Grantee, Granted_Role
FROM dba_role_privs ;
quarta-feira, 9 de fevereiro de 2011
Pacote Statspack
(1) Intalacao
Crie um tablespace de pelo menos 300 mb
execute o comando que esta em : /rdbms/admin/spcreate
@?/rdbms/admin/spcreate
(2) Gerar uma analise do seu banco
Execute o comando :exec statspack.snap;
(3) Eliminar uma Analise
Execute o comando :@?/rdbms/admin/sppurge;
(3) Gerando um relatorio da analise
Execute o comando :@?/rdbms/admin/spreport.sql
(4) Gerando um relatorio da analise
Execute o comando :
col "Date/Time" format a30
select snap_id
, snap_level
, to_char(snap_time,'HH24:MI:SS DD-MM-YYYY') "Date/Time"
from stats$snapshot
, v$database
order by snap_id
/
(5) Removendo o Statspack
Execute o comando :@?/rdbms/admin/spauto.sql
(6) Shedulando analise automatica
Execute o comando :
@?/rdbms/admin/spdrop
Apesar de ser um recurso orinal do oracle 9i,continua sendo muito útil.