از نسخه 19.9 به بعد تغییر برخی از پارامتر ها (در اینجا پارامتر مورد نظر UNDO_RETENTION میباشد ) در Container Root (CDB$ROOT) منجر به تغییر آن پارامتر در بقیه PDB ها نمیشود . از نسخه 12.2.0.1 به صورت پیش فرض هر PDB دارای UNDO_TBS مخصوص به خود میباشد (منظور local undo only که تنظیم پیش فرض به هنگام ساخت یک PDB جدید است ) از این رو هر PDB تنظیم UNDO مخصوص به خود را دارد. برای تغییر پارامتر UNDO_RETENTION در تمامی Instance از دستور زیر استفاده کنید .
ALTER SYSTEM SET UNDO_RETENTION=10 CONTAINER=ALL SCOPE=BOTH;
دستور بالا در محیط دیتاگارد به دلیل Read-Only بودن PDB با خطا مواجه میگردد . در محیط دیتاگارد از دستور زیر استفاده میگردد .
ALTER SESSION SET CONTAINER=CDB$ROOT;
ALTER SYSTEM SET UNDO_RETENTION=10 SCOPE=BOTH;
ALTER SESSION SET CONTAINER=SHATOOTPDB;
ALTER SYSTEM SET UNDO_RETENTION=10 SCOPE=BOTH;
لازم به ذکر است که هنگام تغییر پارامتر های داخل PDB اگر از SCOPE=SPFILE و یا SCOPE=BOTH استفاده شود ، آن تغییر در Data Dictionary های PDB و فایل تعریف XML آن PDB ذخیره میشود و بر روی SPFILE تغییری ایجاد نمیکند . برای مشاهده پارامتر های تغییر یافته داخل PDB از کوئری زیر استفاده شود .
SELECT PS.DB_UNIQ_NAME , PS.PDB_UID , P.NAME AS PDB_NAME , PS.NAME , PS.VALUE$
FROM PDB_SPFILE$ PS JOIN V$PDBS P ON PS.PDB_UID = P.CON_UID;
لیست پارامتر ها با شرایط توضیح داده شده در این بخش (طبیعتا با اعمال هر Patch set امکان تغییر این لیست وجود دارد )
_ROLLBACK_SEGMENT_COUNT
_SMU_TIMEOUTES
_SMU_DEBUG_MODE
_UNDO_DEBUG_MODE
_HIGHTHRESHOLD_UNDORETENTION
_UNDO_AUTOTUNE
UNDO_RETENTION
_COLLECT_TEMPUNDO_STATS