Na instalação do PostgreSQL ele não te dá nenhuma oportunidade de criar a senha do usuário "postgres", sendo assim, o comando abaixo resolverá:
$ sudo -u postgres psql
Em seguida, insira a tua senha de root.
Agora você está no console do PostgreSQL. Sendo assim, agora vamos alterar a senha do usuário:
# alter user postgres with encrypted password 'senha';
Pronto, agora você já poderá conectar facilmente neste SGBD.
SELECT * FROM Busca_de_Conhecimento WHERE Tema LIKE '% Banco de Dados %' or Tema LIKE '% Assuntos relacionados%'
sábado, 27 de outubro de 2012
Acesso externo no PostgreSQL
O primeiro passo:
Editar o arquivo postgresql.conf. A localização deste arquivo pode variar, no Ubuntu por exemplo, a localização é como segue:
/etc/postgresql/8.4/main
Para editar:
# nano postgresql.conf
Neste arquivo, editaremos somente uma linha, procure por este parâmetro:
O valor desta variável deve ser modificado para um asterisco(*).
Pronto. Ctrl+O para Salvar e Ctrl+X para sair.
O segundo passo:
Editar o arquivo pg_hba.conf. A localização é a mesma do caso anterior.
Para editar:
# nano pg_hba.conf
Adicione a seguinte linha:
Pronto. Novamente, Ctrl+O para salvar e Ctrl+X para sair.
Observe o md5, desta forma, para acesso externo, o usuário deverá se autenticar. Outro valor possível seria "trust", mas aí, vai de cada um.... Outra situação...
Pronto, agora é só restartar o PostgreSQL:
# /etc/init.d/postgresql-8.4 restart
Agora o acesso externo pode ser feito...
Editar o arquivo postgresql.conf. A localização deste arquivo pode variar, no Ubuntu por exemplo, a localização é como segue:
/etc/postgresql/8.4/main
Para editar:
# nano postgresql.conf
Neste arquivo, editaremos somente uma linha, procure por este parâmetro:
listen_addresses = '*'
O valor desta variável deve ser modificado para um asterisco(*).
Pronto. Ctrl+O para Salvar e Ctrl+X para sair.
O segundo passo:
Editar o arquivo pg_hba.conf. A localização é a mesma do caso anterior.
Para editar:
# nano pg_hba.conf
Adicione a seguinte linha:
# IPv4 local connections:
host all all 0.0.0.0/0 md5
host all all 0.0.0.0/0 md5
Pronto. Novamente, Ctrl+O para salvar e Ctrl+X para sair.
Observe o md5, desta forma, para acesso externo, o usuário deverá se autenticar. Outro valor possível seria "trust", mas aí, vai de cada um.... Outra situação...
Pronto, agora é só restartar o PostgreSQL:
# /etc/init.d/postgresql-8.4 restart
Agora o acesso externo pode ser feito...
terça-feira, 23 de outubro de 2012
MySQL: Duplicando uma tabela com apenas 1 comando SQL
Duplicar uma tabela no MySQL, mantendo sua estrutura e importando os registros da tabela original, é mais fácil do que eu imaginava.
No console de seu MySQL digite a seguinte query:
CREATE TABLE NOVA_TABELA SELECT * FROM TABELA_PAI;
No console de seu MySQL digite a seguinte query:
CREATE TABLE NOVA_TABELA SELECT * FROM TABELA_PAI;
sexta-feira, 19 de outubro de 2012
Backup de database
O gerenciamento de backup é uma das tarefas mais importantes de um DBA, pois a disponibilidade do ambiente dependerá da existência ou não desse valioso recurso. Existem 5 tipos de backups: full, incremental, diferential, copy e diary.
Backup Full: O backup full é um backup completo de dados. Durante o backup, os arquivos tem seu atributo de archive alterado, informando que os mesmos sofreram backup.
Backup Incremental: O backup incremental copia todo o conteúdo alterado ou criado desde o último backup full, alterando o atributo de archive dos dados.
Backup Diferential: O backup diferential copia todo o conteúdo alterado ou criado desde o último backup full, porém não altera o atributo de archive dos dados.
Backup do tipo Copy: O backup copy é um backup full, porém ele não altera o atributo de archive, permitindo que não haja interrupção na sequencia de backups.
Backup do tipo Diary: Backup do tipo diary copia todos os arquivos que foram modificados no dia da execução, e não altera o atributo de archive dos dados.
A diferença entre backup diferential e incremental é no momento de realizar o restore dos dados. Para combinação de backup full e diferential, precisaremos restaurar primeiro o backup full e depois o último backup diferential, já para uma operação de restore com um backup full e incremental, precisaremos restaurar primeiro o backup full e depois todos os backups incrementais, desde o último backup full. Isso nos mostra que em um ambiente com backup full e diferential, teremos um processo de backup mais demorado, porém o processo de restore será mais rápido, ao contrário do backup full e incremental, onde o processo de backup dos dados é mais rápido (pois apenas os arquivos que foram alterados sofrem backup), porém o processo de restore é mais demorado, pois será necessário várias fitas para restauração completa dos dados, dependendo do volume a ser restaurado. O esquema de backup a ser utilizado vai depender da necessidade de cada empresa.
Para o SQL Server, não há backups incrementais ou diary, apenas full, copy, diferential e transaction log. As regras são as mesmas para backup full e diferential, porém para backups de transaction logs é necessário que o database esteja com o recovery model configurado para Full (falarei de recovery model em outro artigo).
ATENÇÃO: backups criados em uma versão do SQL Server não podem ser restaurados em versões anteriores.
ATENÇÃO 2: a compressão de dados em backups é suportada apenas no SQL Server 2008 e 2012.
Listando queries com alto consumo de CPU
Um problema recorrente na vida de qualquer DBA é quando o SGBD começa a “devorar” os recursos do servidor (memória, disco ou CPU). Irei mostrar nesse post como detectar e tratar situações que o processo do SQL Server faz alta utilização de CPU.
Abra a console do SQL Server Management studio, abra o query editor e execute a seguinte instrução:
SELECT TOP 20
GETDATE() AS “Collection Date”,
qs.execution_count AS “Execution Count”,
SUBSTRING(qt.text,qs.statement_start_offset/2 +1,
(CASE WHEN qs.statement_end_offset = -1
THEN LEN(CONVERT(NVARCHAR(MAX), qt.text)) * 2
ELSE qs.statement_end_offset END -
qs.statement_start_offset
)/2
) AS “Query Text”,
DB_NAME(qt.dbid) AS “DB Name”,
qs.total_worker_time AS “Total CPU Time”,
qs.total_worker_time/qs.execution_count AS “Avg CPU Time (ms)”,
qs.total_physical_reads AS “Total Physical Reads”,
qs.total_physical_reads/qs.execution_count AS “Avg Physical Reads”,
qs.total_logical_reads AS “Total Logical Reads”,
qs.total_logical_reads/qs.execution_count AS “Avg Logical Reads”,
qs.total_logical_writes AS “Total Logical Writes”,
qs.total_logical_writes/qs.execution_count AS “Avg Logical Writes”,
qs.total_elapsed_time AS “Total Duration”,
qs.total_elapsed_time/qs.execution_count AS “Avg Duration (ms)”,
qp.query_plan AS “Plan”
FROM sys.dm_exec_query_stats AS qs
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) AS qt
CROSS APPLY sys.dm_exec_query_plan(qs.plan_handle) AS qp
WHERE
qs.execution_count > 50 OR
qs.total_worker_time/qs.execution_count > 100 OR
qs.total_physical_reads/qs.execution_count > 1000 OR
qs.total_logical_reads/qs.execution_count > 1000 OR
qs.total_logical_writes/qs.execution_count > 1000 OR
qs.total_elapsed_time/qs.execution_count > 1000
ORDER BY
qs.execution_count DESC,
qs.total_elapsed_time/qs.execution_count DESC,
qs.total_worker_time/qs.execution_count DESC,
qs.total_physical_reads/qs.execution_count DESC,
qs.total_logical_reads/qs.execution_count DESC,
qs.total_logical_writes/qs.execution_count DESC
GETDATE() AS “Collection Date”,
qs.execution_count AS “Execution Count”,
SUBSTRING(qt.text,qs.statement_start_offset/2 +1,
(CASE WHEN qs.statement_end_offset = -1
THEN LEN(CONVERT(NVARCHAR(MAX), qt.text)) * 2
ELSE qs.statement_end_offset END -
qs.statement_start_offset
)/2
) AS “Query Text”,
DB_NAME(qt.dbid) AS “DB Name”,
qs.total_worker_time AS “Total CPU Time”,
qs.total_worker_time/qs.execution_count AS “Avg CPU Time (ms)”,
qs.total_physical_reads AS “Total Physical Reads”,
qs.total_physical_reads/qs.execution_count AS “Avg Physical Reads”,
qs.total_logical_reads AS “Total Logical Reads”,
qs.total_logical_reads/qs.execution_count AS “Avg Logical Reads”,
qs.total_logical_writes AS “Total Logical Writes”,
qs.total_logical_writes/qs.execution_count AS “Avg Logical Writes”,
qs.total_elapsed_time AS “Total Duration”,
qs.total_elapsed_time/qs.execution_count AS “Avg Duration (ms)”,
qp.query_plan AS “Plan”
FROM sys.dm_exec_query_stats AS qs
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) AS qt
CROSS APPLY sys.dm_exec_query_plan(qs.plan_handle) AS qp
WHERE
qs.execution_count > 50 OR
qs.total_worker_time/qs.execution_count > 100 OR
qs.total_physical_reads/qs.execution_count > 1000 OR
qs.total_logical_reads/qs.execution_count > 1000 OR
qs.total_logical_writes/qs.execution_count > 1000 OR
qs.total_elapsed_time/qs.execution_count > 1000
ORDER BY
qs.execution_count DESC,
qs.total_elapsed_time/qs.execution_count DESC,
qs.total_worker_time/qs.execution_count DESC,
qs.total_physical_reads/qs.execution_count DESC,
qs.total_logical_reads/qs.execution_count DESC,
qs.total_logical_writes/qs.execution_count DESC
O resultado dessa querie irá listar as 20 instruções sendo executadas no servidor, consumindo mais recursos de CPU, como mostra a imagem abaixo:
Outro detalhe a ser percebido nesse resultado é o valor da linha 6, coluna “Total CPU Time“, expresso em microssegundos, e quando convertemos para minutos, identificamos que a querie em questão tomou exatos 17.8 minutos para executar !
É claro que apenas a identificação dessas queries não resolvem o problema, mas pelo menos já sabemos onde devemos atuar para otimizar o desempenho do SQL Server.
quinta-feira, 18 de outubro de 2012
Vídeos sobre SQL Server 2008 R2
Para quem deseja conhecer o SQL Server 2008 R2, o Technet Brasil oferece uma série de vídeos, em português, sobre as várias funcionalidades do SQL. Os vídeos estão divididos por categorias (novas funcionalidades, implementação e avançado), dando uma visão clara e prática da ferramenta. Os vídeos são apresentados pelos MVP’s Gustavo Aguiar e Fabiano Amorim, entre outros.
Como Adicionar Ou Remover Instâncias do SQL Server 2008 / 2008R2
No Windows 7, ir a Programs and Features e escolher Microsoft SQL
Server 2008 R2 (64-bit) (ou qualquer que seja a versão de SQL Server de
que se pretende remover a instância).

Escolher Remove (ou Add, se
se pretende adicionar uma instância).

Seguir os passos e escolher a
instância que se pretende remover.

Selecionar as funcionalidades que se
pretende remover (selecionar todas as funcionalidades para remover a instância).
Nota: Não remover as funcionalidades
partilhadas se não se pretendem remover outras instâncias.
Dica – Copiar grid + cabeçalhos - SQLServer
Você está utilizando o Management Studio e acaba de executar uma consulta; agora precisa copiar o resultado para uma planilha Excel.
Sua consulta gerou um resultado com 25 colunas e ao colar o conteúdo na planilha você nota que só vieram os dados da consulta; os nomes das 25 colunas você terá que preencher a mão.
Alterar isso é bem simples. Vá no menu Options, expanda a opção Query Results e escolha a subopção Results to Grid. Agora é só marcar a opção “Include column headers when copying or saving the results” (Inclui cabeçalho das colunas quando copiar ou salvar resultados).
Passos para realizar o IMPORT no oracle - Windows
1. Ir ao diretório que se encontra o dump, através do prompt, setar o SET ORACLE_SID=NOMEDOBANCO;
2. Apartir do diretório faça o import com os parâmetros:
imp USUARIO file=arquivo.dmp fromuser=USUARIO_ORIGEM touser=USUARIO_DESTINO
2. Apartir do diretório faça o import com os parâmetros:
imp USUARIO file=arquivo.dmp fromuser=USUARIO_ORIGEM touser=USUARIO_DESTINO
quarta-feira, 17 de outubro de 2012
Backup de uma única tabela no SQL Server usando SSMS
1. Botão direito do mouse no banco de dados (note não da tabela)
- Tasks
- Generate scripts
3. No painel “Choose Objects”, selecione a tabela que você quer fazer o backup.
- Next
4. No conjunto de painel “Opções de Scripting – SET SCRIPT OPTIONS ”
- Escolha o caminho onde será gravado o arquivo
- Clique em Avançado.
5. Na tela de ADVANCED STRIPTING OPTIONS
- Aba General(ultima opção da aba)
- Escolha Schema and data (escolha de esquema e de dados)
(Se você também quiser índices ou outras opções, certifique-se que também serão escolhidos)
6. Next / FINISH
Criando um BD - SQLServer
create database banconovo;Renomeando:exec sp_rename @objname = ‘Categoria’, @newname = ‘categoria’
Aqui são criados 2 arquivos:
use banconovo;
Assinar:
Postagens (Atom)