Oracle Restart – לניהול בסיס נתונים Single Node

לאחרונה יוצא לי להתעסק באופן כמעט בלעדי עם שרתי RAC של אורקל. אני מאוד אוהב את התשתית של ה-grid – במיוחד מאז שהיא עברה מהפכה קטנה בין גרסאות 10 ו-11 ועכשיו היא הפכה למוצר נוח ויציב בהרבה ממה שהוא היה קודם. אחד הדברים היפים שאני אוהב במיוחד בתשתית הזו הוא תהליך העליה של הקלסטר.

כאשר מדברים על עליה של בסיס נתונים, ביצוע Startup ואז הפעלה של ה-listener בדרך כלל מכסים 99 אחוז מתהליך העליה. לעומת זאת, כאשר חושבים על עליה של cluster, מדובר על לא מעט תהליכים שצריכים לעלות בצורה מדורגת, מסודרת ובאופן שתלוי אחד בשני. הכוונה היא שברור שלא יעלה על הדעת שמנגנוני ה-cluster לא יעלו לפני רכיבים בכל שרת בנפרד או ש-Disk groups של ASM יעלו אחרי בסיס הנתונים הרגיל. אם זה היה קורה אז בסיס הנתונים היה עולה (או לא) לפי גחמות מערכת ההפעלה.

הפתרון שאורקל נותנים לעליה של ה-grid הוא תהליך המנוהל על ידי root (בלינוקס) ומעלה את התהליכים לפי ההגדרות של resource-ים ו-service-ים. זה דורש קצת התרגלות אבל ברגע שמתרגלים מדובר ביכולת נהדרת שקשה לשחזר אותה בצורה המסורתית של העבודה. כל זה טוב ויפה אם יש לנו סביבה של RAC, אבל מה קורה כאשר יש לנו שרת ב-Stand alone (כלומר, לא קלסטר)?

החל מגרסה 11g R2 ניתן להשתמש בתשתית ה-grid infratructure כדי להגדיר גם שרתי stand alone שיעבדו עם מנגנון עליה מנוהל. המנגנון הזה בתצורה של single server נקרא Oracle Restart והמטרה העיקרית שלו היא לאפשר פתרון high availability גם לשרתים כאלה בצורה נוחה ומהירה.

ניתן להשתמש בהגדרות האלה כדי להעלות רכיבים כמו בסיס הנתונים עצמו, listener, ASM, לבצע mount ל-disk groups ואפילו להעלות service-ים המוגדרים מראש – וכל זה בצורה נוחה ויעילה. המנגנון הזה אפילו יודע לנסות ולהשתחזר מתקלות ולהעלות תהליכים בצורה אוטומטית במקרה והם נופלים בצורה לא מתוכננת.

הרכיב הזה אינו חלק מהחבילה של בסיס הנתונים אלא חלק מהחבילה של ה-grid infrastructure מה שאומר שיש להתקין אותו בנפרד – הוא דרוש Oracle Home משלו ואני ממליץ גם משתמש יעודי משלו. באופן עקרוני רצוי להתקין אותו לפני שמתקינים את בסיס הנתונים אבל זה לא חובה, אלא רק מייעל את התהליך מאוחר יותר.

