יועץ ה-recovery הכי נחמד שנפגוש אי פעם - ilDBA Portal

יועץ ה-recovery הכי נחמד שנפגוש אי פעם

02/04/2014 | פורסם על ידי

אחת הבעיות העיקריות שאני נתקל בהן אצל לקוחות שסובלים ממצבים שדורשים recovery היא העובדה שלא תמיד ברור להם (או בכלל) מה השלבים שצריך לבצע כדי לבצע את ה-recovery  בצורה היעילה ביותר, הנוחה ביותר וזו שתיתן את הפתרון במינימום בעיות. מכוון ששחזור נעשה תחת לחץ במרבית המקרים אורקל הציגו בגרסה 11g יועץ (advisory) חדש בתוך ה-RMAN שיכול לעזור לנו לבוא ולפתור בעיות שדורשות שחזור – מרמת הבלוק ועד רמת קובץ ואפילו tablespace.

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

ניקח דוגמה: אם מאיזושהי סיבה נמחק לנו קובץ datafile של בסיס הנתונים, אין לנו ברירה אלא ללכת לפתרון של שחזור. אם נרצה לפתור את הבעיה בצורה ידנית אנחנו נצטרך לבדוק איזה גיבוי עדכני יש לנו, האם יש לנו גיבוי מלא או אינקרמנטלי, לאתר את קבצי ה-archive log שלנו מאז הגיבוי, להבין מה מצב ה-redo log ואז לבצע restore לקובץ הנכון ואז recover. התהליך הזה יכול לקחת זמן ל-dba הלא מנוסה ולכן אנחנו מקבלים מאורקל כלי שימושי.

עכשיו שהבנו מה הרעיון, בוא נלמד איך להשתמש בו:

כאשר יש לנו בעיה בבסיס הנתונים, נפתח את rman ונתחבר באמצעותו ל-db:

rman target /

לאחר ההתחברות נפעיל את ה-advisory כדי שיתן לנו תמונת מצב כמו שהוא מכיר את בסיס הנתונים (במקרה הזה, הכול תקין):

RMAN> list failure;

using target database control file instead of recovery catalog

no failures found that match specification

RMAN>

במידה ונמחק לנו קובץ נקבל את התשובה הבאה:

SQL> CREATE TABLE test_tab (id NUMBER) TABLESPACE example;

CREATE TABLE test_tab (id NUMBER) TABLESPACE example
*

ERROR at line 1:
ORA-01116: error in opening database file 5
ORA-01110: data file 5: '/home/oracle/app/oracle/oradata/orcl/example01.dbf'
ORA-27041: unable to open file
Linux Error: 2: No such file or directory
Additional information: 3

כאשר נבדוק עם היועץ מה הוא אומר בנושא, נקבל את התשובה הבאה:

RMAN> list failure;
List of Database Failures
=========================
Failure ID Priority Status    Time Detected Summary
---------- -------- --------- ------------- -------
142        HIGH     OPEN      23-FEB-14     One or more non-system datafiles are missing

RMAN>

בשלב הזה אנחנו יכולים לשאול את היועץ מה יש לו להציע לנו:

RMAN> advise failure 142;

List of Database Failures
=========================
Failure ID Priority Status    Time Detected Summary
---------- -------- --------- ------------- -------
142        HIGH     OPEN      23-FEB-14     One or more non-system datafiles are missing

analyzing automatic repair options; this may take some time
using channel ORA_DISK_1
analyzing automatic repair options complete

Mandatory Manual Actions
========================
no manual actions available

Optional Manual Actions
=======================
1. If file /home/oracle/app/oracle/oradata/orcl/example01.dbf was unintentionally renamed or moved, restore it

Automated Repair Options
========================
Option Repair Description
------ ------------------
1      Restore and recover datafile 5
Strategy: The repair includes complete media recovery with no data loss

Repair script: /home/oracle/app/oracle/diag/rdbms/orcl/orcl/hm/reco_1411708161.hm

RMAN>

היועץ מספר לנו שאבד קובץ אבל אין לנו מה לחשוש – אנחנו נוכל לבצע שחזור של הקובץ ואף מספק לנו סקריפט לתיקון הבעיה (reco_1411708161).

אם נבקש פרטים נוספים לגבי התיקון הוא יספר לנו את הדברים הבאים:

RMAN> repair failure preview;

Strategy: The repair includes complete media recovery with no data loss

Repair script: /home/oracle/app/oracle/diag/rdbms/orcl/orcl/hm/reco_1411708161.hm

contents of repair script:

# restore and recover datafile
sql 'alter database datafile 5 offline';
restore datafile 5;
recover datafile 5;
sql 'alter database datafile 5 online';

RMAN>

באמצעות הכלי אנחנו אפילו יכולים להורות ליועץ לבצע את ההמלצות שלו והוא ישחזר לנו את הקובץ בצורה אוטומטית:

