Pular para o conteúdo principal

Postagens

Mostrando postagens com o rótulo Oracle

Diferença entre SQL, MySQL, PostgreSQL, Oracle e SQL Server: entenda de uma vez por todas

No universo da tecnologia da informação, especialmente no desenvolvimento de sistemas e gestão de dados, é comum surgirem dúvidas como: “SQL é um banco de dados?” , “Qual a diferença entre MySQL e SQL Server?” , ou ainda, “PostgreSQL e Oracle fazem a mesma coisa?” Se você está começando na área de TI ou quer reforçar sua base de conhecimento, este post foi feito para você. Vamos explicar de forma clara e direta as principais diferenças entre SQL, MySQL, PostgreSQL, Oracle e SQL Server , e ajudar você a entender qual solução pode ser mais adequada ao seu projeto ou estudo. O que é SQL? Antes de falarmos dos bancos de dados em si, é importante entender o que é o SQL (Structured Query Language) . O SQL não é um banco de dados, e sim uma linguagem padrão para consulta, manipulação e definição de dados em sistemas de gerenciamento de bancos de dados relacionais (SGBDs) . Essa linguagem é utilizada para criar tabelas, inserir registros, fazer consultas, atualizações e exclusões de dados. Tod...

Oracle Isolation Level - Otimizando o desempenho com níveis de isolamento de transações no Oracle

Com sistemas de banco de dados robustos e complexos, deve haver uma maneira de gerenciar possíveis conflitos que possam surgir ao tentar processar várias transações em um banco de dados ao mesmo tempo. No Oracle, os usuários podem especificar níveis de isolamento de transações para indicar o nível de cuidado a ser exercido na resolução de conflitos potenciais. Quanto maior o nível de isolamento da transação, mais cuidadoso o sistema será para evitar conflitos. Por outro lado, geralmente há um preço: Quanto maior o nível de isolamento da transação, a sobrecarga de bloqueio pode aumentar enquanto a concorrência do usuário pode diminuir. Os desenvolvedores e o DBA devem levar esses fatores em consideração ao estabelecer os níveis de isolamento de transações da Oracle. Atualmente, existem três níveis de isolamento de transação suportados pelo banco de dados Oracle: Read Committed Serializable Read Only Read Committed Transaction Isolation Level O nível de isolamento de transação com leitur...

ORACLE - Verifique Fragmentação de objetos no seu Schema

select substr(owner,1,15), substr(SEGMENT_NAME, 1,30), substr(SEGMENT_TYPE,1,10), substr(TABLESPACE_NAME,1,20), EXTENTS, MAX_EXTENTS from dba_segments where owner like ('P%') order by owner, extents desc; Observações: Quanto mais Extents pior; O owner like (‘P%’) busca todo os objetos de schemas com P%… ou seja: precisa ser adaptado a sua realidade quando for executado. Recomendo a leitura de: https://levipereira.wordpress.com/2010/10/19/desfragmentando-tabelas-no-oracle-10g/ http://www.devmedia.com.br/oracle-10g-11g-desfragmentacao-online-de-tabelas/30166

Usando GLOBAL TEMPORARY TABLE

Global temporary table é um objeto que possui um comportamento equivalente a uma tabela, sendo que os dados inseridos estarão disponíveis apenas dentro de uma determinada sessão ou até que sejam “comitados” (mantidos até o fim da transação)… isso depende de como a GTT foi criada. Pode ser muito útil para trabalhar dados temporários antes de serem retornados ao usuário ou gravados numa tabela comum. Exemplo de criação de GTT onde os dados são mantidos durante a sessão: CREATE GLOBAL TEMPORARY TABLE TESTE1_GTT (“EMAIL” VARCHAR2(120 BYTE) NOT NULL ENABLE, “NOME” VARCHAR2(100 BYTE) NOT NULL ENABLE, “SOBRENOME” VARCHAR2(100 BYTE) NOT NULL ENABLE) ON COMMIT PRESERVE ROWS ; Exemplo de criação de GTT onde os dados são mantidos até o fim da transação: CREATE GLOBAL TEMPORARY TABLE TESTE2_GTT (“EMAIL” VARCHAR2(120 BYTE) NOT NULL ENABLE, “NOME” VARCHAR2(100 BYTE) NOT NULL ENABLE, “SOBRENOME” VARCHAR2(100 BYTE) NOT NULL ENABLE) ON COMMIT DELETE ROWS ; Atenção as seguintes características ...