הכלי העיקרי שאיתו עובדים כאשר משתמשים ב-Oracle Restart או אותו כלי שעובדים איתו בתצורה של RAC: ה-crsctl. כלי זה מאפשר לנו להתחיל את כל הרכיבים מ-Oracle Home אחד בפקודה אחת ובאמצעות הגדרות פשוטות להכניס את כל הפעולות האלה לתוך תהליך העליה של השרת ובכך להמנע משימוש בסקריפטים הוותיקים של dbstart ו-dbstop. עוד אפשרות נחמדה שיש בשימוש ב-crsctl הוא היכולת להרחיב את המנגנון ולשלוט גם ב-data guard ובהחלפת התפקידים שבתוכו (failover או switchover המאפשרים העלאה של service-ים נוספים ללא שימוש בסקריפטים חיצוניים.

כדי לבדוק את המצב של המנגנון ניתן להשתמש בכלים של ה-cluster למרות שאין לנו באמת cluster: הכלים ctsctl ו-crs_stat עובדים בסביבה הזו:

[oracle@dbserver bin]$ ./crsctl check has
CRS-4638: Oracle High Availability Services is online

[oracle@dbserver bin]$ ./crsctl check css
CRS-4529: Cluster Synchronization Services is online

[oracle@dbserver bin]$ ./crs_stat -t
Name           Type           Target    State     Host
------------------------------------------------------------
ora.DATA.dg    ora....up.type ONLINE    ONLINE    dbserver
ora....ER.lsnr ora....er.type ONLINE    ONLINE    dbserver
ora....WARE.dg ora....up.type ONLINE    ONLINE    dbserver
ora.asm        ora.asm.type   ONLINE    ONLINE    dbserver
ora.cssd       ora.cssd.type  ONLINE    ONLINE    dbserver
ora.diskmon    ora....on.type ONLINE    ONLINE    dbserver
ora.eons       ora.eons.type  ONLINE    ONLINE    dbserver
ora.ons        ora.ons.type   ONLINE    ONLINE    dbserver

כדי להפעיל רכיבים שונים ניתן להשתמש ב-srvctl. בדוגמה הבאה נראה איך בודקים את הסטטוס של ה-listner, asm ונבדוק סטטוס של diskgroup ספציפי:

[oracle@dbserver bin]$ ./srvctl start listener

[root@dbserver ~]# ps -ef |grep tns
oracle   13291     1  0 10:08 ?        00:00:00 /u01/app/oracle/product/11.2.0/grid/bin/tnslsnr LISTENER -inherit

[oracle@dbserver bin]$ ./srvctl status listener
Listener LISTENER is enabled
Listener LISTENER is running on node(s): dbserver

[oracle@dbserver bin]$ ./srvctl start asm

[oracle@dbserver bin]$ ./srvctl status asm
ASM is running on dbserver

[oracle@dbserver bin]$ ./srvctl status diskgroup -g DATA
Disk Group DATA is running on dbserver

[oracle@dbserver bin]$ srvctl config asm
ASM home: /u01/app/oracle/product/11.2.0/grid
ASM listener: LISTENER
Spfile: +DATA/asm/asmparameterfile/registry.253.200492179
ASM diskgroup discovery string: /dev/mappert/oracle_disk_raw*

בדוגמה הזו נראה קונפגורציה של בסיס נתונים ואיך מפעילים אותו. אם אחד ה-processes (לדוגמה ה-pmon) מפסיק לעבוד, ה-has ינסה לעלות אותו מחדש:


[oracle@dbserver bin]$ ./srvctl config database -d orcl
Database unique name: orcl
Database name:
Oracle home: /u01/app/oracle/product/11.2.0/db_orcl
Oracle user: oracle
Spfile:
Domain:
Start options: open
Stop options: immediate
Database role: PRIMARY
Management policy: AUTOMATIC
Disk Groups:
Services:

[oracle@dbserver bin]$ ./srvctl start database -d orcl

[oracle@dbserver bin]$ ps -ef |grep pmon
oracle   10612     1  0 Aug10 ?        00:00:01 asm_pmon_+ASM
oracle   10772     1  0 Aug10 ?        00:00:00 ora_pmon_orcl
oracle   15972 18271  0 10:45 pts/2    00:00:00 grep pmon

[oracle@dbserver bin]$ kill -9  10772

[oracle@dbserver bin]$ ps -ef |grep pmon
oracle   10612     1  0 Aug10 ?        00:00:01 asm_pmon_+ASM
oracle   16310     1  0 10:48 ?        00:00:00 ora_pmon_orcl
oracle   16375 18271  0 10:48 pts/2    00:00:00 grep pmon

מידע נוסף אפשר לקרוא בדוקומנטציה או בבלוגים הבאים: הבלוג של Gavin.

0 תגובות

השאירו תגובה

Want to join the discussion?
Feel free to contribute!

השאר תגובה

אתר זה עושה שימוש באקיזמט למניעת הודעות זבל. לחצו כאן כדי ללמוד איך נתוני התגובה שלכם מעובדים.