הגדרת מסד נתונים של Oracle בניהול עצמי ל-CDC

כדי להעביר עדכונים של סימון נתונים שהשתנו (CDC) ממסד נתונים של Oracle בניהול עצמי ליעד נתמך כמו BigQuery או Cloud Storage, אתם יכולים להגדיר את Datastream לקרוא את קובצי יומן ה-Redo באמצעות קורא היומן הבינארי (גרסת טרום-השקה (Preview)) או LogMiner API. כדי להכין את מסד הנתונים, מפעילים את מצב ARCHIVELOG, מגדירים מדיניות שמירת נתונים, מפעילים רישום משלים ביומן ומעניקים הרשאות למשתמשים. מידע נוסף על השיטות האלה של CDC זמין במאמר עבודה עם קובצי יומן Redo של מסד נתונים של Oracle.

הגדרת מסד נתונים של Oracle בניהול עצמי לקורא יומנים בינאריים

כדי להגדיר את מסד הנתונים של Oracle בניהול עצמי לשימוש בשיטת CDC של קורא יומנים בינאריים, מבצעים את השלבים הבאים:

  1. יוצרים חשבון משתמש במסד הנתונים, שבו Datastream ישתמש כדי להתחבר למסד הנתונים:

    CREATE USER USER_NAME IDENTIFIED BY USER_PASSWORD;

    מחליפים את מה שכתוב בשדות הבאים:

    • ‫USER_NAME: השם של חשבון המשתמש במסד הנתונים שבו רוצים להשתמש כדי להתחבר למסד הנתונים.
    • ‫USER_PASSWORD: הסיסמה של חשבון המשתמש במסד הנתונים.
  2. כדי לגשת לקובצי היומן, בוחרים באחת מהשיטות הבאות:

    • ‫Automatic Storage Management (ASM): אם בוחרים באפשרות הזו, צריך ליצור חיבור ASM ייעודי ולספק את הפרטים שלו כשיוצרים את פרופיל החיבור. לחשבון המשתמש שמשמש לחיבור ל-ASM צריכה להיות ההרשאה SYSASM.

      כדי ליצור משתמש ASM חדש עם הרשאת SYSASM, מריצים את הפקודות הבאות:

      CREATE USER ASM_USER_NAME IDENTIFIED BY ASM_PASSWORD;
      GRANT SYSASM TO ASM_USER_NAME;

      מחליפים את מה שכתוב בשדות הבאים:

      • ‫ASM_USER_NAME: השם של משתמש ה-ASM.
      • ‫ASM_PASSWORD: הסיסמה של המשתמש ב-ASM.
    • ספריות של מסדי נתונים: אם בוחרים באפשרות הזו, צריך ליצור אובייקטים של ספריות של מסדי נתונים שמפנים לקובצי יומן ה-redo ולקובצי היומן שהועברו לארכיון, ולתת למשתמש של מסד הנתונים גישת READ לספריות:

    CREATE DIRECTORY DIRECTORY_NAME_1 as 'ONLINE_REDO_LOGS_PATH';
    CREATE DIRECTORY DIRECTORY_NAME_2 as 'ARCHIVED_REDO_LOGS_PATH';
    GRANT READ ON DIRECTORY DIRECTORY_NAME_1 to USER_NAME;
    GRANT READ ON DIRECTORY DIRECTORY_NAME_2 to USER_NAME;

    מחליפים את מה שכתוב בשדות הבאים:

    • ‫DIRECTORY_NAME_1: שם הספרייה של קובצי יומן ה-Redo אונליין.
    • ‫DIRECTORY_NAME_2: שם הספרייה של קובצי יומן ה-Redo שהועברו לארכיון.
    • ‫ONLINE_REDO_LOGS_PATH: הנתיב לספרייה שבה רוצים לאחסן את קובצי יומן ה-Redo אונליין.
    • ‫ARCHIVED_REDO_LOGS_PATH: הנתיב לספרייה שבה רוצים לאחסן את קובצי היומן שהועברו לארכיון.
    • ‫USER_NAME: השם של חשבון המשתמש במסד הנתונים שנוצר קודם.

    אם אתם בוחרים בשיטה של קורא יומן בינארי ומשתמשים בספריות של מסדי נתונים, אתם צריכים לספק את השמות של יומן ה-Redo ושל ספריית היומנים שהועברו לארכיון כשאתם יוצרים את ה-stream.

  3. מוודאים שמסד הנתונים פועל במצב ARCHIVELOG.

    כדי לעשות את זה, נכנסים למסד הנתונים של Oracle ומריצים את הפקודה הבאה בשורת הפקודה של SQL:

    SELECT LOG_MODE FROM V$DATABASE;

    1. אם התוצאה היא ARCHIVELOG, עוברים לשלב הבא.
    2. אם התוצאה היא NOARCHIVELOG, צריך להפעיל את מצב ARCHIVELOG במסד הנתונים.
    3. מריצים את הפקודות הבאות כשמחוברים בתור SYSDBA:

      SHUTDOWN IMMEDIATE;
      STARTUP MOUNT;
      ALTER DATABASE ARCHIVELOG;
      ALTER DATABASE OPEN;
    4. קובצי יומן שהועברו לארכיון תופסים מקום בכונן, לכן כדאי להגדיר את הפרמטר DB_RECOVERY_FILE_DEST_SIZE למסד הנתונים. הפרמטר הזה מאפשר לציין (בבייטים) את המגבלה הנוקשה על השטח הכולל שישמש את קובצי השחזור של מסד הנתונים המטורגט. הגדרת הפרמטר הזה מאפשרת לכם לנהל את האיזון בין הגנה על מסד הנתונים מפני ניצול כל המקום בכונן לבין כשל בסטרימינג בגלל אובדן מיקום ביומן.

  4. מגדירים מדיניות שמירת נתונים למסד הנתונים על ידי הפעלת הפקודות הבאות של Oracle Recovery Manager ‏ (RMAN):

    TARGET /
    CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 4 DAYS;

    מומלץ לשמור גיבויים ויומני ארכיון למשך 4 ימים לפחות, ועדיף למשך 7 ימים.

  5. חוזרים להנחיית ה-SQL של כלי מסד הנתונים שבו משתמשים כדי להגדיר את מדיניות הרוטציה של קובצי היומן של Oracle. מומלץ להגדיר גודל מקסימלי של קובץ יומן שלא עולה על 512MB.

  6. מפעילים את האפשרות נתוני יומן משלימים. כדי לעשות את זה, קודם צריך להפעיל רישום משלים מינימלי ברמת מסד הנתונים באמצעות הפקודה הבאה:

    ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;

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

    כדי לתעד שינויים רק בטבלאות ספציפיות, מריצים את הפקודה הבאה לכל טבלה שרוצים לשכפל:

    ALTER TABLE SCHEMA.TABLE ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;

    מחליפים את מה שכתוב בשדות הבאים:

    • ‫SCHEMA: שם הסכימה שמכילה את הטבלה.
    • ‫TABLE: שם הטבלה שרוצים לתעד את השינויים בה.

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

    ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;
  7. נותנים את ההרשאות המתאימות ישירות לחשבון המשתמש שמשמש להתחברות למסד הנתונים. חשוב לזכור שההרשאות האלה לא פועלות כשהן מוקצות לתפקיד, למשל. כדי לעשות את זה, מריצים את הפקודות הבאות:

    GRANT SELECT ON GV_$LOG TO USER_NAME;
    GRANT SELECT ON GV_$LOGFILE TO USER_NAME;
    GRANT SELECT ON GV_$ARCHIVED_LOG TO USER_NAME;
    GRANT SELECT ON GV_$INSTANCE TO USER_NAME;
    GRANT SELECT ON GV_$STANDBY_LOG TO USER_NAME;
    GRANT SELECT ON V_$INSTANCE TO USER_NAME;
    GRANT SELECT ON V_$PDBS TO USER_NAME;
    GRANT SELECT ON V_$TRANSPORTABLE_PLATFORM TO USER_NAME;
    GRANT SELECT ON V_$DATABASE TO USER_NAME;
    GRANT SELECT ON V_$PARAMETER TO USER_NAME;
    GRANT SELECT ON COL$ TO USER_NAME;
    GRANT SELECT ON DBA_OBJECTS TO USER_NAME;
    GRANT SELECT ON DBA_TABLESPACES TO USER_NAME;
    GRANT SELECT ON DBA_ENCRYPTED_COLUMNS TO USER_NAME;
    GRANT SELECT ON DBA_EXTENTS TO USER_NAME;
    
    GRANT CONNECT TO USER_NAME;
    GRANT CREATE SESSION TO USER_NAME;
    GRANT SELECT ANY TABLE TO USER_NAME;

    מחליפים את USER_NAME בשם של חשבון המשתמש במסד הנתונים שיצרתם קודם.

