Oracle Topluca Tablo Yedeklemek

Oracle Topluca Tablo Yedeklemek

Aşağıdaki script ile oracle’a bağlı olan kullanıcının _TMP uzantısı ile biten tüm tablolarını toplu olarak yedekliyoruz. Eğer istenirse yedeklendikten sonra asıl tablolar drop da edilebilir, benim ihtiyacım olmuştu o yüzden drop da yazdım,ama aşağıda drop komutunu commentledim. Script create table as komutuyla tablo adının sonuna _BKP uzantısı ekliyor ve yeni tablo oluşturuyor.Eğer yeni isim 30 karakterden çok gelirse(bu durumda hata alır ORA-00972) yeni tablo adını 30 karaktere kısaltacak.

Scripti kendinize göre uyarlayabilirsiniz, lütfen scripti önce test ortamlarda deneyerek sonuçlarını görünüz..

DECLARE 
 V_TABLE VARCHAR2(50); 
 V_TABLE_TRIM VARCHAR2(50);
BEGIN
  FOR i IN (select * from user_tables where table_name like '%\_TMP' Escape '\' ORDER BY 1 DESC) LOOP 
    V_TABLE := i.table_name;
    V_TABLE_TRIM := i.table_name;
    DBMS_OUTPUT.PUT_LINE('--------------- Tablo Yedekleniyor.. '||V_TABLE||' ---------------');
        IF LENGTH(V_TABLE) > 26 THEN
           V_TABLE_TRIM := substr(V_TABLE,1,26);
        END IF;
    DBMS_OUTPUT.PUT_LINE('CREATE TABLE ' ||V_TABLE_TRIM||'_BKP as select * from ' ||V_TABLE);  
 
    EXECUTE IMMEDIATE 'CREATE TABLE ' ||V_TABLE_TRIM||'_BKP as select * from ' ||V_TABLE;
 
    --DBMS_OUTPUT.PUT_LINE('--------------- Tablo Drop Ediliyor.. '||V_TABLE||' ---------------');
    --DBMS_OUTPUT.PUT_LINE('DROP TABLE ' ||V_TABLE);
    --EXECUTE IMMEDIATE 'DROP TABLE ' ||V_TABLE;
    --DBMS_OUTPUT.PUT_LINE(' ');
    --DBMS_OUTPUT.PUT_LINE(' ');
  END LOOP;
END;

Tagged: , , , , , ,

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir