<?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>Everything is wrong &#187; Base de données</title>
	<atom:link href="http://everythingiswrong.free.fr/index.php/category/base-de-donnees/feed/" rel="self" type="application/rss+xml" />
	<link>http://everythingiswrong.free.fr</link>
	<description>Un blog dédié à l&#039;informatique en général</description>
	<lastBuildDate>Wed, 06 Oct 2021 21:20:08 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Oracle : index basé sur une fonction</title>
		<link>http://everythingiswrong.free.fr/index.php/2013/06/05/oracle-index-base-sur-une-fonction/</link>
		<comments>http://everythingiswrong.free.fr/index.php/2013/06/05/oracle-index-base-sur-une-fonction/#comments</comments>
		<pubDate>Wed, 05 Jun 2013 20:53:49 +0000</pubDate>
		<dc:creator>Yan</dc:creator>
				<category><![CDATA[Base de données]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[Performance]]></category>

		<guid isPermaLink="false">http://everythingiswrong.free.fr/?p=2236</guid>
		<description><![CDATA[Comment créer un index qui se base sur une fonction Oracle (TO_NUMBER, TO_DATE, SUBSTR, etc.)...]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Il est possible de définir des index basés sur des fonctions (based-function index). Par exemple lorsqu&#8217;il est nécessaire de faire un index sur ce genre de requête SQL :</p>
<pre class="brush: sql; gutter: true; first-line: 1; highlight: [4]">SELECT * FROM
    MA_TABLE
WHERE
    SUBSTR(MA_COLONNE, 1, 3) = 'ABC';</pre>
<p style="text-align: justify;">Il est possible de définir un index spécialement sur la fonction recherchée de la façon suivante :</p>
<pre class="brush: sql; gutter: true; first-line: 1">CREATE INDEX IDX ON MA_TABLE (SUBSTR(MA_COLONNE, 1, 3));</pre>
<p style="text-align: justify;">
]]></content:encoded>
			<wfw:commentRss>http://everythingiswrong.free.fr/index.php/2013/06/05/oracle-index-base-sur-une-fonction/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Oracle : Noms des objets sensibles à la casse</title>
		<link>http://everythingiswrong.free.fr/index.php/2013/01/11/oracle-noms-des-objets-sensibles-a-la-casse/</link>
		<comments>http://everythingiswrong.free.fr/index.php/2013/01/11/oracle-noms-des-objets-sensibles-a-la-casse/#comments</comments>
		<pubDate>Fri, 11 Jan 2013 23:42:39 +0000</pubDate>
		<dc:creator>Yan</dc:creator>
				<category><![CDATA[Base de données]]></category>
		<category><![CDATA[Oracle]]></category>

		<guid isPermaLink="false">http://everythingiswrong.free.fr/?p=2005</guid>
		<description><![CDATA[Comprendre une erreur "ORA-00942: table or view does not exist" sur un objet qui existe (à priori)]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Par défaut Oracle enregistre tous les noms des objets en majuscule sauf s&#8217;ils ont été créés avec des guillemets. Dans ce cas le nom de l&#8217;objet est sensible à la casse. Par exemple :</p>
<pre class="brush: sql; gutter: true; first-line: 1">SQL&gt; create table "bob" (a number);

Table created.

SQL&gt; select * from bob;
select * from bob
              *
ERROR at line 1:
ORA-00942: table or view does not exist

SQL&gt; select * from "bob";

no rows selected</pre>
<p style="text-align: justify;">Attention ! Certains logiciels SQL (SQLDevlopper par exemple) créent toutes leurs requêtes avec des guillemets lorsque l&#8217;on demande des actions (insertions, modifications, créations, etc.) sur les bases de données via les menus contextuels.</p>
<p style="text-align: justify;">Sources :</p>
<ul>
<li><a href="https://forums.oracle.com/forums/thread.jspa?threadID=998437">https://forums.oracle.com/forums/thread.jspa?threadID=998437</a></li>
<li><a href="http://www.orafaq.com/forum/t/71934/2/">http://www.orafaq.com/forum/t/71934/2/</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://everythingiswrong.free.fr/index.php/2013/01/11/oracle-noms-des-objets-sensibles-a-la-casse/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Oracle : Supprimer toutes les tables d&#8217;un schéma</title>
		<link>http://everythingiswrong.free.fr/index.php/2012/12/14/oracle-supprimer-toutes-les-tables-dun-schema/</link>
		<comments>http://everythingiswrong.free.fr/index.php/2012/12/14/oracle-supprimer-toutes-les-tables-dun-schema/#comments</comments>
		<pubDate>Fri, 14 Dec 2012 20:32:09 +0000</pubDate>
		<dc:creator>Yan</dc:creator>
				<category><![CDATA[Base de données]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[PL/SQL]]></category>
		<category><![CDATA[SQL]]></category>

		<guid isPermaLink="false">http://everythingiswrong.free.fr/?p=1991</guid>
		<description><![CDATA[Un petit script PLSQL pour supprimer toutes les tables d'un schéma oracle.]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Voici un petit script PLSQL pour supprimer toutes les tables d&#8217;un schéma d&#8217;une base de données Oracle. Il s&#8217;agit de créer un curseur implicite sur la liste des tables de l&#8217;utilisateur sans prendre en compte les tables de la corbeille. Puis de boucler sur cette liste afin d&#8217;exécuter la commande de suppression de chaque table sans oublier toutes ses contraintes :</p>
<pre class="brush: sql; gutter: true; first-line: 1">BEGIN
    FOR c IN (SELECT object_name,
                     object_type
              FROM user_objects
              WHERE object_type IN ('TABLE') AND object_name NOT LIKE '%$%') LOOP
        EXECUTE IMMEDIATE 'DROP '
                             || c.object_type || ' "'
                             || c.object_name || '" CASCADE CONSTRAINTS';
    END LOOP;
END;</pre>
<p style="text-align: justify;">Ce script peut être adapté pour supprimer d&#8217;autres types d&#8217;objet comme des vues. Pour cela, modifier <em>TABLE</em> en <em>VIEW</em>.</p>
]]></content:encoded>
			<wfw:commentRss>http://everythingiswrong.free.fr/index.php/2012/12/14/oracle-supprimer-toutes-les-tables-dun-schema/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JBoss 7 : Datasources dans un WAR</title>
		<link>http://everythingiswrong.free.fr/index.php/2012/09/28/jboss-7-datasources-dans-un-war/</link>
		<comments>http://everythingiswrong.free.fr/index.php/2012/09/28/jboss-7-datasources-dans-un-war/#comments</comments>
		<pubDate>Fri, 28 Sep 2012 19:17:57 +0000</pubDate>
		<dc:creator>Yan</dc:creator>
				<category><![CDATA[Base de données]]></category>
		<category><![CDATA[Java J2EE]]></category>
		<category><![CDATA[J2EE]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[JBoss]]></category>
		<category><![CDATA[jndi]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[XML]]></category>

		<guid isPermaLink="false">http://everythingiswrong.free.fr/?p=1902</guid>
		<description><![CDATA[J2EE6 : Configurer une Datasource JNDI encapsulée dans une archive WAR.]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Avec JBoss 7, il est possible de déclarer une datasource JNDI dans une archive WAR. Pour cela, il faut déposer un fichier <em>ma-datasource-ds.xml</em> dans le répertoire WEB-INF avec la déclaration de la source de données. Par exemple :</p>
<pre class="brush: xml; gutter: true; first-line: 1">&lt;?xml version="1.0" encoding="UTF-8"?&gt;

&lt;datasources xmlns="http://www.jboss.org/ironjacamar/schema"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://www.jboss.org/ironjacamar/schema http://docs.jboss.org/ironjacamar/schema/datasources_1_0.xsd"&gt;
   &lt;!-- The datasource is bound into JNDI at this location. We reference
      this in META-INF/persistence.xml --&gt;
   &lt;datasource jndi-name="java:jboss/datasources/maDS"
          pool-name="mysqlds"
          enabled="true"
          use-java-context="true"&gt;
      &lt;connection-url&gt;jdbc:mysql://localhost:3306/activiti?useUnicode=true&amp;characterEncoding=UTF-8&lt;/connection-url&gt;
      &lt;driver&gt;mysql&lt;/driver&gt;
      &lt;security&gt;
         &lt;user-name&gt;root&lt;/user-name&gt;
         &lt;password&gt;123456&lt;/password&gt;
      &lt;/security&gt;
   &lt;/datasource&gt;
&lt;/datasources&gt;</pre>
<p style="text-align: justify;">La valeur de l&#8217;élément <em>driver</em>, est le nom du driver installé sur le serveur. Pour l&#8217;installer, il est possible de copier le jar dans le répertoire de déploiement du serveur (<code>cp mysql.jar &lt;as7&gt;/standalone/deployments</code>).</p>
<p style="text-align: justify;">Sources : <a href="https://community.jboss.org/thread/204245" target="_blank">https://community.jboss.org/thread/204245</a>, <a href="https://community.jboss.org/wiki/DataSourceConfigurationInAS7">https://community.jboss.org/wiki/DataSourceConfigurationInAS7</a>, <a href="https://github.com/abstractj/as-quickstarts/blob/40f8cae2ce9388151e1a07f743df74e59c7848bc/kitchensink-html5-mobile/src/test/resources/arquillian-ds.xml">https://github.com/abstractj/as-quickstarts/blob/40f8cae2ce9388151e1a07f743df74e59c7848bc/kitchensink-html5-mobile/src/test/resources/arquillian-ds.xml</a></p>
]]></content:encoded>
			<wfw:commentRss>http://everythingiswrong.free.fr/index.php/2012/09/28/jboss-7-datasources-dans-un-war/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Oracle : Connaitre la taille d&#8217;une table en Mo</title>
		<link>http://everythingiswrong.free.fr/index.php/2012/09/07/oracle-connaitre-la-taille-dune-table-en-mo/</link>
		<comments>http://everythingiswrong.free.fr/index.php/2012/09/07/oracle-connaitre-la-taille-dune-table-en-mo/#comments</comments>
		<pubDate>Fri, 07 Sep 2012 19:43:50 +0000</pubDate>
		<dc:creator>Yan</dc:creator>
				<category><![CDATA[Base de données]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[SQL]]></category>

		<guid isPermaLink="false">http://everythingiswrong.free.fr/?p=1887</guid>
		<description><![CDATA[Calculer la taille d'une table dans une base de données Oracle.]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Pour connaître la taille utile d&#8217;une table d&#8217;une base de données oracle il faut se baser sur le nombre de blocs de la table et le multiplier par la taille d&#8217;un bloc. La taille utile est la taille exacte de la table. Cela ne prendre pas en compte les blocs vides occupés par la table qui proviendraient d&#8217;une fragmentation de la base de données.</p>
<pre class="brush: sql; gutter: true; first-line: 1; highlight: [6, 7]">    select
        user_tables.table_name,
        user_tablespaces.tablespace_name,
        user_tablespaces.block_size,
        user_tables.blocks,
        user_tablespaces.block_size * user_tables.blocks / 1024 / 1024
            as "Taille Mb"
    from user_tables, user_tablespaces
    where
        user_tables.tablespace_name = user_tablespaces.tablespace_name
    order by "Taille Mb" desc</pre>
]]></content:encoded>
			<wfw:commentRss>http://everythingiswrong.free.fr/index.php/2012/09/07/oracle-connaitre-la-taille-dune-table-en-mo/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Oracle : Générer une série de date</title>
		<link>http://everythingiswrong.free.fr/index.php/2011/02/15/oracle-generer-une-serie-de-date/</link>
		<comments>http://everythingiswrong.free.fr/index.php/2011/02/15/oracle-generer-une-serie-de-date/#comments</comments>
		<pubDate>Tue, 15 Feb 2011 20:46:00 +0000</pubDate>
		<dc:creator>Yan</dc:creator>
				<category><![CDATA[Base de données]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[PL/SQL]]></category>
		<category><![CDATA[SQL]]></category>

		<guid isPermaLink="false">http://yan.langlois.free.fr/wordpress/?p=924</guid>
		<description><![CDATA[Génération d'une séquence de date successives avec une base de données Oracle. Cela peu être utile pour générer des données de tests.]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Comment est-il possible de générer une séquence de date à partir d&#8217;une simple requête SQL sur un base de données Oracle ?</p>
<p style="text-align: justify;">Pour comprendre le principe, il faut savoir que ce type de résultat est obtenu en deux étapes. La première est la génération d&#8217;un nombre défini de données à partir d&#8217;une requête SQL. La seconde est la transformation des données générées pour obtenir des dates.</p>
<h1 style="text-align: justify;">Génération d&#8217;une série de données</h1>
<p style="text-align: justify;">Il existe plusieurs façons de générer un nombre défini de données qui peuvent être exploitées par la suite. Voici un exemple simple :</p>
<pre class="brush: sql; toolbar: true;">SELECT 1
FROM DUAL
CONNECT BY LEVEL &lt;= &lt; n &gt;</pre>
<p style="text-align: justify;">Avec <em>n </em>le nombre de données que vous souhaitez obtenir. Voici le résultat pour n = 3 :</p>
<p class="wp-caption" style="text-align: left;">1<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
1<br />
1<br />
1</p>
<h1 style="text-align: left;">Transformation de la série en séquence de dates</h1>
<p style="text-align: justify;">A partir des données générées précédemment, il est possible de créer une séquence de date avec ce type de requête SQL :</p>
<pre class="brush: sql; toolbar: true;">SELECT TRUNC(TO_DATE('20080415','yyyymmdd'),'MM')+ROWNUM -1 DATES FROM (
   SELECT 1
   FROM DUAL
   CONNECT BY LEVEL &lt;= &lt;n&gt;
)</pre>
<p style="text-align: justify;">Voici le résultat pour n = 3 :</p>
<p class="wp-caption" style="text-align: justify;">DATES<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
01/04/08<br />
02/04/08<br />
03/04/08</p>
<p style="text-align: justify;"><span style="text-decoration: underline;">Sources</span> : Pour plus d&#8217;explications, vous pouvez vous référer au site internet qui m&#8217;a servi de référence : <a href="http://www.dba-oracle.com/t_test_data_date_generation_sql.htm" target="_blank">http://www.dba-oracle.com/t_test_data_date_generation_sql.htm</a>. Vous y retrouverez entre autre deux façons différentes de générer une série de données.</p>
]]></content:encoded>
			<wfw:commentRss>http://everythingiswrong.free.fr/index.php/2011/02/15/oracle-generer-une-serie-de-date/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Normalisation des bases de données</title>
		<link>http://everythingiswrong.free.fr/index.php/2010/04/02/normalisation-base-de-donnees/</link>
		<comments>http://everythingiswrong.free.fr/index.php/2010/04/02/normalisation-base-de-donnees/#comments</comments>
		<pubDate>Fri, 02 Apr 2010 20:30:29 +0000</pubDate>
		<dc:creator>Yan</dc:creator>
				<category><![CDATA[Base de données]]></category>
		<category><![CDATA[SQL]]></category>

		<guid isPermaLink="false">http://yan.langlois.free.fr/wordpress/?p=104</guid>
		<description><![CDATA[SQL base de données relationnelle normalisation oracle mysql]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Depuis que je travaille dans l&#8217;informatique de gestion, je vois tout et son contraire en terme de normalisation des bases de données. J&#8217;ai découvert aujourd&#8217;hui un document très intéressant sur le sujet qui pourrait servir à l&#8217;ensemble des informaticiens qui travaillent avec une base : <a href="http://sqlpro.developpez.com/cours/standards/" target="_blank">http://sqlpro.developpez.com/cours/standards/</a>.</p>
<p style="text-align: justify;">On y apprend comment nommer ses tables relationnelles, leurs colonnes, index, etc. Je ne vais pas réécrire l&#8217;article, cela n&#8217;aurait pas d&#8217;intérêt, mais je vais vous montrer quelques exemples. Voici la proposition pour les tables et les vues :</p>
<p><center></p>
<table style="width: 383px; height: 124px;" border="0" align="center">
<tbody>
<tr>
<th style="text-align: center;">Préfixe de table</th>
<th style="text-align: center;">fonction</th>
<th style="text-align: center;">préfixe de vue</th>
</tr>
</tbody>
<tbody>
<tr>
<td>T_</td>
<td>lorsqu&#8217;il s&#8217;agit d&#8217;une table fonctionnelle</td>
<td>V_</td>
</tr>
<tr>
<td>TR_</td>
<td>lorsqu&#8217;il s&#8217;agit d&#8217;une table de référence</td>
<td>VR_</td>
</tr>
<tr>
<td>TS_</td>
<td>lorsqu&#8217;il s&#8217;agit d&#8217;une table &#8220;système&#8221;</td>
<td>VS_</td>
</tr>
<tr>
<td>TJ_</td>
<td>lorsqu&#8217;il s&#8217;agit d&#8217;une table de jointure</td>
<td>VJ_</td>
</tr>
<tr>
<td>TG_</td>
<td>lorsqu&#8217;il s&#8217;agit d&#8217;une table générique (héritage)</td>
<td>VG_</td>
</tr>
</tbody>
</table>
<p></center><br />
On y apprend aussi comment écrire du code SQL (indentation, nom des colonnes résultats, etc.). Par exemple voici un mauvais code :</p>
<pre class="brush: sql; title: ; notranslate">SELECT CLI_ID, CLI_NOM, CLI_ENSEIGNE,
CLI_PRENOM  FROM T_CLIENT WHERE CLI_ADR_PAYS = 'F'
AND CLI_ENSEIGNE IS NULL OR CLI_ENSEIGNE =''
ORDER BY CLI_NOM</pre>
<p>Voici le même code bon cette fois-ci :</p>
<pre class="brush: sql; title: ; notranslate">SELECT CLI_ID, CLI_NOM, CLI_ENSEIGNE,
       CLI_PRENOM
FROM   T_CLIENT
WHERE  CLI_ADR_PAYS = 'F'
       AND CLI_ENSEIGNE IS NULL OR CLI_ENSEIGNE =''
ORDER  BY CLI_NOM</pre>
<p style="text-align: justify;">Au final, je pense que si tout le monde utilisait les mêmes conventions pour les schémas de base de données et les requêtes SQL, les développeurs (Java par exemple) seraient plus à l&#8217;aise pour leurs développements et pour changer de projet.</p>
]]></content:encoded>
			<wfw:commentRss>http://everythingiswrong.free.fr/index.php/2010/04/02/normalisation-base-de-donnees/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SQLDeveloper : problème sur les touches (suppression, retour arrière, etc.)</title>
		<link>http://everythingiswrong.free.fr/index.php/2010/02/10/sqldeveloper-probleme-sur-les-touches-suppression-retour-arriere-etc/</link>
		<comments>http://everythingiswrong.free.fr/index.php/2010/02/10/sqldeveloper-probleme-sur-les-touches-suppression-retour-arriere-etc/#comments</comments>
		<pubDate>Wed, 10 Feb 2010 10:43:59 +0000</pubDate>
		<dc:creator>Yan</dc:creator>
				<category><![CDATA[Base de données]]></category>

		<guid isPermaLink="false">http://yan.langlois.free.fr/wordpress/?p=45</guid>
		<description><![CDATA[Il est possible de paramétrer le clavier du logiciel SQL Développeur lorsque celu-ci ne répond plus à certaines touches sur l&#8217;éditeur SQL (suppression, retour arrière, selection, etc.) : Aller dans le menu &#8220;Tools -&#62; préférences -&#62; Accelerators&#8221; Cliquer sur le bouton &#8220;Load Preset&#8230;&#8221; Choisir la configuration par défaut &#160; Ma source : http://decoding.wordpress.com/2008/01/09/oracle-sql-developer-problem-backspace-delete-button-not-working-quick-fix/]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Il est possible de paramétrer le clavier du logiciel SQL Développeur lorsque celu-ci ne répond plus à certaines touches sur l&#8217;éditeur SQL (suppression, retour arrière, selection, etc.) :</p>
<ol>
<li>Aller dans le menu &#8220;Tools -&gt; préférences -&gt; Accelerators&#8221;</li>
<li>Cliquer sur le bouton &#8220;Load Preset&#8230;&#8221;</li>
<li>Choisir la configuration par défaut</li>
</ol>
<p align="center">&nbsp;</p>
<p style="text-align: justify;">Ma source : <a href="http://decoding.wordpress.com/2008/01/09/oracle-sql-developer-problem-backspace-delete-button-not-working-quick-fix/" target="_blank">http://decoding.wordpress.com/2008/01/09/oracle-sql-developer-problem-backspace-delete-button-not-working-quick-fix/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://everythingiswrong.free.fr/index.php/2010/02/10/sqldeveloper-probleme-sur-les-touches-suppression-retour-arriere-etc/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
