Caut un program care sa faca <ceva>

miahi

Wizzard
Sugar daddy
Joined
Aug 1, 2004
Messages
8,192
1) Pentru navigație poți folosi SQL Developer din pachetul Oracle DB Client; eu prefer Toad, nu-ți recomand dacă nu știi Oracle deloc pentru că poți buși multe chestii (e puternic, dar e plin de bug-uri chiar dacă e pe destui bani), dar te ajută mai mult la partea asta de administrare de spațiu. Orientat către administrare (echivalentul server management studio) e Enterprise Manager.
2) Organizarea în Oracle e pe tablespace-uri. Fiecare tablespace conține fișiere, iar fișierele îți consumă spațiu pe disc. Fișierele pot fi prealocate, caz în care consumă mai mult decât e de fapt folosit. Primul pas ar fi să identifici exact fișierele care pot fi redimensionate direct (care nu sunt alocate până la capăt). Problema e că dacă ai un fișier de 32GB gol, dar ultimul bloc din fișier are date, nu poți face resize automat la fișier, trebuie să muți manual obiectul (alter table move / alter table shrink space sau alter index rebuild).
Logurile la Oracle se numesc archivelogs. Arhivele se șterg automat la backup, dacă ștergi o arhivă care nu e backed up nu vei mai putea face recovery în caz de probleme.
3) În Oracle DB Client ai două tool-uri, imp și exp. Setezi db-ul în tnsnames.ora local și pe urmă poți face export de date local în stilul (pentru un full user):
Code:
exp user@db owner=USER file=fisier_local.dmp
Ai selectori pentru tabele, dacă vrei doar câteva tabele ale unui user. Importul se face la fel. Problema e că durează destul de mult la tabele mari (face de fapt un fel de select/insert). Dacă ai nevoie de viteză mai mare există expdp/impdp (data pump), mai rapide dar mai complicat de folosit remote.

În cazul tău aș face un tablespace nou în care aș muta toate datele utile, după care drop la restul chestiilor. Baza de date mai e utilizată sau ești singur pe plantație, poți să tai liniștit?

Putem discuta pe yahoo pentru mai multe detalii.
 

AdrianB1

Membru Senior
Sugar daddy
Joined
Aug 3, 2004
Messages
7,877
Baza de date mai e utilizata de un Business Connector care era planificat sa fie mutat de un an, dar planul curent e pentru vara asta. Tot ce face e sa se uite in niste tabele marunte ca sa vada niste configurari ("nomenclatoarele" de care pomeneam), restul sunt tabele tranzactionale ce nu mai contin nimic util si pe alea vreau sa le sterg.

Suna destul de complicat fata de MS SQL unde e click and do, te contactez pe YM dar nu astazi sau maine, sunt ingropat in timpul zilei si nu stiu daca ai timp si chef la noapte de asa ceva. Pana atunci ce sa caut sa instalez, SQL Developer, Toad sau Enterprise Manager?
 

miahi

Wizzard
Sugar daddy
Joined
Aug 1, 2004
Messages
8,192
Pune Toad dacă poți, m-am uitat acum la ce știe SQL Developer pe partea de administrare de tablespace și e cam trist. Baza rămâne rularea de SQL-uri de mână, deci nu e o problemă nici cu ăla, dar vizualizarea e mult mai bună în Toad. Instalează în primul rând un Oracle Client pe 32bit, îți trebuie oricum pentru imp/exp și pentru Toad (neapărat 32bit pentru Toad), și o să-ți instaleze și SQL Developer. Și îți mai trebuie un user cu drepturi de DBA.

Ca punct de plecare, un script care îți listează tabelele unui utilizator în ordinea mărimii:
Code:
select owner, table_name, num_rows, table_size, lob_size, index_size,  table_size+lob_size+index_size total from (
select t.owner, t.table_name, t.num_rows,
nvl((select sum(bytes/1024/1024) "SUM1" from dba_segments where owner=t.owner and segment_name=t.table_name),0) table_size,
 nvl((select sum(bytes/1024/1024) "SUM2" from dba_segments where owner=t.owner and segment_name in
      (select segment_name from dba_lobs where owner=t.owner and table_name=t.table_name)),0) lob_size,
nvl((select sum(bytes/1024/1024) "SUM3" from dba_segments where owner=t.owner and segment_name in (select index_name from dba_indexes where owner=t.owner and table_name=t.table_name)),0) index_size      
from dba_tables t where status='VALID' and owner='UTILIZATOR'
) order by total desc;
Cu mențiunea că num_rows e din statistici (estimat), nu real.

BTW, dacă ai tablespaces separate pentru indecși poți porni cu drop index pe tabelele care nu mai sunt folosite, pentru că în multe cazuri (depinde de tipul aplicației) indecșii sunt mai mari decât tabelele efective. Dacă nu ai tablespaces separate poți porni de la același lucru, dar rezultatul nu e la fel de vizibil (vei putea elibera spațiul abia după ce ștergi/muți și restul de obiecte din tablespace).

LLE: am mai "produs" un script, e ceva mai lent lent dar îți dă, pentru un tablespace, dimensiunea minimă a fișierelor și ultimul obiect care ocupă spațiu (adică de ce nu poate fi redus mai mult).
Code:
SELECT s2.file_id, df.file_name, (s2.owner || '.' || s2.segment_name) last_obj, s2.segment_type obj_type, (s2.blocks+s2.block_id) * dt.block_size/1024/1024 min_file_size_mb  
  FROM (  SELECT file_id, MAX (block_id) max_block, max(tablespace_name) tablespace_name
            FROM sys.dba_extents
           WHERE tablespace_name = 'TABLESPACE_NAME'
        GROUP BY file_id) s1, 
        sys.dba_extents s2,
        SYS.DBA_TABLESPACES dt, 
        SYS.DBA_DATA_FILES df         
        where S2.BLOCK_ID=s1.max_block
         and S1.FILE_ID=s2.file_id 
         and s1.tablespace_name = s2.tablespace_name
         and dt.tablespace_name = s1.tablespace_name
         and df.file_id=s2.file_id

Pașii pe care i-aș face eu:
- export schema (din toad sau altceva), ca să poți recrea obiecte șterse fără multă muncă (ex: script-uri de creare a unui index)
- identificarea tablespace-urilor și cam ce conțin, ordine de mărime pentru tabele (primul script din post pentru dimensiunea tabelelor, plus script-ul de mai jos pentru aflat fiecare tabelă în ce tablespace-uri are toate obiectele)
Code:
  SELECT dt.owner, dt.table_name, ds.tablespace_name, ds.segment_name obj, max(segment_type) obj_type, SUM (bytes) size
    FROM dba_tables dt, dba_segments ds
   WHERE     dt.status = 'VALID' AND dt.owner = 'UTILIZATOR'
         AND ds.owner = dt.owner
         AND ds.segment_name in(
         select dt.table_name from dual union 
         SELECT segment_name FROM dba_lobs WHERE owner = dt.owner AND table_name = dt.table_name  union  
          SELECT index_name FROM dba_indexes WHERE owner = dt.owner AND table_name = dt.table_name)
GROUP BY dt.owner, dt.table_name, ds.tablespace_name, ds.segment_name order by owner, table_name
- drop indecși pentru tabelele care vor trebui șterse, dacă sunt în tablespaces separate
- resize la tablespaces pentru dimensiunea minimă (al doilea script pentru aflat dimensiunea minimă)
Code:
ALTER DATABASE DATAFILE 'FILE_NAME' RESIZE 15M;
- verificat că nu a scăzut performanța aplicației care încă mai folosește tabelele (semn că ai șters mai mulți indecși decât trebuie) pe o perioadă de timp
- exp la tabelele importante
- creat tablespace nou pentru obiectele care rămân, cu fișiere autoextend în pași mici (100MB)
- alter table move + alter index rebuild pentru mutat obiectele care rămân în tablespace-ul nou - în funcție de versiune/opțiuni de Oracle poți să faci asta online sau nu
Code:
alter table UTILIZATOR.TABELA move tablespace TABLESPACE_NAME
Atenție, după move indecșii asociați tabelei devin invalizi (pentru că indexul conține adresa blocului, și asta se schimbă la move), așa că trebuie neapărat rebuild pentru ei. Poți genera codul de rebuild pentru o tabelă rulând script-ul
Code:
select 'alter index '||index_name||' rebuild tablespace TABLESPACE_NAME ;' from dba_indexes where owner='UTILIZATOR' and table_name='TABELA';
- resize la tablespaces pentru dimensiunea minimă și văzut ce mai încurcă (al doilea script)
- drop la tablespaces care nu mai au obiecte
Code:
drop tablespace TABLESPACE_NAME including contents and datafiles;

Vezi că dacă dai drop la o tabelă nu se eliberează imediat spațiul, există conceptul de recycle bin - poți vedea obiecte cu nume gen BIN$ prin reuzltatele script-urilor.
 

war4peace

Membru Senior
Joined
Dec 20, 2004
Messages
4,510
Cred că opţiunea cea mai simplă, click'n'go, este Navicat for Oracle. Ai 30-day trial, mai mult decât suficient ca să îţi faci treaba. Eu folosesc asta şi SQL Developer - pentru chestii de bază deocamdată (creare de tabele, pus date în ele, rulat ceva SQL Statements, back-up, nimic special).

Ştie cineva un serviciu de bookmark sync online, în afară de XMarks? Folosesc XMarks de ceva vreme, dar de vreo două săptămâni îmi multiplică folder-ele, creează empty folders la greu, de cel puţin 10 ori pe zi. E iritant la culme.
 

AdrianB1

Membru Senior
Sugar daddy
Joined
Aug 3, 2004
Messages
7,877
Ştie cineva un serviciu de bookmark sync online, în afară de XMarks? Folosesc XMarks de ceva vreme, dar de vreo două săptămâni îmi multiplică folder-ele, creează empty folders la greu, de cel puţin 10 ori pe zi. E iritant la culme.

Opera Link.
 

war4peace

Membru Senior
Joined
Dec 20, 2004
Messages
4,510
Îmi trebuie pentru Firefox şi Chrome. No social shit. Numai bookmarks.
Dacă adaug un bookmark în folder-ul A la lucru, să îl am şi acasă în folder-ul A, când ajung. Dacă acasă îl şterg după ce citesc un articol, să-mi dispară şi de la lucru din bookmarks.
 

IceCub

Membru Senior
Joined
Jun 27, 2005
Messages
2,486
Tu vrei sincronizare Foirefox <-> Chrome?
Ambele au functii de sincronizare ("din fabrica") doar ca nu sunt compatibile intre ele.
 

termita

Membru Senior
Joined
Oct 7, 2004
Messages
257
Chrome nu face singur asta daca te loghezi cu contul de Google? stiu ca pe mine ma tot bate la cap de ceva vreme cu chestia asta, dar inca n-am incercat.
 

war4peace

Membru Senior
Joined
Dec 20, 2004
Messages
4,510
Chrome face asta, dar la lucru (şi acasă) lucrez şi cu Chrome, şi cu Firefox, şi am nevoie de aceleaşi bookmarks pentru toate.
Doar ce mă uitai şi iar am o grămadă de empty folders, dublate, în bookmarks. Trebuie de fiecare dată să mă duc online pe site-ul XMarks, să intru în contul meu de acolo, în Tools, Deduplicate Bookmarks, unde am un buton numit "Xmarks Empty Folder Remover". Dau click, el caută singur, afişează folder-ele goale, dau click pe "Remove Folders", apoi fac o sincronizare forţată. Cale de o oră-două, totul e OK, apoi iar apare rahat în plus, şi m-am cam săturat.
 

miahi

Wizzard
Sugar daddy
Joined
Aug 1, 2004
Messages
8,192
Ai încercat să dezinstalezi și să instalezi din nou Xmarks pe toate calculatoarele, sau să creezi un cont nou? Din ce descrii pare că unul din browsere s-a "pierdut" și i se pare că nu-s aceleași bookmarks ca pe server, și atunci le creează din nou - iar celelalte doar primesc update-urile.
 

Neo

Motan agresif
Sugar daddy
Joined
Oct 16, 2005
Messages
9,951
Nu, XMarks chiar sunt de cacao în ultima vreme, am și eu probleme majore cu ele și fix aceeași problemă, între FF și Chrome. Ce am identificat eu este că Firefox adaugă într-un folder care nu se poate șterge numit "unsorted bookmarks" bookmarks pe care le faci clickăind steluța galbenă. Numai că la mine de exemplu adaugă bookmarks aiurea care le am deja în folderul ăla. Xmarks sincronizează chestia și ajung cu 10000 bookmarks în Xmarks, apoi clachează FF sync.

Problema este FF Sync <-> Xmarks <-> Chrome sync, pe undeva ceva crapă.
 

war4peace

Membru Senior
Joined
Dec 20, 2004
Messages
4,510
Culmea e că nu am mai folosit XMarks pentru firefox de-o vreme (cam 2 luni), acum am sync fix între două browser-e Chrome, şi tot o ia razna.
Am dezinstalat XMarks pe toate calculatoarele (reinstalare OS), separat, nu deodată, dar nu am văzut nicio schimbare. Cont nou ar fi de încercat, poate aşa se schimbă ceva.
Acuma mă uitai şi iar am foldere dublate. GAAAH.
 

AdrianB1

Membru Senior
Sugar daddy
Joined
Aug 3, 2004
Messages
7,877
Pune Toad dacă poți, ...

Pana acum merge onorabil treaba, doar ca nu am drept de drop tablespace (am rugat pe cineva sa o faca pentru mine, sa vad ce zice) si nu stiu sa mut un index tip lob. O sa mai am de lucru vreo 2 zile la curatenie :smile:
 

miahi

Wizzard
Sugar daddy
Joined
Aug 1, 2004
Messages
8,192
Alter table TAB move lob(COLOANA_LOB) store as (tablespace T). Lob-urile sunt trate ca segmente diferite, nu se muta impreuna cu tabela - iti permite sa le tii pe storage mai mare/lent/ieftin daca nu le freci tot timpul.
 

Marius '95

Membru Senior
Sugar daddy
Joined
Nov 13, 2005
Messages
4,871
Ca o alternativa la VoIP, caut un messenger cu audio/video si conectare directa peer-to-peer pentru fluxul audio/video, preferabil complet fara server.
 

AdrianB1

Membru Senior
Sugar daddy
Joined
Aug 3, 2004
Messages
7,877
Netmeeting. Merge excelent chiar si pe platforme foarte vechi, il foloseam pe dial-up pentru videoconferinte cu ai mei cand nu erau in tara.
 

Marius '95

Membru Senior
Sugar daddy
Joined
Nov 13, 2005
Messages
4,871
Oh, shit. :smile: Nu cred ca-l am. Era pe lista in nLite si nu m-am putut abtine. :tongue:
Dar multumesc pentru sugestie. Sigur se poate instala manual. :wink: Testez diseara.

LE:
Nu merge. Celalalt PC are Windows 7. Stiu ca poate fi instalat intr-o masina virtuala dar e prea complicat.
Alte idei?
 
Last edited:

AdrianB1

Membru Senior
Sugar daddy
Joined
Aug 3, 2004
Messages
7,877
Blasfemie, Win 7? Pai daca nu spui ca ai luat-o pe aratura cum sa iti dam o idee buna? Maine-poimaine vii si spui ca iti trebuie o aplicatie Win 8 si din cauza socului o sa ramanem incremeniti multa vreme.
 
Top Bottom