مقدمه­­­:

ارتقا در پایگاه داده اوراکل همواره یکی از موارد پر چالش بوده، و همین چالش ها یا منجر به تعویق انداختن ارتقا شده و یا کلا از ارتقا منصرف شده ایم. برای ساده شدن ارتقا، اوراکل ابزار autoupgrade را معرفی کرده که با این ابزار می توان از یک نسخه اصلی اوراکل به یک نسخه بالاتر پایگاه داده را ارتقا داد.

در این مقاله سناریو های ممکن در خصوص مهاجرت و ارتقا مورد بررسی قرار گرفته اند.

این ابزار مراحل ارتقا را خودکار و ساده کرده است اما باید به این نکته اشاره کرد که این همه فرآیند ارتقا را خودکار نکرده و بخشی از آن مانند نصب نرم افزار پایگاه داده نسخه جدیدتر باید توسط DBA انجام شود.

ابزار autoupgrade از autoupgrade.jar استفاده می کند و می تواند در یکبار اجرا چند پایگاه داده  را اتقا دهد.

محدودیت ها و نسخه ها :

AutoUpgrade Utility دارای محدودیت ها و برخی الزمات در مورد نسخه هایی است که می توان از آن استفاده کرد. نسخه های زیر، نسخه هایی هستند که AutoUpgrade Utility را می توان با آنها استفاده کرد.

jar به طور پیش فرض وجود دارد و نیازی به دانلود اضافی نیست

توصیه اوراکل به استفاده از آخرین ورژن autoupgrade.jar  می باشد که می توان از My Oracle Support Document 2485457.1 آن را دانلود کرد.

ORACLE_HOME باید دارای جاوا 8 باشد، همه ORACLE_HOME ها 12.1.0.2 و نسخه های جدیدتر حاوی جاوا 8 هستند.

شناسایی نسخه java و autoupgrade.jar:

$ORACLE_HOME/jdk/bi/java –version

$ORACLE_HOME/jdk/bin/java -jar autoupgrade.jar -version

فرآیند ارتقا پایگاه داده با استفاده از AutoUpgrade Utility:

همه ارتقاء پایگاه داده حداقل از سه بخش اساسی پیروی می کنند. سه بخش مورد بحث در اینجا به عنوان پروژه ارتقای پایگاه داده کلی در نظر گرفته نشده است. DBAها هنوز باید فرآیندهایی را برای مواردی مانند Unit test و load testing از یک برنامه کاربردی در برابر پایگاه داده ارتقا یافته در نظر بگیرند. هنوز باید تصمیماتی در مورد اینکه چه نسخه پایگاه داده ارتقا داده شود، نیازهای Patch، الزامات سیستم عامل و غیره اتخاذ شود.

Precheck تعیین می کند که قبل از ارتقا پایگاه داده چه کاری باید انجام شود. این فرآیند شامل بررسی های خاص پایگاه داده و غیر پایگاه داده است. مانند نصب نرم افزار، patch، فضای دیسک و غیره، سایر قسمت‌های Precheck مختص پایگاه داده است، مانند پارامترهای منسوخ شده، تنظیمات پارامتر، ویژگی‌های منسوخ شده و غیره.

Gap resolution –  به تمام مواردی که در Precheck و رفع آن‌ها قبل از اجرای ارتقاء یافت می‌شود، پرداخته می‌شود. این مرحله همه چیز در مورد کارهایی است که باید انجام شود تا از ارتقای بی‌نظیر پایگاه داده اطمینان حاصل شود.

Database upgradeشامل بررسی های اولیه پس از ارتقاء بلافاصله پس از انجام عملیات ارتقاء می باشد.

AutoUpgrade Utility از چندین بخش از ارتقای کلی پایگاه داده پشتیبانی می کند و مراحلی که پشتیبانی می کند برای اطمینان از ارتقای موفقیت آمیز ضروری هستند. با استفاده از بخش‌های فرآیند ارتقاء به‌طور مستقل، مواردی مانند Precheck ها را می‌توان بدون اجرای کل فرآیند ارتقا تکمیل کرد و تنها برای یافتن مسائل مربوط به Precheck باید به آن رسیدگی شود. در این بخش، مواردی که AutoUpgrade Utility  برای پشتیبانی از 3 مرحله فوق استفاده و Mode های آن را شناسایی می‌کنیم.

