בדף הזה מוסבר איך להגדיר את מסד הנתונים של 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
מוודאים שמסד הנתונים פועל במצב
ARCHIVELOG. כדי לעשות את זה, מריצים את הפקודה הבאה:SELECT LOG_MODE FROM V$DATABASE;אם התוצאה היא
ARCHIVELOG, עוברים לשלב ג'.אם התוצאה היא
NOARCHIVELOG, צריך להפעיל את מצבARCHIVELOGבמסד הנתונים.קובצי יומן שהועברו לארכיון תופסים מקום בכונן, לכן מומלץ להגדיר את הפרמטר
DB_RECOVERY_FILE_DEST_SIZEבמסד הנתונים. משתמשים בפרמטר הזה כדי לציין (בבייטים) את המגבלה הנוקשה על השטח הכולל שישמש את קובצי השחזור של מסד הנתונים המטורגט. הגדרת הפרמטר הזה מאפשרת לכם לנהל את האיזון בין זמינות המידע לבין המקום בכונן.כדי להגדיר מדיניות שמירת נתונים למסד הנתונים, מריצים את הפקודה הבאה:
exec rdsadmin.rdsadmin_util.set_configuration('archivelog retention hours',96);
מומלץ לשמור גיבויים ויומני ארכיון למשך 4 ימים לפחות, ומומלץ למשך 7 ימים.
מגדירים את מדיניות הרוטציה של קובצי היומן של Oracle. מומלץ להגדיר גודל מקסימלי של קובץ יומן שלא עולה על 512MB. מידע נוסף על ניהול החלפת היומנים זמין במאמר עבודה עם קובצי יומן של מסד נתונים של Oracle.
מפעילים את ההגדרה נתוני יומן משלימים. כדי לעשות זאת, קודם צריך להפעיל רישום משלים ביומן במסד הנתונים באמצעות הפקודה הבאה:
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');
נותנים את ההרשאות המתאימות לחשבון המשתמש שישמש להתחברות למסד הנתונים. כדי לעשות את זה, מריצים את הפקודות הבאות:
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 באירוח עצמי
מוודאים שמסד הנתונים פועל במצב
ARCHIVELOG. כדי לעשות את זה, מריצים את הפקודה הבאה:SELECT LOG_MODE FROM V$DATABASE;אם התוצאה היא
ARCHIVELOG, עוברים לשלב 2.אם התוצאה היא
NOARCHIVELOG, צריך להפעיל את מצבARCHIVELOGבמסד הנתונים.מריצים את הפקודות הבאות כשמחוברים בתור
SYSDBA:SHUTDOWN IMMEDIATE; STARTUP MOUNT; ALTER DATABASE ARCHIVELOG; ALTER DATABASE OPEN;
קובצי יומן שהועברו לארכיון תופסים מקום בכונן, לכן מומלץ להגדיר את הפרמטר
DB_RECOVERY_FILE_DEST_SIZEבמסד הנתונים. משתמשים בפרמטר הזה כדי לציין (בבייטים) את המגבלה הנוקשה על השטח הכולל שישמש את קובצי השחזור של מסד הנתונים המטורגט. הגדרת הפרמטר הזה מאפשרת לכם לנהל את האיזון בין זמינות המידע לבין המקום בכונן.
מגדירים מדיניות שמירת נתונים למסד הנתונים באמצעות הפקודה הבאה של Oracle Recovery Manager (RMAN):
CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 4 DAYS;
מומלץ לשמור גיבויים ויומני ארכיון למשך 4 ימים לפחות, ומומלץ למשך 7 ימים.
חוזרים להנחיית ה-SQL של כלי מסד הנתונים שבו משתמשים כדי להגדיר את מדיניות הרוטציה של קובצי היומן של Oracle. מומלץ להגדיר גודל מקסימלי של קובץ יומן שלא יעלה על 512MB.
מפעילים את ההגדרה נתוני יומן משלימים. כדי לעשות זאת, קודם צריך להפעיל רישום משלים ביומן במסד הנתונים באמצעות הפקודה הבאה:
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;
נותנים את ההרשאות המתאימות לחשבון המשתמש שישמש להתחברות למסד הנתונים. כדי לעשות את זה, מריצים את הפקודות הבאות:
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, בצעו את הפעולות הבאות:
מוודאים שמסד הנתונים פועל במצב
ARCHIVELOG. כדי לעשות את זה, מריצים את הפקודה הבאה מהקונטיינר שלCDB$ROOT:SELECT LOG_MODE FROM V$DATABASE;אם התוצאה היא
ARCHIVELOG, עוברים לשלב 2.אם התוצאה היא
NOARCHIVELOG, צריך להפעיל את מצבARCHIVELOGבמסד הנתונים.מריצים את הפקודות הבאות כשמחוברים בתור
SYSDBA:SHUTDOWN IMMEDIATE; STARTUP MOUNT; ALTER DATABASE ARCHIVELOG; ALTER DATABASE OPEN;
קובצי יומן שהועברו לארכיון תופסים מקום בכונן, לכן מומלץ להגדיר את הפרמטר
DB_RECOVERY_FILE_DEST_SIZEבמסד הנתונים. משתמשים בפרמטר הזה כדי לציין (בבייטים) את המגבלה הנוקשה על השטח הכולל שישמש את קובצי השחזור של מסד הנתונים המטורגט. הגדרת הפרמטר הזה מאפשרת לכם לנהל את האיזון בין זמינות המידע לבין המקום בכונן.
מגדירים מדיניות שמירת נתונים למסד הנתונים על ידי הפעלת הפקודה הבאה של Oracle Recovery Manager (RMAN) מהקונטיינר
CDB$ROOT:CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 4 DAYS;
מומלץ לשמור גיבויים ויומני ארכיון למשך 4 ימים לפחות, ומומלץ למשך 7 ימים.
חוזרים להנחיית ה-SQL של כלי מסד הנתונים שבו משתמשים כדי להגדיר את מדיניות הרוטציה של קובצי היומן של Oracle. מומלץ להגדיר גודל מקסימלי של קובץ יומן שלא יעלה על 512MB.
מפעילים את ההגדרה נתוני יומן משלימים. כדי לעשות את זה, קודם צריך להפעיל רישום משלים ביומן במסד הנתונים ברמת
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;
יוצרים משתמש משותף. למשתמש משותף יש את אותה זהות במאגר
CDB$ROOTובמסדי הנתונים הניתנים לחיבור. משתמש משותף יכול להתחבר לשורש ולבצע פעולות בתוכו, ובכל מסד נתונים שניתן לחיבור שיש לו הרשאות בו. שם המשתמש הנפוץ חייב להתחיל ב-C##או ב-c##.נותנים את ההרשאות המתאימות למשתמש המשותף שישמש לחיבור למסד הנתונים. נדרשות הרשאות שונות ברמות של מאגר הנתונים (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;