Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2002
    Messaggi
    8

    Indice Blob in Oracle 8i

    Salve a tutti,
    il mio problema è su Oracle 8i e precisamente non riesco a dimensionare l'indice che crea Oracle in automatico quando una tabella con un campo Blob è creata.
    Facendo delle ricerche su internet ho scoperto che Oracle 8i non permette di creare l'indice su un altro tablespace diverso da quello dove sta il Blob. Fin qui ok, ma io vorrei sapere innanzitutto quale critirio utilizza Oracle 8i per dimensionare l'indice e se è possibile
    farlo da script.
    Ho lanciato il seguente script in cui Oracle 8i non mi ha dato errori sintattici, ma l'ha in parte ignorato in quanto ha solo cambiato il nome ma non l'ha dimensionato come da script.

    CREATE TABLE T_CORSO1
    (
    CODICE_CORSO NUMBER(6),
    CODICE_DOCENTE NUMBER(6),
    DESCRIZIONE VARCHAR2(200),
    DURATA VARCHAR2(15),
    PROGRAMMA BLOB,
    COSTO_CORSO NUMBER(9,2)
    )
    PCTFREE 10 PCTUSED 40
    INITRANS 1 MAXTRANS 255
    STORAGE ( INITIAL 16K NEXT 8K
    minextents 1 maxextents 99
    PCTINCREASE 0 )
    TABLESPACE TAB_CORSO
    LOB(PROGRAMMA) store as
    ( tablespace TAB_BLOB_CORSO1
    storage(initial 150k next 150k)
    chunk 16k
    nocache logging
    INDEX INDX_CORSO_PROGR (TABLESPACE INDX_CORSO_PROGR
    STORAGE (INITIAL 40K NEXT 40K PCTINCREASE 0)))

    Spero ci sia qualcuno che mi possa aiutare, grazie in anticipo.
    Marlena

  2. #2
    Utente di HTML.it
    Registrato dal
    Jun 2001
    Messaggi
    271
    a me funziona il dimensionamento dell'indice, ti faccio vedere un esempio da me utilizzato. Prova ad adattarlo per le tue esigenza

    CREATE TABLE ACQUISIZIONI (
    ID NUMBER(9) NOT NULL,
    DATA_E_ORA_INVIO_EMAIL DATE NULL,
    DATA_E_ORA_RICEZIONE_EMAIL DATE NULL,
    DATA_E_ORA_ACQUISIZIONE DATE DEFAULT SYSDATE NULL,
    PT_CODA_ACQUIS2CODE NUMBER(9) NOT NULL,
    EMAIL_MITTENTE VARCHAR2(100) NULL,
    EMAIL_DESTINAZIONE VARCHAR2(100) NULL,
    OGGETTO VARCHAR2(4000) NULL,
    CONTENUTO CLOB NULL,
    PAGINE_FAX NUMBER NULL,
    NUMERO_FAX_MITTENTE VARCHAR2(20) NULL,
    FILE_TIFF VARCHAR2(255) NULL,
    RC_STATO CHAR(1) NULL,
    PT_UTENTE_STOR2APP_UTENTI NUMBER(9) NULL
    )
    LOB(CONTENUTO)
    STORE AS LOBSEG_ACQUISIZIONI (
    TABLESPACE T_SERVIZIO
    STORAGE (
    INITIAL 20M
    NEXT 5M
    MINEXTENTS 1
    MAXEXTENTS 505
    BUFFER_POOL DEFAULT
    )
    INDEX LOBIDX_ACQUISIZIONI (
    TABLESPACE T_IND_SERVIZIO
    STORAGE (
    INITIAL 5M
    NEXT 1M
    MINEXTENTS 1
    MAXEXTENTS 505
    BUFFER_POOL DEFAULT
    )
    )
    )
    PCTFREE 10
    PCTUSED 20
    INITRANS 1
    MAXTRANS 255
    TABLESPACE T_SERVIZIO
    STORAGE (
    INITIAL 10M
    NEXT 5M
    MINEXTENTS 1
    MAXEXTENTS 505
    BUFFER_POOL DEFAULT
    )
    LOGGING
    ;


    Ciao

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2001
    Messaggi
    271
    quando hai fatto la prova, mi fai sapere come e' andata?

  4. #4
    Utente di HTML.it
    Registrato dal
    Nov 2002
    Messaggi
    8

    Problema non ancora risolto!

    Ho provato a seguire lo script che pasaran mi ha suggerito, ma purtroppo a me non non va bene, non so se dipende dalla versione di Oracle.
    Ecco lo script che ho lanciato, di seguito riporto ciò che invece Toad mi fa vedere come risultato.

    CREATE TABLE T_CORSO1
    (
    CODICE_CORSO NUMBER(6),
    CODICE_DOCENTE NUMBER(6),
    DESCRIZIONE VARCHAR2(200),
    DURATA VARCHAR2(15),
    PROGRAMMA BLOB,
    COSTO_CORSO NUMBER(9,2)
    )
    LOB(PROGRAMMA) store as
    ( tablespace TAB_BLOB_CORSO1
    storage(initial 500k next 150k)
    chunk 16k
    nocache logging
    INDEX INDX_CORSO_PROGR (TABLESPACE TAB_BLOB_CORSO1
    STORAGE (INITIAL 40K NEXT 40K minextents 1 maxextents 99 PCTINCREASE 0)))

    PCTFREE 10 PCTUSED 40
    INITRANS 1 MAXTRANS 255
    STORAGE ( INITIAL 16K NEXT 8K
    minextents 1 maxextents 99
    PCTINCREASE 0 )
    TABLESPACE TAB_CORSO

    ****************************
    Ecco invece cosa risulta:

    CREATE TABLE T_CORSO1 (
    CODICE_CORSO NUMBER (6),
    CODICE_DOCENTE NUMBER (6),
    DESCRIZIONE VARCHAR2 (200),
    DURATA VARCHAR2 (15),
    PROGRAMMA BLOB,
    COSTO_CORSO NUMBER (9,2))
    TABLESPACE TAB_CORSO NOLOGGING
    PCTFREE 10
    PCTUSED 40
    INITRANS 1
    MAXTRANS 255
    STORAGE (
    INITIAL 16384
    NEXT 8192
    MINEXTENTS 1
    MAXEXTENTS 99
    FREELISTS 1 FREELIST GROUPS 1 )
    NOCACHE;


    CREATE UNIQUE INDEX INDX_CORSO_PROGR ON
    T_CORSO1()
    TABLESPACE TAB_BLOB_CORSO1 PCTFREE 10
    STORAGE(INITIAL 40960 NEXT 155648 PCTINCREASE 50 )


    Lo storage è diverso da quello che ho settato!!!!!!
    Mi interessa conoscere come Oracle stabilisce la dimensione dell'indice del Blob e perchè non rispetta lo script.

    Grazie anticipatamente a chiunque mi voglia aiutare.

    Marlena

  5. #5
    Utente di HTML.it
    Registrato dal
    Jun 2001
    Messaggi
    271
    per cortesia, dallo stesso utente con cui hai creato la tabella puoi eseguire le seguenti select e farmi sapere il risultato:

    select initial_extent, next_extent from user_segments
    where segment_name='T_CORSO1';

    select initial_extent, next_extent from user_segments
    where segment_name='INDX_CORSO_PROGR';

    fammi sapere
    ciao

  6. #6
    Utente di HTML.it
    Registrato dal
    Jun 2001
    Messaggi
    271
    Ciao, riguardando meglio il comando da te eseguito, è corretto che Toad ti mostri quel dimensionamento, visto che è quello da te richiesto, mi spiego meglio:

    Riporto la tua istruzione:


    CREATE TABLE T_CORSO1
    (
    CODICE_CORSO NUMBER(6),
    CODICE_DOCENTE NUMBER(6),
    DESCRIZIONE VARCHAR2(200),
    DURATA VARCHAR2(15),
    PROGRAMMA BLOB,
    COSTO_CORSO NUMBER(9,2)
    )
    LOB(PROGRAMMA) store as
    ( tablespace TAB_BLOB_CORSO1
    storage(initial 500k next 150k)
    chunk 16k
    nocache logging
    INDEX INDX_CORSO_PROGR (TABLESPACE TAB_BLOB_CORSO1
    STORAGE (INITIAL 40K NEXT 40K minextents 1 maxextents 99 PCTINCREASE 0)))

    PCTFREE 10 PCTUSED 40
    INITRANS 1 MAXTRANS 255
    STORAGE ( INITIAL 16K NEXT 8K
    minextents 1 maxextents 99
    PCTINCREASE 0 )
    TABLESPACE TAB_CORSO

    i valori della tabella sono quelli riportati in rosso, mentre quelli in verde sono i valori dell'indice. Sono poi quelli che ti riporta Toad ce che ti dovrebbero tornare dalle select che ti ho dato precedentemente. Tu voui sapere se ha dimensionato bene lo store, quindi esegui questa select e ti dovrebbe tornare il valore da te richiesto.

    Falla se hai solo una tabella con i dati di tipo lob, se ne hai più di una bisogna procedere in un altro modo.

    select initial_extent, next_extent from user_segments
    where segment_name in (select segment_name from user_lobs);

    Dovresti vedere i valori che tu hai specificato.

    Fammi sapere
    Ciao

  7. #7
    Utente di HTML.it
    Registrato dal
    Nov 2002
    Messaggi
    8

    Il risultato della select

    Ciao, come puoi vedere dalle select lo script da me lanciato non è
    rispettato in tutto da Oracle in quanto dimensiona correttattamente
    la tabella e il Blob, ma non l'indice.
    Mi potresti scrivere qual è la tua versione di Oracle?

    SQL> select initial_extent, next_extent from user_segments
    2 where segment_name='T_CORSO1';

    INITIAL_EXTENT NEXT_EXTENT
    -------------- -----------
    16384 8192

    SQL> select initial_extent, next_extent from user_segments
    2 where segment_name='INDX_CORSO_PROGR';

    INITIAL_EXTENT NEXT_EXTENT
    -------------- -----------
    40960 155648

    Marlena

  8. #8
    Utente di HTML.it
    Registrato dal
    Jun 2001
    Messaggi
    271
    Ciao scusami, ma ho provato anche su un mio ambiente, ed è la stessa cosa, la versione è la 8.1.5, facendo una ricerca su metalink, il forum della oracle ho trovato il seguente bug che credo faccia al caso tuo. Ti invio la documentazione. In poche parole sembra che l'assgnazione degli extent sia randomica. Il bug è il numero 1160030 ti riporto solo la parte che ti interessa:


    1. Cleardescription of the problem encountered: Ct is creating a table with 3 columns. 2 of the columns are CLOB datatype. The ct is issuing storage clauses withthe creation of the CLOB and it's index. Ct is specifying a different tablespace for the CLOB than the CLOB object itself. The storage parameters are being ignored and the CLOB index is being stored in the same tablspace as the CLOB object, and with random definitions of extent sizes and alike.

    Ciao

  9. #9
    Utente di HTML.it
    Registrato dal
    Nov 2002
    Messaggi
    8

    bug di Oracle

    Ciao, innanzitutto grazie per il suggerimento.
    Mi potresti far sapere se il bug si riferisce a Oracle 8i e se la versione 9i o qualche altra versione ha colmato il bug? Ti chiedo questo perchè ho provato a registrarmi su metalink, ma mi ha chiesto il support identifier che non conosco.
    Grazie in anticipo, Marlena

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.