Datastream מאפשר לכם להזרים עדכונים של לכידת נתוני שינוי (CDC) ממסד נתונים של Amazon RDS for Oracle אל יעד נתמך, כמו BigQuery או Cloud Storage. כדי להגדיר את המקור לכלי לקריאת יומן בינארי (גרסת Preview) או לLogMiner API, צריך להפעיל את מצב ARCHIVELOG ואת הרישום הנוסף ביומן, ולהעניק הרשאות למשתמש. מידע נוסף על השיטות האלה ל-CDC זמין במאמר עבודה עם קובצי יומן Redo של מסד נתונים ב-Oracle.
הגדרת מסד הנתונים של Amazon RDS Oracle לקורא יומנים בינאריים
במקורות Amazon RDS, Datastream תומך רק באובייקטים של ספריית מסד נתונים כשיטה לגישה ליומן עבור קורא היומן הבינארי. צריך ליצור את ספריות מסד הנתונים שמפנות לקובצי יומן Redo של הפעולות שבוצעו אונליין ולקובצי יומן הרישום של הפעולות שבוצעו בארכיון. השמות של הספריות האלה הם סטטיים ואי אפשר לשנות אותם אחר כך. אתם צריכים לספק את השמות האלה ל-Datastream כשאתם יוצרים את הסטרים.
מתחברים למופע המקור של Amazon RDS.
בטרמינל, או באמצעות מרכז הבקרה של Amazon RDS, מריצים את הפקודות הבאות:
BEGIN rdsadmin.rdsadmin_master_util.create_archivelog_dir; END; BEGIN rdsadmin.rdsadmin_master_util.create_onlinelog_dir; END; COMMIT; GRANT READ ON DIRECTORY ONLINELOG_DIR TO USER_NAME; GRANT READ ON DIRECTORY ARCHIVELOG_DIR TO USER_NAME;
מוודאים שמסד הנתונים פועל במצב
ARCHIVELOG. כדי לעשות זאת, נכנסים למסד הנתונים של Oracle ומריצים את הפקודה הבאה בשורת הפקודה של SQL:SELECT LOG_MODE FROM V$DATABASE;- אם התוצאה היא
ARCHIVELOG, עוברים לשלב ג'. - אם התוצאה היא
NOARCHIVELOG, צריך להפעיל את מצבARCHIVELOGבמסד הנתונים. - קובצי יומן שהועברו לארכיון תופסים מקום בכונן, לכן כדאי להגדיר את הפרמטר DB_RECOVERY_FILE_DEST_SIZE למסד הנתונים. הפרמטר הזה מאפשר לציין (בבייטים) את המגבלה העליונה על השטח הכולל שיידרש לקבצים של שחזור מסד הנתונים של היעד. הגדרת הפרמטר הזה מאפשרת לכם לנהל את האיזון בין הגנה על מסד הנתונים מפני מצב שבו לא נשאר יותר מקום בדיסק לבין מצב שבו הסטרימינג נכשל בגלל אובדן של מיקום ביומן.
- מגדירים מדיניות לשמירת נתונים במסד הנתונים על ידי הרצת הפקודה הבאה:
מומלץ לשמור גיבויים ויומני ארכיון למשך 4 ימים לפחות, ועדיף למשך 7 ימים.exec rdsadmin.rdsadmin_util.set_configuration('archivelog retention hours',96);
- מגדירים את מדיניות הרוטציה של קובצי היומן של Oracle. מומלץ להגדיר גודל מקסימלי של קובץ יומן לערך נמוך מ-1GB.
- אם התוצאה היא
מפעילים את האפשרות נתוני יומן משלימים. כדי לעשות זאת, קודם מפעילים רישום משלים מינימלי ברמת מסד הנתונים על ידי הפעלת הפקודה הבאה:
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');
נותנים את ההרשאות הבאות למשתמש במסד הנתונים:
exec rdsadmin.rdsadmin_util.grant_sys_object('GV_$LOG','USER_NAME','SELECT'); exec rdsadmin.rdsadmin_util.grant_sys_object('GV_$LOGFILE','USER_NAME','SELECT'); exec rdsadmin.rdsadmin_util.grant_sys_object('GV_$ARCHIVED_LOG','USER_NAME','SELECT'); exec rdsadmin.rdsadmin_util.grant_sys_object('GV_$INSTANCE','USER_NAME','SELECT'); exec rdsadmin.rdsadmin_util.grant_sys_object('GV_$STANDBY_LOG','USER_NAME','SELECT'); exec rdsadmin.rdsadmin_util.grant_sys_object('V_$INSTANCE','USER_NAME','SELECT'); exec rdsadmin.rdsadmin_util.grant_sys_object('V_$PDBS','USER_NAME','SELECT'); exec rdsadmin.rdsadmin_util.grant_sys_object('V_$TRANSPORTABLE_PLATFORM','USER_NAME',
'SELECT'); exec rdsadmin.rdsadmin_util.grant_sys_object('V_$DATABASE','USER_NAME','SELECT'); exec rdsadmin.rdsadmin_util.grant_sys_object('V_$PARAMETER','USER_NAME','SELECT'); exec rdsadmin.rdsadmin_util.grant_sys_object('COL$','USER_NAME','SELECT'); exec rdsadmin.rdsadmin_util.grant_sys_object('DBA_OBJECTS','USER_NAME','SELECT'); exec rdsadmin.rdsadmin_util.grant_sys_object('DBA_TABLESPACES','USER_NAME','SELECT'); exec rdsadmin.rdsadmin_util.grant_sys_object('DBA_ENCRYPTED_COLUMNS','USER_NAME','SELECT'); exec rdsadmin.rdsadmin_util.grant_sys_object('DBA_EXTENTS','USER_NAME','SELECT'); GRANT CONNECT TO USER_NAME; GRANT CREATE SESSION TO USER_NAME; GRANT SELECT ANY TABLE TO USER_NAME; מחליפים את USER_NAME בשם של חשבון המשתמש שבו רוצים להשתמש כדי להתחבר למסד הנתונים.
הגדרת מסד הנתונים של Amazon RDS Oracle ל-LogMiner
מוודאים שמסד הנתונים פועל במצב
ARCHIVELOG. כדי לעשות את זה, נכנסים למסד הנתונים של Oracle ומריצים את הפקודה הבאה בשורת הפקודה של SQL:SELECT LOG_MODE FROM V$DATABASE;- אם התוצאה היא
ARCHIVELOG, עוברים לשלב ג'. אם התוצאה היא
NOARCHIVELOG, צריך להפעיל את מצבARCHIVELOGבמסד הנתונים.נקודה חשובה: כדי שמסד הנתונים יפעל במצב
ARCHIVELOG, צריך להפעיל את הגיבויים של מסד הנתונים.קבצים של יומנים שנשמרו בארכיון תופסים מקום בכונן, ולכן כדאי להגדיר את הפרמטר DB_RECOVERY_FILE_DEST_SIZE במסד הנתונים. הפרמטר הזה משמש כדי לציין (בבייטים) את המגבלה הקשיחה על השטח הכולל שבו ישתמשו קובצי השחזור של מסד הנתונים המטורגט. הגדרת הפרמטר הזה מאפשרת לכם לנהל את האיזון בין הגנה על מסד הנתונים מפני ניצול כל המקום בכונן, לבין כשל בסטרימינג בגלל אובדן המיקום ביומן.
כדי להגדיר מדיניות שמירת נתונים למסד הנתונים, מריצים את הפקודה הבאה:
exec rdsadmin.rdsadmin_util.set_configuration('archivelog retention hours',96);מומלץ לשמור גיבויים ויומני ארכיון למשך 4 ימים לפחות, ועדיף למשך 7 ימים.
- אם התוצאה היא
מפעילים את האפשרות נתוני יומן משלימים. כדי לעשות זאת, קודם צריך להפעיל רישום משלים מינימלי ביומן ברמת מסד הנתונים, באמצעות הפקודה הבאה:
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 EXECUTE_CATALOG_ROLE TO USER_NAME; 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_$LOG','USER_NAME','SELECT'); -- for primary databases exec rdsadmin.rdsadmin_util.grant_sys_object('V_$STANDBY_LOG','USER_NAME','SELECT'); -- for standby databases exec rdsadmin.rdsadmin_util.grant_sys_object('V_$LOGFILE','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('V_$PARAMETER','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;
אם מסד הנתונים משתמש בהצפנת נתונים שקופה (TDE), צריך לתת את ההרשאות הבאות:
exec rdsadmin.rdsadmin_util.grant_sys_object('DBA_TABLESPACES','USER_NAME','SELECT'); exec rdsadmin.rdsadmin_util.grant_sys_object('DBA_ENCRYPTED_COLUMNS','USER_NAME','SELECT');
אם הארגון שלכם לא מאפשר להעניק את ההרשאה
GRANT SELECT ANY TABLE, השתמשו בפתרון שמתואר בקטע Oracle change data capture (CDC) בדף השאלות הנפוצות של Datastream.אם מסד הנתונים של המקור הוא Oracle 12c או גרסה חדשה יותר, צריך להעניק את ההרשאה הנוספת הבאה:
GRANT LOGMINING TO USER_NAME;
נותנים לחשבון המשתמש
SELECTגישה לתצוגהDBA_EXTENTSבמסד הנתונים. ההרשאה הזו מאפשרת להשתמש במילוי חוסרים מבוסס-ROWIDבמקור Oracle:GRANT SELECT ON DBA_EXTENTS TO USER_NAME;