Creazione indici e occupazione spazio

Per ogni tabella che ha associata una chiave primaria, viene creato automaticamente dal sistema di un indice con dimensioni di default (quindi molto piu' grande del necessario) che ha nome dato di default. Quidi e' bene creare un indice in modo esplicito su ogni chiave primaria, assegnandogli un nome significativo e i parametri di storage appropriati.
Esempio:
 CREATE TABLE nome_tab .... come al solito ma attenzione a non creare subito la chiave primaria

 CREATE INDEX nome_index ON nome_tab(nome_campo)    
      STORAGE (
           INITIAL 20
           NEXT 2
           MINEXTENTS 1
           MAXEXTENTS 40 
           PCTINCREASE 10)
      TABLESPACE nome_tablespace
      PCTFREE 15

nota:  per esprimere in byte le dimensioni del initiale del next, non si fa seguire al numero
nessuna lettera, INITIAL 20, invece per specificare la dimensione in Kilobyte: 20K e in Megabyte: 20M

ALTER TABLE nome_tab ADD CONSTRAINT nome_constr PRIMARY KEY(nome_campo)

Problematiche circa i Blob:


Funzioni o Procedure PL/SQL a tempo:

é possibile schedulare a intervalli di tempo una funzione o procedura o comando PL/SQL, per questo e' necessario esista (almeno) un processo di Oracle che "ascolti" soddisfi le richiesta a scadenze di orologio_job.
Invece il programmatore ha a disposizione il package oracle PL/SQL DMS_JOB nel quale e' compresa la funzione submit

  DMS_JOB.submit(job, what, next, interval, parse)
    job:   OUT NUMBER per contenere il numero del job dato dal sistema al suo lancio
    what:  IN VARCHAR2 comando o procedura o funzione da eseguire  'execute(nome_procedura)' 
                       'begin  ...comandi pl/sql... end;' 
    next:  IN DATE data del 1 lancio  sysdate lancio immediato
    interval: IN VARCHAR2 porzione di giorno ogni quanto la funzione sara' rischedulata
	                  12/24 ogni dodici ore, 1/1040 ogni minuto.
    parse: IN BOOLEAN flag che indica se iniziare subito lo scheduling o partire da next

  Esempio:
  DMS_JOB.submit(j,'execute(prova)', sysdate, 'TRUNC(sysdate+1)+12/24',1)
 


FAQ

  1. Quando si cerca di caricare una servlet, sebbene il path sia corretto ed file class presente all'indirizzo dato, il servente Apache da come errore Internal Server Error.
    Questo errore è dovuto al fatto che probabilmente non si sono impostati i permessi corretti di accesso al file class. I permessi necessari sono: lettura, scrittura, esecuzione al proprietario, lettura ed esecuzione sia al gruppo che a tutti.
  2. I dati inseriti con SQLPlus sono scomparsi.
    Si verifica quando, dopo aver fatto delle modifiche al database o introdotto nuovi dati, si è cliccato sul tasto di chiusura della finestra del programma, senza prima fare una istruzione di commit(SQL>commit;). E' quindi bene eseguire tale istruzione oppure uscire dall'applicazione con il comando exit.
  3. Dopo aver cancellato una tabella, il trigger associato è stato cancellato.
    Questo è normale, in quanto una volta cancellata la tabella anche i triggers che lavorano su di essa vengono cancellati.
  4. Il comando javac non riesce a trovare il file che si vuole compilare
    Se si è nella directory corretta ed il nome del file è anch'esso corretto, questo può essere dovuto al fatto che il proprio path punta ad una vecchia versione di java, occorre quindi impostarlo affinchè punti alla versione 1.3:
    set path=d:\jdk1.3\bin;%path%
    Per ulteriori informazioni vedere la pagina Isttruzioni Laboratorio.
  5. La compilazione di una servlet o programma java, sotto NT, segnala che java non riesce a trovare gli Oracle driver.
    Occorre impostare il classpath affinchè esso punti alla directory in cui sono contenuti i driver JDBC.
    set CLASSPATH=d:\JavaClasses\oracle\JDBC_8.1.6_jdk1.2.zip;%CLASSPATH%
    Per ulteriori informazioni vedere la pagina Isttruzioni Laboratorio.