Post

Visualizzazione dei post da luglio, 2020

Convertire una colonna da Varchar2 a CLOB e conservare i dati esistenti

Il campo NOTE (attualmente è Varchar2) della tabella T2317 deve diventare di tipo CLOB mantenendo i valori esistenti. Di seguito alcune soluzioni: 1) aggiungere colonna CLOB, fare update della colonna con i valori della colonna precedente in varchar2 e successivamente eliminare colonna varchar2 e rinominare nome colonna clob al nome originale. 2) creazione della tabella con nuovo nome e il campo aggiornato e fare insert as a select ( o utilizzare conversione to_clob ). 3) export e import dei dati nella nuova tabella Caso 1 Nel mio esempio si tratta di un db versione 9. -- backup tabella exp \"sys/xxxxx as sysdba\" TABLES=(.T2317R) file=exp_T2317R.dmp log=exp_T2317R.log consistent=y Possiamo seguire due strade Opzione 1  Inserimento della nuova colonna alla fine della tabella  -- aggiungere colonna CLOB, ALTER TABLE T2317R ADD (appo CLOB); -- fare update della colonna con i valori della colonna precedente in varchar2  UPDATE T2317R SET appo = NOTE; -- successivamente eliminare

Cancellare file AUDIT più vecchi di x giorni

Sul server dove è presente il motore oracle e diverse istanze è stato messo a crontab uno script che cancella il file di audit più vecchi di 30 giorni. Si tratta di un database oracle 11gR2. I file di audit sono sotto la directory: /u01/app/oracle/admin/<SID>/adump [root@oradb01 ]# crontab -l 00 05 * * * /u01/app/oracle/work/delete_audit.sh 1>/dev/null 2>&1 [root@oradb01 ]# cat /u01/app/oracle/work/delete_audit.sh #!/bin/bash -x export retention=30 export AUD_PROD01=/u01/app/oracle/admin/PROD01/adump find $AUD_PROD01 -name "PROD01*.aud" -type f -ctime +$retention -exec rm '{}' \; export AUD_CDOCP=/u01/app/oracle/admin/DOP/adump find $AUD_CDOCP -name "DOP*.aud" -type f -ctime +$retention -exec rm '{}' \; exit 1>/dev/null 2>&1 serve per non visualizzare lo standard output ed error (a video) dello script.

ORA-00020: maximum number of processes (***) exceeded

L'errore si verifica quando il numero di processi del sistema operativo connessi al database ha superato il valore del parametro PROCESSES Vedere le sessioni\processi sul db. SQL> select current_utilization, limit_value , resource_name from v$resource_limit  where resource_name in ('sessions','processes'); processes = numero di OS user processes che possono connettersi simultaneamente sessions =user and system sessions Le sessioni è un parametro che deriva dai processi: sessions = (processes *1,5) + 22 Se cambia il valore di processes cambia anche quello di sessions. SQL> select username, count(*)  from v$session  where username = 'PERLO'  group by rollup(username);  SQL> show parameters processes; I processi attuali sono dati dalla somma dei  -  processi client attivi  ps -ef | grep <SID> |  grep -i LOCAL=NO |  wc -l - processi di background ps -ef | grep <SID> |  grep ora_ |  wc -l A questo punto si può procedere in due modi: 1) Workar

Installazione Oracle Database 19c su Centos 7

Immagine
La presente guida è stata realizzata a partire dal manuale di installazione reperibile dal sito Oracle. Si tratta di installazione single instance con creazione di un Container e Pluggable database. https://docs.oracle.com/en/database/oracle/oracle-database/19/ladbi/lot.html Configurazione Server Hardware Memoria - Runlevel 3 or 5 #who -r - RAM grep MemTotal /proc/meminfo Minima:1 GB of RAM Raccomandata: 2 GB of RAM or more At least 8 GB RAM for Oracle Grid Infrastructure installations. --Sistema operativo Linux x86-64 operating system requirements [root@coslab02 ~]# cat /etc/redhat-release CentOS Linux release 7.4.1708 (Core) [root@coslab02 etc]# uname -m x86_64 -- /tmp: almeno un 1GB [root@coslab02 ~]# df -h /tmp File system Dim. Usati Dispon. Uso% Montato su /dev/mapper/centos-root 46G 6,0G 40G 14% / - SWAP desiderata: Ram Swap Space ----------------------------------------------------------------------------------------------------- Between 1 GB and 2 GB