ORA-00959 and ORA-14511
مسعود حاجی حسن پور | يكشنبه, ۲۵ آذر ۱۳۹۷، ۰۲:۵۰ ب.ظ |
۳ نظر
با سلام خدمت دوستان عزیز
امروز به یک مشکل برخوردم که بعد از رفع عیب دوست دارم تجربیات خود را با شما به اشتراک بذارم.
توی یک پایگاه داده یکی از job های ما با مشکل روبرو شده بود. دلیل مشکل پر شدن archivelog ها بود چون یک procedure اجرا شده بود که در آن پایگاه داده غیر رایج بود و تمام حجم fra به دلیل تغییرات بسیار زیاد بر روی block ها پر کرده بود. پس از رفع مشکل تصمیم گرفتیم کمی سرو سامان بدیم به پایگاه داده.
در حقیقت مقدار زیادی از فضای tablespace خالی بود و فقط فضا روی disk بی مورد اشغال شده بود. برای پیدا کردن مقدار حجم logical و physical میتوانید از اسکریپت زیر که نوشته ام استفاده کنید.
SQL> col tname for a20; SQL> col "Used space GB" for 99999; SQL> col "Max space GB" for 99999; SQL> col "Free space GB" for 99999; SQL> col percent_free for a15; SQL> select df.tname, round(us.used_space/1024/1024/1024) as "Used space GB", round(df.max_space/1024/1024/1024) as "Max space GB", round((df.max_space - us.used_space)/1024/1024/1024) as "Free space GB", round(((df.max_space - us.used_space) * 100) / df.max_space,2)||'%' as percent_free from ( select TABLESPACE_NAME as tname, sum(case when autoextensible='YES' then maxbytes else bytes end) as max_space from DBA_DATA_FILES group by TABLESPACE_NAME ) df inner join ( select TABLESPACE_NAME as tname, sum(BYTES) as used_space from DBA_segments group by TABLESPACE_NAME ) us on (df.tname = us.tname) --where df.tname in ('TXDATA','TXDATA_IX') order by round(((df.max_space - us.used_space) * 100) / df.max_space,2);