שימוש ב-Glogin.SQL ב-SQL*Plus - ilDBA Portal

שימוש ב-Glogin.SQL ב-SQL*Plus

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

שימוש ב-Glogin.SQL

כולנו עובדים עם SQL*Plus בצורה תכופה יותר או פחות.
זהו כלי שמיש והפשוט ביותר להתחבר לשרת Oracle.
ברצוני לספר לכם היום טיפ קטן ושימושי שיכול להועיל רבות, כאשר עובדים עם כלי זה מול סביבות שונות.

ברשומה הזו נכיר לכם את הקובץ glogin.sql שיושב בנתיב ORACLE_HOME\sqlplus\admin.

ברגע שמגדירים את קובץ זה, בכל פעם שפותחים את SQL*Plus,

הקובץ הזה רץ ומריץ את הפקודות הרשומות בו (כמו Login script של מערכת הפעלה)

איך זה יכול לעזור לנו ?

דברים שניתן לעשות בעזרת הקובץ הם :

  1. שינוי פרמטרים של sqlplus – linesize/pagesize,
  2. הגדרת ה-editor שאיתו ייפתחו הפקודות האחרונות שהרצנו בעזרת ed (לא חייב לפתוח את ה-notepad הרגיל, אפשר להגדיר למשל שייפתח notepad++)
  3. הגדרת sqlprompt (הכיתוב שמופיע משמאל לכל פקודה).
  4. הרצת שליפות – מול איזה DB אני עובד? לאיזה שרת אני מחובר (במקרה של RAC)? מה הsession id שלי ועוד..
  5. הפעלת spool  אוטומטי על כל הרצה של SQL*Plus.
  6. שינוי הסביבה – לדוגמה, כאשר מפעילים את SQL*Plus במ"ה Windows מתוך הcmd, ניתן לשנות את צבע הרקע של ה SQL*Plus במקרה שמחוברים לproduction. אפשר גם לשנות את הכותרת של המסך של ה SQL*Plus ועוד..

אז איך עושים את זה ?
להלן דוגמה למה שהטמעתי בארגון שלי :

  1. שינוי צבע הכתב לאדום על רקע שחור במקרה שבאחד מהבאים מופיע prod או שלא מופיע test,  dev או integ (על מנת שנהיה מודעים לכך שאנו מחוברים ל-Prod) :
  • שם הconnection (מה  שמופיע אחרי ה@)
  • שם הDB
  1. שינוי הכותרת לפורמט של
    user/connection_name [as sysdba/sysoper] (inst_id,session_id)
  2. שינוי הsqlprompt (מה שמופיע משמאל לפקודה שמריצים) לפורמט של user/connection_name>
  3. שינוי הפרמטרים linesize וpagesize
  4. ניקוי המסך

להלן הסקריפט (יחד עם הסברים בגופו. בסוף הרשומה יהיה קישור לקובץ הסקריפט):

-- 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

The following two tabs change content below.

טל ברדה

Latest posts by טל ברדה (see all)

תגובה אחת ל- “שימוש ב-Glogin.SQL ב-SQL*Plus”

[…] כדי לגרום ל-SQLPLUS להריץ פקודות בכניסה למערכת, אנחנו יכולים להשתמש בקובץ ה-login.sql או glogin.sql (שכתבנו עליו בעבר במאמר הזה). […]

השאר תגובה:

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

*



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

הפונקציה COALESCE

כולם מכירים את הפונקציה NVL, ומשתמשים בה לא מעט. לעומת זאת, הפונקציה COALESCE, השייכת לאותה משפחה של פונקציות, פחות מוכרת, למרות שהיא קיימת כבר מגרסה 9i ועולה ביכולותיה על NVL הישנה והטובה. מצד שני, אף [...]

טיפ: איך לזכור ב-SQLPLUS שאתה בסביבת היצור

כמה פעמים קרה לנו שעבדנו עם sqlplus  מול סביבת יצור ביחד עם עוד כמה חלונות פתוחים ועם קצת לחץ? בקיצור כרגיל… מכוון שהכול כל כך לחוץ, הרצנו איזה פקודה הרסנית, ומיד הצטערנו עליה מאוד: אוי! הרצתי [...]
עבודה

עבודה תחת סביבת FireWall

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

Indexes in SQL Server 2

ערן שקד ממשיך בסדרת מאמרים על אינדקסים בSQL [...]
Copyright 2019 ilDBA Portal. Brought to you by Brillix - Israel Leading DBA company. Sponsored by: DBSnaps - Database Video Tutorialss
Website Security Test
%d בלוגרים אהבו את זה: