Newsgroup: it.comp.software.database
Titolo: [oracle] Importazione fallita

avevo creato l'user , il tablespace del db da importare
assegnato tutti i previligi necessari all'user e poi fatto la imp
dopo 2 ore si e' bloccata...ora mi ritrovo con meta' tabelle vuote e meta'
 piene cosa conviene fare ? droppare l'user e ricrearlo?
o rifare l'importazione?
Grazie. 
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 dopo 2 ore si e' bloccata...ora mi ritrovo con meta' tabelle vuote e meta'
che significa si è bloccata?
l'imp ha dato qualche errore?
hai un log dell'import?
controllato l'alert?
controllato i file di trace?
 > piene cosa conviene fare ? droppare l'user e ricrearlo?
no... importi solo le tabelle che non sei riuscito ad importare
/G

 Grazie. 
A mio parere ti conviene cancellare l'utente. Poi ricordati di fare un
coalesce delle tablespace che hai svuotato. Quindi rifai l'importazione.
Se rifai l'importazione devi specificare ignore=y. Ma inquesto caso rischi
di perdere messaggi che sarebbe meglio vedere. E' comunque un'alternativa
possibile.
Piuttosto cerca di capire perchè si è bloccata. Se è un problema di
rollback segment... il discorso si amplia.
-- 
----------------------------------
e-mail: scrivi 011 in lettere


 coalesce delle tablespace che hai svuotato. Quindi rifai l'importazione.
 
quindi te dici che basta un drop user...
l'importazione credo sia fallita per colpa di un'altra applicazione
che girava in contmporanea :-(
thx
-- 


 no... importi solo le tabelle che non sei riuscito ad importare
non faccio prima a droppare l'user? visto che sono una sessantina di
tabelle.. a quale inconveniente vado incontro?
thx


 Grazie.
nell'ordine:
1 verifichi perche' si e' fermata la imp
1.1 log=exp$sid.log nel comando di import
1.2 user_dump_dest, alert$sid.log
2 io di solito butto via tutto, unix, e rifo
    tanto ho gli script dell'istanza, slavo non abbia java
    ecc.,
    naturalemnte se al passo precedente hai trovato i bug
    correggili, vedi rbs space ecc..
3 era una export system/full/consistent ?
3.1 import daccapo
felice_pago
-
--------------------------------
Inviato via 
http://usenet.libero.it

 3.1 import daccapo 
se il problema era indipendente dall' importazione (tipo mancanza di
corrente)  faccio drop user e rifaccio l'imp ?
thx


 tabelle.. a quale inconveniente vado incontro?
nessuno... dipende quanto sono grandi le tabelle...
/G

 coalesce delle tablespace che hai svuotato. Quindi rifai l'importazione.
a che servirebbe il coalesce delle TS in questo caso?
/G

 /G
Ad unire i free extent dopo che hai cancellato le tabelle


 /G
Ad unire i free extent dopo che hai cancellato le tabelle
-- 


 Ad unire i free extent dopo che hai cancellato le tabelle
Ricapitolando:
drop user
alter tablespace xx coalesce 
se io prima di fare il coalesce faccio
SELECT BLOCK_ID, BYTES, BLOCKS
FROM DBA_FREE_SPACE
WHERE TABLESPACE_NAME = 'xx'
ORDER BY BLOCK_ID;
BLOCK_ID BYTES        BLOCKS
---------- ---------- ----------
2         16384       2
4         16384       2
6         81920       10
16        16384        2
una volta fatto il coalesce ... ho un unico BLOCCO?
Infine il coalesce andrebbe fatto periodicamente su un database
per ottimizzarlo?
thx
-- 


 /G
ok droppo l'user e coalesco  :-)


 thx
-- 
----------------------------------
e-mail: scrivi 011 in lettere
questo articolo e` stato inviato via web dal servizio gratuito 


 produzione. Almeno per quanto riguarda la mia esperienza.
piu' che altro quando non puoi piu fare extent :)
te lo dice l'ultima colonna
certo prima di fare il coalesce dovresti liberare lo spazio non
usato, unused keep xxKB
----inizio script------
set serveroutput on size 1000000
set pagesize 10000
set linesize 100
set sqlprompt ' '
set time off
set timing off
set feedback off
declare
  space_all number(10) := 0;
  free_all number(10) := 0;
  used_all number(10) := 0;
  TS_ALL number(10);
  TS_FREE number(10);
  TS_USED number(10);
  TS_MAX_FREE number(10);
  TS_MAX_NEXT_EXT number(10);
  TS_CAP number(10);
  TS_CAP_PROC number(10);
  TS_FREE_PROC number(10);
  TS_CAP_STATUS char(10);
  TS_WARN_SIZE number(4);
  TS_ALERT_SIZE number(4);
  TS_DATE char(16);
  nome_host char(10);
  nome_db char(10);
 
  cursor TS_CUR is
    select tablespace_name,sum(bytes)
    from dba_data_files
-- where tablespace_name like 'WK_SK%'
    group by tablespace_name
    order by tablespace_name;
begin
 
  TS_WARN_SIZE:=1000;
  TS_ALERT_SIZE:=500;
  select to_char(sysdate,'DD/MM/YYYY HH24:MI') into TS_DATE from dual;
  select host_name, instance_name
    into nome_host,
         nome_db
  from v$instance;
  DBMS_output.put_line('=======================================================================================');
  DBMS_output.put_line('Tablespace Report di -> '||nome_db||' su
'||nome_host||' - Date:'||TS_DATE);
  DBMS_output.put_line('=======================================================================================');
  DBMS_output.put_line('Tablespace TOTAL TOT_USED TOT_FREE MAX_FREE
MAX_NEXT_EXT %FREE WARN');
  DBMS_output.put_line('---------------------------------------------------------------------------------------');
  FOR FC IN TS_CUR LOOP
     -- Size(MB)
     select sum(bytes)/1024
       into TS_ALL
       from dba_data_files
      where tablespace_name = FC.tablespace_name;
     space_all := space_all + ts_all;
     -- Free(MB)
     select nvl(sum(bytes)/1024,0)
       into TS_FREE
       from dba_free_space
      where tablespace_name = FC.tablespace_name;
     -- spazio libero totale
     free_all := free_all + ts_free;
     --spazio usato totale
     ts_used:= ts_all - ts_free ;
     select nvl(max(next_extent)/1024,0)
       into TS_MAX_NEXT_EXT
       from dba_segments
      where tablespace_name = FC.tablespace_name;
     -- nvl for autoallocating
     select nvl(max(bytes)/1024,0)
       into TS_MAX_FREE
       from dba_free_space
      where tablespace_name = FC.tablespace_name;
    TS_CAP := TS_ALL - TS_FREE;
    TS_CAP_PROC := 100 * TS_CAP / TS_ALL;
    TS_FREE_PROC := 100 - TS_CAP_PROC;
    TS_CAP_STATUS := 'OK';
    if (TS_FREE_PROC <= 10 ) then --and TS_FREE<= TS_WARN_SIZE) then
        TS_CAP_STATUS := '<===';
        if (TS_FREE_PROC <= 10 ) then --and TS_FREE <= TS_ALERT_SIZE) then
            TS_CAP_STATUS := '<==!';
        end if;
    end if;
    if (TS_MAX_NEXT_EXT > TS_MAX_FREE) then
        TS_CAP_STATUS := '<==!';
    end if;
    dbms_output.put_line(rpad(FC.tablespace_name,19)
                       ||lpad(TS_ALL,8)
                       ||lpad(ts_used,11)
                       ||lpad(TS_FREE,10)
                       ||lpad(TS_MAX_FREE,11)
                       ||lpad(TS_MAX_NEXT_EXT,14)
                       ||lpad(TS_FREE_PROC,7)||'% '
                       ||rpad(TS_CAP_STATUS,7));
  END LOOP;
used_all := space_all - free_all;
  DBMS_output.put_line('========================================================================================');
dbms_output.put_line(rpad('TOTALI',19)
                   ||lpad(space_all,8)
                   ||lpad(used_all,11 )
                   ||lpad(FREE_all,10));
end;
/
set sqlprompt 'SQL >'
set time on
set timing on
set feedback on
set pagesize 1000
set linesize 140
spool off
clear columns
------fine script ----------


 > thx
sto facendo un porting da ora 7 a ora 9.2
le prestazione del vecchio ora sono un po' scadute... il coalesce pensavo
di farlo anche su quello
dai risultati della query che ti ho fatto vedere sopra 
lo puoi vedere se ci sono blocchi contigui??? 
-- 


 corrente) faccio drop user e rifaccio l'imp ?
ah beh !
direi di si,
solo user va bene.


 lo puoi vedere se ci sono blocchi contigui??? 
Sono tutti contigui.
il primo extent parte dal blocco 2, è lungo 2, quindi occupa i blocchi 2 e
3.
Nel blocco successivo (il 4) parte l'extent successivo, quindi sono
contigui.
La tablespace in questione ha 4 extent liberi tutti contigui.
In totale hai 160KB di spazio libero. Probabilmente devi ampliare la
tablespace.
Nella 9 la gestione degli extent è cambiata un po'. Ha automatizzato
parecchie cose.
Se leprestazioni sono degradate probabilmente l'exp/imp migliorerà le cose.
-- 
----------------------------------
e-mail: scrivi 011 in lettere
questo articolo e` stato inviato via web dal servizio gratuito 


 Ad unire i free extent dopo che hai cancellato le tabelle