AutoUpgrade Utility را می توان در چند حالت مختلف اجرا کرد.هر حالت برای هدف خاصی برای پشتیبانی از بخش خاصی از فرآیند ارتقا در نظر گرفته شده است. اساساً سه “حالت” برای  AutoUpgrade وجود دارد که به طور محدود با درک دامنه، آماده سازی و برنامه ریزی برای ارتقاء و اجرای ارتقاء مطابقت دارد.

حالت تجزیه و تحلیل  (Analyze Mode) :

حالت تجزیه و تحلیل اولین گام در فرآیند ارتقاء کلی است. اولین مرحله در هر فرآیند ارتقا، بررسی و آماده سازی پایگاه داده برای ارتقای موفقیت آمیز است. این حالت یک عملیات آنلاین است و یک تجزیه و تحلیل فقط خواندنی از پایگاه داده را انجام می دهد تا مشخص کند که آیا هر گونه مشکل/نقص یا وابستگی برای ارتقاء موفقیت آمیز مورد نیاز است یا خیر. تأثیر عملکرد اجرای این عمل در برابر یک پایگاه داده زنده حداقل است و دو فایل خروجی ایجاد می کند که باید بررسی شوند .html و _preupgrade.log که گزارش هایی از نتایج اجرای حالت تجزیه و تحلیل هستند.

حالت تعمیر  (Fixup Mode):

حالت تعمیر مسائلی را شناسایی می‌کند که قبل از اجرای موفقیت‌آمیز به‌روزرسانی پایگاه داده نیاز به توجه دارند. این حالت هم اصلاحات مورد نیازی را که ارتقای خودکار می تواند به طور خودکار برطرف کند و هم مواردی را که برای رفع آنها نیاز به مداخله دستی دارند، شناسایی می کند. همانطور که اشاره شد، مواردی که به طور خودکار قابل کنترل هستند، مدیریت خواهند شد، اما کلید این مرحله مواردی است که نیاز به مداخله دستی دارند. همه این موارد باید توسط DBA بررسی شوند و قبل از اجرای ارتقاء از طریق حالت استقرار/ارتقا، پاک شوند.

حالت استقرار/ارتقا (Deploy/Upgrade Mode):

حالت استقرار/ارتقا، ارتقای پایگاه داده را برای پایگاه های داده تعریف شده در فایل پیکربندی برای ارتقا اجرا می کند. حالت استقرار/ارتقا یک precheck را اجرا می‌کند و مطمئن می‌شود که هیچ آیتمی وجود ندارد که بتواند از موفقیت‌آمیز بودن ارتقا جلوگیری کند. هر موردی که بتواند توسط فرآیند به طور خودکار برطرف شود، به صورت خودکار انجام می شود و بر روند ارتقا تاثیری ندارد. فرآیند ارتقا را اجرا می کند و پیشرفت ارتقا را در طول ارتقا نشان می دهد. پس از تکمیل ارتقا، بررسی ها و مراحل اولیه پس از ارتقا را برای اطمینان از موفقیت آمیز بودن ارتقا انجام می دهد. به عنوان بخشی از پس پردازش، این فرآیند اگر اسکریپت سفارشی را که به فرآیند گفته‌اید پس از تکمیل ارتقاء پایگاه داده اجرا کند، اجرا می‌کند.

مراحل ارتقاء خودکار

مرحله SETUP: مدیر کار ارتقاء خودکار یک کار را برای فرآیند ارتقاء خودکار ایجاد و آماده می کند.

مرحله PREUPGRAD: کارهایی را اجرا کنید که بررسی های سلامت و تأیید سطح پیکربندی اولیه سیستم را انجام می دهند، مانند حافظه، فضای خالی، سازگاری با سیستم عامل و غیره.

مرحله PRECHECKS: کارهایی را اجرا می کند که پایگاه داده مبدا را برای ارتقاء تجزیه و تحلیل می کند و تعیین می کند که آیا پایگاه داده الزامات ارتقاء را برآورده می کند یا خیر.

مرحله PREFIXUPS: بر اساس یافته های مرحله PRECHECKS، قبل از شروع ارتقا، تعمیرات قبل از ارتقا را انجام دهید، به عنوان مثال، جمع آوری dictionary statistics و غیره.

DRAIN Stage: session پایگاه داده را از instance تخلیه (Drain) می کند تا برای خاموش کردن listener و پایگاه داده آماده شود. تخلیه فرآیندی است که به جلسات اجازه می‌دهد تا کامل و قطع شوند.

مرحله DBUPGRADE: ارتقاء خودکار ارتقاء واقعی را انجام و اجرا می کند، از جمله کامپایل هر شی نامعتبری که پس از ارتقا یافت می شود.

مرحله POSTCHECKS: بلافاصله پس از ارتقا، پایگاه داده ارتقا یافته را بررسی می کند تا اطمینان حاصل شود که ارتقاء اصلی با موفقیت انجام شده است.

مرحله POSTFIXUPS: زمانی که POTCHECKS از clean=n عبور کرد، این مرحله بر تکمیل و کارهای شناسایی شده براساس نیاز ما متمرکز می شود. برای مثال ارتقا منطقه زمانی

مرحله POSTUPGRADE: این مرحله نهایی ارتقاء است که در آن پیکربندی پایگاه داده مبدا به پیکربندی پایگاه داده مقصد، و راه اندازی پایگاه داده Oracle ارتقا یافته در ORACLE_HOME جدید راه اندازی می شود. علاوه بر این، این مرحله همچنین شامل استقرار و انجام بررسی‌ها و اصلاحات بعد از ارتقا  است

با استفاده از Auto Upgrade Utility

آماده کردن

برای استفاده از AutoUpgrade Utility، ابتدا باید پیکربندی را آماده یا تنظیم کنیم که اجرای AutoUpgrade را هدایت کند. این بخش به تشریح وظایف/فعالیت‌های آماده‌سازی/راه‌اندازی می‌پردازد:

$ORACLE_HOME/jdk/bin/java -jar autoupgrade.jar -create_sample_file settings

$ORACLE_HOME/jdk/bin/java -jar autoupgrade.jar -create_sample_file config

cp sample_config.cfg mydb.cfg

یک PFILE که حاوی پارامترهای اولیه برای اضافه کردن پس از ارتقا است

global.add_after_upgrade_pfile=/u01/app/oracle/autoupgrade/addinitparametersafter.ora

یک PFILE که حاوی پارامترهای اولیه برای حذف در حین ارتقا است

global.del_during_upgrade_pfile=/u01/app/oracle/autoupgrade/delinitparametersduring.ora

به فرآیند Upgrade بگویید تا همه پارامترهای _ را برای ارتقا حذف کند

global.remove_undercore_parameters=yes

پس از ارتقا، guaranteed restore point را  dropکنید

global.drop_grp_after_upgrade=yes (پیش‌فرض خیر)

 Db_unique_name پایگاه داده برای ارتقاء برای پایگاه داده مشخص شده

mydb.dbname=myd

Oracle_home پایگاه داده مبدا (الزامی)

mydb.source_home=/u01/app/oracle/product/18.0.0.0/dbhome_1

Oracle_home پایگاه داده هدف (الزامی)

mydb.target_home=/u01/app/oracle/product/19.0.0.0/dbhome_1

Oracle SID DB برای ارتقا (الزامی)

mydb.sid=mydb

زمان شروع به‌روزرسانی برای پایگاه داده (الزامی)

mydb.start_time=now

Pdbهای برای ارتقا. (پیشنهاد می شود همیشه درج شود و روی * تنظیم شود)

mydb.pdbs=*

محل ورود به پایگاه داده (الزامی)

mydb.upgrade_node=oraclevm

ارتقاء گره ای (Node) که عملیات روی آن اجرا می شود (الزامی)

mydb.upgrade_node=oraclevm

utlrp را به عنوان بخشی از ارتقاء اجرا کنید (به طور پیش فرض بله پیشنهاد می شود همیشه بله)

mydb.run_utlrp=yes

در صورت نیاز منطقه زمانی پایگاه داده را ارتقا دهید (به طور پیش فرض بله پیشنهاد می شود همیشه بله باشد)

mydb.timezone_upg=yes

نسخه پایگاه داده هدف

mydb.target_version=19.3

global.autoupg_log_dir=/u01/app/oracle/autoupgrade/logs

