mardi 23 juin 2015

ORA-12838

Si on se sert de INSERT /*+ APPEND */ pour ajouter des lignes à une table, il faut lancer un COMMIT tout de suite après. Sinon, et on essaie de lire ou modifier la table, Oracle répond avec ORA-12838. Voici un exemple de ce problème. Je l’ai testé sur Oracle 11.2:

SQL> create table tab1
  2  as select * from dba_tables
  3  where 1 = 2
  4  /
 
Table created.
 
SQL> insert /*+ append */ into tab1
  2  select * from dba_tables
  3  /
 
3163 rows created.
 
SQL> select count(*) from tab1
  2  /
select count(*) from tab1
                     *
ERROR at line 1:
ORA-12838: impossible de lire/modifier un objet après
modification en parallèle
 
SQL> commit
  2  /
 
Commit complete.
 
SQL> select count(*) from tab1
  2  /
 
  COUNT(*)
----------
      3163
 

mercredi 19 novembre 2014

Mode Archivelog

Voici une question pour vous aider à étudier pour l'examen OCA. Quelle commande peut-on utiliser pour savoir si une base de données soit en mode ARCHIVELOG?

A. archivelog list
B. show archive mode
C. archive log list
D. list archivelog

J'ai testé les choix  sur Oracle 12 de la manière suivante: 

SQL> conn / as sysdba
Connecté.
SQL> archivelog list
SP2-0734: commande inconnue au début de "archivelog..." - le reste de la ligne est ignoré.
SQL> show archive mode
SP2-0158: option SHOW inconnue "archive"
SP2-0158: option SHOW inconnue "mode"
SQL> archive log list
mode Database log              mode No Archive
Archivage automatique             Désactivé
Destination de l'archive             USE_DB_RECOVERY_FILE_DEST
Séquence de journal en ligne la plus ancienne     157
Séquence de journal courante            159
SQL> list archivelog
SP2-0223: Pas de lignes dans la mémoire tampon SQL.
SQL> 

Donc, la réponse correcte est C.

Pour quelque raison que je ne comprends pas, le résultat est meilleur rangé en anglais: 

SQL> conn / as sysdba
Connecté.
SQL> alter session set nls_language = 'ENGLISH';
 
Session altered.
 
SQL> archive log list
Database log mode              No Archive Mode
Automatic archival             Disabled
Archive destination            USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence     157
Current log sequence           159
SQL>