[ ezamur @ 04.07.2007. 14:28 ] @
Pozdrav svima

Imam sledeci problem: potrebno je napraviti backup baze podataka, ali ne koristiti pri tome nikakve oracle-ove alate i managere za to, vec uraditi iz Java aplikacije. Nesto sam postigao, a to je da dobijem sve tabele iz baze i podatke iz njih. Pravi mi problem to sto se pojave i neke tabele koje mi ne trebaju i koje nemaju nikakve veze sa mojim modelom baze podataka.

Code:

DatabaseMetaData dmd = conn.getMetaData();
String types[] = {"TABLE"};
ResultSet rset = dmd.getTables(null, "ime_sheme", null, types);
while(rset.next()){
   String table_name = rset.getString("TABLE_NAME");
   System.out.println(table_name + "\t");
}


Ovim ispisom dobijem sve tabele iz mog modela, ali i neke druge koje se zovu npr.: BIN$M1PMjl2ZZe7gQKjAAgIeZw==$0

Ovakvih tabela ima dosta, nisam ih brojao, ali mislim da ih ima preko 100.

Da li neko ima ideju sta predstavljaju ove tabele i kako da ih izbegnem?

Hvala unapred na svakoj pomoci i savetu...
[ noctua @ 04.07.2007. 15:06 ] @
Pozdrav!

To su tabele koje se nalaze u RecycleBin! Od verzije 9 (cini mi se a mozda je i od 10g... ne secam se tacno od kada su to uveli) postoji u Oracle-u RecycleBin i kada neko uradi DROP TABLE, tabela "ode" u kantu! Nju je kasnije moguce vratiti....

Dakle, te tabele su obrisane i nisu u upotrebi!
Ignorisi ih...

PS. trebao bi neki VD. DBA da uradi purge...

PPS. To sto su "obrisane" samo znaci da su "sklonjene" na drugo mesto ali informacije o tome ko je vlasnik, podaci, i sl. jos uvek postoje. Zato i dobijas te tebele jer trazis sve sto je u "ime_sheme"... a one jesu deo te sheme (kao deo recyclebina te sheme...)
[ noctua @ 04.07.2007. 15:10 ] @
Pozdrav ponovo!

Eh, da... zaboravih malopre...
Mozes i ti da "ispraznis kantu" ukoliko imas (a trebalo bi da imas) username/pass za bazu.
1. Ulogujes se kao korisnik koji je vlasnik sheme,
2. Ukucas: "purge recyclebin"

To ce resiti tvoj problem cudnih imena... trenutno... ali ako neko ponovo obrise/kreira neku tabelu, ponovo ces imati slican problem...Bilo bi pametnije da "trazis" samo one tabele koje su "aktivne"...
[ ezamur @ 04.07.2007. 15:14 ] @
Hvala na brzom odgovoru.

Sad cu da vidim sta mogu da uradim po tom pitanju. Drago mi je da nisu neke bitne tabele, sa zadovoljstvom cu trajno da ih izbrisem.
[ ezamur @ 04.07.2007. 15:54 ] @
Uspeo sam da uradim sta sam hteo nakon praznjenja recycle bin-a. Resenje sa trajnjim brisanjem tabela radi posao, ali mi se ne dopada u potpunosti.
Sledeci recenica me je zaintrigirala.

Citat:

To ce resiti tvoj problem cudnih imena... trenutno... ali ako neko ponovo obrise/kreira neku tabelu, ponovo ces imati slican problem...Bilo bi pametnije da "trazis" samo one tabele koje su "aktivne"...


Na koji nacin mogu da razlikujem "aktivne" tabele od onih koje su obrisane? Ne uspevam da uocim nesto sto bi mi u tome koristilo unutar Javine klase DatabaseMetaData. Voleo bih (cak bi bilo veoma pozeljno, ako je moguce) da ugradim "preskakanje" obrisanih tabela u aplikaciju.
[ Dejan Topalovic @ 04.07.2007. 16:19 ] @
Recyclebin ti je uglavnom koristan samo za "Flashback before drop table", tako da ukoliko ne koristis Flashback komande, onda mozes deaktivirati Recyclebin:
Code:
ALTER SYSTEM  SET recyclebin = OFF;


Ako pak ne zelis deaktivirati recyclebin, onda mozes uraditi anti-join izmedju DBA_RECYCLEBIN (USER_RECYCLEBIN) i DBA_OBJECTS (USER_OBJECTS).
[ ezamur @ 05.07.2007. 08:03 ] @
Hvala na odgovorima.

Primetio sam da nazivi tih tabela koje se nalaze u recycle bin-u pocinju sa "BIN", pa nakon tog stringa sledi gomila jos nekih karaktera.
Da li bi to mogao da mi bude kriterijum za raspoznavanje obrisanih tabela, posto u momentu kada se radi backup ne bi trebalo da radim bilo kakav upit nad bazom, vec da sve odradim na osnovu metapodataka? Da li postoji neki konkretan nacin na koji oracle imenuje obrisane tabele? Ovo resenje nije bas lepo, ali bi mi omogucilo da, cak i ako recycle nije ociscen, radim samo sa onim tabelama koje me zaista zanimaju.

Sto se tice iskljucivanja recycle-a, mogu to da uradim na mojoj masini dok traje razvoj, ali kasnije necu imati dodira sa masinama na kojima se nalazi baza. Teorijski ne bi trebalo da bude icega u resycle bin-u na tim masinama, jer ce baza da se instalira, podesi i koristi, ali ja se ne bih oslonio na to "ne bi trebalo...". Ipak mi treba neko resenje kojim bi iz Java aplikacije razlikovao obrisane i aktivne tabele.

U krajnjem slucaju bih mogao da, svaki put pri startovanju backup-a u Java aplikaciji, ispraznim oracle-ov recycle.