Procurando textos nos objetos do Oracle

Pessoal, algumas vezes precisamos buscar uma palavra dentro de todos os objetos no banco de dados e não sabemos como fazer. Pois bem, segue uma query que pode ajudar muito. SELECT * FROM ALL_SOURCE WHERE UPPER(TEXT) LIKE '%TEXTO%' Nessa query, ele irá procurar a palavra “TEXTO” em todos os objetos do banco, se encontra algum objeto que contenha, ele irá mostrar. Abraço.

MySQL storage engines – parte 2

Continuando o meu post anterior ( MySQL storage engines – parte 1 ), onde apresentamos as principais engines de armazenamento do MySQL, são elas: InnoDB, MyISAM, Memory, CSV, Merge, Archive, Federated e Blackhole, vamos agora entender como escolher e mudar. Para visualizar todas as opções de engines suportadas pelo servidor, execute: SHOW ENGINES Nenhum mecanismo de armazenamento é ideal para todas as circunstâncias. Alguns têm melhor desempenho em certas condições e pior desempenho em outras situações. Há compensações que devem ser consideradas. Uma solução mais segura requer mais recursos; pode ser mais lento, levar mais tempo de CPU e espaço em disco. O MySQL é muito flexível no fato de fornecer vários mecanismos de armazenamento diferentes. Alguns deles, como o mecanismo Archive, são criados para serem usados em situações específicas. Em alguns casos, a resposta é clara. Sempre que estamos lidando com alguns sistemas de pagamento, somos obrigados a utilizar a solução mais segura. N...

MySQL storage engines - parte 1

As “engines” de armazenamento do MySQL são módulos de software usados para criar, ler e atualizar dados de um banco de dados. Existem dois tipos de storage engines no MySQL: transaction e non-transactional. Para o MySQL 5.5 ou superior, o padrão de engine é o InnoDB. Nas versões anteriores o padrão era o MyISAM. Escolher a engine correta é uma decisão estratégica, visto que impacta no consumo do recurso e no que esperar de comportamento do banco. Lógico que, para coisas básicas, isso não será um problema. Mas se você está planejando um banco de dados de produção, o ideal é pelo menos entender onde você está pisando e ser um pouco mais criterioso. Para começar, vamos a lista atual de storages suportados: InnoDB MyISAM Memory CSV Merge Archive Federated Blackhole O InnoDB é o mecanismo de armazenamento mais usado com suporte a transações. É um mecanismo de armazenamento compatível com ACID. Ele suporta bloqueio em nível de linha, recuperação de travamento e controle de simultaneidade de ...

Oracle Flashback Query: Recuperando dados

Imagine a seguinte situação: você executou um delete em vários registros, “commitou” e depois percebeu que fez o filtro errado. Parece surreal, mas pode acontecer, tanto apagando quanto manipulando os dados de uma determinada tabela. Somos humanos e podemos errar. Pensando no contexto da recuperação de dados, é importante conhecermos o modelo de “flashback query” da Oracle, onde podemos visualizar as informações de uma determinada tabela num determinado momento. A sintaxe fica assim: SELECT * FROM EMP AS OF TIMESTAMP TO_TIMESTAMP('2005-04-04 09:30:00', 'YYYY-MM-DD HH:MI:SS') WHERE name = 'JOHN'; Esse é o exemplo encontrado na documentação da Oracle. Tópico 7.2. Note que a query irá retornar todos os campos da tabela EMP, com visão as 9h30 do dia 04/04/2005, onde o nome for igual a JOHN. Para mais informações de como usar Queries Flashback e também obter mais detalhes do seu funcionamento, veja a documentação clicando aqui .

