Listener registration - ilDBA Portal

Listener registration

10/03/2011 | פורסם על ידי

הקדמה

לא מעט פעמים אני מגיע לאירגונים ונתקל בחוסר ידע לגבי ה- Listener ואיך הוא וה- Instance מתקשרים.
משום מה, גם DBA-ים מנוסים לא תמיד מבינים לגמרי את הנושא הזה, למרות שהוא לא מסובך. בעקבות סיבות אלו החלטתי לכתוב מאמר זה על מנת להסביר איך הדברים עובדים.

Registration? למה בכלל צריך את זה?

באורקל קיים רכיב שתפקידו לקבל בקשות התחברות מהרשת ולהעביר אותן הלאה ל- instance. זהו כמובן ה- listener שכולנו מכירים. כדי לעשות את תפקידו, ה- listener צריך להכיר את ה-instance-ים שאותם הוא משרת. המידע שחשוב ל-listener הוא ה-SID וה-ORACLE_HOME.
בעזרת מידע זה הוא יכול להפנות משתמשים אל ה-instance וליצור server process במידת הצורך. הרישום של ה-instance ב-listener נקרא registration.

במידה וה- listener לא מכיר את הפרטים על ה-instance, בעת נסיון התחברות נקבל שגיאה:

ORA-12514: TNS:listener does not currently know of service requested in connect descriptor

קיימות שתי דרכים לבצע את ה- registration, הדרך הישנה יותר (שעדיין אפשר להשתמש בה ויש לה אפילו יתרון אחד על הדרך השניה) היא ה- static registration. הדרך החדשה (חדשה יחסית, היא קיימת לפחות מ- Oracle 8i) נקראת dynamic registration.

Static registration

בשיטה זו אנחנו מגדירים בצורה ידנית ל-listener מי הם ה-instance-ים שאותם הוא מכיר. את הרישום הסטטי עושים בקובץ listener.ora שנמצא תחת ORACLE_HOME/network/admin.
לקובץ הזה שני חלקים, האחד מתחיל בשם ה-listener ובו מידע על הכתובות שלהן ה-listener מאזין, והשני מתחיל ב- SID_LIST_ כאשר הוא שם ה- listener והוא מכיל את המידע על static registration.

דוגמא:

LISTENER =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = server)(PORT = 1521))
  )

SID_LIST_LISTENER =
 (SID_LIST =
   (SID_DESC =
    (ORACLE_HOME = C:\oracle\product\10.2.0\db_1)
    (SID_NAME = db10)
   )
 )

כאן אנו רואים שקיים  listener אחד שמאזין על הכתובות שמשויכות לשרת server בפורט 1521.
ה-listener מכיר (בצורה סטטית) instance בשם db10 שה- ORACLE_HOME שלו הוא C:\oracle\product\10.2.0\db_1.

Dynamic registration

בשיטה זו, instance-ים שרצים על המכונה מבצעים את ה-registration לבד, ללא הגדרה בקובץ listener.ora. ה-process שמבצע את ה-Dynamic registration הוא PMON.
הוא פונה אל ה-listener ומעדכן אותו לגבי שם ה-instance, מה מיקום ה-ORACLE_HOME שלו והסטטוס שלו.

כברירת מחדל, PMON פונה ל-listener שנמצא על השרת המקומי (כלומר, השרת שמריץ את ה- instance) בפורט 1521 ונרשם אצלו.
במידה ואנחנו רוצים שה-instance יירשם דינאמית ב-listener עם פרטים אחרים (למשל פורט אחר), נצטרך לשנות את הפרמטר LOCAL_LISTENER ב- init.ora או spfile. ערך הפרמטר צריך להיות הפניה ל- listener באחת משתי הצורות:

–          השם המלא, למשל:(ADDRESS=(PROTOCOL=TCP)(HOST=hostname)(PORT=1530))

–          הפניה לשם ב- tnsnames, למשל: listener_1530 כאשר יש כניסה ב- tnsnames.ora שנקראת listener_1530 ומפנה ל- listener הרצוי

את הפרמטר ניתן לשנות בצורה דינאמית על ידי alter system ו- PMON ימחק את הרישום מה- listener הישן ויירשם ב- listener החדש.

מתי צריך לשנות את ה- dynamic registration?

שני מקרים נפוצים הם:

  1. שינינו את הפורט של ה-listener כחלק מהקשחה או סיבה אחרת.
  2. אנחנו רוצים מספר listener-ים על השרת וצריך לקבוע איזה listener יחבר משתמשים לאיזה instance. ניתן להגדיר static registration כדי לפתור את זה, אבל כל ה- instance-ים יירשמו ב- listener שרץ על 1521 (במידה ויש כזה) אלא אם נשנה להם את ה- dynamic registration.

יתרונות וחסרונות של כל שיטה

בעיקרון, שתי השיטות פשוטות ליישום ועובדות מצוין. יחד עם זאת יש הבדלים:

  • ב-dynamic registration,  ה-PMON הוא זה שמבצע את הרישום. לכן, אם ה-instance למטה לא יתבצע רישום, מעבר לכך, כאשר ה-instance נמצא במצב Nomount, ה-listener יחסום גישות אליו ולא ניתן יהיה להתחבר מהרשת. אם אנחנו רוצים את היכולת להתחבר דרך ה-listener כאשר ה-instance למטה (כדי להעלות אותו) או כאשר הוא ב-Nomount, אנחנו צריכים להגדיר static registration ב- listener.ora.
  • ב-dynamic registration, מכיוון ש-PMON מבצע את הרישום והוא עושה זאת בצורה קבועה, יש אפשרות להעביר עוד מידע ל-listener כגון עומס. זה לא רלוונטי ל-instance עצמאי, אבל ב- RAC זה מידע מאד חשוב שמאפשר ל-listener להפנות חיבורים לשרת שפחות עמוס. כמובן שב- static registration אין רישום על ידי PMON ולכן אין דרך להעביר את המידע הזה ל-listener.
  • נושא ה- service-ים (שכאמור, נדבר עליו בעתיד), נתמך רק ב- dynamic registration.

סיכום

ישנן שתי שיטות לרשום instance-ים ב-listener, static registration ו- dynamic registration. ניתן לעבוד עם כל אחת מהשיטות בנפרד או לשלב בין השתיים.

היום השיטה הנפוצה היא dynamic, ניתן להגדיר static רק במידה וצריך להתחבר ל- instance כבוי או במצב started.

חשוב לזכור שעל מנת לעבוד עם static registration יש לערוך את ה- listener.ora ולתחזק אותו, ועל מנת לעבוד עם dynamic registration יש לשנות את הפרמטר LOCAL_LISTENER. דבר נוסף הוא ה- default של dynamic registration – להירשם ב- listener על השרת המקומי שמאזין לפורט 1521.

לפרטים נוספים על Static Registration:
http://download.oracle.com/docs/cd/E11882_01/network.112/e10836/listenercfg.htm#i454085

לפרטים נוספים על Dynamic Registration:
http://download.oracle.com/docs/cd/E11882_01/network.112/e10836/listenercfg.htm#i490264

מקווה שנהניתם.
נתראה ברשומה הבאה !
לירון אמיצי.

ניתן ליצור קשר עם לירון דרך עמוד האודות שלו: אודות

The following two tabs change content below.
ירון אמיצי הוא סמנכ"ל שירותי מומחה בחברת בריליקס ו-DBA בכיר בעל נסיון של למעלה מ- 15 שנים. ללירון תואר Oracle Ace ומתמחה בנושאי ביצועים, תשתיות, פתרונות זמינות גבוהה, גיבויים ושחזורים. ללירון יש גם בלוג עצמאי בכתובת: https://amitzil.wordpress.com

2 תגובות ל- “Listener registration”

commenter

Another case where modifying LOCAL_LISTENER might be required is when the connection is made via a VIP, while the PMON is attempting to register with the physical IP.

Note: entering mixed Hebrew and English in the comments is a nightmare…

commenter

Hi Alex,

Thanks for you comment, indeed dynamic registration is very important in RAC environment. However, this post was meant to cover the idea of static and dynamic registration in standard environments and not RAC environments.

I might write a note on registration in RAC environments in the future.

Liron

השאר תגובה:

שם (חובה):
אימייל (לא יפורסם) (חובה):
תגובה (חובה):

*



מאמרים קשורים

Baruch Osoveskiy

תיקון מהיר לדיסק איטי

  רציתי לשתף אתכם בתקלה שהיתה לי ובפיתרון שלה. לפעמים אני רוצה לבדוק גירסה חדשה או יכולת שלא מתועדת מספיק בספרות, ואז אני מסתפק בהקמה של סביבה ווירטואלית בדרך כלל על חומרה זולה (לפעמים זולה [...]
OS

OS Background operations

אורי לרנר בטיפ קצר ושימושי על העברת פעולות לרקע במערכת [...]
רשימת

רשימת הפיצ'רים החדשים של אורקל 12.1

אורקל פרסמו את הספרות הרשמית לגרסה 12.1 שיצאה לאחרונה וזמינה להורדה. בין שאר הספרים (החשובים כל אחד שלעצמו), פורסם הספר המסקרן ביותר בעיני – Oracle Database 12c Release 1 (12.1) New Features. זהו ספר שראוי שכל DBA [...]
גרסת

גרסת אורקל 12c זמינה להורדה

בשעה טובה ולאחר המתנה סופר ארוכה, גרסת אורקל 12c (גרסה 12.1) זמינה סוף סוף להורדה רשמית מהאתר של אורקל. הגרסה החדשה מנסה לתת פתרונות לעולם ה"ענן" – ומוסיפה פיצ'רים חדשים שבאים לתת מענה בדיוק [...]
Copyright 2019 ilDBA Portal. Brought to you by Brillix - Israel Leading DBA company. Sponsored by: DBSnaps - Database Video Tutorialss
Website Security Test
%d בלוגרים אהבו את זה: