segunda-feira, 24 de agosto de 2015
Diferença entre DML , DDL , DCL e TCL
sábado, 20 de abril de 2013
Criação de arquivo utilizando Select–Oracle
Segue dica para geração de arquivo a partir de uma consulta de forma rápida utilizando SqlPlus:
{
echo "set pagesize 0"
echo " Select ColunaExemplo1||','||ColunaExemplo2||','||ColunaExemplo3 ||','||ColunaExemplo4 ||','||ColunaExemplo5||','||
ColunaExemplo6||','||ColunaExemplo7||','||ColunaExemplo8 FROM Tabela_TESTE;"
} | sqlplus -s usário/Senha@Servidor >> Resultado.log
Como saída, será gerado o arquivo resultado.log com o resultado do Select, podendo esse arquivo futuramente ser importado como um CSV.
O script foi utilizado para geração de uma arquivo para uma grande massa de dados e a resposta\performance foi satisfatória.
Obrigado
quarta-feira, 3 de abril de 2013
Quais são as consultas mais executadas? - Oracle
Segue consulta para identificar quais as 20 consultas mais executadas no seu banco de dados.
SELECT sql_text, executions
FROM (SELECT sql_text, executions,
RANK() OVER (ORDER BY executions DESC) exec_rank
FROM v$sql)
WHERE exec_rank <= 20;
Obrigado
quarta-feira, 13 de fevereiro de 2013
Order by–Nulos primeiro
Como realizar a ordenação de uma massa de dados trazendo primeiro os registros cujo a coluna possui valores nulos?
No exemplo abaixo será ordenado pela coluna de nome do cliente trazendo primeiro os valores nulos.
Oracle:
SELECT CdNotaFiscal, NmCliente
FROM NOTAFISCAL
ORDER BY NmCliente NULLS FIRST
Sql Server \ Sybase:
SELECT CdNotaFiscal, NmCliente
FROM NOTAFISCAL
ORDER BY CASE WHEN NmCliente IS NULL THEN 'A' ELSE NmCliente END
Obrigado
Diferença entre PFILE e SPFILE – ORACLE
São arquivos utilizados na inicialização do bando de dados Oracle.
Ao iniciar uma instancia, o Oracle realizada a leitura de “um dos arquivos” que armazena as características (parâmetros – Memória, caminho de arquivos,etc) do banco de dados.
Como disse anteriormente tanto o PFILE como o SPFILE são arquivos, porém SPFILE é uma versão binária do PFILE. O PFILE é armazenado com o nome init.ora e o SPFILE como spfile.ora.
Ok, e quando o Oracle utiliza um ou outro?
Ao tentar iniciar uma instancia, o Oracle procura inicialmente pelo SPFILE, se não encontrar procure pelo PFILE.
Por se tratar de uma arquivo binário, o SPFILE não pode ser alterado manualmente, mas isso não quer dizer que não possa ser alterado, os parâmetros podem ser alterados através do comando:
Alter system set “parâmetros” = “valor”;
Alguns parâmetros podem ser alterados dinamicamente, ou seja, sem a necessidade de reiniciar o banco de dados. Para saber quais os parâmetros podem ser alterados dinamicamente execute a seguinte consulta:
Select * from V$Parameter;
As colunas ISSES_MODIFIABLE identifica parâmetros que podem ser alterados em sessão (Alter Session) e a coluna ISSYS_MODIFIABLE identifica parâmetros que podem ser alterados dinamicamente com Alter Session, onde, quando for IMMEDIATE a alteração passa a ter vigor imediatamente após a alteração, DEFERRED passa a valer para as próximas sessões e FALSE valor estático, ou seja, só ira valer no caso de reinicialização da instancia.
Para verificar a existência e caminho do seu SPFILE:
show parameter SPFILE;
NAME TYPE VALUE
---------- ------ ------------------------------
spfile string C:\ORACLEXE\APP\ORACLE\PRODUCT\11.2.0 SERVER\DBS\SPFILEXE.ORA
Obrigado
sexta-feira, 23 de novembro de 2012
Ver conteúdo de uma Procedure - Oracle
Segue duas maneiras para visualização do “corpo” de uma procedure no Oracle
- Script 1
SET SERVEROUTPUT ON SIZE 200000
declare
begin
FOR CR IN (select *
from DBA_source u
where u.type = 'PROCEDURE'
AND U.OWNER = 'NOME_USUARIO'
AND U.NAME LIKE '%NOME_PROCEDURE%' ) LOOP
DBMS_OUTPUT.put_line(CR.TEXT);
END LOOP;
end;
Obs: Substituir NOME_USUARIO pelo owner e NOME_PROCEDURE pelo nome da procedure.
2. Script 2
SELECT dbms_metadata.get_ddl( 'PROCEDURE','USP_GOMM_CRIA_MVIEW') FROM DUAL;
Obrigado
segunda-feira, 27 de agosto de 2012
DeadLock – Como identificar - Oracle
Para verificar problemas de bloqueio em seu banco de dados, deve seguir os passos abaixo:
1. Para verificar qual a sessão que esta realizando o bloqueio, execute o select abaixo:
select sid, serial#, username, command, lockwait, osuser from v$session where lockwait is not null
2. Identificado a sessão podemos mata-la para que o bloqueio seja liberado, para isso substitua no script abaixo a sid e serial# coletados na consulta acima
alter system kill session 'sid, serial#';
Obs: Lembrando que para isso você deverá ter privilégios
3. Encontrar qual o SQL esta causando o bloqueio
select sql_text from v$sqltext where (address,hash_value) in (select sql_address,sql_hash_value from v$session where lockwait is not null) order by address, hash_value, piece
4. Ok, aprendemos a identificar e a eliminar o a sessão que estava realizando o bloqueio em nosso banco de dados e ainda a identificar a consulta/comando que estava executando o bloqueio. Agora vamos simular um caso real:
Primeiros vamos criar uma tabela e popular com alguns registros:
CREATE TABLE TbProduto (NmProduto VARCHAR(100) NOT NULL, VrPreco NUMERIC(10,2) NOT NULL);
INSERT INTO TbProduto (NmProduto, VrPreco) VALUES ('Tenis',100.50);
INSERT INTO TbProduto (NmProduto, VrPreco) VALUES ('Sapato',90.50);
INSERT INTO TbProduto (NmProduto, VrPreco) VALUES ('Chinelo',20.50);
COMMIT;
Agora em uma sessão vamos realizar um aumento no valor dos produtos em R$0.50:
UPDATE TbProduto
SET VrPreco = VrPreco + 0.50;
3 rows updated
Não vamos commitar.
Abra uma outra sessão e vamos realizar a mesma atualização de valor, simulando uma situação em que 2 pessoas ao mesmo tempo tentou realizar o aumento do preço do produto.
UPDATE TbProduto
SET VrPreco = VrPreco + 0.50;
Verificamos que nesse caso, não recebemos retorno de alteração dos 3 produtos, pois essa sessão esta esperando o commit da sessão anterior para realizar essa atualização, ou seja, nesse caso temos um DeadLock (onde 2 sessãos estão tentando atualizar os mesmos dados)
Não vamos commitar ainda.
Vamos abrir uma terceira sessão, é agora que vai inciar nossa análise. Primeiro vamos verificar quais as sessões que estão gerando o bloqueio:
select sid, serial#, username, command, lockwait, osuser from v$session where lockwait is not null
SID SERIAL# USERNAME COMMAND LOCKWAIT OSUSER 51 51 SYS 6 BE99CB98 nnh-PC\nnh
Vamos testar a consulta para identicar o comando que esta causando o bloqueio:
select sql_text from v$sqltext where (address,hash_value) in (select sql_address,sql_hash_value from v$session where lockwait is not null) order by address, hash_value, piece
SQL_TEXT UPDATE TbProduto SET VrPreco = VrPreco + 0.50
Agora vamos matar a sessão que esta causando bloqueio;
alter system kill session '51,51';
System altered
Fonte: http://psoug.org/reference/deadlocks.html
[]s
segunda-feira, 13 de agosto de 2012
Qual a diferença entre BLOB x CLOB - Oracle
Um BLOB (binary large object) é um tipo de dados Oracle que pode conter até 4 GB de dados binarios. BLOB são úteis para armazenar informação digital (por exemplo, imagens, áudio, vídeo).
Um CLOB (Character Large objeto) é um tipo de dados Oracle que pode conter até 4 GB de dados. CLOBs são úteis para armazenar texto.
Tipos de dados BLOB e CLOB são criados através da utilização do CREATE TABLE ou ALTER da mesma forma que são criados campos de outros tipos.
Exemplos:
BLOB:
CREATE TABLE DOMINA_BLOB (id NUMBER, doc BLOB);
INSERT INTO DOMINA_BLOB VALUES (1, EMPTY_BLOB());
CLOB:
CREATE TABLE DOMINA_CLOB(id NUMBER, doc CLOB);
INSERT INTO DOMINA_CLOB VALUES (1, 'some CLOB data');
[]s
segunda-feira, 23 de julho de 2012
Oracle apresenta o Oracle Enterprise Manager 12c
Solução ampliada de gestão de TI voltada aos negócios com recursos exclusivos de cloud computing
A Oracle anunciou o Oracle Enterprise Manager 12c, a primeira solução do setor a combinar gestão da pilha completa da Oracle com gerenciamento de todo o ciclo de vida de nuvem empresarial.
Agora as organizações de TI podem aumentar a eficiência ao mesmo tempo que reduzem os custos e a complexidade dos datacenters tradicionais, de ambientes virtualizados e de cloud computing.
Com o Oracle Enterprise Manager Cloud Control, o novo console centralizado, o Oracle Enterprise Manager 12c reúne recursos de gestão exclusivos para todo o ciclo de vida da nuvem. As principais novidades incluem planejamento de capacidade e consolidação, auto-atendimento, testes, monitoramento, medição e chargeback (estorno).
Os novos recursos de gestão integrados – dos aplicativos ao disco rígido – do Oracle Fusion Applications e dos sistemas projetados da Oracle foram adicionados. Essa versão apresenta também novas capacidades de gerenciamento de recursos de cloud computing e virtualização com base no Oracle VM 3.0.
Inclui também novos recursos aprimorados de parceiros, disponíveis por intermédio do programa Oracle PartnerNetwork, e de gerenciamento de componentes de outros fornecedores.
O Oracle Enterprise Manager 12c é o primeiro produto do portfóio da Oracle com o número "12c" – a letra "c" indica investimentos expressivos da Oracle para oferecer produtos prontos para nuvem.
Gestão de cloud computing completa e unificada por meio de um único console
O Oracle Enterprise Manager Cloud Control é o único console de gestão de cloud computing para tecnologia Oracle que permite aos stakeholders criar serviços empresariais avançados, compostos por uma combinação de IaaS (infraestrutura como serviço), PaaS (plataforma como serviço) – incluindo DBaaS (banco de dados como serviço) e MWaaS (middleware como serviço) – e SaaS (software como serviço).
O Oracle Enterprise Manager Cloud Control fornece recursos orientados por assistentes e baseados em funções para todos os stakeholders envolvidos no planejamento, gestão e consumo de cloud computing empresarial.
Os principais recursos incluem:
- Ferramentas de planejamento na nuvem, que permitem aos arquitetos e administradores da nuvem modelar o ambiente de cloud computing para maximizar a utilização dos recursos. Um recurso importante – o planejador de consolidação e capacidades – facilita a ambientação na nuvem por meio de recomendações e workflows automatizados.
- Configuração automática de recursos do sistema e pools compartilhados, que possibilitam aos administradores da nuvem reunir recursos de TI e definir regras, privilégios e políticas que regem como os recursos são consumidos, além de ajudar a garantir a facilidade na gestão e a qualidade do serviço.
- Auto-atendimento incorporado, com acesso transparente aos recursos de cloud computing para os usuários de linhas de negócios e desenvolvedores de aplicativos. Os consumidores podem usar o portal de autoatendimento para solicitar serviços de um catálogo central, gerenciar e monitorar os serviços solicitados, assim como receber informações de chargeback.
- Chargeback e indicadores completos, para que os funcionários de finanças, gerentes de TI e prestadores de serviços façam medições do uso e cobrem pelos serviços. Vários mecanismos de chargeback disponíveis. Integrações embutidas com o Oracle Communications Billing and Revenue Management oferecem vastos recursos de faturamento.
- Capacidades exclusivas de cloud computing agregam vantagens inéditas no setor por intermédio de integrações com dois importantes produtos Oracle:
- Oracle VM 3.0, que permite aos administradores planejar e provisionar automaticamente ambientes de cloud computing, incorporando VMs, zonas e pools de recursos.
- Oracle Virtual Assembly Builder: ajuda os desenvolvedores a modelar e empacotar aplicativos complexos, multicamadas, para consumo em auto-atendimento.
- Diferentemente das soluções da concorrência o Oracle Enterprise Manager 12c garante a gestão da nuvem em ambientes físicos e virtuais para arquiteturas x86 e4 SPARC.
Projetado para Oracle
O Oracle Enterprise Manager 12c continua a oferecer incomparáveis recursos de automação para tecnologias Oracle. Os destaques incluem:
- Gestão completa do Oracle Fusion Applications, que fornece recursos inigualáveis para ajudar a garantir a integridade e a disponibilidade desses aplicativos.
- Disponibilidade imediata para suporte do programa Applications Unlimited da Oracle. Agora as suites de gestão Oracle JD Edwards EnterpriseOne e Oracle Siebel CRM estão certificadas. Há certificações de outros aplicativos planejadas para 2012.
- Gestão aprimorada do Oracle Fusion Middleware com novos recursos de autogerenciamento, como análise automática de causa principal e recomendações pró-ativas. Desse modo, os administradores de aplicativos e TI gerenciam mais programas com facilidade.
- Autogerenciamento de banco de dados avançado, que permite aos DBAs gerenciar bancos de dados de grande porte com recursos que incluem monitor automático de diagnósticos periódicos e em tempo real do banco de dados, assim como análises de ASH (Active Session History).
- Soluções aprimoradas de gestão de qualidade com novos recursos Application Replay, que viabilizam testes de cargas de trabalho reais dos aplicativos, proporcionando resultados mais realistas. A nova capacidade de descoberta, modelagem e subdivisão de dados racionaliza a gestão dos dados dos testes. Juntos, esses recursos contribuem para aprimorar a qualidade dos aplicativos com menos esforço.
- Integração coesa com os sistemas projetados da Oracle, que possibilitam visualizações integradas de hardware e software para o Oracle Exadata Database Machine e o Oracle Exalogic Elastic Cloud, que facilitam a gestão e proporcionam desempenho e disponibilidade superiores.
Fonte:http://www.oracle.com/br/corporate/press/pr-br-06-dec-2011-1396300-ptb.html
[]s
quinta-feira, 28 de junho de 2012
Oracle 9,10g X Sybase ASE 12,15
Uma instância Oracle consiste em:
A) Seis processos: PMON Process Monitor, SMON System Monitor, DBWn Database Writer, LGWR Log Writer, ARCn Archiver, and CKPT Checkpoint. E processos adicionais em um sistema RAC 10g podendo incluir RECO recuperação de transações distribuídas, CJQn Job cordenador de processo, LCKn bloquei de recursos compartilhado, LMDn Gerente Global de Lock, LMON Lock Manager, LMS * Serviço de Cache Global, MMAN Gerenciador de memória, MMNL Metrics Monitor, Histórico da sessão, métricas computacional, MMON Metrics Monitor, estatísticas, snapshots.
B) Os arquivos de dados que contenham as tabelas e outros objetos de dados, arquivos de controle que contêm informações de configuração do banco de dados, redo log para processamento de transações e archive files para fins de recuperação.
C) Os arquivos de configuração que contém os atributos de instância, e informações de segurança externa
Um servidor de Sybase consiste em:
A) dois processos, data server e backup server
B) dispositivos que abrigam os bancos de dados, um banco de dados (master) contendo o sistema e dados de configuração;
C) um arquivo de configuração que contém os atributos do servidor.
Fonte: http://www.rocket99.com/sybase/syb_vs_ora.html
[]s
segunda-feira, 27 de fevereiro de 2012
Fazendo leitura de Campo LOB – Oracle
Segue:
select dbms_lob.substr( campo_clob, 4000, 1 ) from tabela;
[]s
segunda-feira, 13 de fevereiro de 2012
Consulta retorna CPF formatado - Oracle
Segue consulta para retornar CPF no formato padrão:
select regexp_replace('29820131855', '^(\d{3})(\d{3})(\d{3})(\d{2})$', '\1.\2.\3-\4') CPF from dual
| CPF |
| 298.201.318-55 |
[]s
quinta-feira, 9 de fevereiro de 2012
Retorna última string do texto - Oracle
select substr('Fabio Martinez',instr('Fabio Martinez',' ',-1)+1) ultima from dual;
| ULTIMA |
| Martinez |
[]s
quarta-feira, 8 de fevereiro de 2012
Habilitando 1 sessão por usuário
Como fazer para que um usuário possa abrir apenas 1 sessão por vez?
É o seguinte se o usuário Scott conectar no banco, enquanto este usuário estiver conectado outra pessoa não poderá conectar com o usuário Scott, ou seja, o usuário Scott (Ativo) só poderá ter 1 sessão aberta no banco de dados. Para isso devemos configurar o seguinte parametro:
ALTER SYSTEM SET SESSIONS_PER_USER = 1;
[]s
domingo, 8 de agosto de 2010
Instalando Oracle 10g XE no Ubuntu 64 bits
Bom não se preocupe, você também pode instalá-lo.
Primeiramente você deverá ter certeza de que instalou a biblioteca a 32 bits.
Para fazer isso siga os passos abaixo, usando o Terminal
sudo apt-get install libc6-i386
Após isso temos que baixar o Oracle 10g XE. Nós iremos baixar do site oficial da Oracle. Também temos que baixar um pacote deb extra. Para isso, faça o seguinte
wget -c http://oss.oracle.com/debian/dists/unstable/main/binary-i386/libaio_0.3.104-1_i386.deb
Para instalar este dois pacotes. Teremos que forçar a instalação do Oracle.
dpkg -i --force-architecture libaio_0.3.104-1_i386.deb
dpkg -i --force-architecture oracle-xe-universal_10.2.0.1-1.1_i386.deb
Quando a instalação estiver pronta, execute o comando abaixo para poder configurar o Oracle.
sudo /etc/init.d/oracle-xe configure
configure o arquivo ~/.bashrc
ORACLE_HOME=/usr/lib/oracle/xe/app/oracle/product/10.2.0/server
PATH=$PATH:$ORACLE_HOME/bin
export ORACLE_HOME
export ORACLE_SID=XE
export PATH
Depois, vá para o menu Aplicativos em Oracle Database e click em ir para a Home Page do Banco de Dados ou digite no Browser o endereço abaixo.
http://127.0.0.1:8080/apex
Pronto, agora você poderá usar seu Oracle 10g XE.
segunda-feira, 2 de agosto de 2010
Gerar senhas randomicamente
select
dbms_random.string('Z', 5)trunc(dbms_random.value(1000, 9999))from dual;
t+
segunda-feira, 14 de dezembro de 2009
Como fazer para identificar via select o hostname de um banco.
select utl_inaddr.get_host_name, utl_inaddr.get_host_address
from dual;
T+
sábado, 29 de agosto de 2009
Substituindo um caracter no campo VARCHAR2
Alguém já precisou fazer uma substituição de um caracter em um campo varchar2?
Segue o exemplo que tive.
Ao consultar a tabela de telefone do cliente obtive o seguinte resultado:
SELECT * FROM TELEFONE;
CODIGO FONE
--------------------------------------- --------------
1 (011)4067/4544
2 (011)4547/3732
3 (011)8556/4564
4 (011)1235/9654
Na exibição do campo FONE, o cliente queria trocar o caracter '/’ pelo ‘-‘, o único jeito que encontrei foi……
SELECT CODIGO, SUBSTR(FONE,1,9)||'-'||SUBSTR(FONE,11,14) FONE FROM TELEFONE;
CODIGO FONE
--------------------------------------- --------------
1 (011)4067-4544
2 (011)4547-3732
3 (011)8556-4564
4 (011)1235-9654
T+
quarta-feira, 27 de maio de 2009
Dropando um Database no Oracle 10G
Desde 10g, é possível excluir uma base de dados da Oracle 10g com o novo comando SQL DROP DATABASE.
O comando se livra dos datafiles, redo log files, controlfiles e spfile.
Segue o exemplo do comando, lembrando que o mesmo deve ser executado conectado como SYSDBA:
shutdown abort;
startup mount exclusive restrict;
drop database;
T+
quarta-feira, 20 de maio de 2009
Habilitando a package DBMS_OUTPUT
A Package DBMS_OUTPUT, através da Procedure PUT_LINE, envia as mensagens após uma Transação efetuada com sucesso.
Para que a Package seja habilita e as mensagens sejam apresentadas, basta executar o seguinte comando no prompt do ORACLE:
SET SERVEROUTPUT ON;
Para testar execute a package para que seja mostrada a mensagem:
DBMS_OUTPUT.PUT_LINE(‘Teste da package’);
Para que a package seja desabilitada execute o seguinte comando:
SET SERVEROUTPUT OFF;
Execute novamente a chamada da package DBMS_OUTPUT e perceba que a mensagem não é mais apresentada.
T+