הגדרת מסד נתונים של Oracle שאפשר לחבר ל-CDC

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

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

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

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

  1. כדי לגשת לקובצי היומן, בוחרים באחת מהשיטות הבאות:

    • ‫ניהול אחסון אוטומטי (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: השם של משתמש מסד הנתונים שרוצים לתת לו גישה ל-READ.

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

  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 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 SELECT ON DBA_SUPPLEMENTAL_LOGGING TO USER_NAME;
    
    GRANT CONNECT TO USER_NAME;
    GRANT CREATE SESSION TO USER_NAME;
    GRANT SELECT ANY TABLE TO USER_NAME;
    GRANT READ ON DIRECTORY ONLINELOG_DIR TO USER_NAME;
    GRANT READ ON DIRECTORY ARCHIVELOG_DIR TO USER_NAME;

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

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

כדי להגדיר מסד נתונים של Oracle שניתן לחיבור באירוח עצמי, כך שתוכלו להשתמש בו עם LogMiner API, בצעו את השלבים הבאים:

  1. מוודאים שמסד הנתונים פועל במצב ARCHIVELOG. כדי לעשות את זה, מריצים את הפקודה הבאה מהקונטיינר CDB$ROOT:

    SELECT LOG_MODE FROM V$DATABASE;

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

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

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

    CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 4 DAYS;
    

    הפקודה מגדירה את מדיניות שמירת הנתונים לכל מסדי הנתונים הניתנים לחיבור במסד הנתונים של מאגר התגים.

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

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

  4. מפעילים את האפשרות נתוני יומן משלימים. כדי לעשות את זה, קודם מפעילים רישום ביומן משלים במסד הנתונים ברמת מאגר ה-CDB$ROOT, על ידי הפעלת הפקודה הבאה:

    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;
    
  5. יוצרים משתמש רגיל. למשתמש משותף יש את אותה זהות במאגר CDB$ROOT ובמסדי הנתונים הניתנים לחיבור. משתמש רגיל יכול להתחבר למאגר CDB$ROOT ולבצע בו פעולות, וגם בכל מסד נתונים שניתן לחיבור שבו יש לו הרשאות. שם המשתמש הנפוץ חייב להתחיל ב-C## או ב-c##.

  6. נותנים את ההרשאות המתאימות למשתמש המשותף שישמש לחיבור למסד הנתונים. נדרשות הרשאות שונות ברמת הקונטיינר של CDB$ROOT וברמת מסד הנתונים הניתן לחיבור.

    • מתחברים לקונטיינר CDB$ROOT ומריצים את הפקודות הבאות:
    GRANT CREATE SESSION TO USER_NAME;
    GRANT SET CONTAINER TO USER_NAME;
    GRANT SELECT ON SYS.V_$DATABASE TO USER_NAME;
    GRANT SELECT ON SYS.V_$LOGMNR_CONTENTS TO USER_NAME;
    GRANT EXECUTE ON DBMS_LOGMNR TO USER_NAME;
    GRANT EXECUTE ON DBMS_LOGMNR_D TO USER_NAME;
    GRANT LOGMINING TO USER_NAME;
    GRANT EXECUTE_CATALOG_ROLE TO USER_NAME;
    
    • מתחברים למסד הנתונים המתחבר ומריצים את הפקודות הבאות:
    GRANT CREATE SESSION TO USER_NAME;
    GRANT SET CONTAINER TO USER_NAME;
    GRANT SELECT ANY TABLE TO USER_NAME;
    GRANT SELECT ON SYS.V_$DATABASE TO USER_NAME;
    GRANT SELECT ON V_$PDBS 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 DBA_SUPPLEMENTAL_LOGGING TO USER_NAME;
    GRANT SELECT ON SYS.V_$PARAMETER TO USER_NAME;
    
  7. נותנים למשתמש המשותף SELECT גישה לתצוגה DBA_EXTENTS במסד הנתונים. ההרשאה הזו מאפשרת להשתמש במילוי חוסרים מבוסס-ROWID במקור Oracle:

    GRANT SELECT ON DBA_EXTENTS TO USER_NAME;
  8. אם מסד הנתונים משתמש בהצפנת נתונים שקופה (TDE), צריך לתת את ההרשאות הבאות:

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

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