איך להבין מה expdp או impdp עושה כרגע

בגרסה 10g התחילו באורקל להחליף את מנגנון ה-export/import בכלי מתוחכם בהרבה בשם expdp/impdp (כלומר export data pump או import data pump). הכלי החדש תומך בין השאר ביצוא ויבוא של נתונים בצורה מהירה בהרבה ואפילו בפעולות מקביליות.

הבעיה היא שלמרות הכלי המתוחכם, לפעמים המנגנון הזה עובד קצת לאט ואז נוצרת בעיה: איך לזהות מה קורה עם ה-export או ה-import שלי? כדי לענות על השאלה הזו צריך להפריד בין כמה רמות של שאלה.

רמה הראשונה: איך מזהים במערכת ההפעלה את התהליכים שקשורים ל-expdp?
תשובה:

/app01/oracle 17:54> expdp zelkayam2 directory=HISTORY_DIR dumpfile=zelkayam%u.dmp full=y parallel=2
/app01/oracle 17:54> ps -ef | grep expdp

oracle 27854 27567 0 17:54 pts/0 00:00:00 expdp directory=HISTORY_DIR dumpfile=zelkayam%u.dmp full=y parallel=2

רמה שנייה: איך מזהים את ה-session-ים בתוך ה-database?
תשובה:

select to_char(sysdate,'YYYY-MM-DD HH24:MI:SS') "DATE", s.program, s.sid,
s.status, s.username, d.job_name, p.spid, s.serial#, p.pid
from v$session s, v$process p, dba_datapump_sessions d
where p.addr=s.paddr and s.saddr=d.saddr;

DATE                PROGRAM                                    SID STATUS   USERNAME   JOB_NAME                       SPID    SERIAL#     PID
------------------- -------------------------------------- ------- -------- ---------- ------------------------------ ------- ------- -------
2010-11-11 17:54:45 [email protected] (TNS V1-V3)                        40 ACTIVE   ZELKAYAM2  SYS_EXPORT_FULL_01            28906     38890      26
2010-11-11 17:54:45 [email protected] (DM00)                          37 ACTIVE   ZELKAYAM2  SYS_EXPORT_FULL_01             28908      1939      30
2010-11-11 17:54:45 [email protected] (DW01)                          80 ACTIVE   ZELKAYAM2  SYS_EXPORT_FULL_01             28911     19847      31
2010-11-11 17:54:45 [email protected] (DW02)                         126 ACTIVE   ZELKAYAM2  SYS_EXPORT_FULL_01             28915      3684      12

רמה שלישית: איך מפעילים trace על ה-session-ים של ה-expdp?
התשובה פה היא קצת מפתיעה – קיים פרמטר (שלמרבה ההפתעה לא מופיע כשמריצים expdp help=y) בשם trace.
השימוש בו הוא קצת טריקי מכוון שרמת ה-trace נקבעת על ידי מספר הקסדצימלי בן 7 ספרות (אין צורך להוסיף 0x בהתחלה) ולא ניתן לתת אותו בצורה דצימלית ורק ב-lower case. כמו כן, צריך הרשאות בפועל להריץ trace על session אם רוצים לבצע את זה ומצד שני הרשאות לעשות export על ידי שימוש ברולים:EXP_FULL_DATABASE/ IMP_FULL_DATABASE.

דוגמה לשימוש ב-expdp עם trace:

/app01/oracle 18:19> expdp zelkayam2 directory=HISTORY_DIR dumpfile=zelkayam2%u.dmp full=y parallel=2 trace=480300

במקרה של ה-trace שהפעלתי פה יווצרו שני סוגי קבצים ב-BACKGROUND_DUMP_DEST:

  1. סוג אחד ל-master process בשם SID>_dm_.trc>
  2. סוג שני ל-worker processes (אחד או יותר) בשם SID>_dw_.trc>.

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

-- Summary of Data Pump trace levels:
-- ==================================

  Trace   DM   DW  ORA  Lines
  level  trc  trc  trc     in
  (hex) file file file  trace                                         Purpose
------- ---- ---- ---- ------ -----------------------------------------------
  10300    x    x    x  SHDW: To trace the Shadow process (API) (expdp/impdp)
  20300    x    x    x  KUPV: To trace Fixed table
  40300    x    x    x  'div' To trace Process services
  80300    x            KUPM: To trace Master Control Process (MCP)      (DM)
 100300    x    x       KUPF: To trace File Manager
 200300    x    x    x  KUPC: To trace Queue services
 400300         x       KUPW: To trace Worker process(es)                (DW)
 800300         x       KUPD: To trace Data Package
1000300         x       META: To trace Metadata Package
--- +
1FF0300    x    x    x  'all' To trace all components          (full tracing)

ערך trace נפוץ הוא 480300 שמנטר גם את ה-MCP (המאסטר) וגם את ה-workers.
בעתיד אני מקווה לכתוב פוסט המשך עם הסברים איך קוראים את הקבצים האלה ומבינים מה קורה בפועל ובנתיים ניתן לקרוא עוד ב-note 286496.1 ב-oracle support.

0 תגובות

השאירו תגובה

Want to join the discussion?
Feel free to contribute!

השאר תגובה

This site uses Akismet to reduce spam. Learn how your comment data is processed.