Your SlideShare is downloading. ×
Invalid obyektlerin kampilasiyasi
Invalid obyektlerin kampilasiyasi
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Invalid obyektlerin kampilasiyasi

169

Published on

Invalid obyektlerin kampilasiyasini generasiya eden skript

Invalid obyektlerin kampilasiyasini generasiya eden skript

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
169
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
10
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. İnvalid obyektlərin kampayl etmək üçün generasiya edilən skriptBəzən verilənlər bazasında bəzi obyektlər invalid statusuna düşürlər. Bunun bir çox səbəbi olabilər: objektin modifikasiyası, yeni obyektin kampilasiyası (mövcud və aslı olan obyektlər) və s.Həll yolu kimi @$ORACLE_HOME/rdbms/admin/utlrp.sql skriptini çalışdırmaq olar və ya invalidobyektlərin siyahısını tərtib edərək onları kampyl (compile) etmək olar. Lakin utlrp bir aztəhlükəlidir və biz bu utilitdən verilənlər bazasını upgrade-i zamanı istifadə edirik. (Yəni həmənzaman VB müraciət edən olmur) Məsələn: 9i > 10g > 11g (eyni zamanda reliz (release) upgrade).Əgər invalid obyektlərin sayı nə həddən çox nədə az saydadırsa, o, zaman aşağıdakı sorğununnəticəsini götürüb çalışdırmaq olar.SQL> select ALTER TRIGGER ||OWNER||.||OBJECT_NAME|| COMPILE;from dba_objects where status=INVALID AND OBJECT_TYPE=TRIGGERunionselect ALTER FUNCTION ||OWNER||.||OBJECT_NAME|| COMPILE;from dba_objects where status=INVALID AND OBJECT_TYPE=FUNCTIONunionselect ALTER PACKAGE ||OWNER||.||OBJECT_NAME|| COMPILE BODY;from dba_objects where status=INVALID AND OBJECT_TYPE=PACKAGE BODYunionselect ALTER PROCEDURE ||OWNER||.||OBJECT_NAME|| COMPILE;from dba_objects where status=INVALID AND OBJECT_TYPE=PROCEDURENümunəALTER FUNCTION ULFET.TEST_FUNC COMPILE;ALTER PACKAGE ULFET.LOG_TOOL COMPILE BODY;ALTER PROCEDURE ULFET.UPDATE_EMP COMPILE;ALTER PROCEDURE ULFET.ADD_EMP COMPILE;ALTER TRIGGER ULFET.TAKE_OLD_VALUE COMPILE;Eyni zamanda siz DBMS_DDL və DBMS_UTILITY paketlərindəndə istifadə edə bilərsiniz:EXEC DBMS_DDL.ALTER_COMPILE(PACKAGE, ULFET, LOG_TOOL);və yaEXEC DBMS_UTILITY.COMPILE_SCHEMA(ULFET);Və nəhayət aşağıdakı kimi PLSQL anonym bloku yazıb icra edə bilərsiniz:
  • 2. SQL> set serverouput onSQL> DECLARE comp_pack VARCHAR2 (100); comp_pack_body VARCHAR2 (200); comp_view VARCHAR2 (200); comp_proc VARCHAR2 (200); comp_trig VARCHAR2 (200); comp_func VARCHAR2 (200);BEGIN FOR c IN ( SELECT * FROM dba_objects WHERE status = INVALID ORDER BYobject_type) LOOP BEGIN --kampayl skripti generasiya edilməsi comp_pack :=alter package || c.owner|| .|| c.object_name|| compile;; comp_pack_body :=alter package || c.owner|| .|| c.object_name|| compile body;; comp_view :=alter view || c.owner || . || c.object_name || compile;; comp_proc :=alter procedure || c.owner|| .|| c.object_name|| compile;; comp_func :=alter function || c.owner|| .|| c.object_name|| compile;; comp_trig :=alter trigger || c.owner|| .|| c.object_name|| compile;; DBMS_OUTPUT.put_line (Compile -> || c.object_name || type : || c.object_type); IF c.object_type = PACKAGE THEN EXECUTE IMMEDIATE comp_pack; ELSIF c.object_type = PACKAGE BODY THEN EXECUTE IMMEDIATE comp_pack_body; ELSIF c.object_type = VIEW THEN EXECUTE IMMEDIATE comp_view; ELSIF c.object_type = PROCEDURE THEN EXECUTE IMMEDIATE comp_proc; ELSIF c.object_type = FUNCTION THEN EXECUTE IMMEDIATE comp_func; ELSIF c.object_type = TRIGGER THEN EXECUTE IMMEDIATE comp_trig; END IF; --Exseption varsa yaxala və göstər EXCEPTION WHEN OTHERS THEN DBMS_OUTPUT.put_line (Kampayl Xeta: || c.owner|| .|| c.object_name|| type => ||c.object_type); END; END LOOP;END;

×