הכנת מסדי נתונים של Oracle בסביבת Windows עבור Backup and DR במכשיר גיבוי ושחזור

לפני שמתחילים

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

  1. בודקים את ההגדרות הבאות בשרת מסד הנתונים:

    1. מסד הנתונים של Oracle ו-Oracle Listener פועלים (צריך לבדוק את שירותי Windows).

    2. מוודאים שיש רשומה של tns עם השם SID. הקובץ tnsnames.ora נמצא בתיקייה

      %ORACLE_HOME%\network\admin
      
    3. כדי לוודא שהערך tns תקין, מריצים את הפקודה:

      %ORACLE_HOME%\bin\tnsping <SID>
      
  2. בודקים אם מצב היומן מוגדר למצב 'ארכיון יומן':

    sql> archive log list
    

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

    sql> shutdown immediate;
    sql> startup mount;
    sql> alter database archivelog;
    sql> alter database open;
    
  3. הפעלת מעקב אחר שינויים במסד הנתונים. אם ה-BCT של מסד הנתונים מושבת, זמן הגיבוי המצטבר מושפע. התכונה 'שינוי מעקב אחר חסימות' זמינה במהדורת Oracle Enterprise. מריצים שאילתת SQL כדי לוודא שמעקב אחר בלוקים של שינויים מופעל. מריצים את השאילתה:

    sqlplus / as sysdba
    sql> select * from v$block_change_tracking;
    

כדי להפעיל את מעקב השינויים בחסימות:

    sql> alter database enable block change tracking
    using file '<Oracle home directory>\orcl.bct';

גיבוי מסד נתונים של Oracle בסביבת Windows

כדי לגבות מסד נתונים של Oracle בסביבת Windows, פועלים לפי השלבים הבאים:

  1. במסוף לניהול מכשירים, מגדירים את פרטי האפליקציה וההגדרות של מסדי נתונים של Oracle.

  2. החלת תוכנית גיבוי כדי להגן על מסד הנתונים.

בעיה ידועה

‫Oracle 19c SQL*Plus‏ (sqlplus.exe) נתקע מדי פעם ב-Windows כשמבצעים את הפקודה exit (מסמך מספר 2820655.1). הבאג הזה ספציפי ל-Windows. חברת Oracle אישרה שהבעיה הזו מתרחשת בגרסאות 19.10, ‏ 19.11 ו-19.12 של SQL*Plus. אורקל סיפקה את הפתרונות הבאים:

  • משתמשים ב-SQL*Plus 21.1 ואילך (או)
  • החלת תיקון:31466370. התיקון הזה זמין בגרסאות 19.11 ו-19.13.

שחזור ידני של מסדי נתונים של Oracle בסביבת Windows באמצעות RMAN לנקודת גיבוי מתוזמנת, אם קובץ ה-archivelog לא מוגן באמצעות Backup and DR

כדי לשחזר מסד נתונים שלם של Oracle בסביבת Windows:

  1. מבצעים Mount של תמונת הגיבוי של מסד הנתונים מ-Backup and DR בחזרה לשרת Oracle, כמו שמתואר במאמר Mount של מסד נתונים של Oracle כ-Mount רגיל.

  2. מגדירים את סביבת מסד הנתונים ומפעילים את מסד הנתונים במצב no-mount באמצעות קובץ הפרמטרים מהנפח המותקן של Backup and DR (לדוגמה, עבור נפח מותקן של מסד נתונים ל-E:):

    sqlplus / as sysdba
    sql> startup nomount pfile='E:\<sid>___backup.ora';
    
  3. יצירת spfile מ-pfile:

    sql> create spfile='%ORACLE_HOME%\database\spfile<sid>.ora'
    from pfile='E:\<sid>___backup.ora';
    
  4. מפעילים את מסד הנתונים עם spfile במצב nomount:

    sql> shutdown immediate;
    sql> startup nomount;
    
  5. משחזרים את קובץ הבקרה באמצעות RMAN מהנפח המצורף של Backup and DR:

    rman target /
    rman> restore controlfile from 'E:\cf-D_<sid>-id_<id>.ctl';
    
  6. טוענים את מסד הנתונים:

    rman> alter database mount;
    
  7. מקטלגים את קובץ הנתונים ואת תיקיית קובץ הארכיון מהנפח המותקן של Backup and DR אל RMAN:

    rman> run
    {
    catalog start with 'E:\datafile' noprompt;
    catalog start with 'E:\archivelog' noprompt;
    }
    
  8. שחזור מסד הנתונים:

    rman> run
    {
    restore database;
    recover database;
    }
    
  9. פותחים את מסד הנתונים עם האפשרות לאיפוס היומן:

    rman> alter database open resetlogs;
    