הגדרת מסד נתונים של Oracle בניהול עצמי ל-LogMiner

  1. יוצרים חשבון משתמש במסד הנתונים, שבו Datastream ישתמש כדי להתחבר למסד הנתונים:

    CREATE USER USER_NAME IDENTIFIED BY USER_PASSWORD;

    מחליפים את מה שכתוב בשדות הבאים:

    • ‫USER_NAME: השם של חשבון המשתמש במסד הנתונים שבו רוצים להשתמש כדי להתחבר למסד הנתונים.
    • ‫USER_PASSWORD: הסיסמה של חשבון המשתמש במסד הנתונים.
  2. מוודאים שמסד הנתונים פועל במצב ARCHIVELOG.

    כדי לעשות את זה, נכנסים למסד הנתונים של Oracle ומריצים את הפקודה הבאה בשורת הפקודה של SQL:

    SELECT LOG_MODE FROM V$DATABASE;

    1. אם התוצאה היא ARCHIVELOG, עוברים לשלב הבא.
    2. אם התוצאה היא NOARCHIVELOG, צריך להפעיל את מצב ARCHIVELOG במסד הנתונים.
    3. מריצים את הפקודות הבאות כשמחוברים בתור SYSDBA:

      SHUTDOWN IMMEDIATE;
      STARTUP MOUNT;
      ALTER DATABASE ARCHIVELOG;
      ALTER DATABASE OPEN;
    4. קובצי יומן שהועברו לארכיון תופסים מקום בכונן, לכן כדאי להגדיר את הפרמטר DB_RECOVERY_FILE_DEST_SIZE למסד הנתונים. הפרמטר הזה מאפשר לציין (בבייטים) את המגבלה הנוקשה על השטח הכולל שישמש את קובצי השחזור של מסד הנתונים המטורגט. הגדרת הפרמטר הזה מאפשרת לכם לנהל את האיזון בין הגנה על מסד הנתונים מפני ניצול כל המקום בכונן לבין כשל בסטרימינג בגלל אובדן מיקום ביומן.

  3. מגדירים מדיניות שמירת נתונים למסד הנתונים על ידי הפעלת הפקודות הבאות של Oracle Recovery Manager ‏ (RMAN):

    TARGET /
    CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 4 DAYS;

    מומלץ לשמור גיבויים ויומני ארכיון למשך 4 ימים לפחות, ועדיף למשך 7 ימים.

  4. חוזרים להנחיית ה-SQL של כלי מסד הנתונים שבו משתמשים כדי להגדיר את מדיניות הרוטציה של קובצי היומן של Oracle. מומלץ להגדיר גודל מקסימלי של קובץ יומן שלא עולה על 512MB.

  5. מפעילים את האפשרות נתוני יומן משלימים. כדי לעשות את זה, קודם צריך להפעיל רישום משלים מינימלי ברמת מסד הנתונים באמצעות הפקודה הבאה:

    ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;

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

    כדי לתעד שינויים רק בטבלאות ספציפיות, מריצים את הפקודה הבאה לכל טבלה שרוצים לשכפל:

    ALTER TABLE SCHEMA.TABLE ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;

    מחליפים את מה שכתוב בשדות הבאים:

    • ‫SCHEMA: שם הסכימה שמכילה את הטבלה.
    • ‫TABLE: שם הטבלה שרוצים לתעד את השינויים בה.

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

    ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;
  6. נותנים את ההרשאות המתאימות ישירות לחשבון המשתמש שמשמש להתחברות למסד הנתונים. חשוב לזכור שההרשאות האלה לא פועלות כשהן מוקצות לתפקיד, למשל. כדי לעשות את זה, מריצים את הפקודות הבאות:

    GRANT EXECUTE_CATALOG_ROLE TO USER_NAME;
    GRANT CONNECT TO USER_NAME;
    GRANT CREATE SESSION TO USER_NAME;
    GRANT SELECT ON SYS.V_$DATABASE TO USER_NAME;
    GRANT SELECT ON SYS.V_$LOG TO USER_NAME; -- for primary databases
    GRANT SELECT ON SYS.V_$STANDBY_LOG TO USER_NAME; -- for standby databases
    GRANT SELECT ON SYS.V_$LOGFILE TO USER_NAME;
    GRANT SELECT ON SYS.V_$ARCHIVED_LOG TO USER_NAME;
    GRANT SELECT ON SYS.V_$LOGMNR_CONTENTS TO USER_NAME;
    GRANT SELECT ON SYS.V_$PARAMETER TO USER_NAME;
    GRANT EXECUTE ON DBMS_LOGMNR TO USER_NAME;
    GRANT EXECUTE ON DBMS_LOGMNR_D TO USER_NAME;
    GRANT SELECT ANY TRANSACTION TO USER_NAME;
    GRANT SELECT ANY TABLE TO USER_NAME;

    אם מסד הנתונים משתמש בהצפנת נתונים שקופה (TDE), צריך לתת את ההרשאות הבאות:

    GRANT SELECT ON DBA_TABLESPACES TO USER_NAME;
    GRANT SELECT ON DBA_ENCRYPTED_COLUMNS TO USER_NAME;

    אם הארגון שלכם לא מאפשר להעניק את ההרשאה GRANT SELECT ANY TABLE, השתמשו בפתרון שמתואר בקטע Oracle change data capture (CDC)‎ בדף השאלות הנפוצות של Datastream.

    אם מסד הנתונים של המקור הוא Oracle 12c או גרסה חדשה יותר, צריך להעניק את ההרשאה הנוספת הבאה:

    GRANT LOGMINING TO USER_NAME;
  7. נותנים לחשבון המשתמש SELECT גישה לתצוגה DBA_EXTENTS במסד הנתונים. ההרשאה הזו מאפשרת להשתמש במילוי חוסרים מבוסס-ROWID במקור Oracle:

    GRANT SELECT ON DBA_EXTENTS TO USER_NAME;

המאמרים הבאים