global.remove_underscore_parameters=yes

# Database Specific

mydb.dbname=MYDB

mydb.source_home=/u01/app/oracle/product/18.0.0.0/dbhome_1

mydb.target_home=/u01/app/oracle/product/19.0.0.0/dbhome_1

mydb.sid=mydb

mydb.start_time=now

mydb.pdbs=*

mydb.log_dir=/u01/app/oracle/autoupgrade/logs/mydb

mydb.upgrade_node=oraclevm.localdomain

mydb.run_utlrp=yes

mydb.timezone_upg=yes

mydb.target_version=19

ارتقای خودکار را در حالت تحلیل (Analyze Mode) اجرا کنید:

اکنون که یک فایل پیکربندی را برای راهنمایی اجرای ارتقای خودکار آماده کرده ایم، می توانیم از آن برای طی کردن سه مرحله ارتقاء که در بخش قبل توضیح داده شده است استفاده کنیم. این بخش اجرای ارتقای خودکار را در “حالت تجزیه و تحلیل” انجام می دهد.

نمونه دستور برای اجرا :

نمونه خروجی :

سپس، با بررسی فایل های لاگ های تولید شده از مراحل تجزیه و تحلیل، مطمئن شوید که ارتقای خوبی خواهیم داشت. نمونه ای از آنچه در اجرای ما تولید شد نیز قرار گرفته است. فایل‌هایی که باید در بازبینی اضافه کنیم، این را در نظر می‌گیریم که چک ‌لیست فایل‌ها حاوی همان اطلاعات در قالب متفاوتی هستند، بنابراین می‌توانید موردی را که می‌خواهید برای بررسی استفاده کنید انتخاب کنید:

[$ORACLE_SID]_cfg

[$ORACLE_SID]_json

[$ORACLE_SID]_xml

[$ORACLE_SID]_html

log

prechecks_[$ORACLE_SID].log

بررسی فایل‌های گزارش: ما به دنبال موارد هشدار و خطا هایی هستیم که نیازمند عملیاتی از سمت ما به صورت دستی می باشند.

در ادامه یک نمونه از خطا ها را که  به صورت دستی باید اصلاح گردند را در لاگ بررسی می کنیم . در سناریو استفاده از autoupgrade، پایگاه داده مبدا باید در حالت archive  باشد.

در ادامه یک نمونه خروجی را مشاهده می کنید که هیچگونه خطایی ندارد. این را در فایل prechecks_oracle_sid.log می توان مشاهده کرد.

در ادامه اگر خطایی بود و آن را به صورت دستی اصلاح کردید، بهتر است مجدد مرحله analyze را اجرا کرده تا از برطرف شدن آن اطمینان حاصل کنید.

اجرای autoupgrade در حالت Fixup :

اکنون که ارتقای خودکار را در حالت تجزیه و تحلیل اجرا کرده ایم، می توانیم ارتقای خودکار را در حالت رفع مشکل اجرا کنیم تا موارد باز را که حالت تجزیه و تحلیل ارتقای خودکار شناسایی کرده و به طور خودکار برطرف شود. این بخش اجرای برنامه ارتقای خودکار را در “حالت FIXUP” بررسی می کند.

با استفاده از autoupgrade.jar و حالت fixup، fixup ها را اجرا کنید.

در ادامه لاگ هایی که در این مرحله ایجاد شده اند را بررسی کنید:

لاگ prefixups را بررسی کنید :

برای ارتقا پایگاه داده،  autoupgradeرا در Deploy Mode اجرا کنید:

اکنون که مراحل Analyze Mode و Fixup Mode را اجرا کردیم و مواردی که به صورتی دستی باید برطرف می کردیم را انجام دادیم، می توانیم Deploy Mode را اجرا کنیم. در این مرحله ارتقا نهایی و موارد بعد از ارتقا، اجرا می شوند.

ارتقا :

با استفاده از upgrade.jar و  فایل پیکربندی ، ارتقا را اجرا می کنیم.

پس از ارتقا (مراحل دستی)

/etc/oratab را بررسی کنید، می بینیم که با ORACLE_HOME جدید توسط autoupgrade.jar به روز شده است.

پایگاه داده را restart می کنیم و ورژن را کنترل می کنیم