שימוש ב-Glogin.SQL
כולנו עובדים עם SQL*Plus בצורה תכופה יותר או פחות.
זהו כלי שמיש והפשוט ביותר להתחבר לשרת Oracle.
ברצוני לספר לכם היום טיפ קטן ושימושי שיכול להועיל רבות, כאשר עובדים עם כלי זה מול סביבות שונות.
ברשומה הזו נכיר לכם את הקובץ glogin.sql שיושב בנתיב ORACLE_HOME\sqlplus\admin.
ברגע שמגדירים את קובץ זה, בכל פעם שפותחים את SQL*Plus,
הקובץ הזה רץ ומריץ את הפקודות הרשומות בו (כמו Login script של מערכת הפעלה)
איך זה יכול לעזור לנו ?
דברים שניתן לעשות בעזרת הקובץ הם :
- שינוי פרמטרים של sqlplus – linesize/pagesize,
- הגדרת ה-editor שאיתו ייפתחו הפקודות האחרונות שהרצנו בעזרת ed (לא חייב לפתוח את ה-notepad הרגיל, אפשר להגדיר למשל שייפתח notepad++)
- הגדרת sqlprompt (הכיתוב שמופיע משמאל לכל פקודה).
- הרצת שליפות – מול איזה DB אני עובד? לאיזה שרת אני מחובר (במקרה של RAC)? מה הsession id שלי ועוד..
- הפעלת spool אוטומטי על כל הרצה של SQL*Plus.
- שינוי הסביבה – לדוגמה, כאשר מפעילים את SQL*Plus במ"ה Windows מתוך הcmd, ניתן לשנות את צבע הרקע של ה SQL*Plus במקרה שמחוברים לproduction. אפשר גם לשנות את הכותרת של המסך של ה SQL*Plus ועוד..
אז איך עושים את זה ?
להלן דוגמה למה שהטמעתי בארגון שלי :
- שינוי צבע הכתב לאדום על רקע שחור במקרה שבאחד מהבאים מופיע prod או שלא מופיע test, dev או integ (על מנת שנהיה מודעים לכך שאנו מחוברים ל-Prod) :
- שם הconnection (מה שמופיע אחרי ה@)
- שם הDB
- שינוי הכותרת לפורמט של
user/connection_name [as sysdba/sysoper] (inst_id,session_id) - שינוי הsqlprompt (מה שמופיע משמאל לפקודה שמריצים) לפורמט של user/connection_name>
- שינוי הפרמטרים linesize וpagesize
- ניקוי המסך
להלן הסקריפט (יחד עם הסברים בגופו. בסוף הרשומה יהיה קישור לקובץ הסקריפט):
-- telling the sqlplus the values of the parameters should be filled by the results from the query col inst_id new_value inst_id col ses_id new_value ses_id col host_color new_value host_color -- telling the sqlplus not to show messages (any errors or any query results..) set termout off -- query the parameters (could query from any table) select trim(SYS_CONTEXT ('USERENV', 'instance')) inst_id, trim(SYS_CONTEXT ('USERENV', 'sid')) ses_id, case when ((lower('&_CONNECT_IDENTIFIER') not like '%dev%' and lower('&_CONNECT_IDENTIFIER') not like '%test%' and lower('&_CONNECT_IDENTIFIER') not like '%integ%') or lower('&_CONNECT_IDENTIFIER') like '%prod%') then 'c' -- red foreground. black background end as host_color from dual / -- telling the sqlplus to show messages set termout on --------------------------------------------------------------------------- -- 1 -> changing the cmd (and the sqlplus) background and foreground color --------------------------------------------------------------------------- host color &host_color --------------------------------------------------------------------------- -- 2 -> changing the cmd (and the sqlplus) title to be in format of -- user/connection_name [as sysdba/sysoper] (inst_id,session_id) --------------------------------------------------------------------------- host title &&_user/&&_CONNECT_IDENTIFIER &&_PRIVILEGE (&inst_id,&&ses_id) --------------------------------------------------------------------------- -- 3 -> changing the sqlplus prompt to be in format of -- user/connection_name --------------------------------------------------------------------------- set sqlprompt '&&_user/&&_CONNECT_IDENTIFIER>' --------------------------------------------------------------------------- -- 4 -> changing the linesize and the pagesize sqlplus' parameters --------------------------------------------------------------------------- set pagesize 150 linesize 150 --------------------------------------------------------------------------- -- 5 -> clears the screen --------------------------------------------------------------------------- clear screen
קצת print screens:
הערות :
- הפרמטרים _connect_identifier, _privilege הם מגרסת 10 ומעלה.
- במידה וישנם דברים שלא מצליחים ו/או לא עובדים כמו שרציתם, ואתם לא מבינים למה, שימו בהערה (בעזרת #) את החלק של הset termout על מנת שתראו את השגיאה שלכם
- לא מומלץ להשתמש בשליפות מתוך Views v$ למיניהם, מכיוון שיש USER-ים שאין להם הרשאות אליהם.
- עוד קצת על פרמטרים של sys_context (פרטים על ה-session המחובר. מגרסת 10 ומעלה) תוכלו למצוא פה :
http://docs.oracle.com/cd/B14117_01/server.101/b10759/functions150.htm
וכמובן, הסקריפט מצורף – glogin
יש לשנות את הסיומת שלו ל-SQL
ולהניחו בספריה שצוינה לעיל.
שיהיה בהצלחה!
נתראה ברשומה הבאה,
טל ברדה, DBA
tal.barda88@gmail.com
טל ברדה
Latest posts by טל ברדה (see all)
- שימוש ב-Glogin.SQL ב-SQL*Plus - 03/03/2012
תגובה אחת ל- “שימוש ב-Glogin.SQL ב-SQL*Plus”
[…] כדי לגרום ל-SQLPLUS להריץ פקודות בכניסה למערכת, אנחנו יכולים להשתמש בקובץ ה-login.sql או glogin.sql (שכתבנו עליו בעבר במאמר הזה). […]
השאר תגובה: