IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Administration Oracle Discussion :

ORA-54013: Opération INSERT interdite sur les colonnes virtuelles


Sujet :

Administration Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    DBA Oracle
    Inscrit en
    Mai 2006
    Messages
    166
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DBA Oracle

    Informations forums :
    Inscription : Mai 2006
    Messages : 166
    Par défaut ORA-54013: Opération INSERT interdite sur les colonnes virtuelles
    Bonjour,

    afin de récupérer de l'espace sur le tablespace sysaux j'ai fait cette manip :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    create table SYS.WRI$_OPTSTAT_BAK as (select * from sys.wri$_optstat_histhead_history
    where savtime > SYSDATE - 7);
     
    truncate table SYS.WRI$_OPTSTAT_HISTHEAD_HISTORY drop storage;
    Puis ensuite j'ai voulu remettre les données dans la table "SYS.WRI$_OPTSTAT_HISTHEAD_HISTORY" avec la commande insert suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    insert into SYS.WRI$_OPTSTAT_HISTHEAD_HISTORY (SELECT * FROM SYS.WRI$_OPTSTAT_BAK);
    sauf que j'ai un message :

    ORA-54013: Opération INSERT interdite sur les colonnes virtuelles
    Que faire ?

    Merci

  2. #2
    Membre Expert
    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Décembre 2019
    Messages
    1 176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Décembre 2019
    Messages : 1 176
    Par défaut
    Bonjour,

    Tu fais des manips DDL et DML directement sur des tables SYS ?? Il ne faut jamais toucher aux tables SYS sauf pour quelques tables (audit il me semble) où sous la direction du support Oracle ou d'une note du support. Est-ce le cas?

    Il faut utiliser la procédure DBMS_STATS.Purge_stats pour purger les tables WRI$.

  3. #3
    Membre confirmé
    Homme Profil pro
    DBA Oracle
    Inscrit en
    Mai 2006
    Messages
    166
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DBA Oracle

    Informations forums :
    Inscription : Mai 2006
    Messages : 166
    Par défaut
    Oui je sais mais n'ayant rien de trouver de probant je suis tombé sur ca :

    http://www.lami-dba.com/2015/09/orac....html#comments

    Merci

  4. #4
    Membre Expert
    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Décembre 2019
    Messages
    1 176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Décembre 2019
    Messages : 1 176
    Par défaut
    C'est exactement pour cela qu'il ne faut pas faire ce genre de manips. Le gars parle juste de "procédure non officielle", sans autre avertissement. La manip fonctionne en 11g, mais je suppose que tu dois être dans une version supérieure ou des colonnes virtuelles ont été ajoutées.
    Donc dans ton INSERT il va falloir que tu sélectionnes toutes les colonnes sauf les colonne virtuelles pour que cela fonctionne. Essaie un truc comme ça pour générer le INSERT:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    select 'insert into sys.WRI$_OPTSTAT_HISTHEAD_HISTORY( '||
    listagg(column_name, ',') within group (order by column_id)
    || ') select ' || listagg(column_name, ',') within group (order by column_id)
    || ' from SYS.WRI$_OPTSTAT_BAK;'
    from dba_tab_cols where table_name = 'WRI$_OPTSTAT_HISTHEAD_HISTORY' 
    and virtual_column != 'YES';

  5. #5
    Membre confirmé
    Homme Profil pro
    DBA Oracle
    Inscrit en
    Mai 2006
    Messages
    166
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DBA Oracle

    Informations forums :
    Inscription : Mai 2006
    Messages : 166
    Par défaut
    Merci pour tout les conseils et la requête très utile.

Discussions similaires

  1. Réponses: 3
    Dernier message: 20/10/2014, 12h34
  2. [XL-2007] Opération sur les colonnes macro excel
    Par fabdu25 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 04/06/2014, 11h22
  3. Opérations sur les colonnes d'une matrice
    Par george216 dans le forum MATLAB
    Réponses: 6
    Dernier message: 04/01/2010, 08h08
  4. [struts]: Pagination et tri sur les colonnes
    Par sleepy2002 dans le forum Struts 1
    Réponses: 3
    Dernier message: 09/07/2007, 15h16
  5. [fscanf] Travail sur les colonnes
    Par kikibrioche dans le forum MATLAB
    Réponses: 1
    Dernier message: 25/10/2006, 10h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo