<?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>TiagoFigueira.com &#187; base de dados</title>
	<atom:link href="http://tiagofigueira.com/tag/base-de-dados/feed/" rel="self" type="application/rss+xml" />
	<link>http://tiagofigueira.com</link>
	<description>Web Developer &#38; SysAdmin</description>
	<lastBuildDate>Thu, 24 Jun 2010 01:36:44 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=abc</generator>
		<item>
		<title>Oracle: Duplicar base de dados</title>
		<link>http://tiagofigueira.com/oracle-duplicar-base-de-dados/380/</link>
		<comments>http://tiagofigueira.com/oracle-duplicar-base-de-dados/380/#comments</comments>
		<pubDate>Sun, 04 Oct 2009 20:12:29 +0000</pubDate>
		<dc:creator>tiago</dc:creator>
				<category><![CDATA[base de dados]]></category>
		<category><![CDATA[oracle]]></category>

		<guid isPermaLink="false">http://tiagofigueira.com/?p=380</guid>
		<description><![CDATA[Seja por precisarmos de mudar de servidor, ou por querermos ter uma réplica da base de dados de produção para testes, o certo é que, às vezes temos necessidade de copiar/duplicar uma base de dados oracle. Como fazer? 1.º passo: Para mim o mais importante é garantir que antes de fazer o que quer que [...]]]></description>
			<content:encoded><![CDATA[<p>Seja por precisarmos de mudar de servidor, ou por querermos ter uma réplica da base de dados de produção para testes, o certo é que, às vezes temos necessidade de copiar/duplicar uma base de dados oracle.</p>
<p>Como fazer?</p>
<p><strong>1.º passo:</strong><br />
Para mim o mais importante é garantir que antes de fazer o que quer que seja têm uma cópia de segurança actualizada da base de dados que querem copiar/clonar.</p>
<p><strong>2.º passo:</strong><br />
Efectuar o login, na base de dados que queremos copiar, como SYSDBA utilizando o SQL+ e correr o seguinte comando:</p>
<pre class="brush: sql;">alter d_atabase backup controlfile to trace;</pre>
<p>Este comando vai criar um ficheiro com os comandos necessários para criar a base de dados.<br />
Se não souber qual é a directoria onde são guardados os ficheiros, pode abrir o ficheiro <strong>init.ora</strong> e ver o parametro: <strong>user_dump_dest</strong></p>
<p>O ficheiro gerado será semelhante a:</p>
<pre class="brush: sql;">
...
STARTUP NOMOUNT
CREATE CONTROLFILE REUSE DATABASE &quot;BD_PRODUCAO&quot; NORESETLOGS
NOARCHIVELOG
MAXLOGFILES 16
MAXLOGMEMBERS 2
MAXDATAFILES 240
MAXINSTANCES 1
MAXLOGHISTORY 113
LOGFILE
GROUP 1 'D:\ORACLE\ORADATA\BD_PRODUCAO\REDO01.LOG'  SIZE 10M,
GROUP 2 'D:\ORACLE\ORADATA\BD_PRODUCAO\REDO02.LOG'  SIZE 10M,
-- STANDBY LOGFILE
DATAFILE
'D:\ORACLE\ORADATA\BD_PRODUCAO\SYSTEM01.DBF',
'D:\ORACLE\ORADATA\BD_PRODUCAO\MYDATABSE.DBF'
;
# Recovery is required if any of the datafiles are restored
# backups, or if the last shutdown was not normal or immediate.
RECOVER D_ATABASE
# Database can now be opened normally.
ALTER D_ATABASE OPEN;
</pre>
<p><strong>3.º passo:</strong></p>
<p>Fazer o shutdown da base de dados em produção</p>
<pre class="brush: sql;">shutdown immediate</pre>
<p><strong>4.º passo:</strong><br />
Copiar os ficheiros da base de dados de produção para a nova localização.</p>
<p><strong>5.º passo:</strong><br />
Alterar o control file (ficheiro criado no 2.º passo).</p>
<p>As alterações a efectuar são:</p>
<ol>
<li>Remover todo o conteúdo do ficheiro até à linha onde está escrito &#8220;STARTUP NO MOUNT&#8221;;</li>
<li>Onde está:  CREATE CONTROLFILE <span style="color: #ff0000;">REUSE DATABASE &#8220;BD_PRODUCAO&#8221; NORESETLOGS</span><br />
Deve passar a estar:  CREATE CONTROLFILE <span style="color: #008000;">SET DATABASE &#8220;BD_REPLICA&#8221; RESETLOGS</span></li>
<li><span style="color: #008000;"><span style="color: #000000;">Remover os comandos<span style="color: #ff0000;"> recover d_atabase</span> e <span style="color: #ff0000;">alter d_atabase open</span>;</span></span>
<pre class="brush: sql;">
# Recovery is required if any of the datafiles are restored
# backups, or if the last shutdown was not normal or immediate.
RECOVER D_ATABASE
# Database can now be opened normally.
ALTER D_ATABASE OPEN;
</pre>
</li>
<li>Corrigir os caminhos para os novos ficheiros de dados.<br />
Neste caso vamos partir do principio que apenas estamos a criar uma réplica da BD e não a muda-la de servidor.<br />
Onde está: <span style="color: #ff0000;">D:\ORACLE\ORADATA\BD_PRODUCAO\</span><br />
Deve estar: <span style="color: #008000;">D:\ORACLE\ORADATA\BD_REPLICA\<br />
<span style="color: #000000;">Devem fazer o mesmo para os LOG FILES;</span></span></li>
<li><span style="color: #008000;"><span style="color: #000000;">Guardar as alterações criadas com o nome &#8220;<strong>novadb_create_controlfile</strong>&#8220;</span></span></li>
</ol>
<p><strong>6.º passo:</strong><br />
Criar um novo ficheiro INIT.ORA para a nova base de dados.<br />
Para isso o mais simples é copiar o ficheiro da base e dados em produção para um novo.<br />
Exemplo: copiar o &#8220;<strong>initBD_PRODUCAO.ora</strong>&#8221; para &#8220;<strong>initBD_REPLICA.ora</strong>&#8221;<br />
Devem ter em atenção que é necessário alterar o conteúdo do novo ficheiro(initBD_REPLICA.ora), nomeadamente os parametros:</p>
<pre class="brush: sql;">
* audit_file_dest
* background_dump_dest
* control_files
* core_dump_dest
* log_archive_dest
* user_dump_dest
</pre>
<p>convém verificar se existe mais algum parâmetro que faça referência à base de dados antiga.</p>
<p><strong>7.º passo:</strong><br />
Copiar o ficheiro de passwords (<strong>orapwd</strong>) para a nova localização.</p>
<p><strong>8.º passo:</strong><br />
Iniciar a nova base de dados:</p>
<pre class="brush: sql;">@novadb_create_controlfile</pre>
<p><strong>9.º passo:</strong><br />
Colocar a nova base de dados em modo ArchiveLog:</p>
<p>FIM!</p>
<p>PS: não se esqueçam de meter a base de dados produção em cima!</p>
]]></content:encoded>
			<wfw:commentRss>http://tiagofigueira.com/oracle-duplicar-base-de-dados/380/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SQL Server &#8211; Order by com valores NULL</title>
		<link>http://tiagofigueira.com/sql-server-order-by-com-valores-null/14/</link>
		<comments>http://tiagofigueira.com/sql-server-order-by-com-valores-null/14/#comments</comments>
		<pubDate>Sun, 19 Jul 2009 23:59:29 +0000</pubDate>
		<dc:creator>tiago</dc:creator>
				<category><![CDATA[base de dados]]></category>
		<category><![CDATA[NULL]]></category>
		<category><![CDATA[sql server]]></category>

		<guid isPermaLink="false">http://tiagofigueira.com/?p=14</guid>
		<description><![CDATA[Imaginem uma tabela (alunos) com dois campos: Nome e Numero. Ao executar o seguinte código, SELEC T * FROM ALUNOS ORDER BY numero; obtemos como resultado: Para obtermos dos alunos ordenados por número sem ter em conta os NULL temos de alterar o código sql para: SELEC T * FROM ALUNOS ORDER BY (CASE WHEN [...]]]></description>
			<content:encoded><![CDATA[<p>Imaginem uma tabela (alunos) com dois campos: Nome e Numero.</p>
<p><img class="alignnone size-full wp-image-64" title="table-alunos" src="http://tiagofigueira.com/wp-content/uploads/2009/07/table-alunos.png" alt="table-alunos" width="262" height="91" /></p>
<p>Ao executar o seguinte código,</p>
<pre class="brush: sql;">SELEC T * FROM ALUNOS ORDER BY numero;</pre>
<p>obtemos como resultado:</p>
<p><img class="alignnone size-full wp-image-65" title="table-alunos-order-by" src="http://tiagofigueira.com/wp-content/uploads/2009/07/table-alunos-order-by.png" alt="table-alunos-order-by" width="181" height="164" /></p>
<p>Para obtermos dos alunos ordenados por número sem ter em conta os NULL temos de alterar o código sql para:</p>
<pre class="brush: sql;">SELEC T * FROM ALUNOS ORDER BY (CASE WHEN numero IS NULL THEN 1 ELSE 0 END), numero;</pre>
<p>Assim obtemos como resultado:</p>
<p><img class="alignnone size-full wp-image-66" title="table-alunos-order-by-null" src="http://tiagofigueira.com/wp-content/uploads/2009/07/table-alunos-order-by-null.png" alt="table-alunos-order-by-null" width="146" height="141" /></p>
<p> <img src='http://tiagofigueira.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://tiagofigueira.com/sql-server-order-by-com-valores-null/14/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SQL Server: Read-Only Databases</title>
		<link>http://tiagofigueira.com/sql-server-read-only-databases/7/</link>
		<comments>http://tiagofigueira.com/sql-server-read-only-databases/7/#comments</comments>
		<pubDate>Mon, 02 Mar 2009 23:53:06 +0000</pubDate>
		<dc:creator>tiago</dc:creator>
				<category><![CDATA[base de dados]]></category>
		<category><![CDATA[read-only]]></category>
		<category><![CDATA[sql server]]></category>

		<guid isPermaLink="false">http://tiagofigueira.com/?p=7</guid>
		<description><![CDATA[Hoje ao fazer o attach de uma base de dados num SQL Server 2008 Express verifiquei que a base de dados ficou em modo Read-Only. A forma mais simples que encontrei para resolver esta questão foi através de um script: Alte r database [nomeDaBaseDeDados] set read_write Exemplos: Alte r database clientes set read_write Alte r [...]]]></description>
			<content:encoded><![CDATA[<p>Hoje ao fazer o attach de uma base de dados num SQL Server 2008 Express verifiquei que a base de dados ficou em modo Read-Only.</p>
<p>A forma mais simples que encontrei para resolver esta questão foi através de um script:</p>
<pre class="brush: sql;">Alte r database [nomeDaBaseDeDados] set read_write</pre>
<p>Exemplos:</p>
<pre class="brush: sql;">Alte r database clientes set read_write</pre>
<pre class="brush: sql;">Alte r database &quot;c:\websites\x\app_data\teste.mdf&quot; set read_write</pre>
<p>Isto vai ligar o modo read/write na base de dados indicada.</p>
]]></content:encoded>
			<wfw:commentRss>http://tiagofigueira.com/sql-server-read-only-databases/7/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
