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

Oracle Discussion :

Augmenter la valeur de blocksize


Sujet :

Oracle

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 90
    Points : 96
    Points
    96
    Par défaut Augmenter la valeur de blocksize
    Bonjour,

    En voulant creer une table (je n'ai pas recopie tout le code, juste l'essentiel)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    CREATE TABLE pub (
      pub_id number(38) NOT NULL,
      uniquename varchar2(4000) NOT NULL,
      type_id number(38 NOT NULL,
      CONSTRAINT fk_pub_type_id FOREIGN KEY (type_id) REFERENCES cvterm (cvterm_id) ,
      CONSTRAINT u_pub UNIQUE (uniquename, type_id)
    );
    j'ai a l'execution l'erreur suivante :
    ORA-01450 maximum key length (string) exceeded
    j'ai trouve je pense la solution a mon probleme :
    unless you are using a 16k or larger blocksize, you will not be able to index a VARCHAR2(4000).
    Je ne suis pas (encore) DBA et je ne sais pas changer ce parametre (Oracle 8.1.7).
    Comment faire ?
    Quelles peuvent etre les consequences d'un blocksize trop grand (4k actuellement)?

    Merci de votre aide

  2. #2
    Membre expert
    Avatar de bouyao
    Inscrit en
    Janvier 2005
    Messages
    1 778
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 778
    Points : 3 033
    Points
    3 033
    Par défaut
    le problème vient du VARCHAR2[4000]
    le maximum sous 8.1.7 est : 3218

  3. #3
    Membre expert
    Avatar de LeoAnderson
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 938
    Points : 3 199
    Points
    3 199
    Par défaut
    Dommage...
    En 8i, ce paramètre est global à toute la base et non modifiable !

    Le problème d'un bloc trop petit ? vous venez d'en avoir un aperçu !
    Le problème d'un bloc trop grand ? de la perte de place.... si vous écrivez 1k dans un block de 16K, vous perdez 15k.

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 90
    Points : 96
    Points
    96
    Par défaut
    Ok !

    merci,

    je ne peux pas modifier cette valeur !
    si j'ai bien compris cette valeur est definie dans le init.ORA et elle est donc globale a tous les schemas presents dans cette instance (et je ne peux pas modifier cette valeur sans repartir a zero et detruire ma base test mais aussi toutes les bases autres presentes dans cette instance)?

  5. #5
    Membre expert
    Avatar de LeoAnderson
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 938
    Points : 3 199
    Points
    3 199
    Par défaut
    Citation Envoyé par fsapet
    Ok !

    merci,

    je ne peux pas modifier cette valeur !
    si j'ai bien compris cette valeur est definie dans le init.ORA et elle est donc globale a tous les schemas presents dans cette instance (et je ne peux pas modifier cette valeur sans repartir a zero et detruire ma base test mais aussi toutes les bases autres presentes dans cette instance)?
    Malheureusement, non, vous ne pouvez pas modifier cette valeur puisque elle est définie la façon dont les fichiers sont écrits ! (il y a des paramètres du init.ora qui sont modifiables....)

    Par contre, je comprends mal ce que vous entendez par base et instance ?
    Normalement, une base ce sont les fichiers; l'instance, ce sont les process et la mémoire qui exploitent les-dits fichiers.
    Ne voudriez-vous pas plutot parler de tablespaces ?

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 90
    Points : 96
    Points
    96
    Par défaut
    Je suis de retour !

    Je n'ai pas ete tres rigoureux dans mon mesage precedant (je ne dois pas parler de base mais de schema):

    ce que je pense avoir compris :

    le fichier init.ORA (qui contient entre autre ce @#$%& de parametre db_block_size) est utilise pour lancer et demarrer une instance.
    Dans cette instance (developpement) je dispose de mon schema test (et aussi d'autres schemas dont je ne suis pas le proprietaire) et je ne peux rien faire pour db_block_size (sauf detruire tous les schemas, couper mon instance developpement et la redemarrer avec d'autres parametres, puis recreer mes sdifferents schemas)

    je suis encore embrouille ou non ?

  7. #7
    Membre expert
    Avatar de bouyao
    Inscrit en
    Janvier 2005
    Messages
    1 778
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 778
    Points : 3 033
    Points
    3 033
    Par défaut
    Pour modifier la taile du bloc dans 8.1.7 il faut supprimer totalement la base et la recréer avec le nouveau db_block_size. et seule un Administeur Oracle peut faire cette manipulation.

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 90
    Points : 96
    Points
    96
    Par défaut
    Citation Envoyé par bouyao
    seule un Administeur Oracle peut faire cette manipulation.
    oui !
    heureusement,
    c'est pour cela que je ne peux rien faire, je ne suis pas admin Oracle, et aussi parce qu'il n'y a pas uniquement mon schema en jeu, sinon on aurait pu proceder ainsi.

    Merci de vos reponses

  9. #9
    Membre éprouvé Avatar de 13thFloor
    Homme Profil pro
    DBA Oracle freelance
    Inscrit en
    Janvier 2005
    Messages
    670
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France

    Informations professionnelles :
    Activité : DBA Oracle freelance

    Informations forums :
    Inscription : Janvier 2005
    Messages : 670
    Points : 945
    Points
    945
    Par défaut
    Il me semble utile de commenter le post de LeoAnderson qui semble indiquer que l'on perd 15k lorsqu'on insère une ligne de 1K avec une taille de bloc de 16K.
    La perte se situe au niveau performance car l'unité minimale dans oracle est le bloc. Si les autres lignes du bloc lu ne sont pas utiles à la requête qui sollicite le bloc, en effet, les performances vont en pâtir car il faudra lire davantage de blocs, donc io, donc soucis de perf/temps de réponse.
    Les 16K permettront de stocker environ 15 lignes de 1K.

  10. #10
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 073
    Points
    19 073
    Par défaut
    Citation Envoyé par 13thFloor
    Les 16K permettront de stocker environ 15 lignes de 1K.
    sachant que ça dépend aussi du PCTFREE paramétré aussi

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [ZF 1.9] Augmenter la valeur d'un champ
    Par snyfir dans le forum Zend_Db
    Réponses: 3
    Dernier message: 13/02/2010, 10h15
  2. Augmenter les valeurs dans une formule
    Par rickgoz dans le forum Excel
    Réponses: 6
    Dernier message: 28/05/2009, 15h49
  3. augmenter une valeur en sql
    Par kroma23 dans le forum Bases de données
    Réponses: 2
    Dernier message: 15/02/2009, 11h20
  4. Augmentation et Valeur du point
    Par IManAsap dans le forum Paie
    Réponses: 1
    Dernier message: 08/02/2008, 17h08
  5. Augmenter la valeur d'un champs numérique
    Par mickado dans le forum Langage SQL
    Réponses: 3
    Dernier message: 28/04/2007, 20h52

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