<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Diário de Códigos &#187; Banco de Dados</title>
	<atom:link href="http://diariodecodigos.info/category/banco-de-dados/feed/" rel="self" type="application/rss+xml" />
	<link>http://diariodecodigos.info</link>
	<description>Codigos Fonte, Artigos e Dicas</description>
	<lastBuildDate>Wed, 11 Apr 2012 18:56:43 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Dica Rápida: MySQL</title>
		<link>http://diariodecodigos.info/2010/09/dica-rapida-mysql/</link>
		<comments>http://diariodecodigos.info/2010/09/dica-rapida-mysql/#comments</comments>
		<pubDate>Sun, 12 Sep 2010 01:37:40 +0000</pubDate>
		<dc:creator>Alexandre Santos</dc:creator>
				<category><![CDATA[Banco de Dados]]></category>
		<category><![CDATA[MySQL]]></category>

		<guid isPermaLink="false">http://diariodecodigos.info/?p=1103</guid>
		<description><![CDATA[Dica rápida: estava criando um shell script onde eu fazia um select e tinha que excluir o cabeçalho (header) da resposta, a solução é simples, no comando do cliente utilize o parâmetro &#8211;skip-column-names. Abraços]]></description>
			<content:encoded><![CDATA[<p>Dica rápida: estava criando um shell script onde eu fazia um select e tinha que excluir o cabeçalho (header) da resposta, a solução é simples, no comando do cliente utilize o parâmetro <strong>&#8211;skip-column-names</strong>.</p>
<p><span id="more-1103"></span></p>
<p>Abraços</p>
<ul id="teste"></ul>
]]></content:encoded>
			<wfw:commentRss>http://diariodecodigos.info/2010/09/dica-rapida-mysql/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Dica: Backup do MySQL + FTP</title>
		<link>http://diariodecodigos.info/2010/02/dica-backup-do-mysql-ftp/</link>
		<comments>http://diariodecodigos.info/2010/02/dica-backup-do-mysql-ftp/#comments</comments>
		<pubDate>Mon, 01 Feb 2010 12:51:59 +0000</pubDate>
		<dc:creator>Alexandre Santos</dc:creator>
				<category><![CDATA[Dicas]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[backup]]></category>
		<category><![CDATA[ftp]]></category>
		<category><![CDATA[MySql]]></category>
		<category><![CDATA[shell script]]></category>

		<guid isPermaLink="false">http://diariodecodigos.info/?p=827</guid>
		<description><![CDATA[Esta dica é um script que eu utilizo muito nos meus servidores MySQL, normalmente para fazer um backup diário.]]></description>
			<content:encoded><![CDATA[<p><a href="http://diariodecodigos.info/wp-content/uploads/2010/02/MySQL.jpg"><img class="alignleft size-full wp-image-828" title="MySQL" src="http://diariodecodigos.info/wp-content/uploads/2010/02/MySQL.jpg" alt="" width="117" height="71" /></a>Esta dica é um script que eu utilizo muito nos meus servidores MySQL, normalmente para fazer um backup diário.</p>
<p>Não basta apenas fazer o backup, se o HD der defeito perderemos ele, então muito normalmente eu envio o backup para outro lugar, nesse script após o backup, o mesmo é enviado via FTP para outro servidor, ou máquina, seja lá para onde, garantindo que você tenha sempre uma cópia fora.</p>
<p>O MySQL não tem scheduler, então eu agendo essa tarefa no CRON (Agendador de Tarefas do Linux).<span id="more-827"></span></p>
<pre class="brush: bash;">
#!/bin/sh

caminhoLocal=&quot;/home/alexandre/www/backup-d/filesSQL/&quot;
cd $caminhoLocal

dataAgora=`date +%Y-%m-%d-%H.%M`
hostname=&quot;servidor2&quot;
username=&quot;alexandre&quot;
password=&quot;654321&quot;

# CRIA O ARQUVIO BACKUP DO MYSQL
mysqldump -u root -p654321 -x --add-drop-table -B banco1 | gzip &gt; backup-&quot;$dataAgora&quot;-banco1-MySQL.sql.gz

# BUSCA O NOME DO ARQUIVO BACKUP E ARMAZENA NA VARIÁVEL
# PARA ENVIAR VIA FTP
arquivo=`ls backup* | sort | sed '$!d'`

lftp &lt;&lt;FTP
open $hostname
user $username $password&gt;/dev/null
cd www/backup-SQL-nevada
put $arquivo
bye
FTP
</pre>
<p><span style="color: #0000ff;"><strong>Linha 3</strong></span> &#8211; &gt;É criado a variável &#8220;<em>caminhoLocal</em>&#8221; com o caminho ao diretório onde os backups serão armazenados</p>
<p><span style="color: #0000ff;"><strong>Linha 4</strong></span> -&gt; O script entra dentro do diretório armazenado na variável &#8220;<em>caminhoLocal</em>&#8221;</p>
<p><span style="color: #0000ff;"><strong>Linha 6</strong></span> -&gt; é criado a variável &#8220;<em>dataAgora</em>&#8221; onde será atribuido a data do dia, observem que o conteúdo da variável está entre crase ` onde indica ao shell script para executar aquele comando e armazenar o output dele na variável.</p>
<p><span style="color: #0000ff;"><strong>Linha 7</strong></span> <span style="color: #0000ff;"><strong>a </strong></span><span style="color: #0000ff;"><strong>Linha 9</strong></span> -&gt; são criados as variáveis que utilizaremos para a conexão do FTP</p>
<p><span style="color: #0000ff;"><strong>Linha 12</strong></span> -&gt; é criado o backup utilizando a ferramento &#8220;<em><strong>mysqldump</strong></em>&#8221; (<a title="MySQL Dump" href="http://dev.mysql.com/doc/refman/5.1/en/mysqldump.html" target="_blank">Documentação do MySQL Dump</a>) e a saída do backup é compactada utilizando o <strong>gzip</strong> (<a title="Gnu Zip" href="http://www.gzip.org/" target="_blank">Gnu zip</a>) e o arquivo é nomeado, ficando com a seguinte aparência: &#8220;backup-2010-02-01-11.30-banco2-MySQL.sql.gz&#8221;.</p>
<p><span style="color: #0000ff;"><strong>Linha 16</strong></span> -&gt; armazena na variável &#8220;<em>arquivo</em>&#8221; o nome do último arquivo de backup feito.</p>
<p><span style="color: #0000ff;"><strong>Linha 18 a 24</strong></span> -&gt; usa o<strong> lftp</strong> (<a title="LFTP" href="http://lftp.yar.ru/" target="_blank">Sophisticated file transfer program</a>) para enviar o backup via FTP para outro servidor.</p>
<p>Simples assim&#8230;&#8230;&#8230;&#8230;.</p>
<p><a href="http://www.redhat.com/docs/manuals/enterprise/RHEL-4-Manual/sysadmin-guide/ch-autotasks.html" target="_blank">Configurando Tarefas no Cron -&gt; Link para manual da Red Hat </a></p>
]]></content:encoded>
			<wfw:commentRss>http://diariodecodigos.info/2010/02/dica-backup-do-mysql-ftp/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Arquitetura do Oracle Database &#8211; Parte 1</title>
		<link>http://diariodecodigos.info/2010/01/serie-oracle-arquitetura-do-oracle-database-parte-1/</link>
		<comments>http://diariodecodigos.info/2010/01/serie-oracle-arquitetura-do-oracle-database-parte-1/#comments</comments>
		<pubDate>Sun, 31 Jan 2010 05:51:10 +0000</pubDate>
		<dc:creator>Alexandre Santos</dc:creator>
				<category><![CDATA[Série Oracle]]></category>
		<category><![CDATA[arquitetura do Banco de Dados]]></category>
		<category><![CDATA[Oracle]]></category>

		<guid isPermaLink="false">http://diariodecodigos.info/?p=819</guid>
		<description><![CDATA[Vamos começar uma série sobre um dos maiores banco de dados no mercado, o Oracle Database. Nesta primeira parte, &#8220;Arquitetura do Banco de Dados&#8221; veremos os principais componentes que formam a estrutura física do banco de dados&#8230;.. Durante a série iremos sempre nos referenciar à versão 10g, salvando exceções onde avisaremos antes que estamos nos]]></description>
			<content:encoded><![CDATA[<p><a href="http://diariodecodigos.info/wp-content/uploads/2009/10/Oracle-IMG-Small.jpg"><img class="alignleft size-full wp-image-500" style="margin: 1px; border: 1px solid black;" title="Oracle Small" src="http://diariodecodigos.info/wp-content/uploads/2009/10/Oracle-IMG-Small.jpg" alt="" width="71" height="120" /></a> Vamos começar uma série sobre um dos maiores banco de dados no mercado, o Oracle Database.</p>
<p>Nesta primeira parte, &#8220;<strong>Arquitetura do Banco de Dados</strong>&#8221; veremos os principais componentes que formam a <strong>estrutura física</strong> do banco de dados&#8230;..</p>
<p>Durante a série iremos sempre nos referenciar à versão <strong>10g,</strong> salvando exceções onde avisaremos antes que estamos nos referenciado a uma outra versão do banco de dados.<span id="more-819"></span></p>
<h2><strong><span style="color: #0000ff;">1 &#8211; Introdução</span></strong></h2>
<p>O que significa esse &#8220;<strong>g</strong>&#8220; <strong>?</strong> (Oracle Database 10g)<br />
Essa é a pergunta mais famosa para quem está chegando nesse novo mundo! Bem.. esse &#8220;<em>g</em>&#8221; significa &#8220;<strong>Grid</strong>&#8221; ou traduzindo ao pé da letra seria &#8220;Grade&#8221;.<br />
Não vou dar prosseguimento aqui nesse post  sobre o assunto de <em>Computação em Grid </em>e como o Oracle funciona em grid. isso ficará para outro post&#8230;&#8230;. por enquanto iremos apenas entender a <strong>estrutura lógica e física</strong>.</p>
<h2><strong><span style="color: #0000ff;">2 &#8211; Introdução a <span style="text-decoration: underline;">Estrutura Física</span> do Banco de Dados</span></strong></h2>
<p>Falaremos aqui (<em>parte 1</em>) e na <em>&#8220;parte 2&#8243;</em> sobre os principais componentes que formam a estrutura física do <strong>Oracle Database, </strong>e ao percorrer da série nos aprofundaremos em cada um desses componentes físicos e lógicos.</p>
<div id="recuoOracle" style="margin-left: 25px;">
<h3><span style="text-decoration: underline;"><span style="color: #0000ff;"><strong>2.1</strong></span> &#8211; </span><strong><span style="text-decoration: underline;">Datafiles</span><br />
</strong></h3>
<p>Todo Oracle Database tem um ou mais <strong>Datafiles</strong>, eles contém todos os dados do Banco de Dados (então pode ter certeza que você terá vários dele!).<br />
Os dados da estrutura lógica do database, como tabela e índices, são armazenados fisicamente no disco como <strong>Datafiles</strong>.</p>
<p><em><strong>Características:</strong></em></p>
<ul>
<li>Os <strong>Datafiles</strong> só podem ser associados somente a um banco de dados.</li>
<li><strong>Datafiles</strong> podem ter determinadas características definidas para deixá-los estender automaticamente quando o banco de dados é executado fora do espaço.</li>
<li>Um ou mais <strong>Datafiles</strong> formam uma unidade lógica de armazenamento do banco de dados chamado <strong>Tablespace </strong>(veremos mais a frente o que é)</li>
</ul>
<p>Dados dentro de um <strong>Datafile</strong> é lido, conforme necessário, durante operações do banco de dados do qual é armazenado em um cache de memória do Oracle. Por exemplo, vamos supor que o usuário que acessar alguns dados dentro de uma tabela do banco de dados, se o dado requisitado não estiver pronto no cache do database, então esse dado é lido do <strong>datafiles</strong> apropriado e armazenado na memória.</p>
<p>Quando modificado ou inserido novos dados eles não são necessariamente escrito imediatamente nos <strong>datafiles</strong>. Para reduzir a quantidade de acesso ao disco e o aumento de performance, os dados são primeiramente armazenados na memória e escrito ao seus apropriados <strong>datafiles</strong> depois tudo de uma vez só. Esse processo funciona como foi determinado pelo &#8220;database writer process&#8221; (DBWn) que é um processo background do banco de dados.</p>
<h3><span style="text-decoration: underline;"><span style="color: #0000ff;"><strong>2.2</strong></span> -<strong> Control Files</strong></span></h3>
<p>Todo database Oracle tem um <strong>control file</strong>. O <strong>control file</strong> contém entradas que são especificadas na estrutura física do banco de dados. Ele contém as seguintes informações:</p>
<ul>
<li>Nome do Banco de Dados</li>
<li>Nomes e locais de <strong>datafiles</strong> e <strong>redo log files</strong></li>
<li><strong>Time stamp</strong> do database</li>
</ul>
<p>Oracle pode multiplexar o <strong>control file</strong>, para que eles mantenham simultaneamente um número de identificação de cópias, para a proteção contra falhas envolvidas no <strong>control file</strong>.</p>
<p>Oracle can multiplex the control file, that is, simultaneously maintain a number of identical control file copies, to protect against a failure involving the control file.</p>
<p>Toda vez que uma instância do banco de dados Oracle é iniciado, é o <strong>control file</strong> que identifica o <strong>database</strong> e o <strong>redo log files</strong> que devem ser abertos para que a operação de iniciar proceda. Se a composição física do banco de dados é alterado (por exemplo, se um novo <strong>datafile</strong> ou <strong>redo log file</strong> é criado), o <strong>control file</strong> é automaticamente modificado pelo Oracle refletindo as modificações ocorridas. O <strong>control file</strong> é também utilizado no <strong>recovery</strong> de um banco de dados.</p>
<h3><span style="text-decoration: underline;"><strong><span style="color: #0000ff;">2.3</span></strong> -<strong> Redo Log Files</strong></span></h3>
<p>Todo banco de dados Oracle tem um conjunto de dois ou mais <strong>redo log files</strong>. O conjunto de <strong>redo log files</strong> é normalmente chamado apenas de <strong>redo log do banco de dados</strong>. O <strong>redo log</strong> é feito de entradas de <strong>redo</strong> (também conhecidas como <strong>redo records</strong>).</p>
<p>A função primária do <strong>redo log</strong> é gravar todas as modificações de dados. Se ocorre uma falha e digamos que os dados já estejam permanentemente escritos nos seus<strong> datafiles</strong>,as modificações podem ser obtidas do <strong>redo log</strong>, corrigindo a o problema. Por exemplo, você altera 1000 registros no banco de dados errôenamente, todas essas modificações estarão no <strong>redo log</strong>, você não perderá seus dados.</p>
<p>Para proteger falhas envolvendo o próprio <strong>redo log</strong>, Oracle permite miltiplexar <strong>redo log</strong> para duas ou mais cópias podendo assim ser mantidas em diferentes discos rígidos.</p>
<p>A informação dentro do <strong>redo log file</strong> é utilizada somente para recuperar o banco de dados de um sistema ou mídia de uma falha que impeça os dados do database sejam escritos nos seus <strong>datafiles</strong>. Por exemplo, se uma queda de luz desliga o servidor no meio de sua operação, e não deu tempo dos dados que estavam na memória de serem escritos nos <strong>datafiles</strong>, esses dados foram perdidos. Porém&#8230; esses dados perdidos podem ser recuperados quando o banco de dados é iniciado novamente após a volta da queda de energia. Ao aplicar as informações mais recentes contidas no <strong>redo log files</strong> aos <strong>datafiles</strong> do database, Oracle restaura o banco de dados para o momento que ocorreu a queda de energia.</p>
<p>O processo de aplicar o <strong>redo log</strong> durante a operação de recovery é chamada de <strong>rolling forward</strong>.</p>
<h3><span style="text-decoration: underline;"><strong><span style="color: #0000ff;">2.4</span></strong> -<strong> Archive Log Files</strong></span></h3>
<p>Você pode habilitar arquivamento automático do <strong>redo log</strong>. O Oracle automaticamente arquiva arquivos de log quando o banco de dados está no modo <strong>ARCHIVELOG</strong> (isso será visto mais para frente no decorrer da série, por enquanto não se preocupe com isso por enquanto).</p>
<h3><span style="text-decoration: underline;"><strong><span style="color: #0000ff;">2.5</span> </strong>-<strong> Parameter Files</strong></span></h3>
<p><strong>Parameter files</strong> contém uma lista de parâmetros de configuração para a sua instância do banco de dados.</p>
<p>A Oracle recomenda que você crie um <strong>arquivo de parâmetro do servidor</strong>, conhecido como SPFILE (<strong>S</strong>erver <strong>P</strong>arameter <strong>File</strong>) como um meio de manter a dinâmica de inicialização do parâmetro. Um SPFILE permite que você armazene e gerencie seus parâmetros de inicialização em um arquivo no disco do servidor.</p>
<h3><span style="text-decoration: underline;"><strong><span style="color: #0000ff;">2.6</span> </strong>-<strong> Alert e Trace Log Files</strong></span></h3>
<p>Cada servidor e processo de background pode escrever um associado <strong>trace file</strong>.Quando um erro interno é detectado pelo processo, ele despeja informações sobre o seu erro em um <strong>trace file</strong>. Algumas das informações escritas nos<strong> trace files</strong> são destinadas para adminstrados de banco de dados (DBA), enquanto outras informações são para o <strong>Serviço de Suporte Oracle </strong>(Oracle Support Services). Informações do <strong>trace file</strong> também são utilizadas para fazer tuning em aplicações e instâncias.</p>
<p>O <strong>alert file</strong>, ou <strong>alert log</strong>, é um <strong>trace file</strong> especial. O <strong>alert log</strong> do banco de dados é um<strong> log</strong> cronológico de mensagens e erros.</p>
<h3><span style="text-decoration: underline;"><strong><span style="color: #0000ff;">2.7</span> </strong>-<strong> Backup Files</strong></span></h3>
<p>Para restaurar um arquivo é necessário substitui-lo com um arquivo de backup. Geralmente, você restaura um arquivo quando tem erro no disco ou quando um erro causado pelo usuário (coisa difícil de acontecer) danifica ou deleta o arquivo original.</p>
<p><strong>Backup e Recovery</strong> gerenciado por usuário requer realmente que você crie os arquivos de backup antes de você poder recupera-los, fazendo tudo manualmente.</p>
<p><strong>Backup e Recovery</strong> gerenciado pelo servidor, através de processos de backup, como o <strong>scheduling of backups</strong>, e  como o <strong>recovery process</strong>, é aplicado para o correto <em>recovery</em> de acordo com os arquivos de backup necessário.
</div>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br />
Na segunda parte do artigo &#8220;<strong>Arquitetura do Oracle Database</strong>&#8221;  trataremos de ver a estrutura lógica do banco de dados. até lá&#8230;<br />
<strong><span style="color: #0000ff;">Observações:</span></strong></p>
<ol>
<li>No oracle quando nos referimos a <strong>INSTÂNCIA</strong> do database, estamos de uma forma comum nos referindo ao processo do próprio database. Seria como se referir ao daemon do MySQL em um servidor Linux.</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://diariodecodigos.info/2010/01/serie-oracle-arquitetura-do-oracle-database-parte-1/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>MySql Error 1005: Can’t create table (errno: 150)</title>
		<link>http://diariodecodigos.info/2010/01/mysql-error-1005-can%e2%80%99t-create-table-errno-150/</link>
		<comments>http://diariodecodigos.info/2010/01/mysql-error-1005-can%e2%80%99t-create-table-errno-150/#comments</comments>
		<pubDate>Mon, 11 Jan 2010 16:14:30 +0000</pubDate>
		<dc:creator>Alexandre Santos</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[MySql]]></category>

		<guid isPermaLink="false">http://diariodecodigos.info/?p=805</guid>
		<description><![CDATA[Vira e meche entre uma modelagem e outra eu sempre me deparo com o seguinte erro &#8220;Error 1005: Can&#8217;t create table (errno: 150)&#8221; enquanto estou trabalhando com uma Foreign Key. Isso quer dizer que tem algo errado (lógico) do qual esteja impedindo a criação de sua nova Foreign Key, segue abaixo os erros mais comuns:]]></description>
			<content:encoded><![CDATA[<p>Vira e meche entre uma modelagem e outra eu sempre me deparo com o seguinte erro &#8220;<em>Error 1005: Can&#8217;t create table (errno: 150)</em>&#8221; enquanto estou trabalhando com uma <em>Foreign Key</em>.</p>
<p>Isso quer dizer que tem algo errado (lógico) do qual esteja impedindo a criação de sua nova <em>Foreign Key</em>, segue abaixo os erros mais comuns:<span id="more-805"></span></p>
<ul>
<li>Os dois campos relacionados da Foreign Key não tem o mesmo tipo ou tamanho. Por exemplo, se um campo é INT(10) o campo da chave precisa ser INT(10) também, se for colocado INT(11) ou TINYINY já não serve. Você deve verificar esses dados usando a query &#8220;SHOW CREATE TABLE tblname;&#8221;. Também confirme se ambos os campos são &#8216;signed&#8217; ou &#8216;unsigned&#8217;. Conclusão, os campos devem ser EXATAMENTE o mesmo!</li>
<li>O campo do qual você deseja se referenciar em outra tabela não tem um índice (index) ou não é uma chave primária (primary key). Se um dos campos que você deseja criar a relação não for uma &#8220;primary key&#8221;, você deve criar um índice para ela.</li>
<li>O nome da Foreign Key já existe em alguma chave. Confira se o nome de sua Foreign Key é única no seu banco de dados. Simplesmente adicione alguns caracteres aleatórios no fim do nome de sua key para testar essa condição.</li>
<li>Uma ou ambas as tabelas são MyISAM. Para utilizar Foreign Key ambas as tabelas devem usar InnoDB. Normalmente quando ambas as tabelas são MyISAM o MySQL não apresenta nenhuma mensagem de erro, simplesmente não cria a chave.</li>
<li>Você pode ter especificado &#8220;CASCADE ON DELETE SET NULL&#8221;, enquanto o campo é &#8220;NOT NULL&#8221;, esse é o erro mais comum.</li>
<li>Se o seu script está funcionando perfeitamente em um <em>server</em>, mas não em outro, verifique o collate ou charset, eles podem dar problemas caso sejam diferentes.</li>
<li>Você pode ter um valor default (ex. default=0) na sua coluna Foreign Key.</li>
<li>O nome de sua Foreign Key excede o limite de no máximo 64 caracteres.</li>
</ul>
<p>Bem.. eu acredito que a maioria dos erros sejam causados por esses motivos acima, caso você tenha passado por esse problema e a causa tenha sido diferente, colabore.</p>
<p>Boa Sorte!</p>
]]></content:encoded>
			<wfw:commentRss>http://diariodecodigos.info/2010/01/mysql-error-1005-can%e2%80%99t-create-table-errno-150/feed/</wfw:commentRss>
		<slash:comments>34</slash:comments>
		</item>
		<item>
		<title>Restaurar banco do MySQL em C# (2/2)</title>
		<link>http://diariodecodigos.info/2009/10/restaurar-banco-do-mysql-em-c/</link>
		<comments>http://diariodecodigos.info/2009/10/restaurar-banco-do-mysql-em-c/#comments</comments>
		<pubDate>Sat, 24 Oct 2009 10:59:10 +0000</pubDate>
		<dc:creator>paulodiogo</dc:creator>
				<category><![CDATA[Banco de Dados]]></category>
		<category><![CDATA[C# Dicas]]></category>
		<category><![CDATA[MySQL]]></category>

		<guid isPermaLink="false">http://diariodecodigos.info/?p=640</guid>
		<description><![CDATA[Process.Start(&#34;cmd.exe&#34;, &#34;/c /*CAMINHO DO MYSQL.EXE*/ + &#34; -u/*usuario*/ -p/*senha*/ /*banco*/ &#60; &#34;+/*CAMINHO DO ARQUIVO .SQL*/); Para fazer backup já fiz aqui. Simples assim.]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.4linux.com.br/files/imagecache/pic-02/cursos/images/imagem-412.jpg" alt="MySql" /></p>
<pre class="brush: csharp;">
Process.Start(&quot;cmd.exe&quot;, &quot;/c /*CAMINHO DO MYSQL.EXE*/ +
                          &quot; -u/*usuario*/ -p/*senha*/ /*banco*/ &lt; &quot;+/*CAMINHO DO ARQUIVO .SQL*/);</pre>
<p><span id="more-640"></span></p>
<p>Para fazer backup já fiz <a href="http://diariodecodigos.info/2009/09/fazendo-backup-do-mysql-com-c/">aqui</a>.</p>
<p>Simples assim.</p>
]]></content:encoded>
			<wfw:commentRss>http://diariodecodigos.info/2009/10/restaurar-banco-do-mysql-em-c/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Problemas com o Listener &#8211; Oracle</title>
		<link>http://diariodecodigos.info/2009/10/problemas-com-o-listener-oracle/</link>
		<comments>http://diariodecodigos.info/2009/10/problemas-com-o-listener-oracle/#comments</comments>
		<pubDate>Sun, 04 Oct 2009 04:39:52 +0000</pubDate>
		<dc:creator>Alexandre Santos</dc:creator>
				<category><![CDATA[Oracle]]></category>
		<category><![CDATA[Enterprise Manager]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Listener]]></category>

		<guid isPermaLink="false">http://diariodecodigos.info/?p=487</guid>
		<description><![CDATA[&#8220;The information provided for this listener is currently in use by other software on this computer. You can proceed with the configuration as it is, but it will not be possible to start this listener until the conflict is resolved. Would you like to continue with the configuration anyway?&#8221; Esse foi o pesadelo que tive]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-500" title="Oracle Small" src="http://diariodecodigos.info/wp-content/uploads/2009/10/Oracle-IMG-Small.jpg" alt="Oracle Small" width="71" height="120" />&#8220;<em>The information provided for this listener is currently in use by other software on this computer. You can proceed with the configuration as it is, but it will not be possible to start this listener until the conflict is resolved. Would you like to continue with the configuration anyway?</em>&#8221;</p>
<p>Esse foi o pesadelo que tive ao tentar instalar o <strong>Oracle 10g</strong> no <strong>SuSE Enterprise Linux 11</strong>.</p>
<p><span id="more-487"></span>Foi quando fui dar uma olhada o arquivo &#8220;<strong>listener.ora</strong>&#8221;</p>
<pre class="brush: bash;">
# listener.ora Network Configuration File: /opt/oracle/product/102g/db1/network/admin/listener.ora
# Generated by Oracle configuration tools.

SID_LIST_LISTENER =
 (SID_LIST =
 (SID_DESC =
 (SID_NAME = PLSExtProc)
 (ORACLE_HOME = /opt/oracle/product/102g/db1)
 (PROGRAM = extproc)
 )
 )

LISTENER =
 (DESCRIPTION =
 (ADDRESS = (PROTOCOL = TCP)(HOST = bc.unallocated.barefruit.co.uk)(PORT = 1521))
 )
</pre>
<p>Repararam no endereço do <em>host</em>?</p>
<blockquote><p>bc.unallocated.barefruit.co.uk</p></blockquote>
<p>Mas de onde o &#8220;<strong>netca</strong>&#8221; tirou esse endereço?<br />
(para quem esta começando agora, o netca é o utilitário gráfico de configuração do <em>listener</em>)</p>
<p>Eu não consegui entender nada! Porém, sempre imaginamos o que pode ser.</p>
<p>Fui logo em seguida para o famoso e maravilhoso &#8220;<strong>Yast</strong>&#8220;, fui em &#8220;<strong>Network Settings</strong>&#8221; ajustei o &#8220;<strong>hostname</strong>&#8221; para &#8220;<em><strong>localhost.localdomain</strong></em>&#8220;, por desencargo de consciência reiniciei o pc, configurei novamente a variável de ambiente &#8220;<strong>oracle_localhost</strong>&#8221;</p>
<pre class="brush: bash;">
export ORACLE_LOCALHOST=localhost.localdomain
</pre>
<p>E tentei reconfigurar o &#8220;<strong>listener</strong>&#8221; com o &#8220;<strong>netca</strong>&#8220;&#8230; OK! Beleza! Show e bola!</p>
<p>Iniciei o &#8220;<strong>dbca</strong>&#8221; para criar uma instância do Banco de Dados, <strong>ERRO</strong>!</p>
<p>Porém a instância do Oracle estava instalada e funcionando perfeitamente, apenas o <strong>Enterprise Manager</strong> não funcionava.</p>
<p>Tentei instalar pela linha de comando (<em>$emca -config dbcontrol db</em>) e também não obtive sucesso, o erro no arquivo de log era:</p>
<blockquote><p>Enterprise manager configuration failed due to the following error -<br />
Failed to allocate port(s) int the specified range for the following process(es):<br />
JMS [5540-5559], RMI [5520-5539], Database Control [5500-5519], EM agent [1830-1849]</p></blockquote>
<p>depois de muito pesquisar no famoso Google, nada de <em>Bing</em> (Bing Is Not Google) achei a solução:</p>
<blockquote><p>The problem is that ports listed in /etc/services are discounted.</p>
<p>The workaround is to specify the ports manually, see emca -h</p>
<p>Use the following options and use the port ranges as specified in the above error message:</p>
<p>emca -RMI_PORT port -JMS_PORT port -AGENT_PORT port -DBCONSOLE_HTTP_PORT port</p>
<p>(http://www.puschitz.com/InstallingOracle10gOnSUSE.shtml)</p></blockquote>
<p>Mas quem acha que eu vou realmente vasculhar o &#8220;<strong>/etc/services</strong>&#8221; todo para consertar esse pequeno problema está muito enganado&#8230;.</p>
<p>rapaz&#8230; é muito melhor seguir as distros que estão homologadas pela Oracle para o 10g. Vou pegar o Red-Hat 4 e fazer o serviço que é melhor.</p>
<p><strong>Observação:</strong> O Oracle funciona legal! Você se loga, faz tudo! a única coisa errada é o &#8220;Enterprise Manager&#8221; que não instala!<br />
Fora isso tudo ok, mas eu prefiro instalar tudo por completo.</p>
<p><strong>Observação 2:</strong> O SuSE tem um pacote chamao &#8220;<strong>orarun.rpm</strong>&#8221; que automatiza todo o processo de preparação do ambiente para a instalação do oracle, mas para o SuSE-release 11 recomendamos o Oracle 11g.</p>
<p><strong>Observação 3:</strong> O &#8220;<strong>Suse Enterprise 11</strong>&#8221; é EXCELENTE!<br />
Posso dizer que é uma das melhores distros que já vi do ponto de vista performático, estabilidade e produtividade.<br />
A ferramenta &#8220;<strong>Yast</strong>&#8221; é excepcional. O OpenSUSE não é a mesma coisa, apesar de chegar perto.</p>
<p>Abraços e boa noite, já é tarde.</p>
]]></content:encoded>
			<wfw:commentRss>http://diariodecodigos.info/2009/10/problemas-com-o-listener-oracle/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Fazendo backup do MySql com C# (1/2)</title>
		<link>http://diariodecodigos.info/2009/09/fazendo-backup-do-mysql-com-c/</link>
		<comments>http://diariodecodigos.info/2009/09/fazendo-backup-do-mysql-com-c/#comments</comments>
		<pubDate>Thu, 03 Sep 2009 14:23:18 +0000</pubDate>
		<dc:creator>paulodiogo</dc:creator>
				<category><![CDATA[Banco de Dados]]></category>
		<category><![CDATA[C# Dicas]]></category>
		<category><![CDATA[MySQL]]></category>

		<guid isPermaLink="false">http://diariodecodigos.info/?p=441</guid>
		<description><![CDATA[Agora vamos ver um método prático e sagaz de se fazer um backup em código do banco de dados. try { Process.Start(&#34;CAMINHO DO MYSQL NA SUA MAQUINA/bin/mysqldump.exe&#34;, &#34;-u USER --password=SENHA -B BANCO &#62; -r &#34; + arq).WaitForExit(5000); if (File.Exists(arq)) return true; else return false; } catch { throw new Exception(&#34;Backup não pode ser realizado nessa]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone" src="../wp-content/uploads/2009/08/C.gif" alt="" /></p>
<p>Agora vamos ver um método prático e sagaz de se fazer um backup em código do banco de dados.</p>
<p><span id="more-441"></span></p>
<pre class="brush: csharp;">
try
 {
 Process.Start(&quot;CAMINHO DO MYSQL NA SUA MAQUINA/bin/mysqldump.exe&quot;,
 &quot;-u USER --password=SENHA -B BANCO  &gt; -r &quot; + arq).WaitForExit(5000);
 if (File.Exists(arq))
 return true;
 else
 return false;
 }
 catch
 {
 throw new Exception(&quot;Backup não pode ser realizado nessa maquina.&quot;);
 }
</pre>
<p>Util pra mim&#8230; não sei pra vocês&#8230;</p>
<p>Simples Assim.</p>
]]></content:encoded>
			<wfw:commentRss>http://diariodecodigos.info/2009/09/fazendo-backup-do-mysql-com-c/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Mapeamento de Relacionamentos N:M</title>
		<link>http://diariodecodigos.info/2009/07/mapeamento-de-relacionamentos-nm/</link>
		<comments>http://diariodecodigos.info/2009/07/mapeamento-de-relacionamentos-nm/#comments</comments>
		<pubDate>Fri, 31 Jul 2009 12:44:38 +0000</pubDate>
		<dc:creator>paulodiogo</dc:creator>
				<category><![CDATA[Conceitos]]></category>

		<guid isPermaLink="false">http://diariodecodigos.info/?p=298</guid>
		<description><![CDATA[Para cada relacionamento &#8220;N:M&#8221;: Criar uma nova tabela para representa-lo; Incluir como chaves estrangeiras nesta relação as chaves primárias de ambas as relações constituintes do relacionamento. A chave primária desta relação é formada pela combinação destas chaves estrangeiras; Incluir quaisquer atributos do relacionamento da nova relação criada. EX.: Funcionario(matricula, nome, salario) Projeto(numero, nome, verba) Trabalha(mt_fun,]]></description>
			<content:encoded><![CDATA[<p>Para cada relacionamento &#8220;N:M&#8221;:</p>
<ul>
<li>Criar uma nova tabela para representa-lo;</li>
<li>Incluir como chaves estrangeiras nesta relação as chaves primárias de ambas as relações constituintes do relacionamento. A chave primária desta relação é formada pela combinação destas chaves estrangeiras;</li>
<li>Incluir quaisquer atributos do relacionamento da nova relação criada.</li>
</ul>
<p><span id="more-298"></span></p>
<p>EX.:<br />
<img src="http://shopcart.site50.net/diagrama_n_n.png" alt="Diagrama" /><br />
Funcionario(<strong>matricula</strong>, nome, salario)</p>
<p>Projeto(<strong>numero</strong>, nome, verba)</p>
<p>Trabalha(<strong>mt_fun, num_proj</strong>, carga_horaria)</p>
<p>Simples assim =D</p>
<p>Creditos: Rafael Targino</p>
]]></content:encoded>
			<wfw:commentRss>http://diariodecodigos.info/2009/07/mapeamento-de-relacionamentos-nm/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Normalização de um Banco de Dados (3ª Forma Normal)</title>
		<link>http://diariodecodigos.info/2009/07/normalizacao-de-um-banco-de-dados-terceira-forma-normal/</link>
		<comments>http://diariodecodigos.info/2009/07/normalizacao-de-um-banco-de-dados-terceira-forma-normal/#comments</comments>
		<pubDate>Fri, 31 Jul 2009 12:34:39 +0000</pubDate>
		<dc:creator>paulodiogo</dc:creator>
				<category><![CDATA[Conceitos]]></category>

		<guid isPermaLink="false">http://diariodecodigos.info/?p=295</guid>
		<description><![CDATA[Terceira forma Normal (3FN) Uma tabela está na terceira forma normal se esta na 2FN e se nenhuma de suas colunas não pertencentes à chave primária fica determinada transitivamente por esta chave. Uma coluna depende transitivamente da chave primária se seu valor é determinado pelo conteúdo de uma coluna não chave que, por sua vez]]></description>
			<content:encoded><![CDATA[<p>Terceira forma Normal (3FN)</p>
<ul>
<li>Uma tabela está na terceira forma normal se esta na 2FN e se nenhuma de suas colunas não pertencentes à chave primária fica determinada transitivamente por esta chave.</li>
<li>Uma coluna depende transitivamente da chave primária se seu valor é determinado pelo conteúdo de uma coluna não chave que,  por sua vez é determinada pela chave primária da tabela.</li>
</ul>
<p><span id="more-295"></span></p>
<p>Para cada coluna da tabela original que nao faz parte da chave primária, faça:</p>
<ul>
<li>Seja c a coluna atual</li>
<li>Se <em>c</em> é dependente transitivamente de alguma outra coluna não pertencente à chave primária, faça:
<ol>
<li>Crie nova tabela onde a chave primaria será a coluna que determinou o valor de <em>c</em></li>
<li>Adicione <em>c</em> a esta nova tabela</li>
<li>Excluir <em>c</em> da tabela original</li>
</ol>
</li>
</ul>
<p>EX.:</p>
<p>Carro(<strong><em>placa</em></strong>, modelo, qtd_km_rodados, cód_fab, nome_fab)</p>
<p>Fica assim:</p>
<p>Carro(<strong>placa</strong>, modelo,qtd_km_rodados,cód_fab)</p>
<p>Fabricante(<strong>cód</strong>, nome)</p>
<p>Simples assim&#8230;</p>
<p><em>Créditos: Rafael Targino &lt;Proj. de Banco de Dados&gt; Apostila em PDF que me foi passada pela Prof. Roberta&#8230; =D </em></p>
]]></content:encoded>
			<wfw:commentRss>http://diariodecodigos.info/2009/07/normalizacao-de-um-banco-de-dados-terceira-forma-normal/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Normalização de um Banco de Dados (2ª Forma Normal)</title>
		<link>http://diariodecodigos.info/2009/07/normalizacao-de-um-banco-de-dados-2%c2%aa-forma-normal/</link>
		<comments>http://diariodecodigos.info/2009/07/normalizacao-de-um-banco-de-dados-2%c2%aa-forma-normal/#comments</comments>
		<pubDate>Wed, 29 Jul 2009 11:40:20 +0000</pubDate>
		<dc:creator>paulodiogo</dc:creator>
				<category><![CDATA[Banco de Dados]]></category>
		<category><![CDATA[Normalização]]></category>

		<guid isPermaLink="false">http://diariodecodigos.info/?p=275</guid>
		<description><![CDATA[Continuando&#8230; 2ª Forma Normal Uma tabela esta na segunda forma normal se está na primeira forma normal, e cada uma das colunas não pertencentes à chave primária não form dependente parcialmente dessa chave. Uma coluna depende parcialmente da chave se, para que seu valor seja determinado não necessitamos conhecer a chave como um todo, mas]]></description>
			<content:encoded><![CDATA[<p>Continuando&#8230;</p>
<p><strong>2ª Forma Normal</strong></p>
<p>Uma tabela esta na segunda forma normal se está na primeira forma normal, e cada uma das colunas não pertencentes à chave primária não form dependente parcialmente dessa chave.<span id="more-275"></span></p>
<blockquote><p>Uma coluna depende parcialmente da chave se, para que seu valor seja determinado não necessitamos conhecer a chave como um todo, mas sim somente um ou alguns de seus valores.</p></blockquote>
<p>Ou seja, se uma coluna de uma tabela não pertence à chave e pode ter seu valor determinado por parte da chave é dita como &#8220;dependente parcialmente da chave&#8221;.</p>
<p>Note que dependência parcial é um tipo de dependência funcional.</p>
<p>Portanto,  para levar um conjunto de tabelas à 2FN, o objetivo é remover dependências parciais.</p>
<p>EX.:</p>
<p>Carro = (placa, licença_dono, nome_dono, modelo, qtd_km_rodados, qtd_rodado_por_dono)</p>
<p>Relação 1= (<em>licença_dono</em>, nome_dono)</p>
<p>Relação 2= (<em>placa_carro</em>, modelo, qtd_km_rodados)</p>
<p>Relação 3 = (<em>placa_carro, licença_dono</em>, qtd_rodado_por_dono)</p>
<p><strong>Simples Assim&#8230;</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://diariodecodigos.info/2009/07/normalizacao-de-um-banco-de-dados-2%c2%aa-forma-normal/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