O que é SQL ?

SQL (structured Query Language) é um conjunto de comandos de manipulação de banco de dados utilizado para criar e manter a estrutura desse banco de dados, além de incluir, excluir, modificar e pesquisar informações nas tabelas dele. A linguagem SQL não é uma linguagem de programação autônoma; poderia ser chamada de “sub linguagem”. Quando se escrevem aplicações para banco de dados, é necessário utilizar uma linguagem de programação tradicional (C, C#, Java, ASP, PHP, etc…) e embutir comandos SQL para manipular os dados. Em um modelo relacional, apenas uma tipo de estrutura de dados existe: a tabela. Novas tabelas são criadas com a junção ou combinação de outras tabelas. Utilizando apenas um comando SQL é possível pesquisar dados em diversas tabelas ou atualizar e excluir diversas linhas das mesmas. A linguagem SQL não é procedural, logo é possível especificar o que deve ser feito, e não como deve ser feito. Dessa forma, um conjunto de linhas (set) será atingido pelo comando e não cada ...

Diferença entre banco de dados, instância, schema, tablespaces e etc.

Vamos a um pouco de teoria de banco de dados. Tenho certeza que será muito útil para os universitários. 🙂 No mundo da tecnologia e gerenciamento de informações, os bancos de dados desempenham um papel vital. Um banco de dados, ou base de dados, é um conjunto organizado de registros que oferece a capacidade de reorganização e extração de informações. Normalmente, os registros em um banco de dados são agrupados para servir a um propósito comum. A gestão de um banco de dados é tipicamente realizada por meio de um software conhecido como Sistema Gerenciador de Banco de Dados (SGBD). Exemplos notáveis de SGBDs incluem o Oracle, MySQL, SQL Server e PostgreSQL. É importante notar que, às vezes, o termo “banco de dados” é erroneamente usado como sinônimo de SGBD. No contexto atual, o modelo de dados mais amplamente adotado é o modelo relacional, no qual as informações são organizadas em tabelas compostas por linhas e colunas. Instâncias: A Máquina Cerebral do Banco de Dados Quando se trata de...

COMO SABER QUAL O NLS_LANG CONFIGURADO PARA O BANCO DE DADOS

Você pode usar a view v$nls_parameters para ver: LANGUAGE, TERRITORY e CHATACTER SET estão configurados para o banco de dados Oracle. Para isso, execute o select: select DECODE(parameter, ‘NLS_CHARACTERSET’, ‘CHARACTER SET’, ‘NLS_LANGUAGE’, ‘LANGUAGE’, ‘NLS_TERRITORY’, ‘TERRITORY’) name, value from v$nls_parameters WHERE parameter IN ( ‘NLS_CHARACTERSET’, ‘NLS_LANGUAGE’, ‘NLS_TERRITORY’) Abraço.

ORA-01843: not a valid month e formato incorreto da data no Windows Server 2012 R

Recentemente, migrando um servidor web, tive um problema de exibição de data em alguns sistemas. Outros até apresentaram erro “ORA-01843: not a valid month”. Prontamente fui verificar as configurações regionais do servidor. Como os sistemas utilizam o formato brasileiro “DD/MM/YYYY”, e estava num Windows Server 2012 R2 em inglês, tive que alterar algumas coisas. Para minha surpresa, não resolveu. Pesquisando na WEB achei a solução: 1 – Abra o editor de registros no servidor onde estão armazenadas as páginas/sistemas com erro (só mandar executar “regedit”); 2 – Localize a chave HKEY_CURRENT_USER\ControlPanel\Internacional 3 – Edite o parâmetro “sShortDate”. Coloque “dd/MM/yyyy” no conteúdo; 4 – Localize o mesmo parâmetro na chave HKEY_USERS\.DEFAULT\ControlPanel\International. Faça a mesma alteração no conteúdo. 5 – Saia do editor de registro e execute suas páginas normalmente. Recomendo reinic...