Datastream תומך בארכיטקטורה של Oracle multi-tenant, שבה מסד נתונים של קונטיינר (CDB) אחד מכיל מסד נתונים אחד או יותר שניתן להוספה (PDB). כל מסד נתונים ניתן לחיבור הוא מסד נתונים עצמאי עם מזהה ושם ייחודיים, ואפשר לנהל אותו באופן עצמאי.
בדף הזה מוסבר איך להגדיר לכידת נתונים של שינויים (CDC) כדי להזרים נתונים ממסד נתונים של Oracle שאפשר להוסיף לו תוספים אל יעד נתמך, כמו BigQuery או Cloud Storage.אתם יכולים להגדיר את מסד הנתונים של Oracle שניתן לחיבור לשימוש בשיטות הבאות של CDC:
מידע נוסף על הכלי לקריאת יומן בינארי ועל LogMiner API זמין במאמר בנושא עבודה עם קובצי יומן Redo של מסד נתונים של Oracle.
הוראות מפורטות להגדרת מסד הנתונים של Oracle כמקור לכל אחת מהשיטות האלה מופיעות בקטעים הבאים.
הגדרת מסד נתונים של Oracle שאפשר לחבר אותו לקורא של יומן בינארי
כדי להגדיר מסד נתונים של Oracle שאפשר לחבר לשימוש בשיטת CDC של קורא יומן בינארי:
בוחרים אחת מהשיטות הבאות כדי לגשת לקובצי היומן:
ניהול אחסון אוטומטי (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: השם של הספרייה של קובצי יומן הרישום של הפעולות החוזרות אונליין.
- DIRECTORY_NAME_2: השם של הספרייה שבה נמצאים קובצי יומן הפעולות החוזרות בארכיון.
- ONLINE_REDO_LOGS_PATH: הנתיב לספרייה שבה יישמרו קובצי יומן הרישום של פעולות חוזרות אונליין.
- ARCHIVED_REDO_LOGS_PATH: הנתיב לספרייה שבה יישמרו קובצי יומן בארכיון.
- USER_NAME: השם של משתמש מסד הנתונים שרוצים להעניק לו גישת
READ.
אם בוחרים בשיטה של קריאת יומן בינארי ומשתמשים בספריות של מסדי נתונים, צריך לספק את השמות של יומן Redo ושל ספריית היומנים שנשמרו בארכיון כשיוצרים את הזרם.
מוודאים שמסד הנתונים פועל במצב
ARCHIVELOG.כדי לעשות זאת, נכנסים למסד הנתונים של Oracle ומריצים את הפקודה הבאה בשורת הפקודה של SQL:
SELECT LOG_MODE FROM V$DATABASE;- אם התוצאה היא
ARCHIVELOG, עוברים לשלב הבא. - אם התוצאה היא
NOARCHIVELOG, צריך להפעיל את מצבARCHIVELOGבמסד הנתונים. מריצים את הפקודות הבאות כשמחוברים בתור
SYSDBA:SHUTDOWN IMMEDIATE; STARTUP MOUNT; ALTER DATABASE ARCHIVELOG; ALTER DATABASE OPEN;
קבצים של יומני רישום שנשמרו בארכיון תופסים מקום בדיסק, ולכן כדאי להגדיר את הפרמטר
DB_RECOVERY_FILE_DEST_SIZEבמסד הנתונים. הפרמטר הזה מאפשר לציין (בבייט) את המגבלה הקשיחה על הנפח הכולל של הקבצים לשחזור מסד הנתונים של היעד. הגדרת הפרמטר הזה מאפשרת לכם לנהל את האיזון בין הגנה על מסד הנתונים מפני מצב שבו לא יישאר יותר מקום בדיסק, לבין מצב שבו הסטרימינג ייכשל בגלל אובדן של מיקום ביומן.
- אם התוצאה היא
מגדירים מדיניות לשמירת נתונים במסד הנתונים על ידי הפעלת הפקודות הבאות של Oracle Recovery Manager (RMAN):
TARGET / 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 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; 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, מבצעים את השלבים הבאים:
מוודאים שמסד הנתונים פועל במצב
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ובמסדי הנתונים הניתנים לחיבור. משתמש רגיל יכול להתחבר למאגרCDB$ROOTולבצע בו פעולות, וגם בכל מסד נתונים שאפשר לחבר אליו אם יש לו הרשאות מתאימות. שם המשתמש הנפוץ חייב להתחיל ב-C##או ב-c##.מעניקים את ההרשאות המתאימות למשתמש הרגיל שישמש לחיבור למסד הנתונים. צריך הרשאות שונות ברמת הקונטיינר של
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 SYS.V_$LOG TO USER_NAME; -- for primary databases GRANT SELECT ON SYS.V_$STANDY_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;- מתחברים למאגר
נותנים למשתמש הרגיל
SELECTגישה לתצוגהDBA_EXTENTSבמסד הנתונים. הרשאה זו מאפשרת לכם להשתמש בROWIDלמילוי חוסרים במקור Oracle:GRANT SELECT ON DBA_EXTENTS TO USER_NAME;
אם במסד הנתונים שלכם נעשה שימוש בהצפנת נתונים שקופה (TDE), צריך להעניק את ההרשאות הבאות:
GRANT SELECT ON DBA_TABLESPACES TO USER_NAME; GRANT SELECT ON DBA_ENCRYPTED_COLUMNS TO USER_NAME;