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

בדף הזה מוסבר איך להגדיר את מסד הנתונים של Oracle כמקור להעברה רציפה באמצעות Database Migration Service.

‫Database Migration Service משתמש ב-Oracle LogMiner API, שהוא חלק מ-Oracle Database, כדי לשלוח שאילתות לקובצי יומן Redo שהועברו לארכיון. קובצי יומן Redo מכילים מידע על היסטוריית הפעילות במסד נתונים. במאמר מידע על זרימת הנתונים בהעברות מ-Oracle מוסבר איך Database Migration Service פועל עם קובצי היומן האלה.

הגדרת מסד הנתונים של Oracle כמקור

כדי להשתמש ב-Database Migration Service כדי לשלוף נתונים ממסד הנתונים של Oracle, צריך להגדיר את מסד הנתונים:

  • הגדרת רישום ביומן של ארכיון כדי לעקוב אחרי שינויים במסד הנתונים, כמו הפעולות INSERT,‏ UPDATE,‏ DELETE ו-RENAME.

  • הענקת ההרשאות המתאימות לחשבון המשתמש שישמש להתחברות למסד הנתונים ולגישה לאובייקטים של סכימה וקוד.

    כברירת מחדל, Database Migration Service מנסה לגשת לכל הגדרות האובייקטים דרך DBA_VIEWS. הגישה אל DBA_VIEWS ניתנת באמצעות ההרשאה SELECT ANY DICTIONARY. אם לחשבון המשתמש שמשמש להעברה אין גישה לתצוגות של מנהל מסד הנתונים, Database Migration Service חוזר ל- ALL_VIEWS. הגישה הזו מספקת את מידת הגמישות הגבוהה ביותר בכל הנוגע להגדרת מודל אבטחה שמתאים בצורה הטובה ביותר לדרישות שלכם.

    אם אתם רוצים של-Database Migration Service תהיה גישה רק לקבוצת משנה מסוימת של הגדרות האובייקטים, תנו למשתמש ההעברה תפקיד עם הגדרת הרשאות מפורטת יותר במקום SELECT ANY DICTIONARY.

  • הגדרת מדיניות שמירת נתונים למסד הנתונים כדי לקבוע אילו נתונים יועברו לארכיון, כמה זמן הם יישמרו, והאם הנתונים יועברו לארכיון או יושמדו בסוף תקופת השמירה.

‫Database Migration Service פועל עם הסוגים הבאים של מסדי נתונים של Oracle:

הגדרת מסד נתונים של Amazon RDS ל-Oracle

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

    SELECT LOG_MODE FROM V$DATABASE;

    1. אם התוצאה היא ARCHIVELOG, עוברים לשלב ג'.

    2. אם התוצאה היא NOARCHIVELOG, צריך להפעיל את מצב ARCHIVELOG במסד הנתונים.

    3. קובצי יומן שהועברו לארכיון תופסים מקום בכונן, לכן מומלץ להגדיר את הפרמטר DB_RECOVERY_FILE_DEST_SIZE במסד הנתונים. משתמשים בפרמטר הזה כדי לציין (בבייטים) את המגבלה הנוקשה על השטח הכולל שישמש את קובצי השחזור של מסד הנתונים המטורגט. הגדרת הפרמטר הזה מאפשרת לכם לנהל את האיזון בין זמינות המידע לבין המקום בכונן.

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

      exec rdsadmin.rdsadmin_util.set_configuration('archivelog retention hours',96);

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

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

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

    exec rdsadmin.rdsadmin_util.alter_supplemental_logging('ADD');

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

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

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

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

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

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

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

    exec rdsadmin.rdsadmin_util.alter_supplemental_logging('ADD','ALL');
  3. נותנים את ההרשאות המתאימות לחשבון המשתמש שישמש להתחברות למסד הנתונים. כדי לעשות את זה, מריצים את הפקודות הבאות:

    GRANT CONNECT TO USER_NAME;
    GRANT CREATE SESSION TO USER_NAME;
    exec rdsadmin.rdsadmin_util.grant_sys_object('V_$DATABASE','USER_NAME','SELECT');
    exec rdsadmin.rdsadmin_util.grant_sys_object('V_$ARCHIVED_LOG','USER_NAME','SELECT');
    exec rdsadmin.rdsadmin_util.grant_sys_object('V_$LOGMNR_LOGS','USER_NAME','SELECT');
    exec rdsadmin.rdsadmin_util.grant_sys_object('V_$LOGMNR_CONTENTS','USER_NAME','SELECT');
    exec rdsadmin.rdsadmin_util.grant_sys_object('DBMS_LOGMNR','USER_NAME','EXECUTE');
    exec rdsadmin.rdsadmin_util.grant_sys_object('DBMS_LOGMNR_D','USER_NAME','EXECUTE');
    GRANT SELECT ANY TRANSACTION TO USER_NAME;
    GRANT SELECT ANY TABLE TO USER_NAME;
    GRANT SELECT ANY DICTIONARY TO USER_NAME;
    GRANT SELECT ON DBA_EXTENTS TO USER_NAME;

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

    GRANT LOGMINING TO USER_NAME;

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

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

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

    CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 4 DAYS;

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

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

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

    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. נותנים את ההרשאות המתאימות לחשבון המשתמש שישמש להתחברות למסד הנתונים. כדי לעשות את זה, מריצים את הפקודות הבאות:

    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_$ARCHIVED_LOG TO USER_NAME;
    GRANT SELECT ON SYS.V_$LOGMNR_CONTENTS TO USER_NAME;
    GRANT SELECT ON SYS.V_$LOGMNR_LOGS 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;
    GRANT SELECT ANY DICTIONARY TO USER_NAME;
    GRANT EXECUTE_CATALOG_ROLE TO USER_NAME;
    GRANT SELECT ON DBA_EXTENTS TO USER_NAME;

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

    GRANT LOGMINING TO USER_NAME;

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

‫Database Migration Service תומך בארכיטקטורת ריבוי דיירים של Oracle, שבה מסד נתונים של קונטיינר (CDB) אחד מכיל מסד נתונים אחד או יותר שניתן לחיבור (PDB). כל מסד נתונים שניתן לחיבור הוא מסד נתונים עצמאי עם מזהה ייחודי ושם, ואפשר לנהל אותו בנפרד.

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

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

  6. נותנים את ההרשאות המתאימות למשתמש המשותף שישמש לחיבור למסד הנתונים. נדרשות הרשאות שונות ברמות של מאגר הנתונים (container) ומסד הנתונים הניתן לחיבור (pluggable database) של 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 ANY DICTIONARY TO USER_NAME;
      GRANT SELECT ON SYS.V_$DATABASE 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 DBA_EXTENTS TO USER_NAME;