<?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>Debugando.com &#187; Oracle</title>
	<atom:link href="http://www.debugando.com/categoria/banco-de-dados/oracle/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.debugando.com</link>
	<description>Noticias, dicas e tutorias do mundo da Tecnologia.</description>
	<lastBuildDate>Thu, 01 Dec 2011 23:44:46 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
		<item>
		<title>Oracle acalma clientes da Sun, mas descontinua Projeto Kenai</title>
		<link>http://www.debugando.com/oracle-acalma-clientes-da-sun-mas-descontinua-projeto-kenai/</link>
		<comments>http://www.debugando.com/oracle-acalma-clientes-da-sun-mas-descontinua-projeto-kenai/#comments</comments>
		<pubDate>Thu, 28 Jan 2010 15:28:25 +0000</pubDate>
		<dc:creator>Lincoln César</dc:creator>
				<category><![CDATA[Carreira]]></category>
		<category><![CDATA[Noticias]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[oracle compra sun]]></category>
		<category><![CDATA[sun]]></category>

		<guid isPermaLink="false">http://www.debugando.com/?p=786</guid>
		<description><![CDATA[


Segundo o presidente da Oracle, Charles Phillips, a compra da Sun pela Oracle, que foi concluída esta semana e cujo valor foi de US$ 7,4 bilhões, não deve preocupar os clientes da companhia adquirida.
Em evento transmitido ontem para a imprensa mundial via webcast, o executivo afirmou que não haverá demissões em massa, nem perda de [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.debugando.com/wp-content/uploads/2010/01/oracle_use.jpg"><img class="alignleft size-full wp-image-787" title="oracle" src="http://www.debugando.com/wp-content/uploads/2010/01/oracle_use.jpg" alt="" width="170" height="106" /></a>Segundo o presidente da Oracle, Charles Phillips, a compra da Sun pela Oracle, que foi concluída esta semana e cujo valor foi de US$ 7,4 bilhões, não deve preocupar os clientes da companhia adquirida.</p>
<p>Em evento transmitido ontem para a imprensa mundial via webcast, o executivo afirmou que não haverá demissões em massa, nem perda de produtos em uso, e sim um upgrade das soluções e serviços.</p>
<p>O CEO da Oracle, Larry Ellison, disse ao Wall Street Journal que a ideia da empresa é contratar, nos próximos meses, mais dois mil funcionários, nos setores de vendas e engenharia.</p>
<p>O porém fica por conta do <strong>Projeto Kenai</strong>, que, de acordo com a Oracle, será descontinuado. Em um FAQ voltado à aquisição da Sun, a Oracle afirmou que continuará utilizando o projeto apenas internamente e vai buscar meios para que seus clientes possam tirar algum proveito disso. O cronograma para que usuários retirem dados e projetos do Kenai será disponibilizado no site do projeto.</p>
<p>Com a tecnologia da Sun, a Oracle lança o <strong>Exadata Database Machine 2</strong>, uma solução de hardware e software capaz de processar em até dez vezes menos tempo do que os equipamentos tradicionais. O objetivo da Oracle é concorrer em pé de igualdade com concorrentes como IBM e EMC.</p>
<p><strong>Fonte:</strong> iMasters</p>
]]></content:encoded>
			<wfw:commentRss>http://www.debugando.com/oracle-acalma-clientes-da-sun-mas-descontinua-projeto-kenai/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Uma solução para problemas de charset com Oracle e Rails</title>
		<link>http://www.debugando.com/uma-solucao-para-problemas-de-charset-com-oracle-e-rails/</link>
		<comments>http://www.debugando.com/uma-solucao-para-problemas-de-charset-com-oracle-e-rails/#comments</comments>
		<pubDate>Sat, 16 Jan 2010 16:08:34 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Banco de Dados]]></category>
		<category><![CDATA[Dicas]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[problemas de charset com Oracle e Rails]]></category>

		<guid isPermaLink="false">http://www.debugando.com/?p=130</guid>
		<description><![CDATA[Ontem comentei o meu problema com charset entre Oracle e uma aplicação web que estou fazendo. O problema era o seguinte: ao preencher campos de texto de um formulário com caracteres acentuados, os mesmos eram inseridos como se fossem dois caracteres de interrogação (??).
Essa aplicação tem como pré-requisito o uso de UTF-8, pois é feita [...]]]></description>
			<content:encoded><![CDATA[<p>Ontem comentei o meu problema com charset entre Oracle e uma aplicação web que estou fazendo. O problema era o seguinte: ao preencher campos de texto de um formulário com caracteres acentuados, os mesmos eram inseridos como se fossem dois caracteres de interrogação (??).</p>
<p>Essa aplicação tem como pré-requisito o uso de UTF-8, pois é feita com o framework Ruby on Rails. Minhas buscas pelo Google tinham me colocado apenas em uma direção: modificar o charset do banco de dados a partir de um penoso procedimento de backup/restore. Mas, conversando com o meu colega de trabalho Luiz (que não tem blog, infelizmente) descobri que ele já havia tido o mesmo problema antes e a solução, aparentemente, era bem mais simples (e mágica).</p>
<p>O Rails interage com o Oracle por intermédio da biblioteca Ruby <a href="http://ruby-oci8.rubyforge.org/">oci8</a>. A solução mágica consiste em definir a variável de ambiente <code>NLS_LANG</code> com o valor <code>BRAZILIAN PORTUGUESE_BRAZIL.UTF8</code> antes que o código da biblioteca seja carregado. Mais informações oficiais sobre a variável <a href="http://www.oracle.com/webapps/online-help/reports/10.1.2/state/content/navId.3/navSetId._/vtTopicFile.htmlhelp_rwbuild_hs%7Crwrefex%7Cenvvars%7Cenvvar_nls_lang%7Ehtm/">aqui</a> e <a href="http://www.oracle.com/technology/tech/globalization/htdocs/nls_lang%20faq.htm">aqui</a>.</p>
<p>De acordo com a documentação oficial, essa variável não especifica apenas 1, mas <strong>3 valores</strong>: <code>LINGUAGEM_TERRITÓRIO.CHARSET</code>. No meu caso, portanto, foram especificados:</p>
<ul>
<li>LINGUAGEM: <code>BRAZILIAN PORTUGUESE</code></li>
<li>TERRITÓRIO: <code>BRAZIL</code></li>
<li>CHARSET: <code>UTF8</code></li>
</ul>
<p>Note que, para a minha aplicação web, apenas o <code>CHARSET</code> é relevante. Até onde li na documentação, <code>LINGUAGEM</code> e <code>TERRITÓRIO</code> servem mais para indicar ao Oracle como ele deve exibir mensagens de erro ou formatar datas para apresentação. <code>CHARSET</code> <em>parece</em> indicar ao Oracle que faça uma conversão entre o charset real do banco de dados e o valor do charset especificado em <code>NLS_LANG</code> <em>no momento da leitura de dados</em>. Portanto, os dados continuam sendo armazenados com o charset original, mas quando o Rails solicita esses dados a partir da biblioteca oci8, o Oracle os converte para UTF-8 (neste caso) e depois os entrega. Essa parece ser uma boa explicação para o correto funcionamento da aplicação <em>após</em> a definição dessa variável, mas o problema que relato ao fim do artigo mostra que, na prática, a teoria é outra.</p>
<p>Testei duas maneiras de definir essa variável. A primeira é colocar a seguinte linha no arquivo ~/.bashrc do usuário no qual o servidor de aplicação roda:</p>
<pre><code>export NLS_LANG='BRAZILIAN PORTUGUESE_BRAZIL.UTF8'
</code></pre>
<p>Mas acho mais interessante embutir essa declaração dentro do próprio código da aplicação. Não sei qual o local mais apropriado para isso, mas inserir esta linha no início do arquivo <code>config/environment.rb</code> funcionou:</p>
<pre><code>ENV['NLS_LANG']='BRAZILIAN PORTUGUESE_BRAZIL.UTF8'
</code></pre>
<p>Essa solução resolveu o problema completamente? <strong>Não</strong>. Para textos inseridos a partir da aplicação web, caracteres acentuados são gravados no banco de dados e lidos da forma correta (não são substituídos por um ou dois sinais de interrogação). Mas essa solução estava simples demais para ser verdade, certo?</p>
<p>Como estou desenvolvendo a aplicação web sobre um banco de dados já existente, e que já possui dados, rodei o servidor de aplicação em modo de produção para ver se os dados <em>já existentes</em> eram apresentados corretamente também. Resultado: <strong>problemas de acentuação novamente</strong>. Os caracteres acentuados lidos do banco de dados são trocados por pontos de interrogação.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.debugando.com/uma-solucao-para-problemas-de-charset-com-oracle-e-rails/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Bancos de dados Gratuitos: Oracle x IBM x Microsoft</title>
		<link>http://www.debugando.com/bancos-de-dados-gratuitos-oracle-x-ibm-x-microsoft/</link>
		<comments>http://www.debugando.com/bancos-de-dados-gratuitos-oracle-x-ibm-x-microsoft/#comments</comments>
		<pubDate>Mon, 09 Mar 2009 01:03:50 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Banco de Dados]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[DB2]]></category>

		<guid isPermaLink="false">http://www.debugando.com/?p=517</guid>
		<description><![CDATA[As empresas estão cobiçando uma fatia desse mercado gratuito que vem crescendo constantemente para trazer novos adeptos e clientes aos seus produtos, que têm como concorrentes ótimos produtos como MySQL, Firebird e PostGree.
Um dos principais obstáculos encontrados pelas empresas, além de oferecer licenças gratuitas, é como ganhar confiança entre os desenvolvedores Open-Source e produtores independentes [...]]]></description>
			<content:encoded><![CDATA[<p>As empresas estão cobiçando uma fatia desse mercado gratuito que vem crescendo constantemente para trazer novos adeptos e clientes aos seus produtos, que têm como concorrentes ótimos produtos como MySQL, Firebird e PostGree.</p>
<p>Um dos principais obstáculos encontrados pelas empresas, além de oferecer licenças gratuitas, é como ganhar confiança entre os desenvolvedores Open-Source e produtores independentes de software.</p>
<p>Olhando esse grande problema, a principal tática para conseguir trazer adeptos e futuramente novos clientes, foi utilizar recursos que suas versões pagas utilizam, de forma restrita e limitada, e ao mesmo tempo, usar o peso que o próprio nome da empresa tem no mercado, pois qual produtora de software não gostaria de oferecer seu produto utilizando um banco de dados da Microsoft, Oracle ou IBM?</p>
<p>A primeira empresa a apostar suas fichas foi a Microsoft, trazendo o SQL Server Express, olhando todo esse movimento de marketing em busca de novos clientes do adversário, a Oracle não ficou para trás e lançou o Oracle Express Edition para acompanhar a Microsoft.</p>
<p>A IBM também não queria ficar fora desse jogo, e logo colocou no mercado o IBM Express C, estreitando a fatia de banco de dados Open-Source e aumentando a competição entre as empresas, que já disputam o mercado de licenças pagas.</p>
<p>Com toda essa briga, nos restou saber qual devemos utilizar, já que existem muitas boas opções no mercado, e para conseguir boas soluções em projetos, uma relação dos produtos que possuem versões gratuitas e pagas será comparada a seguir:</p>
<h4><strong>Microsoft SQL Server Express</strong></h4>
<p>A Microsoft criou SQL Server Express sobre o modelo do seu principal banco de dados, o SQL Server 2005, permitindo uma facilidade de migração para sua versão paga, o SQL Server Express é uma ótima solução para desenvolvedores da plataforma Microsoft, como ASP, Visual Basic e DotNet.</p>
<p>Abaixo seguem alguns recursos que serão encontrados na versão gratuita:</p>
<p><span class="c2"><strong>LIMITAÇÃO</strong></span></p>
<p>Capacidade de Armazenamento: 4GB</p>
<p>Processadores: 1 Processador</p>
<p>Memória: 1 GB</p>
<p>Sistema Operacional: Windows</p>
<p><span class="c2"><strong>RECURSOS SUPORTADOS</strong></span></p>
<ul>
<li>Stored Procedures</li>
<li>SQL Server Configuration Manager</li>
<li>Views</li>
<li>Replication *</li>
<li>Triggers</li>
<li>Advanced Query Optimizer</li>
<li>Cursors</li>
<li>SMO/RMO</li>
<li>sqlcmd and osql utilities</li>
<li>Integration with Visual Studio 2005</li>
<li>Snapshot Isolation Levels</li>
<li>Service Broker **</li>
<li>Native XML support, including XQuery and XML Schemas</li>
<li>SQL CLR</li>
<li>Transact-SQL language support</li>
<li>Multiple Active Result Sets (MARS)</li>
<li>Dedicated Administrator Connection **</li>
<li>Auto Tuning</li>
<li>Common Language Runtime and .NET Integration</li>
<li>Integration with Microsoft Baseline Security Analyzer</li>
</ul>
<p>* <em><span class="c4">Esse recurso é somente disponível aos usuários que forem assinantes da Microsoft.</span></em></p>
<p>** <em><span class="c4">Para utilizar esses recursos há uma limitação, favor consultar a documentação do produto.</span></em></p>
<p>Agora, para quem já conhece os recursos do SQL Server, abaixo segue uma relação dos serviços que não são suportados pela versão gratuita:</p>
<p><span class="c2"><strong>RECURSOS NÃO SUPORTADOS</strong></span></p>
<ul>
<li>Database mirroring</li>
<li>SQL Mail</li>
<li>Online restore</li>
<li>Fail-over clustering</li>
<li>Database snapshot</li>
<li>Distributed partitioned views</li>
<li>Parallel index operations</li>
<li>VIA protocol support</li>
<li>Mirrored media sets</li>
<li>Log shipping</li>
<li>Partitioning</li>
<li>Parallel</li>
<li>DBCC</li>
<li>Address Windowing Extensions (AWE)</li>
<li>Parallel Create Index</li>
<li>Hot-add memory</li>
<li>Enhanced Read Ahead and Scan</li>
<li>Native http SOAP access</li>
<li>Indexed views (materialized views)</li>
<li>SQL Mail and Database Mail</li>
<li>Partitioned views</li>
<li>Online Index Operations</li>
<li>SQL Server Agent and SQL Server Agent Service</li>
</ul>
<p>O problema que a Microsoft pode encontrar para conseguir ganhar espaço nesse mercado é a limitação do seu produto somente em seu próprio sistema operacional Windows, proporcionando custos nos projetos independentes, mas outros pontos positivos podem ser destacados, como:</p>
<ol>
<li> Documentação bem elaborada e com exemplos práticos elaborados pelo MSDN.</li>
<li> Interface gráfica bem fácil de utilizar.</li>
<li> Administração pelo SQL Server Management Studio Express.</li>
<li> Integração com a maioria das linguagens de programação do mercado.</li>
</ol>
<h4><strong>Oracle Express Edition</strong></h4>
<p>O gigante dos bancos de dados também caprichou na sua versão gratuita, produzindo o Oracle Express Edition (Oracle XE), uma versão que trouxe os recursos mais atualizados encontrados na versão paga do Oracle Database 10G Release 2, a Oracle se destaca por colocar em sua versão gratuita, diversas opções de administração, desempenho, backup e recover, além do <em>Application Express</em> (Apex) um aplicativo de administração de banco de dados desenvolvido para plataforma web, uma customização do seu produto HTMLDB que facilita o gerenciamento do banco de dados e desenvolvimento de pequenos aplicativos para usuários finais, como relatórios e formulários.</p>
<p>Mas, como tudo não é uma maravilha, a Oracle colocou algumas restrições de recursos e limitou seu banco de dados, deixando assim, as produtoras se adaptarem às necessidades do crescimento.</p>
<p>A seguir, estão as limitações e restrições dos recursos que não iremos encontrar no Oracle Express Edition:</p>
<p><span class="c2"><strong>LIMITAÇÃO</strong></span></p>
<p>Capacidade de Armazenamento: 4GB</p>
<p>Processadores: 1 Processador</p>
<p>Memória: 1 GB</p>
<p>Sistema Operacional: Linux ou Windows</p>
<p>Observando as limitações acima, percebe-se que caso sua empresa tenha máquinas poderosas, poderá apenas utilizar os limites impostos, marcando como um ponto negativo, porém outro lado irá lhe recompensar com alguns recursos que somente as versões pagas da Oracle oferecem e outros que somente a versão 10G possui, veja abaixo:</p>
<p><span class="c2"><strong>RECURSOS SUPORTADOS</strong></span></p>
<ul>
<li>PL/SQL stored procedures e triggers</li>
<li>Oracle Developer Tools para Visual Studio.Net</li>
<li>PL/SQL Server pages</li>
<li>Active Directory</li>
<li>PL/SQL native compilation</li>
<li>DML Triggers</li>
<li>Drivers JDBC</li>
<li>Index-organized tables</li>
<li>Suporte .Net, OLE DB e ODBC</li>
<li>Temporary table</li>
<li>Suporte XML</li>
<li>Objects and Extensibility</li>
<li>Suporte a LOB (Large Objects)</li>
<li>Oracle Text</li>
<li>Function-based index</li>
<li>SQL Model</li>
<li>SQL Analytic functions</li>
<li>Star query transformation</li>
<li>Globalization support</li>
<li>Multiple block size support</li>
<li>Flashback Query</li>
<li>Online Backup</li>
<li>Encryption toolkit</li>
<li>Automatic Memory Management</li>
<li>External tables</li>
<li>External procedures</li>
<li>Distributed transactions</li>
</ul>
<p>Alguns recursos mais avançados que os profissionais encontram na versão 10G do Oracle não foram disponíveis, como:</p>
<p><strong><span class="c2">RECURSOS NÃO SUPORTADOS</span></strong></p>
<ul>
<li>Automatic Storage Management</li>
<li>Virtual Private Database</li>
<li>Database Resource Manager</li>
<li>Fine grained auditing</li>
<li>Flashback Transaction Query</li>
<li>Fast-Start Selectable Recovery Time</li>
<li>Block-level media recovery</li>
<li>Parallel backup and recovery</li>
<li>Point-in-time tablespace recovery</li>
<li>Trial recovery</li>
<li>Flashback Table</li>
<li>Flashback Database</li>
<li>Online schema reorganization/redefinition</li>
<li>Parallel export/import</li>
<li>Parallel statistics gathering</li>
<li>Parallel query/DML</li>
<li>Materialized View Query Rewrite</li>
<li>Summary Management</li>
<li>Bitmapped index, bitmapped join index</li>
<li>Data Compression</li>
<li>SQLJ</li>
<li>Database Web services</li>
<li>Java Server Pages</li>
<li>Java support in the database</li>
</ul>
<p>Muitos outros pontos positivos podem ser encontrados quando uma empresa pensar em utilizar o Oracle Express Edition em seus projetos, no quais podemos citar alguns, como:</p>
<ol>
<li> Documentação On-line no site da Oracle, desde iniciante ao avançado.</li>
<li> Integração com diversos aplicativos da Oracle para gerenciamento do banco de dados, como: Oracle Enterprise Manager, Apex, SQL Developer e HTML DB.</li>
<li> Possibilidade de ajustar o banco de dados e sistema operacional para ganhos de desempenho.</li>
<li> Drivers compatíveis para a grande maioria das linguagens de programação.</li>
<li> Possibilidade de Cold e Hot backup utilizando o RMAN.</li>
</ol>
<p><strong></p>
<h4>IBM DB2 Express C</h4>
<p></strong></p>
<p>A IBM desenvolveu a versão gratuita utilizando os recursos de sua versão paga o DB2 UDB Express com uma configuração de pacote menor, uma vantagem que o DB2 Express-C pode lhe oferecer é realizar a migração do seu banco de dados para qualquer outra versão sem a necessidade da paralisar o aplicativo, deixando o aplicativo 100% operante utilizando uma outra tecnologia de banco de dados.</p>
<p>Com o DB2 Express-C você pode encontrar estabilidade e flexibilidade nos diferentes sistemas operacionais e uma gama de aplicativos para gerenciar de modo ágil e fácil todos os banco de dados DB2.</p>
<p>As limitações do DB2 são diferenciadas e mais poderosas como podemos observar abaixo:</p>
<p><strong><span class="c2">LIMITAÇÃO</span></strong></p>
<p>Capacidade de Armazenamento: Ilimitada</p>
<p>Processadores: 2 Processadores</p>
<p>Memória: 4 GB</p>
<p>Sistema Operacional: Linux ou Windows</p>
<p>O suporte às mais variadas linguagens de programação e as poucas restrições impostas aos seus recursos tornam mais fortes o seu poder de competição no mercado e um objeto de desejo entre os desenvolvedores, abaixo podemos analisar o que o DB2 Express-C pode nos proporcionar:</p>
<p><strong><span class="c2">RECURSOS SUPORTADOS</span></strong></p>
<ul>
<li>Suporte XML</li>
<li>Suporte .NET</li>
<li>C/C++</li>
<li>Java</li>
<li>PHP</li>
<li>Suporte a Unix</li>
<li>Web Services</li>
<li>ADO e ADO.NET</li>
<li>SQLJ</li>
<li>SQL Embutido</li>
<li>Gerenciamento Autônomo</li>
<li>WebSphere Studio Application Developer</li>
</ul>
<p>Alguns profissionais DB2 gostam de dizer que o DB2 Express-C é um pequeno DB2 UDB Express, pelo motivo que quase todos os recursos são encontrados nessa versão, com exceção dos recursos abaixo:</p>
<p><strong><span class="c2">RECURSOS NÃO SUPORTADOS</span></strong></p>
<ul>
<li>Warehouse Manager tools &amp; servers</li>
<li>Extender support</li>
<li>DB2 Connect support</li>
<li>Informix Data Source Replication</li>
<li>Replication Data Capture</li>
<li>APPC</li>
<li>Netbios</li>
<li>Database Partitioning Feature</li>
<li>Connection Concentrator</li>
<li>DB2 Geodetic Extender</li>
<li>Query Patroller</li>
<li>Net Search Extender</li>
<li>pureXML</li>
<li>DB2 Web tools</li>
<li>Spatial Extender Client and Samples</li>
<li>Microsoft Cluster Server support</li>
</ul>
<p>Outros pontos devem ressaltar quando pensarmos em utilizar o produto em seus projetos, que podem futuramente trazer beneficios ou problemas:</p>
<ol>
<li> Pouca documentação sobre o banco de dados.</li>
<li> Integração com todos os outros aplicativos do fabricante.</li>
<li> Possibilidade de adquirir recursos extras, conforme a necessidade do aplicativo.</li>
<li> Estabilidade, confiabilidade e segurança aos desenvolvedores.</li>
</ol>
<p><strong>Suporte</strong></p>
<p>Para todos os produtos citados, os fabricantes não fornecem suporte técnico, apenas Fórum em seus respectivos sites gerenciados e administrados por profissionais da empresa, exemplo é o suporte oferecido pela Oracle que pode contar com grandes administradores de banco de dados do mercado (DBA), como Thomas Kyte. A Microsoft criou Hot site com fórum de suporte e artigos técnicos no MSDN, o único que trouxe um pouco de dificuldade foi a IBM, que disponibilizou apenas um fórum técnico em seu site que é difícil ter retornos e quase nenhum artigo técnico.</p>
<p><strong>Custos</strong></p>
<p>Como não há necessidade de adquirir licenças para os bancos de dados, seu custo fica praticamente zero, é o caso quando se utiliza bancos de dados como MySQL, Firebird e PostGree.</p>
<p>Devemos sempre orientar o profissional que utilizar um Oracle, SQL Server ou DB2, que ele pode, sim, envolver custos e fornecer um crescimento ao seu aplicativo. Esses custos podem estar embutidos na compra de máquinas mais poderosas, mão-de-obra qualificada e aquisição de recursos ou serviços extras fornecidos pelo fabricante.</p>
<p>Portanto, antes de querer implantar algum banco de dados, veja a real necessidade do seu aplicativo e analise todas as funcionalidades que cada versão pode lhe oferecer para não ter arrependimento posteriormente. Eles realmente são capazes de trazer muitas melhorias e total estabilidade ao seu aplicativo, mas sempre com cautela.</p>
<p><strong>Download</strong></p>
<p>Abaixo, estão disponíveis todos os links úteis para baixar as versões desejadas.</p>
<p><a class="ext" href="http://www.microsoft.com/express/sql/download/">Microsoft SQL Server Express</a></p>
<p><a class="ext" href="http://www.oracle.com/technology/software/products/database/xe/index.html">Oracle Express Edition</a></p>
<p><a class="ext" href="http://imasters.uol.com.br/url=http://www-01.ibm.com/software/data/db2/express/download.html">IBM DB2 Express-C</a></p>
<p><strong>Biblioteca Técnica</strong></p>
<p>Como as versões dos poderosos bancos de dados gratuitos são muito recentes, encontrar e trocar informações sobre os produtos é muito difícil, então, abaixo segue uma relação de sites e fórum que possuem dicas, artigos técnicos e troca de experiências entre os profissionais.</p>
<p><span class="c1">Microsoft SQL Server Express</span></p>
<p>Linha de Código</p>
<p><a class="ext" href="http://www.linhadecodigo.com.br/artigos.asp?id_ac=947&amp;pag=1">http://www.linhadecodigo.com.br/artigos.asp?id_ac=947&amp;pag=1</a></p>
<p>MSDN SQL Server Express</p>
<p><a class="ext" href="http://www.microsoft.com/express/sql/download/">http://www.microsoft.com/express/sql/download/</a></p>
<p><span class="c1">Oracle Express Edition</span></p>
<p>OTN</p>
<p><a class="ext" href="http://www.oracle.com/technology/products/database/xe/index.html">http://www.oracle.com/technology/products/database/xe/index.html</a></p>
<p>Oracle Express Edition Tutorial</p>
<p><a class="ext" href="http://st-curriculum.oracle.com/tutorial/DBXETutorial/index.htm">http://st-curriculum.oracle.com/tutorial/DBXETutorial/index.htm</a></p>
<p>Máteria sobre Oracle XE em português</p>
<p>Revista SQL Magazine Edição 35</p>
<p><a class="ext" href="http:///">https://ssl.dominal.com/devmedia/loja/edicoes_anteriores3.asp</a></p>
<p><span class="c1">IBM DB2 Express-C</span></p>
<p>Viva o Linux</p>
<p><a class="ext" href="http://www.vivaolinux.com.br/artigos/verArtigo.php?codigo=4687">http://www.vivaolinux.com.br/artigos/verArtigo.php?codigo=4687</a></p>
<p>DB2 Universal Database</p>
<p><a class="ext" href="http://publib.boulder.ibm.com/infocenter/db2luw/v8/index.jsp?topic=/com.ibm.db2.udb.doc/welcome.htm">http://publib.boulder.ibm.com/infocenter/db2luw/v8/index.jsp?topic=/com.ibm.db2.udb.doc/welcome.htm</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.debugando.com/bancos-de-dados-gratuitos-oracle-x-ibm-x-microsoft/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Configurando o PHP para conectar ao Oracle</title>
		<link>http://www.debugando.com/configurando-o-php-para-conectar-ao-oracle/</link>
		<comments>http://www.debugando.com/configurando-o-php-para-conectar-ao-oracle/#comments</comments>
		<pubDate>Tue, 27 Jan 2009 23:47:41 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Banco de Dados]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programação]]></category>
		<category><![CDATA[configuração]]></category>

		<guid isPermaLink="false">http://www.debugando.com/?p=477</guid>
		<description><![CDATA[Tenho visto que muitas vezes, para pessoas que nunca trabalharam com PHP e Oracle, é um tanto quanto difícil. Embora seja simples, conexão PHP com Oracle exige um conhecimento a mais do que com os outros bancos.
Tudo começa nas configurações do PHP. Precisamos descomentar as bibliotecas responsáveis pelo conexão com Oracle.
Configurando o PHP
No Windows, vá [...]]]></description>
			<content:encoded><![CDATA[<p>Tenho visto que muitas vezes, para pessoas que nunca trabalharam com PHP e Oracle, é um tanto quanto difícil. Embora seja simples, conexão PHP com Oracle exige um conhecimento a mais do que com os outros bancos.</p>
<p>Tudo começa nas configurações do PHP. Precisamos descomentar as bibliotecas responsáveis pelo conexão com Oracle.</p>
<p><strong>Configurando o PHP</strong></p>
<p>No Windows, vá até o diretório de instalação do Apache.</p>
<p>1 &#8211; Edite o arquivo \apache\php.ini</p>
<p>2 &#8211; Busque pela linha ;extension=php_oci8.dll descomente-a tirando o ponto e vírgula de seu início.</p>
<p>2 &#8211; Busque pela linha ;extension=php_oracle.dll descomente-a tirando o ponto e vírgula de seu início.</p>
<p>3 &#8211; Salve o arquivo editado e reinicie o apache.</p>
<p>No Linux, vá até o diretório /etc/phpX*/apache (onde o &#8220;X&#8221; de phpX é a versão do PHP)</p>
<p>1 &#8211; Edite o arquivo /etc/phpX*/apache/php.ini</p>
<p>2 &#8211; Busque pela linha ;extension=oci8.so descomente-a tirando o ponto e vírgula de seu início.</p>
<p>3 &#8211; Caso ela não exista no arquivo, deverá ser inserida. Pode inseri-la no fim do arquivo mesmo sem problemas.</p>
<p><strong>Criando a conexão com o Oracle via PHP:</strong></p>
<pre><em><code>&lt;?php
//Nome de usuário do banco de dados, nesse exemplo usei um usuário
//padrão do oracle,
//caso não dê certo é por que ele deve ter sido deletado ou a senha
// alterada após
//a instalação do oracle.
ora_user = "scott";
//Senha do usuário no banco de dados.
ora_senha = "tiger";
//Nesse bloco do código, especificamos as definições do banco de dados,
//como o protocolo
//de comunicação o protocolo utilizado  foi o TCP, o ip do servidor onde
//se encontra o banco de dados
//e a porta de conexão , geralmente por padrão a porta utilizada pelo
//Oracle  é a porta 1521,
//caso não dê certo com a porta 1521, alguém pode ter alterado-a no
//durante a instalação,
//e por último a instância do banco que aqui utilizamos a instância ORCL.
//Caso não dê certo nessa instância é por que no momento da instalação ela
//foi criada com um nome diferente.
ora_bd = "(DESCRIPTION=
          (ADDRESS_LIST=
            (ADDRESS=(PROTOCOL=TCP)
              (HOST=192.168.0.2)(PORT=1521)
            )
          )
          (CONNECT_DATA=(SERVICE_NAME=ORCL))
     )";
//Nesta linha fazemos a conexão com o banco usando os variáveis preenchidas
//anterior mente, logo em seguida fazemos uma verificação, se a conexão ocorreu
//com sucesso, será impresso na tela uma mensagem avisando nos de tal,
//caso não, ele imprimirá na tela uma mensagem avisando que houve um erro
if (ora_conexao = OCILogon(ora_user,ora_senha,ora_bd) )
	echo "Conexão bem sucedida. Usuário conectado: ora_user";
else
	echo "Erro na conexão com o Oracle.";
?&gt;

</code></em>Agora é só começar a programar mais!</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.debugando.com/configurando-o-php-para-conectar-ao-oracle/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cursor e Laços em PL/SQL</title>
		<link>http://www.debugando.com/cursor-e-lacos-em-plsql/</link>
		<comments>http://www.debugando.com/cursor-e-lacos-em-plsql/#comments</comments>
		<pubDate>Thu, 04 Dec 2008 18:51:10 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Banco de Dados]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[PL/SQL]]></category>
		<category><![CDATA[SQL]]></category>

		<guid isPermaLink="false">http://www.debugando.com/?p=75</guid>
		<description><![CDATA[Cursores
Quando você executa uma instrução SQL no Oracle, o PL/SQL    criou uma área de trabalho privada para a instrução chamada    PGA. É onde os dados que são retornados da instrução    SQL são armazenados. O nome do cursor é basicamente um apontador    para esta [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Cursores</strong></p>
<p>Quando você executa uma instrução SQL no Oracle, o PL/SQL    criou uma área de trabalho privada para a instrução chamada    PGA. É onde os dados que são retornados da instrução    SQL são armazenados. O nome do cursor é basicamente um apontador    para esta área. Agora criaremos um cursor.</p>
<pre class="code"><em>CURSOR c_customers is
SELECT * from CUSTOMERS;</em></pre>
<p>Podemos abrir o cursor.</p>
<pre class="code"><em>OPEN c_customers;</em></pre>
<p>Podemos selecionar dados do cursor.</p>
<pre class="code"><em>FETCH c_customers into customers_rec;
E podemos fechar o cursor.
CLOSE c_customers;</em></pre>
<p>Quando selecionamos dados de um cursor estamos na verdade selecionando dados    de uma tabela virtual definida pela definição do cursor.</p>
<p><strong>Cursores Implícitos e Explícitos</strong></p>
<p>Vamos passar por este assunto brevemente. Toda instrução SQL    que você execute é um cursor implícito. Lembre disto, é    uma das favoritas para perguntas a candidatos em entrevistas. Um cursor explícito    é aquele que criamos acima. Se você dá um nome ao cursor    então ele é um cursor explícito. Em seu PL/SQL sempre use    cursores explícitos.</p>
<p><strong>Declarando Cursores</strong></p>
<p>Antes que você possa usar seu cursor explícito, você deve    primeiro declará-lo. Há três formas diferentes para se declarar    cursores explícitos.</p>
<pre class="code"><em>DECLARE cursor c_customers IS
SELECT name, phone
FROM customers;

DECLARE cursor c_customers(i_cust_id In NUMBER) IS
SELECT name, phone
FROM customers
WHERE cust_id = i_cust_id;

DECLARE cursor c_customers RETURN customers%ROWTYPE IS
SELECT name, phone
FROM customers;</em></pre>
<p>A segunda forma criou o cursor com a variável passada como um argumento.    A terceira forma é raramente usada.</p>
<p><strong>Abrindo Cursores</strong></p>
<p>Quando você abre um cursor, o PL/SQL executa a consulta para aquele cursor.    A instrução open não retorna qualquer dado, isto é    feito pela instrução fetch.</p>
<p>O SGBDR Oracle garante consistência de leitura para o cursor. Todos os    dados buscados não são afetados por outras atualizações<a style="border-bottom: 1px dotted; color: #006600; text-decoration: underline;" onclick="hwClick5975820870365(136526677);return false;" onmouseover="hw5975820870365(event, this, '136526677'); this.style.cursor='hand'; this.style.textDecoration='underline'; this.style.borderBottom='solid';" onmouseout="hideMaybe(event, this); this.style.cursor='hand'; this.style.textDecoration='underline'; this.style.borderBottom='dotted 1px'; " href="http://www.freecode.com.br/drartigos/artigo.php?cdart=253&amp;id=1583#"></a>,    inserções ou exclusões efetuadas sobre a(s) tabela(s) no    cursor.</p>
<p>Um cursor não pode ser aberto duas vezes, ele deve ser fechado primeiro    ou o Oracle retornará um erro. É um bom hábito checar se    o cursor está aberto antes de abri-lo. Isto pode ser feito usando o atributo    %ISOPEN.</p>
<pre class="code"><em>if c_customers%ISOPEN then
close c_customers;
end if;
open c_customers;</em></pre>
<p><strong>Buscando Dados do Cursor</strong></p>
<p>O motivo de declarar um cursor é para buscar, ou retornar, as linhas    de dados do cursor e manipular os dados de alguma forma. Você deve trazer    os dados para dentro de uma variável do tipo que está sendo trazido.    Com o nosso cursor c_customers que abrimos nós precisamos ter duas variáveis    para colocar os dados nelas. O formato da instrução fetch é:</p>
<pre class="code"><em>FETCH c_customers INTO l_name, l_phone;</em></pre>
<p>O número de variáveis deve ser o mesmo da declaração    do cursor. Sempre tome a precaução de usar declarações    de variáveis ancoradas. Lembre do capítulo 4.</p>
<p>Agora como sabemos quando já trouxemos todas as linhas definidas pelo    cursor? Usamos o atributo %NOTFOUND do cursor. Ele é verdadeiro quando    não existem mais registros no conjunto ativo.</p>
<p><strong>Fechando Cursores</strong></p>
<p>Quando você tiver terminado o trabalho com o cursor é sempre bom    fechá-lo, cada cursor usa memória, então fechá-lo    permite que o Oracle recupere esta memória.</p>
<p><strong> Select for Update com Cursores</strong></p>
<p>Quando você efetua uma instrução select no Oracle, nenhum    bloqueio é colocado no banco de dados. Contudo haverá ocasiões    em que você irá querer bloquear um conjunto de registros antes    de alterá-los em seu programa PL/SQL. Isto pode ser feito usando a cláusula    FOR UPDATE da instrução SELECT.</p>
<pre class="code"><em>declare c_customers is
select name,phone
from customers
for update;</em></pre>
<p><strong>Laços</strong></p>
<p>A capacidade de usar laços é uma das principais diferenças    entre SQL e PL/SQL, assim, isto é algo que deve ser muito bem entendido.    Existem três construções de laços em PL/SQL que são    muito simples e fáceis de entender.</p>
<p><strong>O Laço Simples</strong></p>
<p>O laço simples é também conhecido como laço infinito.    A sintaxe para o laço simples é</p>
<pre class="code"><em>loop
instruções executáveis
exit when condição é true
end loop;</em></pre>
<p>Vamos tentar um exemplo. Entre com o seguinte na sua sessão do sql*plus.</p>
<pre class="code"><em>set serveroutput on

declare i number := 1;
begin
dbms_output.enable(100000);
loop
dbms_output.put_line(i);
i := i + 1;
exit when i &gt; 10;
end loop;
end;</em></pre>
<p>Quando executar o código você deve ver os números de 1    a 10 impressos na tela. O código continua até que a cláusula    exit equaciona true. Daí o nome de laço infinito.</p>
<p>As instruções de dbms_output são chamadas a um pacote    do banco de dados que exibem saída em PL/SQL. Você usa o laço    simples quando você não sabe quantas vezes você quer que    o laço execute e você quer que o laço execute no mínimo    uma vez.</p>
<p><strong>Laços Numéricos</strong></p>
<p>O laço numérico executará um certo número de vezes    que foi definido no índice do laço. A sintaxe para um laço    numérico é:</p>
<pre class="code"><em>for loop_index in lower_range .. upper_range
loop
instruções executáveis
end loop;

set serveroutput on

begin
dbms_output.enable(10000);
for i in 1 .. 10
loop
dbms_output.put_line(i);
end loop;
end;</em></pre>
<p>O código será executado dez vezes. Isto está demonstrando    uma forma diferente de obter o mesmo resultado. Você usa o laço    numérico quando você quer executar o laço um número    fixo de vezes e você não quer que o laço termine prematuramente.</p>
<p>Também é possível para o laço numérico fazer    laços &#8220;para trás&#8221;. Experimente o próximo exemplo:</p>
<pre class="code"><em>set serveroutput on

begin
dbms_output.enable(10000);
for i in reverse 1 .. 10
loop
dbms_output.put_line(i);
end loop;
end;</em></pre>
<p>Este laço decrementará i de 10 até 1. O PL/SQL apenas    incrementará ou decrementará o índice de 1.</p>
<p>A razão pela qual usamos laços em PL/SQL é fazer mais    do que exibir números, os usamos principalmente para processar linhas    de dados trazidas do banco de dados. Podemos usar ou o laço simples ou    o laço for para processar dados. Aqui está um exemplo usando o    laço simples.</p>
<pre class="code"><em>begin
declare cursor c_students is
select * from students;

student_rec c_students%rowtype;
begin
open c_students;
loop
fetch c_students into student_rec;
exit when c_students%notfound;
end loop;
close c_students;
end;
end;</em>
/</pre>
<p>Aqui está outro exemplo usando o laço for com cursores:</p>
<pre class="code"><em>declare
cursor c_students is
select * from students;
begin
for c_students_rec in c_students
loop
null;
end loop;
end;</em>
/</pre>
<p>Se a segunda forma é menor por que usar o laço simples? O laço    simples é melhor se precisarmos decidir o término do laço    baseando-se em valores retornados em um fetch.</p>
<p><strong>O laço WHILE</strong></p>
<p>O laço WHILE é um laço condicional que executará    enquanto a condição do teste for avaliada como TRUE. Vamos tentar    um exemplo. Entre o seguinte na sua sessão sql*plus.</p>
<pre class="code"><em>set serveroutput on
declare
i number := 0;
begin
dbms_output.enable(1000);
while i &lt; 10
loop
i := i + 1;
dbms_output.put_line(i);
end loop;
end;</em>
/</pre>
<p>Quando usamos o laço WHILE não estamos certos de quantas vezes    o laço deve ser executado e você não tem que executar o    laço no mínimo uma vez. O teste para a execução    do laço acontece antes do laço acontecer assim é possível    que o laço não seja executado.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.debugando.com/cursor-e-lacos-em-plsql/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Gerenciando log do Oracle através do Linux com Logrotate</title>
		<link>http://www.debugando.com/gerenciando-log-do-oracle-atraves-do-linux-com-logrotate/</link>
		<comments>http://www.debugando.com/gerenciando-log-do-oracle-atraves-do-linux-com-logrotate/#comments</comments>
		<pubDate>Thu, 04 Dec 2008 18:44:23 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Banco de Dados]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Logrotate]]></category>

		<guid isPermaLink="false">http://www.debugando.com/?p=72</guid>
		<description><![CDATA[Descrevo neste tutorial o passo-a-passo para configurarmos o rotacionamento de log do importante arquivo alert&#60;SID&#62;.log do Oracle.
Este procedimento é muito útil pois evita que o arquivo de log fique grande demais e dificulte nossa pesquisa por informações dentro do mesmo.
Criando e configurando o arquivo de rotação de log
Para que o arquivo de alertas da instância [...]]]></description>
			<content:encoded><![CDATA[<p>Descrevo neste tutorial o passo-a-passo para configurarmos o rotacionamento de log do importante arquivo alert&lt;SID&gt;.log do Oracle.</p>
<p>Este procedimento é muito útil pois evita que o arquivo de log fique grande demais e dificulte nossa pesquisa por informações dentro do mesmo.</p>
<p>Criando e configurando o arquivo de rotação de log</p>
<p>Para que o arquivo de alertas da instância do Oracle não fique grande demais e dificulte as pesquisas, podemos fazer com que este seja rotacionado através do utilitário logrotate do Linux. O mesmo é usado para os principais registros de log do Linux.</p>
<p>Vou exemplificar com o Oracle-XE, mas pode ser realizado com qualquer versão do Oracle ou qualquer outro arquivo de log que queiramos gerenciar com o Logrotate.</p>
<p>Basta para isso criarmos um arquivo chamado oracle-xe (sugestão) dentro da pasta /etc/logrotate.d. Como utilizo Ubuntu/Gnome, costumo chamar o editor da seguinte forma:</p>
<pre><em>$ gksu gedit /etc/logrotate.d/oracle-xe</em></pre>
<p>Mas fique livre para utilizar o editor que quiser, porém lembrando sempre que deve criado o arquivo com direitos de administrador (usuário root).</p>
<p>Dentro do arquivo /etc/logrotate.d/oracle-xe adicione a seguinte informação:</p>
<pre><em>/usr/lib/oracle/xe/app/oracle/admin/XE/bdump/*.log {
   weekly
   rotate 10
   copytruncate
   delaycompress
   compress
   notifempty
   missingok
}</em></pre>
<p>Detalhando os parâmetros internos do arquivo:</p>
<ol class="lista">
<li>/&#8230;./admin/XE/bdump/*.log &#8211; caminho/nome do arquivo a ser rotacionado;</li>
<li>weekly &#8211; informa que o log deve ser rotacionado semanalmente;</li>
<li>rotate N &#8211; comando para rotacionar os logs até N vezes, após vai descartando o mais antigo;</li>
<li>copytruncate &#8211; copia o log e move o original para outro lugar;</li>
<li>delaycompress &#8211; Atrasa a compressão do log para a próxima rotação;</li>
<li>compress &#8211; comprime os logs rotacionados;</li>
<li>notifempty &#8211; não rotaciona se o log estiver vazio;</li>
<li>missingok &#8211; não envia mensagem de erro se o arquivo de log não existir.</li>
</ol>
<p>A partir daí os logs serão rotacionados de acordo com as regras estabelecidas no arquivo.</p>
<p>Referências de apoio com o logrotate:</p>
<ul class="lista">
<li><a rel="nofollow" href="http://www.vivaolinux.com.br/artigo/Logrotate-uma-importante-ferramenta-de-administracao-dos-logs-do-sistema" target="_blank">Logrotate, uma importante ferramenta de administração dos logs do sistema</a>;</li>
<li><a rel="nofollow" href="http://linux.die.net/man/8/logrotate" target="_blank">Linux Manual</a>.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.debugando.com/gerenciando-log-do-oracle-atraves-do-linux-com-logrotate/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