RMAN> repair failure noprompt;

Strategy: The repair includes complete media recovery with no data loss

Repair script: /home/oracle/app/oracle/diag/rdbms/orcl/orcl/hm/reco_1411708161.hm

contents of repair script:
# restore and recover datafile
sql 'alter database datafile 5 offline';
restore datafile 5;
recover datafile 5;
sql 'alter database datafile 5 online';
executing repair script
sql statement: alter database datafile 5 offline

Starting restore at 23-FEB-14

using channel ORA_DISK_1

channel ORA_DISK_1: starting datafile backup set restore

channel ORA_DISK_1: specifying datafile(s) to restore from backup set

channel ORA_DISK_1: restoring datafile 00005 to /home/oracle/app/oracle/oradata/orcl/example01.dbf

channel ORA_DISK_1: reading from backup piece /home/oracle/app/oracle/flash_recovery_area/ORCL/backupset/2014_02_23/o1_mf_nnndf_TAG20140223T200354_9jng0c71_.bkp

channel ORA_DISK_1: piece handle=/home/oracle/app/oracle/flash_recovery_area/ORCL/backupset/2014_02_23/o1_mf_nnndf_TAG20140223T200354_9jng0c71_.bkp tag=TAG20140223T200354

channel ORA_DISK_1: restored backup piece 1

channel ORA_DISK_1: restore complete, elapsed time: 00:00:03

Finished restore at 23-FEB-14

Starting recover at 23-FEB-14

using channel ORA_DISK_1

starting media recovery

media recovery complete, elapsed time: 00:00:00

Finished recover at 23-FEB-14

sql statement: alter database datafile 5 online

repair failure complete

RMAN>

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

SQL> l
1* CREATE TABLE test_tab (id NUMBER) TABLESPACE example
SQL> /

Table created.

SQL>

כמה הערות:

    1.    אם הכלי לא מציג את הבעיה, ניתן לנסות להריץ validate לבסיס הנתונים. יש לא מעט פקודות validate אבל הפשוטה ביותר היא:
RMAN> validate database;

על שאר כלי ה-validate אני אשתדל לכתוב מאמר נפרד מכוון שזה נושא מרתק.

  1. הכלי יודע לשחזר כל דבר מרמת הבלוק ועד רמה של tablespace-ים שלמים. הוא לא יודע לשחזר טבלאות בודדות (rman יודע לשחזר טבלאות רק מגרסה 12, אבל על זה בפעם אחרת).
  2. הכלי לא מכיר RAC. אם אתם משתמשים ב-RAC אז הכלי הזה לא עוזר לכם.

אני מאוד ממליץ להשתמש בכלי הזה – אני יכול להעיד על עצמי שכאשר אני מגיע לתקלה אצל לקוח שיש לו גיבוי rman זה הכלי העיקרי שחוסך לי (וללקוח) זמן בדרך לפתרון ומונע ממני שגיאות ותקלות שונות.

הפוסט פורסם במקור בבלוג של זהר: יועץ ה-recovery הכי נחמד שנפגוש אי פעם

The following two tabs change content below.
זהר אלקיים הוא Oracle DBA מאז 1998 ויועץ בכיר מאז 2007 ובעל תואר Oracle ACE Associate. הוא מתמחה בתשתיות בסיסי נתונים, ארכיטקטורה ושיפור ביצועים. זהר הוא גם מדריך, מרצה בכנסים ובלוגר באתר www.realdbamagic.com מאז 2010. כיום הוא משמש כיום כ-CTO בחברת בריליקס ומנהל את האתר ilDBA.

השאר תגובה:

שם (חובה):
אימייל (לא יפורסם) (חובה):
תגובה (חובה):

*



מאמרים קשורים

Creating

Creating an Oracle Standby Database – Data Guard – צעד אחר צעד

בסרטון זה נדגים איך מקימים Physical standby database. Physical standby database הוא פיתרון נפוץ להקמת מערך DR. אנו יכולים להגדירו בצורה אוטומטית עם Data Guard או על ידי העתקה ידנית של קבצי Archive logs לשרת הStandby ולבצע Apply שלהם [...]
SQL

SQL Server 2005 Mirroring – צעד אחר צעד

בסרטון זה נלמד איך להגדיר תהליך Mirroring ולהשתמש בו בסביבת SQL Server [...]
SQL

SQL Server 2005 Backup & Restore – צעד אחר צעד

בסרטון זה נלמד איך לבצע גיבויים ושיחזורים בסביבת SQL Server [...]
SQL

SQL Server 2005 Log Shipping – צעד אחר צעד

בסרטון זה נלמד איך להגדיר את Log shipping ולהשתמש בו בסביבת SQL Server [...]
Copyright 2019 ilDBA Portal. Brought to you by Brillix - Israel Leading DBA company. Sponsored by: DBSnaps - Database Video Tutorialss
Website Security Test
%d בלוגרים אהבו את זה: