منبع اصلی نوشتار زیر در این لینک قرار دارد

recovery after losing UNDO tablespace

یه مشکلی که امروز برای یکی از دیتابیس‌هام پیش اومد این بود که درایو undo tablespaceام یکهو unmount شد و دیتابیس shutdown abort‌شد.

(دیتابیس مورد بحث SI با FS)

Details

The instance has been terminated by a database process because of a fatal internal condition, or a critical background process was killed by the user.
Logwriter is unable to write to any member of the log group because of an IO error.
Archiver is unable to archive a redo log because the output device is full or unavailable.

Agent Connection to Instance
Status
Failed Details ORA-12505: TNS:listener does not currently know of SID given in connect descriptor (DBD ERROR: OCIServerAttach)

اولین کاری که باید بکنید بالا آوردن دیتابیس تو حالت mountه

بعد با دستور زیر undo_management اتون رو روی حالت manual بذارید

alter system set undo_management = manual scope=spfile;

چون undo tablespaceامون صدمه دیده و اوراکل نمیتونه به دیتافایلهاش دسترسی داشته باشه باید یک undo tablespace دیگه ایجاد کنیم و default رو روی این tablespace بذاریم

create undo tablespace undotbs2 datafile '/oradata/undotbs110.dbf' size 10g autoextend on next 50m;

بعد از ساخت undo tablespace باید دیتابیس رو shutdown کنید اگر با حالت immediate‌ موفق به shutdown نشد abort کنید

نکته: اگه نیاز بود datafileهای مشکل‌دار undo‌ رو offline کنید

alter database datafile 20 online;

حالا یک pfile از روی spfileاتون بسازید و مقدار undo_tablespace رو به tablespace‌ جدید مقدار بدید

دیتابیس رو startup کنید و undo_managment رو روی mode auto بذارید

alter system set undo_management = auto scope=spfile;

حالا یک spfile از روی pfileاتون بسازید و دیتابیس رو خاموش و روشن کنید

همچنین دیتایکشنری‌های زیر برای مانیتور کردن وضعیت مشکلات خیلی کمک میکنه:

select file#,status from v$datafile;

select tablespace_name, sum((bytes/1024)/1024) free from dba_free_space group by tablespace_name;

select tablespace_name,status from dba_tablespaces;

select tablespace_name from dba_tablespaces;

نکته: اگه datafileهای undo قدیمیتون احتیاج به recover داشت حق دارید recoverاشون کنید ولی در مورد باقی datafileها به هیچ عنوان حق recover ندارید(چون با ctlfileهاتون تداخل ایجاد میشه - recover کردن undo هم به این دلیل مشکلی نداره چون دیتای undo رو نیازی نداریم)

نکته۲: قبل از ساختن spfile حتما با pfile نتیجه رو امتحان منید و بعد اگه خواستید spfileاش کنید حتما از قبلی یه backup بگیرید

منابع:

12345 ,6