{"id":3480,"date":"2012-04-05T16:04:00","date_gmt":"2012-04-05T15:04:00","guid":{"rendered":"http:\/\/blog.capdata.fr\/index.php\/oracle-text-pour-dba-oracle-partie-2-3\/"},"modified":"2019-09-13T14:22:17","modified_gmt":"2019-09-13T13:22:17","slug":"oracle-text-pour-dba-oracle-partie-2-3","status":"publish","type":"post","link":"https:\/\/blog.capdata.fr\/index.php\/oracle-text-pour-dba-oracle-partie-2-3\/","title":{"rendered":"Oracle Text pour DBA Oracle : Partie 2"},"content":{"rendered":"<a class=\"synved-social-button synved-social-button-share synved-social-size-24 synved-social-resolution-single synved-social-provider-twitter nolightbox\" data-provider=\"twitter\" target=\"_blank\" rel=\"nofollow\" title=\"Share on Twitter\" href=\"https:\/\/twitter.com\/intent\/tweet?url=https%3A%2F%2Fblog.capdata.fr%2Findex.php%2Fwp-json%2Fwp%2Fv2%2Fposts%2F3480&#038;text=Article%20sur%20le%20blog%20de%20la%20Capdata%20Tech%20Team%20%3A%20\" style=\"font-size: 0px;width:24px;height:24px;margin:0;margin-bottom:5px;margin-right:5px\"><img loading=\"lazy\" decoding=\"async\" alt=\"twitter\" title=\"Share on Twitter\" class=\"synved-share-image synved-social-image synved-social-image-share\" width=\"24\" height=\"24\" style=\"display: inline;width:24px;height:24px;margin: 0;padding: 0;border: none;box-shadow: none\" src=\"https:\/\/blog.capdata.fr\/wp-content\/plugins\/social-media-feather\/synved-social\/image\/social\/regular\/48x48\/twitter.png\" \/><\/a><a class=\"synved-social-button synved-social-button-share synved-social-size-24 synved-social-resolution-single synved-social-provider-linkedin nolightbox\" data-provider=\"linkedin\" target=\"_blank\" rel=\"nofollow\" title=\"Share on Linkedin\" href=\"https:\/\/www.linkedin.com\/shareArticle?mini=true&#038;url=https%3A%2F%2Fblog.capdata.fr%2Findex.php%2Fwp-json%2Fwp%2Fv2%2Fposts%2F3480&#038;title=Oracle%20Text%20pour%20DBA%20Oracle%20%3A%20Partie%202\" style=\"font-size: 0px;width:24px;height:24px;margin:0;margin-bottom:5px;margin-right:5px\"><img loading=\"lazy\" decoding=\"async\" alt=\"linkedin\" title=\"Share on Linkedin\" class=\"synved-share-image synved-social-image synved-social-image-share\" width=\"24\" height=\"24\" style=\"display: inline;width:24px;height:24px;margin: 0;padding: 0;border: none;box-shadow: none\" src=\"https:\/\/blog.capdata.fr\/wp-content\/plugins\/social-media-feather\/synved-social\/image\/social\/regular\/48x48\/linkedin.png\" \/><\/a><a class=\"synved-social-button synved-social-button-share synved-social-size-24 synved-social-resolution-single synved-social-provider-mail nolightbox\" data-provider=\"mail\" rel=\"nofollow\" title=\"Share by email\" href=\"mailto:?subject=Oracle%20Text%20pour%20DBA%20Oracle%20%3A%20Partie%202&#038;body=Article%20sur%20le%20blog%20de%20la%20Capdata%20Tech%20Team%20%3A%20:%20https%3A%2F%2Fblog.capdata.fr%2Findex.php%2Fwp-json%2Fwp%2Fv2%2Fposts%2F3480\" style=\"font-size: 0px;width:24px;height:24px;margin:0;margin-bottom:5px\"><img loading=\"lazy\" decoding=\"async\" alt=\"mail\" title=\"Share by email\" class=\"synved-share-image synved-social-image synved-social-image-share\" width=\"24\" height=\"24\" style=\"display: inline;width:24px;height:24px;margin: 0;padding: 0;border: none;box-shadow: none\" src=\"https:\/\/blog.capdata.fr\/wp-content\/plugins\/social-media-feather\/synved-social\/image\/social\/regular\/48x48\/mail.png\" \/><\/a><p><font color=\"#000000\" size=\"3\">Contrairement \u00e0 des index relationnels, les index Oracle Text ne sont g\u00e9n\u00e9ralement pas maintenus en temps r\u00e9el.      <br \/>Il faut donc en tenir compte pour une activit\u00e9 transactionnelle.<\/font><\/p>\n<p><font color=\"#000000\" size=\"3\">M\u00eame s\u2019il est possible de le faire, cela procure un travail consid\u00e9rable et un souci de fragmentation.<\/font><\/p>\n<p><font color=\"#000000\" size=\"3\">Lorsque l\u2019on effectue des inserts\/update, il est n\u00e9cessaire de synchroniser la table $I.<\/font><\/p>\n<p><font color=\"#000000\" size=\"3\">Un article int\u00e9ressant : <\/font><a href=\"http:\/\/www.oracle.com\/technetwork\/database\/enterprise-edition\/text-dml-processing-092316.html\"><font color=\"#0000ff\" size=\"3\">http:\/\/www.oracle.com\/technetwork\/database\/enterprise-edition\/text-dml-processing-092316.html<\/font><\/a><\/p>\n<h6><font size=\"3\"><\/font><font face=\"Times New Roman\"><\/font><font color=\"#000000\">1<\/font><font size=\"3\">) Activit\u00e9 DML<\/font><\/h6>\n<h6><font color=\"#000000\"><\/font><font style=\"font-weight: normal\" size=\"3\"><em>a)&#160; Lors de l\u2019INSERT<\/em><\/font><\/h6>\n<p><font color=\"#000000\" size=\"3\">Lorsque qu\u2019une ligne est ajout\u00e9e dans la table utilisateur, une ligne contenant INDEX_ID et ROWID est ajout\u00e9e dans la table CTXSYS.DR$PENDING.<\/font><\/p>\n<pre class=\"csharpcode\"><span class=\"kwrd\">SQL<\/span>&gt;  insert <span class=\"kwrd\">into<\/span> test_tab <span class=\"kwrd\">values<\/span> (<span class=\"str\">'ef'<\/span>);\r\n<span class=\"kwrd\">SQL<\/span>&gt; <span class=\"kwrd\">select<\/span> * <span class=\"kwrd\">from<\/span> CTXSYS.DR$PENDING;\r\nPND_CID    PND_PID PND_ROWID          PND_TIMES P\r\n--------<span class=\"rem\">-- ---------- ------------------ --------- -<\/span>\r\n1080          0 AAARvbAAFAAAADMAAA 29-MAR-12 N <span class=\"rem\">-- valeur pr\u00e9c\u00e9dente<\/span>\r\n1080          0 AAARvbAAFAAAADMAAB 29-MAR-12 N <span class=\"rem\">-- valeur pr\u00e9c\u00e9dente<\/span>\r\n1080          0 AAARvbAAFAAAADMAAC 30-MAR-12 N -- nouvelle valeur<\/pre>\n<style type=\"text\/css\">\n<p>.csharpcode, .csharpcode pre\n{\n\tfont-size: small;\n\tcolor: black;\n\tfont-family: consolas, \"Courier New\", courier, monospace;\n\tbackground-color: #ffffff;\n\t\/*white-space: pre;*\/\n}\n.csharpcode pre { margin: 0em; }\n.csharpcode .rem { color: #008000; }\n.csharpcode .kwrd { color: #0000ff; }\n.csharpcode .str { color: #006080; }\n.csharpcode .op { color: #0000c0; }\n.csharpcode .preproc { color: #cc6633; }\n.csharpcode .asp { background-color: #ffff00; }\n.csharpcode .html { color: #800000; }\n.csharpcode .attr { color: #ff0000; }\n.csharpcode .alt \n{\n\tbackground-color: #f4f4f4;\n\twidth: 100%;\n\tmargin: 0em;\n}\n.csharpcode .lnum { color: #606060; }<\/style>\n<p><font color=\"#000000\" size=\"3\">Rem : si une modification est faite sur la m\u00eame ligne, la ligne est plac\u00e9e dans CTXSYS.DR$WAITING<\/font><\/p>\n<pre class=\"csharpcode\"><span class=\"kwrd\">SQL<\/span>&gt; <span class=\"kwrd\">update<\/span> test_tab <span class=\"kwrd\">set<\/span> CLOB_COL=<span class=\"str\">'fg'<\/span> <span class=\"kwrd\">where<\/span> ROWID=<span class=\"str\">'AAARvbAAFAAAADMAAC'<\/span>;\r\n<span class=\"kwrd\">SQL<\/span>&gt; <span class=\"kwrd\">select<\/span> * <span class=\"kwrd\">from<\/span> CTXSYS.DR$WAITING ;\r\nWTG_CID WTG_ROWID             WTG_PID\r\n--------<span class=\"rem\">-- ------------------ ----------<\/span>\r\n1080 AAARvbAAFAAAADMAAC          0\r\n<span class=\"kwrd\">SQL<\/span>&gt; <span class=\"kwrd\">commit<\/span>;<\/pre>\n<style type=\"text\/css\">\n<p>.csharpcode, .csharpcode pre\n{\n\tfont-size: small;\n\tcolor: black;\n\tfont-family: consolas, \"Courier New\", courier, monospace;\n\tbackground-color: #ffffff;\n\t\/*white-space: pre;*\/\n}\n.csharpcode pre { margin: 0em; }\n.csharpcode .rem { color: #008000; }\n.csharpcode .kwrd { color: #0000ff; }\n.csharpcode .str { color: #006080; }\n.csharpcode .op { color: #0000c0; }\n.csharpcode .preproc { color: #cc6633; }\n.csharpcode .asp { background-color: #ffff00; }\n.csharpcode .html { color: #800000; }\n.csharpcode .attr { color: #ff0000; }\n.csharpcode .alt \n{\n\tbackground-color: #f4f4f4;\n\twidth: 100%;\n\tmargin: 0em;\n}\n.csharpcode .lnum { color: #606060; }<\/style>\n<p><font color=\"#000000\" size=\"3\">En conclusion :<\/font><\/p>\n<p><font color=\"#000000\" size=\"3\">&#8211; aucune synchronisation de l\u2019index Oracle n\u2019est effectu\u00e9e lors du COMMIT qui cl\u00f4t l\u2019INSERT<\/font><\/p>\n<p><font color=\"#000000\" size=\"3\">&#8211; m\u00eame si la valeur de la colonne index\u00e9e est nulle, la ligne est ajout\u00e9e dans CTXSYS.DR$PENDING<\/font><\/p>\n<p><font color=\"#000000\" size=\"3\">&#8211; si la ligne est d\u00e9j\u00e0 en traitement dans CTXSYS.DR$PENDING, celle-ci est ajout\u00e9e dans CTXSYS.DR$WAITING<\/font><\/p>\n<h6><font color=\"#000000\"><\/font><font style=\"font-weight: normal\" size=\"3\"><em>b) Lors d\u2019un DELETE&#160; :<\/em><\/font><\/h6>\n<p><font color=\"#000000\" size=\"3\">Lors du commit qui cl\u00f4t le DELETE:<\/font><\/p>\n<p><font color=\"#000000\" size=\"3\">&#8211; la ligne correspondante avec le ROWID est imm\u00e9diatement supprim\u00e9e de DR$&lt;index_name&gt;$K :<\/font><\/p>\n<p><font color=\"#000000\" size=\"3\">&#8211; une recherche sur ROWID en utilisant&#160;&#160; DR$&lt; index_name&gt;$K ne trouve plus la ligne<\/font><\/p>\n<p><font color=\"#000000\" size=\"3\">&#8211; une ligne avec ROWID et INDEX_ID est ins\u00e9r\u00e9e dans CTXSYS.DR$DELETE<\/font><\/p>\n<p><font color=\"#000000\" size=\"3\">&#8211; un SELECT dans la session courante ne voit plus la ligne avant le commit<\/font><\/p>\n<p><font color=\"#000000\" size=\"3\">&#8211; permet lors du \u00ab commit callback \u00bb de supprimer les lignes correspondantes de&#160; DR$&lt; index_name&gt;$R<\/font><\/p>\n<p><font color=\"#000000\" size=\"3\">&#8211; une ligne avec ROWID est ins\u00e9r\u00e9e dans DR$&lt;index_name&gt;$N<\/font><\/p>\n<p><font color=\"#000000\" size=\"3\">&#8211; permet la suppression des DOCID dans la table&#160; DR$&lt;index_name&gt;$I lors d\u2019une optimisation<\/font><\/p>\n<p><font color=\"#000000\" size=\"3\">En conclusion :<\/font><\/p>\n<p><font color=\"#000000\" size=\"3\">Un DELETE est imm\u00e9diatement pris en compte :<\/font><\/p>\n<p><font color=\"#000000\" size=\"3\">&#8211; dans la session courante : on ne voit plus la ligne<\/font><\/p>\n<p><font color=\"#000000\" size=\"3\">&#8211; dans une autre session : on ne voit plus la ligne au commit<\/font><\/p>\n<h6><font color=\"#000000\" size=\"3\"><em><font style=\"font-weight: normal\">c) Lors d\u2019un UPDATE<\/font><\/em><\/font><\/h6>\n<p><font color=\"#000000\" size=\"3\">Il agit comme un DELETE suivi d\u2019un INSERT.<\/font><\/p>\n<p><font color=\"#000000\" size=\"3\">En conclusion :<\/font><\/p>\n<p><font color=\"#000000\" size=\"3\">&#8211; seule la partie DELETE sera visible apr\u00e8s le commit<\/font><\/p>\n<p><font color=\"#000000\" size=\"3\">&#8211; tout UPDATE sur la colonne entraine la non visibilit\u00e9 du document<\/font><\/p>\n<h6><font color=\"#000000\" size=\"3\"><\/font><font style=\"font-weight: normal\"><em>d) Lors du COMMIT<\/em><\/font><\/h6>\n<p><font color=\"#000000\" size=\"3\">Au commit , un \u00ab commit callback \u00bb est g\u00e9n\u00e9r\u00e9 :<\/font><\/p>\n<p><font color=\"#000000\" size=\"3\">&#8211; pour chaque DOCID de DR$DELETE, une mise \u00e0 jour de la colonne LOB de&#160; DR$&lt; index_name&gt;$R est effectu\u00e9e pour le ROWID<\/font><\/p>\n<p><font color=\"#000000\" size=\"3\">&#8211; la ligne est ensuite effac\u00e9e de DR$DELETE<\/font><\/p>\n<h5><font color=\"#000000\" size=\"3\" face=\"Times New Roman\">2) Mise en place de la synchronisation Oracle TEXT<\/font><\/h5>\n<p><font color=\"#000000\" size=\"3\">Lorsque l\u2019on effectue des inserts\/update, il est n\u00e9cessaire de synchroniser la table $I.<\/font><\/p>\n<p><font color=\"#000000\" size=\"3\">Il existe plusieurs possibilit\u00e9s&#160; :<\/font><\/p>\n<p><font color=\"#000000\" size=\"3\"><em>1) En manuel via ctx_ddl.sync_index<\/em><\/font><\/p>\n<p><font color=\"#000000\" size=\"3\">\u2013 utilisation d\u2019une m\u00e9moire de 256M avec un parall\u00e9lisme 2<\/font><\/p>\n<pre class=\"csharpcode\"><span class=\"kwrd\">exec<\/span> ctx_ddl.sync_index(<span class=\"str\">'TEST_IDX'<\/span>,<span class=\"str\">'256M'<\/span>,<span class=\"kwrd\">NULL<\/span>,2);<\/pre>\n<style type=\"text\/css\">\n<p>.csharpcode, .csharpcode pre\n{\n\tfont-size: small;\n\tcolor: black;\n\tfont-family: consolas, \"Courier New\", courier, monospace;\n\tbackground-color: #ffffff;\n\t\/*white-space: pre;*\/\n}\n.csharpcode pre { margin: 0em; }\n.csharpcode .rem { color: #008000; }\n.csharpcode .kwrd { color: #0000ff; }\n.csharpcode .str { color: #006080; }\n.csharpcode .op { color: #0000c0; }\n.csharpcode .preproc { color: #cc6633; }\n.csharpcode .asp { background-color: #ffff00; }\n.csharpcode .html { color: #800000; }\n.csharpcode .attr { color: #ff0000; }\n.csharpcode .alt \n{\n\tbackground-color: #f4f4f4;\n\twidth: 100%;\n\tmargin: 0em;\n}\n.csharpcode .lnum { color: #606060; }<\/style>\n<p><font color=\"#000000\" size=\"3\">Rem : ne pas utiliser Alter Index \u2026 Rebuild Online Parameters (\u2019sync\u2019)<\/font><\/p>\n<p><font color=\"#000000\" size=\"3\">2) Sinon, il est possible \u00e0 partir de la 10g de placer les param\u00e8tres SYNC EVERY \u2018interval\u2019 (via DBMS_SCHEDULER)<\/font><\/p>\n<pre class=\"csharpcode\"><font size=\"1\"><span class=\"kwrd\">SQL<\/span>&gt; <span class=\"kwrd\">ALTER<\/span> <span class=\"kwrd\">INDEX<\/span> test_idx REBUILD ONLINE  <span class=\"kwrd\">PARAMETERS<\/span> (<span class=\"str\">' REPLACE sync (every &quot;sysdate+(1\/24)&quot; MEMORY 64M PARALLEL 2)'<\/span>) PARALLEL 2 ;<\/font><\/pre>\n<style type=\"text\/css\">\n<p>.csharpcode, .csharpcode pre\n{\n\tfont-size: small;\n\tcolor: black;\n\tfont-family: consolas, \"Courier New\", courier, monospace;\n\tbackground-color: #ffffff;\n\t\/*white-space: pre;*\/\n}\n.csharpcode pre { margin: 0em; }\n.csharpcode .rem { color: #008000; }\n.csharpcode .kwrd { color: #0000ff; }\n.csharpcode .str { color: #006080; }\n.csharpcode .op { color: #0000c0; }\n.csharpcode .preproc { color: #cc6633; }\n.csharpcode .asp { background-color: #ffff00; }\n.csharpcode .html { color: #800000; }\n.csharpcode .attr { color: #ff0000; }\n.csharpcode .alt \n{\n\tbackground-color: #f4f4f4;\n\twidth: 100%;\n\tmargin: 0em;\n}\n.csharpcode .lnum { color: #606060; }<\/style>\n<p><font color=\"#000000\" size=\"3\">ou mieux via METADATA car \u00e9vite le rebuild de l\u2019index<\/font><\/p>\n<pre class=\"csharpcode\"><span class=\"kwrd\">SQL<\/span>&gt; <span class=\"kwrd\">ALTER<\/span> <span class=\"kwrd\">INDEX<\/span> test_idx REBUILDPARAMETERS (<span class=\"str\">' REPLACE METADATA sync (every &quot;sysdate+(1\/24)&quot; MEMORY 64M PARALLEL 2)'<\/span>) ;\r\n<span class=\"rem\">-- cr\u00e9ation d'un job via DBMS_SCHEDULER<\/span>\r\n<span class=\"kwrd\">SQL<\/span>&gt; <span class=\"kwrd\">select<\/span> JOB_ACTION <span class=\"kwrd\">from<\/span> USER_SCHEDULER_JOBS <span class=\"kwrd\">where<\/span> job_name=<span class=\"str\">'DR$TEST_IDX$J'<\/span>;\r\nJOB_ACTION\r\n-------------------------------------------------------------------------------------------------------------------<\/pre>\n<pre class=\"csharpcode\">ctxsys.drvdml.auto_sync_index(<span class=\"str\">'TEST_IDX'<\/span>, 67108864, <span class=\"kwrd\">NULL<\/span>, 2, <span class=\"kwrd\">NULL<\/span>, 0);<\/pre>\n<style type=\"text\/css\">\n<p>.csharpcode, .csharpcode pre\n{\n\tfont-size: small;\n\tcolor: black;\n\tfont-family: consolas, \"Courier New\", courier, monospace;\n\tbackground-color: #ffffff;\n\t\/*white-space: pre;*\/\n}\n.csharpcode pre { margin: 0em; }\n.csharpcode .rem { color: #008000; }\n.csharpcode .kwrd { color: #0000ff; }\n.csharpcode .str { color: #006080; }\n.csharpcode .op { color: #0000c0; }\n.csharpcode .preproc { color: #cc6633; }\n.csharpcode .asp { background-color: #ffff00; }\n.csharpcode .html { color: #800000; }\n.csharpcode .attr { color: #ff0000; }\n.csharpcode .alt \n{\n\tbackground-color: #f4f4f4;\n\twidth: 100%;\n\tmargin: 0em;\n}\n.csharpcode .lnum { color: #606060; }<\/style>\n<p><font color=\"#000000\" size=\"3\">3) Une synchronisation peut avoir lieu au COMMIT<\/font><\/p>\n<p><font color=\"#000000\" size=\"3\">Peut \u00eatre int\u00e9ressant pour un commit de plusieurs milliers de lignes<\/font><\/p>\n<p><font color=\"#000000\" size=\"3\">Le COMMIT est envoy\u00e9 une fois que la synchronisation est effectu\u00e9e.<\/font><\/p>\n<pre class=\"csharpcode\"><span class=\"kwrd\">SQL<\/span>&gt;<span class=\"kwrd\">create<\/span> <span class=\"kwrd\">index<\/span> test_idx <span class=\"kwrd\">on<\/span> test_tab (clob_col) indextype <span class=\"kwrd\">is<\/span> ctxsys.context <span class=\"kwrd\">parameters<\/span> (<span class=\"str\">'sync (on commit)'<\/span>);\r\n<span class=\"rem\">-- ou<\/span>\r\n\r\n<span class=\"kwrd\">SQL<\/span>&gt;<span class=\"kwrd\">ALTER<\/span> <span class=\"kwrd\">INDEX<\/span> test_idx REBUILD ONLINE  <span class=\"kwrd\">PARAMETERS<\/span> (<span class=\"str\">'REPLACE METADATA MEMORY 64M sync (on commit)'<\/span>) PARALLEL 2 ;<\/pre>\n<style type=\"text\/css\">\n<p>.csharpcode, .csharpcode pre\n{\n\tfont-size: small;\n\tcolor: black;\n\tfont-family: consolas, \"Courier New\", courier, monospace;\n\tbackground-color: #ffffff;\n\t\/*white-space: pre;*\/\n}\n.csharpcode pre { margin: 0em; }\n.csharpcode .rem { color: #008000; }\n.csharpcode .kwrd { color: #0000ff; }\n.csharpcode .str { color: #006080; }\n.csharpcode .op { color: #0000c0; }\n.csharpcode .preproc { color: #cc6633; }\n.csharpcode .asp { background-color: #ffff00; }\n.csharpcode .html { color: #800000; }\n.csharpcode .attr { color: #ff0000; }\n.csharpcode .alt \n{\n\tbackground-color: #f4f4f4;\n\twidth: 100%;\n\tmargin: 0em;\n}\n.csharpcode .lnum { color: #606060; }<\/style>\n<p><font color=\"#000000\"><\/font><font size=\"3\">4) Sinon il est possible d\u2019utiliser le param\u00e8tre <strong>TRANSACTIONAL<\/strong><\/font><\/p>\n<p><font color=\"#000000\" size=\"3\">Ce param\u00e8tre permet de voir les INSERT\/DELETE valid\u00e9es en utilisant les tables DR$PENDING DR$WAITING <\/font><font color=\"#000000\" size=\"3\">et en effectuant une indexation \u00e0 la vol\u00e9e<\/font><\/p>\n<pre class=\"csharpcode\"><span class=\"kwrd\">SQL<\/span>&gt;<span class=\"kwrd\">ALTER<\/span> <span class=\"kwrd\">INDEX<\/span> test_idx REBUILD ONLINE  <span class=\"kwrd\">PARAMETERS<\/span> (<span class=\"str\">'REPLACE METADATA transactional'<\/span>);\r\n<span class=\"kwrd\">SQL<\/span>&gt; <span class=\"kwrd\">select<\/span> * <span class=\"kwrd\">from<\/span> test_tab <span class=\"kwrd\">where<\/span> <span class=\"kwrd\">CONTAINS<\/span>(clob_col,<span class=\"str\">'ab'<\/span>) &gt; 0;\r\n<span class=\"kwrd\">no<\/span> <span class=\"kwrd\">rows<\/span> selected\r\n<span class=\"kwrd\">SQL<\/span>&gt; insert <span class=\"kwrd\">into<\/span> test_tab <span class=\"kwrd\">values<\/span> (<span class=\"str\">'ab'<\/span>);\r\n<span class=\"kwrd\">SELECT<\/span> pnd_index_name, pnd_rowid , TO_CHAR(pnd_timestamp, <span class=\"str\">'dd-mon-yyyyhh24:mi:ss'<\/span>) <span class=\"kwrd\">timestamp<\/span>\r\n<span class=\"kwrd\">FROM<\/span> ctx_user_pending;\r\nPND_INDEX_NAME                 PND_ROWID          <span class=\"kwrd\">TIMESTAMP<\/span>\r\n----------------------------<span class=\"rem\">-- ------------------ -------------------<\/span>\r\nTEST_IDX                       AAARvbAAFAAAADPAAA 03-apr-201216:40:11\r\n<span class=\"kwrd\">SQL<\/span>&gt; <span class=\"kwrd\">select<\/span> * <span class=\"kwrd\">from<\/span> test_tab <span class=\"kwrd\">where<\/span> <span class=\"kwrd\">CONTAINS<\/span>(clob_col,<span class=\"str\">'ab'<\/span>) &gt; 0;\r\nCLOB_COL\r\n------------------------------------------------------------------------------<span class=\"rem\">--<\/span>\r\nab<\/pre>\n<style type=\"text\/css\">\n<p>.csharpcode, .csharpcode pre\n{\n\tfont-size: small;\n\tcolor: black;\n\tfont-family: consolas, \"Courier New\", courier, monospace;\n\tbackground-color: #ffffff;\n\t\/*white-space: pre;*\/\n}\n.csharpcode pre { margin: 0em; }\n.csharpcode .rem { color: #008000; }\n.csharpcode .kwrd { color: #0000ff; }\n.csharpcode .str { color: #006080; }\n.csharpcode .op { color: #0000c0; }\n.csharpcode .preproc { color: #cc6633; }\n.csharpcode .asp { background-color: #ffff00; }\n.csharpcode .html { color: #800000; }\n.csharpcode .attr { color: #ff0000; }\n.csharpcode .alt \n{\n\tbackground-color: #f4f4f4;\n\twidth: 100%;\n\tmargin: 0em;\n}\n.csharpcode .lnum { color: #606060; }<\/style>\n<p><font color=\"#000000\" size=\"3\">Il est possible pour des questions de performances de d\u00e9sactiver cette fonctionnalit\u00e9 dans la session par une variable PL\/SQL :<\/font><\/p>\n<pre class=\"csharpcode\"><span class=\"kwrd\">SQL<\/span>&gt; <span class=\"kwrd\">exec<\/span> ctx_query.disable_transactional_query := <span class=\"kwrd\">TRUE<\/span>;\r\n<span class=\"kwrd\">SQL<\/span>&gt; <span class=\"kwrd\">select<\/span> * <span class=\"kwrd\">from<\/span> test_tab <span class=\"kwrd\">where<\/span> <span class=\"kwrd\">CONTAINS<\/span>(clob_col,<span class=\"str\">'ab'<\/span>) &gt; 0;\r\n<span class=\"kwrd\">no<\/span> <span class=\"kwrd\">rows<\/span> selected\r\nPour la r\u00e9sactiver :\r\n<span class=\"kwrd\">SQL<\/span>&gt; <span class=\"kwrd\">exec<\/span> ctx_query.disable_transactional_query := <span class=\"kwrd\">FALSE<\/span>;<\/pre>\n<style type=\"text\/css\">\n<p>.csharpcode, .csharpcode pre\n{\n\tfont-size: small;\n\tcolor: black;\n\tfont-family: consolas, \"Courier New\", courier, monospace;\n\tbackground-color: #ffffff;\n\t\/*white-space: pre;*\/\n}\n.csharpcode pre { margin: 0em; }\n.csharpcode .rem { color: #008000; }\n.csharpcode .kwrd { color: #0000ff; }\n.csharpcode .str { color: #006080; }\n.csharpcode .op { color: #0000c0; }\n.csharpcode .preproc { color: #cc6633; }\n.csharpcode .asp { background-color: #ffff00; }\n.csharpcode .html { color: #800000; }\n.csharpcode .attr { color: #ff0000; }\n.csharpcode .alt \n{\n\tbackground-color: #f4f4f4;\n\twidth: 100%;\n\tmargin: 0em;\n}\n.csharpcode .lnum { color: #606060; }<\/style>\n<p><font color=\"#000000\" size=\"3\">Sinon, il est possible de modifier l\u2019index Oracle Text :<\/font><\/p>\n<pre class=\"csharpcode\"><span class=\"kwrd\">SQL<\/span>&gt; <span class=\"kwrd\">ALTER<\/span> <span class=\"kwrd\">INDEX<\/span> test_idx REBUILD ONLINE <span class=\"kwrd\">PARAMETERS<\/span> (<span class=\"str\">'REPLACE METADATA nontransactional'<\/span>);<\/pre>\n<style type=\"text\/css\">\n<p>.csharpcode, .csharpcode pre\n{\n\tfont-size: small;\n\tcolor: black;\n\tfont-family: consolas, \"Courier New\", courier, monospace;\n\tbackground-color: #ffffff;\n\t\/*white-space: pre;*\/\n}\n.csharpcode pre { margin: 0em; }\n.csharpcode .rem { color: #008000; }\n.csharpcode .kwrd { color: #0000ff; }\n.csharpcode .str { color: #006080; }\n.csharpcode .op { color: #0000c0; }\n.csharpcode .preproc { color: #cc6633; }\n.csharpcode .asp { background-color: #ffff00; }\n.csharpcode .html { color: #800000; }\n.csharpcode .attr { color: #ff0000; }\n.csharpcode .alt \n{\n\tbackground-color: #f4f4f4;\n\twidth: 100%;\n\tmargin: 0em;\n}\n.csharpcode .lnum { color: #606060; }<\/style>\n<h5><font color=\"#000000\" size=\"3\">2) G\u00e9rer la synchronisation<\/font><\/h5>\n<p><font color=\"#000000\" size=\"3\">a) Pour optimiser la synchronisation, vous pouvez utiliser :<\/font><\/p>\n<p><font color=\"#000000\" size=\"3\">&#8211; le parall\u00e9lisme en Entreprise Edition<\/font><\/p>\n<p><font color=\"#000000\" size=\"3\">&#8211; la clause memory avec une limite \u00e0 1 Go en 11gR2<\/font><\/p>\n<p><font color=\"#000000\" size=\"3\">\u2013&#160; modification possible de la valeur maximale :<\/font><\/p>\n<pre class=\"csharpcode\"><span class=\"kwrd\">exec<\/span> ctxsys.ctx_adm.set_parameter(<span class=\"str\">'MAX_INDEX_MEMORY'<\/span>,<span class=\"str\">'2147483647'<\/span>);<\/pre>\n<style type=\"text\/css\">\n<p>.csharpcode, .csharpcode pre\n{\n\tfont-size: small;\n\tcolor: black;\n\tfont-family: consolas, \"Courier New\", courier, monospace;\n\tbackground-color: #ffffff;\n\t\/*white-space: pre;*\/\n}\n.csharpcode pre { margin: 0em; }\n.csharpcode .rem { color: #008000; }\n.csharpcode .kwrd { color: #0000ff; }\n.csharpcode .str { color: #006080; }\n.csharpcode .op { color: #0000c0; }\n.csharpcode .preproc { color: #cc6633; }\n.csharpcode .asp { background-color: #ffff00; }\n.csharpcode .html { color: #800000; }\n.csharpcode .attr { color: #ff0000; }\n.csharpcode .alt \n{\n\tbackground-color: #f4f4f4;\n\twidth: 100%;\n\tmargin: 0em;\n}\n.csharpcode .lnum { color: #606060; }<\/style>\n<p><font color=\"#000000\" size=\"3\">b) la clause <\/font><font color=\"#000000\"><strong>transactional<\/strong><\/font> a un surcout en performance<\/p>\n<p><font color=\"#000000\" size=\"3\">&#8211; n\u00e9cessit\u00e9 de lire la table dr$unindexed<\/font><\/p>\n<p><font color=\"#000000\" size=\"3\">c) le mot cl\u00e9 REBUILD METADATA \u00e9vite la reconstruction de l\u2019index<\/font><\/p>\n<p><font color=\"#000000\" size=\"3\">Dans la troisi\u00e8me partie, nous allons continuer la gestion d\u2019un index Oracle TEXT.<\/font><\/p>\n<a class=\"synved-social-button synved-social-button-share synved-social-size-24 synved-social-resolution-single synved-social-provider-twitter nolightbox\" data-provider=\"twitter\" target=\"_blank\" rel=\"nofollow\" title=\"Share on Twitter\" href=\"https:\/\/twitter.com\/intent\/tweet?url=https%3A%2F%2Fblog.capdata.fr%2Findex.php%2Fwp-json%2Fwp%2Fv2%2Fposts%2F3480&#038;text=Article%20sur%20le%20blog%20de%20la%20Capdata%20Tech%20Team%20%3A%20\" style=\"font-size: 0px;width:24px;height:24px;margin:0;margin-bottom:5px;margin-right:5px\"><img loading=\"lazy\" decoding=\"async\" alt=\"twitter\" title=\"Share on Twitter\" class=\"synved-share-image synved-social-image synved-social-image-share\" width=\"24\" height=\"24\" style=\"display: inline;width:24px;height:24px;margin: 0;padding: 0;border: none;box-shadow: none\" src=\"https:\/\/blog.capdata.fr\/wp-content\/plugins\/social-media-feather\/synved-social\/image\/social\/regular\/48x48\/twitter.png\" \/><\/a><a class=\"synved-social-button synved-social-button-share synved-social-size-24 synved-social-resolution-single synved-social-provider-linkedin nolightbox\" data-provider=\"linkedin\" target=\"_blank\" rel=\"nofollow\" title=\"Share on Linkedin\" href=\"https:\/\/www.linkedin.com\/shareArticle?mini=true&#038;url=https%3A%2F%2Fblog.capdata.fr%2Findex.php%2Fwp-json%2Fwp%2Fv2%2Fposts%2F3480&#038;title=Oracle%20Text%20pour%20DBA%20Oracle%20%3A%20Partie%202\" style=\"font-size: 0px;width:24px;height:24px;margin:0;margin-bottom:5px;margin-right:5px\"><img loading=\"lazy\" decoding=\"async\" alt=\"linkedin\" title=\"Share on Linkedin\" class=\"synved-share-image synved-social-image synved-social-image-share\" width=\"24\" height=\"24\" style=\"display: inline;width:24px;height:24px;margin: 0;padding: 0;border: none;box-shadow: none\" src=\"https:\/\/blog.capdata.fr\/wp-content\/plugins\/social-media-feather\/synved-social\/image\/social\/regular\/48x48\/linkedin.png\" \/><\/a><a class=\"synved-social-button synved-social-button-share synved-social-size-24 synved-social-resolution-single synved-social-provider-mail nolightbox\" data-provider=\"mail\" rel=\"nofollow\" title=\"Share by email\" href=\"mailto:?subject=Oracle%20Text%20pour%20DBA%20Oracle%20%3A%20Partie%202&#038;body=Article%20sur%20le%20blog%20de%20la%20Capdata%20Tech%20Team%20%3A%20:%20https%3A%2F%2Fblog.capdata.fr%2Findex.php%2Fwp-json%2Fwp%2Fv2%2Fposts%2F3480\" style=\"font-size: 0px;width:24px;height:24px;margin:0;margin-bottom:5px\"><img loading=\"lazy\" decoding=\"async\" alt=\"mail\" title=\"Share by email\" class=\"synved-share-image synved-social-image synved-social-image-share\" width=\"24\" height=\"24\" style=\"display: inline;width:24px;height:24px;margin: 0;padding: 0;border: none;box-shadow: none\" src=\"https:\/\/blog.capdata.fr\/wp-content\/plugins\/social-media-feather\/synved-social\/image\/social\/regular\/48x48\/mail.png\" \/><\/a>","protected":false},"excerpt":{"rendered":"<p>Contrairement \u00e0 des index relationnels, les index Oracle Text ne sont g\u00e9n\u00e9ralement pas maintenus en temps r\u00e9el. Il faut donc en tenir compte pour une activit\u00e9 transactionnelle. M\u00eame s\u2019il est possible de le faire, cela procure un travail consid\u00e9rable et&hellip; <a href=\"https:\/\/blog.capdata.fr\/index.php\/oracle-text-pour-dba-oracle-partie-2-3\/\" class=\"more-link\">Continuer la lecture <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":7886,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3],"tags":[217,216,220],"class_list":["post-3480","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-oracle","tag-ctxsys","tag-oracle-text","tag-rebuild-online-parameters"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v20.8 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Oracle Text pour DBA Oracle : Partie 2 - Capdata TECH BLOG<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/blog.capdata.fr\/index.php\/oracle-text-pour-dba-oracle-partie-2-3\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Oracle Text pour DBA Oracle : Partie 2 - Capdata TECH BLOG\" \/>\n<meta property=\"og:description\" content=\"Contrairement \u00e0 des index relationnels, les index Oracle Text ne sont g\u00e9n\u00e9ralement pas maintenus en temps r\u00e9el. Il faut donc en tenir compte pour une activit\u00e9 transactionnelle. M\u00eame s\u2019il est possible de le faire, cela procure un travail consid\u00e9rable et&hellip; Continuer la lecture &rarr;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/blog.capdata.fr\/index.php\/oracle-text-pour-dba-oracle-partie-2-3\/\" \/>\n<meta property=\"og:site_name\" content=\"Capdata TECH BLOG\" \/>\n<meta property=\"article:published_time\" content=\"2012-04-05T15:04:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2019-09-13T13:22:17+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/blog.capdata.fr\/wp-content\/uploads\/2012\/04\/oracletext2.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1000\" \/>\n\t<meta property=\"og:image:height\" content=\"750\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Capdata team\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u00c9crit par\" \/>\n\t<meta name=\"twitter:data1\" content=\"Capdata team\" \/>\n\t<meta name=\"twitter:label2\" content=\"Dur\u00e9e de lecture estim\u00e9e\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/blog.capdata.fr\/index.php\/oracle-text-pour-dba-oracle-partie-2-3\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/blog.capdata.fr\/index.php\/oracle-text-pour-dba-oracle-partie-2-3\/\"},\"author\":{\"name\":\"Capdata team\",\"@id\":\"https:\/\/blog.capdata.fr\/#\/schema\/person\/bfd9395c8ba4fa125792a543377035e9\"},\"headline\":\"Oracle Text pour DBA Oracle : Partie 2\",\"datePublished\":\"2012-04-05T15:04:00+00:00\",\"dateModified\":\"2019-09-13T13:22:17+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/blog.capdata.fr\/index.php\/oracle-text-pour-dba-oracle-partie-2-3\/\"},\"wordCount\":725,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/blog.capdata.fr\/#organization\"},\"keywords\":[\"ctxsys\",\"Oracle TEXT\",\"REBUILD ONLINE PARAMETERS\"],\"articleSection\":[\"Oracle\"],\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/blog.capdata.fr\/index.php\/oracle-text-pour-dba-oracle-partie-2-3\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/blog.capdata.fr\/index.php\/oracle-text-pour-dba-oracle-partie-2-3\/\",\"url\":\"https:\/\/blog.capdata.fr\/index.php\/oracle-text-pour-dba-oracle-partie-2-3\/\",\"name\":\"Oracle Text pour DBA Oracle : Partie 2 - Capdata TECH BLOG\",\"isPartOf\":{\"@id\":\"https:\/\/blog.capdata.fr\/#website\"},\"datePublished\":\"2012-04-05T15:04:00+00:00\",\"dateModified\":\"2019-09-13T13:22:17+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/blog.capdata.fr\/index.php\/oracle-text-pour-dba-oracle-partie-2-3\/#breadcrumb\"},\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/blog.capdata.fr\/index.php\/oracle-text-pour-dba-oracle-partie-2-3\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/blog.capdata.fr\/index.php\/oracle-text-pour-dba-oracle-partie-2-3\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\/\/blog.capdata.fr\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Oracle Text pour DBA Oracle : Partie 2\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/blog.capdata.fr\/#website\",\"url\":\"https:\/\/blog.capdata.fr\/\",\"name\":\"Capdata TECH BLOG\",\"description\":\"Le blog technique sur les bases de donn\u00e9es de CAP DATA Consulting\",\"publisher\":{\"@id\":\"https:\/\/blog.capdata.fr\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/blog.capdata.fr\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"fr-FR\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/blog.capdata.fr\/#organization\",\"name\":\"Capdata TECH BLOG\",\"url\":\"https:\/\/blog.capdata.fr\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/blog.capdata.fr\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/blog.capdata.fr\/wp-content\/uploads\/2023\/01\/logo_capdata.webp\",\"contentUrl\":\"https:\/\/blog.capdata.fr\/wp-content\/uploads\/2023\/01\/logo_capdata.webp\",\"width\":800,\"height\":254,\"caption\":\"Capdata TECH BLOG\"},\"image\":{\"@id\":\"https:\/\/blog.capdata.fr\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.linkedin.com\/company\/cap-data-consulting\/mycompany\/\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/blog.capdata.fr\/#\/schema\/person\/bfd9395c8ba4fa125792a543377035e9\",\"name\":\"Capdata team\",\"sameAs\":[\"https:\/\/www.capdata.fr\"],\"url\":\"https:\/\/blog.capdata.fr\/index.php\/author\/admin\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Oracle Text pour DBA Oracle : Partie 2 - Capdata TECH BLOG","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/blog.capdata.fr\/index.php\/oracle-text-pour-dba-oracle-partie-2-3\/","og_locale":"fr_FR","og_type":"article","og_title":"Oracle Text pour DBA Oracle : Partie 2 - Capdata TECH BLOG","og_description":"Contrairement \u00e0 des index relationnels, les index Oracle Text ne sont g\u00e9n\u00e9ralement pas maintenus en temps r\u00e9el. Il faut donc en tenir compte pour une activit\u00e9 transactionnelle. M\u00eame s\u2019il est possible de le faire, cela procure un travail consid\u00e9rable et&hellip; Continuer la lecture &rarr;","og_url":"https:\/\/blog.capdata.fr\/index.php\/oracle-text-pour-dba-oracle-partie-2-3\/","og_site_name":"Capdata TECH BLOG","article_published_time":"2012-04-05T15:04:00+00:00","article_modified_time":"2019-09-13T13:22:17+00:00","og_image":[{"width":1000,"height":750,"url":"https:\/\/blog.capdata.fr\/wp-content\/uploads\/2012\/04\/oracletext2.jpg","type":"image\/jpeg"}],"author":"Capdata team","twitter_card":"summary_large_image","twitter_misc":{"\u00c9crit par":"Capdata team","Dur\u00e9e de lecture estim\u00e9e":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/blog.capdata.fr\/index.php\/oracle-text-pour-dba-oracle-partie-2-3\/#article","isPartOf":{"@id":"https:\/\/blog.capdata.fr\/index.php\/oracle-text-pour-dba-oracle-partie-2-3\/"},"author":{"name":"Capdata team","@id":"https:\/\/blog.capdata.fr\/#\/schema\/person\/bfd9395c8ba4fa125792a543377035e9"},"headline":"Oracle Text pour DBA Oracle : Partie 2","datePublished":"2012-04-05T15:04:00+00:00","dateModified":"2019-09-13T13:22:17+00:00","mainEntityOfPage":{"@id":"https:\/\/blog.capdata.fr\/index.php\/oracle-text-pour-dba-oracle-partie-2-3\/"},"wordCount":725,"commentCount":0,"publisher":{"@id":"https:\/\/blog.capdata.fr\/#organization"},"keywords":["ctxsys","Oracle TEXT","REBUILD ONLINE PARAMETERS"],"articleSection":["Oracle"],"inLanguage":"fr-FR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/blog.capdata.fr\/index.php\/oracle-text-pour-dba-oracle-partie-2-3\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/blog.capdata.fr\/index.php\/oracle-text-pour-dba-oracle-partie-2-3\/","url":"https:\/\/blog.capdata.fr\/index.php\/oracle-text-pour-dba-oracle-partie-2-3\/","name":"Oracle Text pour DBA Oracle : Partie 2 - Capdata TECH BLOG","isPartOf":{"@id":"https:\/\/blog.capdata.fr\/#website"},"datePublished":"2012-04-05T15:04:00+00:00","dateModified":"2019-09-13T13:22:17+00:00","breadcrumb":{"@id":"https:\/\/blog.capdata.fr\/index.php\/oracle-text-pour-dba-oracle-partie-2-3\/#breadcrumb"},"inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/blog.capdata.fr\/index.php\/oracle-text-pour-dba-oracle-partie-2-3\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/blog.capdata.fr\/index.php\/oracle-text-pour-dba-oracle-partie-2-3\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/blog.capdata.fr\/"},{"@type":"ListItem","position":2,"name":"Oracle Text pour DBA Oracle : Partie 2"}]},{"@type":"WebSite","@id":"https:\/\/blog.capdata.fr\/#website","url":"https:\/\/blog.capdata.fr\/","name":"Capdata TECH BLOG","description":"Le blog technique sur les bases de donn\u00e9es de CAP DATA Consulting","publisher":{"@id":"https:\/\/blog.capdata.fr\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/blog.capdata.fr\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"fr-FR"},{"@type":"Organization","@id":"https:\/\/blog.capdata.fr\/#organization","name":"Capdata TECH BLOG","url":"https:\/\/blog.capdata.fr\/","logo":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/blog.capdata.fr\/#\/schema\/logo\/image\/","url":"https:\/\/blog.capdata.fr\/wp-content\/uploads\/2023\/01\/logo_capdata.webp","contentUrl":"https:\/\/blog.capdata.fr\/wp-content\/uploads\/2023\/01\/logo_capdata.webp","width":800,"height":254,"caption":"Capdata TECH BLOG"},"image":{"@id":"https:\/\/blog.capdata.fr\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.linkedin.com\/company\/cap-data-consulting\/mycompany\/"]},{"@type":"Person","@id":"https:\/\/blog.capdata.fr\/#\/schema\/person\/bfd9395c8ba4fa125792a543377035e9","name":"Capdata team","sameAs":["https:\/\/www.capdata.fr"],"url":"https:\/\/blog.capdata.fr\/index.php\/author\/admin\/"}]}},"_links":{"self":[{"href":"https:\/\/blog.capdata.fr\/index.php\/wp-json\/wp\/v2\/posts\/3480","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.capdata.fr\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.capdata.fr\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.capdata.fr\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.capdata.fr\/index.php\/wp-json\/wp\/v2\/comments?post=3480"}],"version-history":[{"count":10,"href":"https:\/\/blog.capdata.fr\/index.php\/wp-json\/wp\/v2\/posts\/3480\/revisions"}],"predecessor-version":[{"id":3491,"href":"https:\/\/blog.capdata.fr\/index.php\/wp-json\/wp\/v2\/posts\/3480\/revisions\/3491"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.capdata.fr\/index.php\/wp-json\/wp\/v2\/media\/7886"}],"wp:attachment":[{"href":"https:\/\/blog.capdata.fr\/index.php\/wp-json\/wp\/v2\/media?parent=3480"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.capdata.fr\/index.php\/wp-json\/wp\/v2\/categories?post=3480"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.capdata.fr\/index.php\/wp-json\/wp\/v2\/tags?post=3480"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}