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;