My Oracle blog

Bonsoir,

Et aujourd'hui une petite nouveauté au niveau table. Il est en effet possible avec Oracle 11 de mettre une table en lecture seule alors qu'avant il n'était possible de le faire qu'au niveau tablespace. 

La syntaxe est très simple :


ALTER ma_table READ ONLY;

De même pour revenir en mode écriture la syntaxe est :


ALTER TABLE ma_table READ WRITE;

Par ailleurs, une nouvelle colonne "READ_ONLY" a été ajouté dans les vues DBA_TABLES, USER_TABLES, ALL_TABLES. Cette colonne prends les valeurs YES et NO.

LAO.

Mar 25 nov 2008 2 commentaires
Ca sert à quoi de mettre une table en lecture seule ? Comment on fait pour la renseigner ? Est-ce que l'idée est de dire qu'on insère les valeurs d'abord et qu'ensuite on la met en lecture seule; pour rajouter de nouvelles valeurs on serait alors obligé de la remettre en RW ? Pour les colonnes VIRTUAL, j'imagine que celles-ci sont systématiquement en lecture seule ?
Franck - le 26/11/2008 à 09h11

Hello,

-1/C'est un peu le même principe que pour un fichier, c'est une option de sécurité. Dans une application on peut avoir des données systemes statique que l'on veut pas voir modifier. Et plutot que de faire des triggers sur Update,Delete pour voir bloquer des mise à jours on met la table en Read Only. Et lors d'ajout d'informations (rare), on met la table en lecture écriture.  De même parfois on peut vouloir historiser certaines données dans des tables d'archives. Pour éviter des truncate sauvage, on peut mettre ces tables en lecture seule.

-2/ Tout à fait.

LAO
Quel est le type d'erreur sur lequel on tombe si on s'amuse à faire un I/U/D dessus ?
Gigot - le 26/11/2008 à 10h31

Hello,


Tout simplement un ORA-12081 : Update not allowed on table "ma_table". Par ailleurs il aurait fallu dire un I/U/D/T.

LAO.

LAO