שחזור ידני של מסדי נתונים של Oracle בסביבת Windows באמצעות RMAN לנקודת גיבוי מתוזמנת עם העברה קדימה של יומן ארכיון שמוגן על ידי Backup and DR

  1. מבצעים Mount לגיבוי משרת מסד הנתונים של המקור כדי לשחזר. מבצעים Mount לתמונת המצב של הגיבוי מ-Backup and DR בחזרה לשרת Oracle, כמו שמתואר במאמר Mount של מסד נתונים של Oracle כ-Mount רגיל.

  2. מגדירים את סביבת מסד הנתונים ומפעילים את מסד הנתונים במצב no-mount באמצעות קובץ הפרמטרים מהנפח המותקן של Backup and DR. בדוגמה הזו, הגיבוי של מסד הנתונים מותקן בנתיב E:\ והיומן של הארכיון המוגן מותקן בנתיב Z:.

       sqlplus / as sysdba
    
       startup nomount pfile='E:\<sid>___backup.ora';
    
  3. יצירת spfile מ-pfile:

    sql> create spfile='%ORACLE_HOME%\database\spfile<sid>.ora' from
    pfile='E:\<sid>___backup.ora';
    
  4. מפעילים את מסד הנתונים עם spfile במצב nomount:

    ```sql
    shutdown immediate;
    startup nomount;
    ```
    
  5. משחזרים את קובץ הבקרה באמצעות RMAN מגיבוי יומן הארכיון המצורף של Backup and DR:

    ```rman
    rman target /
    rman> restore controlfile from 'Z:\cf-D_<sid>-id_<id>.ctl';
    ```
    
  6. טוענים את מסד הנתונים:

    ```rman
    rman> alter database mount;
    ```
    
  7. קטלוג של קובץ הנתונים ותיקיית יומן הארכיון מגיבוי של מסד נתונים וגיבוי של יומן ארכיון שמועברים מ-Backup and DR אל RMAN:

    ```rman
    rman> run
    {
    catalog start with 'E:\datafile' noprompt;
    catalog start with 'E:\archivelog' noprompt;
    catalog start with 'Z:\archivelog' noprompt;
    }
    ```
    
  8. שחזור מסד הנתונים:

    ```rman
    rman> run
    {
    restore database;
    recover database;
    }
    ```
    

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

    ```rman
    rman> run
     {
      restore database;
      recover database until time "to_date('<time stamp>','yyyymmddhh24mi')";
     }
     ```
    
  9. פותחים את מסד הנתונים עם האפשרות לאיפוס היומן:

    ```rman
    rman> alter database open resetlogs;
    ```
    

    מסד הנתונים זמין לקריאה ולכתיבה.

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

אם יוצרים הרכבה שמודעת לאפליקציה, אפשר להשתמש בסקריפט של שעון כדי להציג את אמצעי האחסון שמורכבים מ-Backup and DR, ואת התהליכים של Oracle שפועלים. הסבר על התקנות שמודעות לאפליקציות מופיע במאמר התקנת מסד נתונים של Oracle כאפליקציה וירטואלית.

כשמבצעים פעולת mount עם מודעות לאפליקציה, אפשר להשתמש בסקריפט הזה של שעון. מיקום הסקריפט צריך להיות: C:\Program Files\Backup and DR\scripts. סקריפטים שמופעלים במארחי Windows צריכים להיות קובצי ‎ .bat או ‎ .vbs.

    ```Windows
    @echo off
    :loop
    echo. > watchtemp
    echo ------------------ >> watchtemp
    echo  Oracle Processes >> watchtemp
    echo ------------------ >> watchtemp
    tasklist /svc | findstr oracle >> watchtemp
    echo. >> watchtemp
    echo ------------------ >> watchtemp
    echo   Backup and DR Mounts >> watchtemp
    echo ------------------ >> watchtemp
    wmic volume get label, name | findstr Backup and DR >> watchtemp
    echo. >> watchtemp
    cls
    type watchtemp
    timeout 2 > null
    goto loop
    ```

הפלט שמתקבל נראה כך:

    Oracle Processes
    ------------------
    oracle.exe                    1492 OracleServiceORCL
    oracle.exe                    3768 OracleServiceTestDB
    oracle.exe                     872 OracleServiceTestDB2
    ------------------
      Backup and DR Mounts
    ------------------
    Backup and DR-Backup-ORCL    D:\mount_1