Se vuoi fare il lavoro dell'SMON... :)
IMHO non serve a nulla perchè ammettiamo che la TS sia
dictionary managed
E ammettiamo che sta cacchio di tablespace sia na groviera
l'import:
a) riutilizza gli stessi spazi sputati sputati che aveva
allocato all'inizio
b) anche se non trovasse un spazio sufficiente ci pensa SMON
a fare automaticamente un coalesce degli spazi...
e questo mi sembra sia valido dalla 7.3.4...
/G

> solo user va bene.
forse sarebbe meglio...
sql> drop user cascade;
/G

 /G
Quello che dici è giusto.
Se l'operazione di coalesce fosse lunga o richiedesse parecchie righe di
codice, allora valuterei se farla o meno.
Ma è un comando semplice, rapido e sicuro. Fai prima a farlo piuttosto che
chiederti se conviene oppure no.
Dopo il coalesce sai di essere nelle condizioni ottimali per fare un
import. Anche se qualche altro utente sta allocando spazio.


 [...]





Infatti, ho fatto la prova prima e dopo la drop...
prima avevo 4 blocchi.... dopo solo 3
mi sa che non importa coalesciare  :-)
-- 


 import. Anche se qualche altro utente sta allocando spazio.
Questo č vero fino alla 9... dalla 9i le TS sono per default locally
managed quindi il coalesce č un operazione semplicemente inutile...
Il coalesce IMHO č utile nel caso ti trovi a gestire un db non
organizzato bene e devi fare i miracoli per piazzare segmenti qua
e la nella tablespace...
Qeusto era molto vero nelle versioni  <= 7.3 di O quando l'autoextend
era il sogno erotico di tutti i DBA e il comando coalesce provocava non
poche polluzioni notturne... :)
Non vedi che dalla 7.3 sono tutti molto piů tristi? oramai fa tutto
lui...
/G

 /G
IMHO. Il coalesce non fa miracoli ma aiuta. Ritengo buona norma eseguirlo
quando si ha che fare con l'allocazione dei segmenti. Lo faccio perchè sò
che ci sono situazioni in cui diventa davvero necessario (evito gli esempi
che sarebbero noiosi).
Perchè devo scervellarmi nel capire come sono allocati gli extent per
valutarne l'utilità. (fine IMHO)
E soprattutto non ha controindicazioni!
P.S. effai sto coalesce, chetticosta! ;-)
Ciao!
