lunedì 4 novembre 2013

Oracle: free space on datafile

Per recuperare dello spazio disco è possibile restringere i DATAFILE di Oracle. Per farlo è sufficiente usare il comando:

ALTER DATABASE DATAFILE '<path_to_datafile>' RESIZE <size>;

Per non andare per tentativi con questa procedura SQL è possibile ricavare quanto spazio libero ci sia per ogni DATAFILE, raggruppando il tutto per TABLESPACE:

SET PAUSE ON
SET PAUSE 'Press Return to Continue'
SET PAGESIZE 60
SET LINESIZE 300
COLUMN "Tablespace Name" FORMAT A20
COLUMN "File Name" FORMAT A80
 
SELECT  Substr(df.tablespace_name,1,20) "Tablespace Name",
        Substr(df.file_name,1,80) "File Name",
        Round(df.bytes/1024/1024,0) "Size (M)",
        decode(e.used_bytes,NULL,0,Round(e.used_bytes/1024/1024,0)) "Used (M)",
        decode(f.free_bytes,NULL,0,Round(f.free_bytes/1024/1024,0)) "Free (M)",
        decode(e.used_bytes,NULL,0,Round((e.used_bytes/df.bytes)*100,0)) "% Used"
FROM    DBA_DATA_FILES DF,
       (SELECT file_id,
               sum(bytes) used_bytes
        FROM dba_extents
        GROUP by file_id) E,
       (SELECT Max(bytes) free_bytes,
               file_id
        FROM dba_free_space
        GROUP BY file_id) f
WHERE    e.file_id (+) = df.file_id
AND      df.file_id  = f.file_id (+)
ORDER BY df.tablespace_name,
         df.file_name


Solaris: Memoria e Core

Oggi ho dovuto recuperare informazioni hardware per i sistemi Solaris. Riporto un po' dei comandi che ho utilizzato.
Per recuperare le informazioni relative alla memoria il comando è
prtconf | grep Mem
Per recuperare informazioni relative ai Core il comando è
psrinfo -pv
Oltre a questi comandi sono utili anche
uname -a
isainfo -kv
per recuperare informazioni sul sistema operativo.

Oracle: import di uno schema da un utente ad un altro.

Per questa attività è necessaria la creazione di una directory all'interno dell'istanza target di ORACLE su cui andrà messo il file da importare.
create or replace directory <TARGET_DIR> as '<path>';
grant read, write on directory <TARGET_DIR> to <user_target>;
I grant di read e write sulla directory vanno assegnati anche all'utente system.
La directory <path> sul File System deve essere accessibile in lettura e scrittura all'utente unix con cui il database viene eseguito (nel mio caso oracle).
Una volta superati questi check è sufficiente dare:
impdp system/<password> SCHEMAS=<schema> \
            remap_schema=<user_orig>:<user_target> \
            remap_tablespace=<user_orig>:<user_target> \
            directory=<TARGET_DIR> \
            dumpfile=<DMP_FILE> logfile=<LOG_FILE>

giovedì 3 gennaio 2013

Jboss e file di properties

Fin dal primo approccio a jboss mi sono imbattuto nel problema dei file di properties utilizzati dalle mie applicazioni java. Al contrario di quanto accade su tomcat, il deploy dei war non è di facile accesso e quindi modificare i file di properties risulta essere poco agevole. In contesti dove la stessa applicazione deve essere distribuita su più sistemi con diversi riferimenti questo inconveniente fa sicuramente sentire il suo peso.
Con l'ultimo sviluppo realizzato ho deciso di impegnarmi per aggirare l'ostacolo. Dopo alcune ricerche è saltata fuori la funzione

System.getProperty("jboss.server.config.dir")

che restituisce il path a <JBOSS_HOME>/standalone/configuration (per il deploy sotto jboss 7). Concatenando questo path al nome del file di properties ho così la possibilità di posizionare i file in una directory dove siano facilmente accessibili.
Al momento ho potuto verificare questa procedura solo per la modalità standalone di jboss.