Архивиране и възстановяване със софтуера RMAN

Програма RMAN се появи във версия 8 на СУБД Oracle като един инструмент за всички платформи за организиране на архивиране и възстановяване на данни на физическо ниво. В сравнение с традиционните основни възможности за архивиране и възстановяване в Oracle, RMAN има няколко предимства, които го правят почти незаменим в някои ситуации (например при големи количества данни). За съжаление, наличието на тези предимства не лишава RMAN от редица съществени недостатъци: собствена система от концепции, собствен команден език и интерфейс за комуникация с администратора. И двете са направени в лошите традиции на разработчиците на Oracle - не съвсем логично, объркващо и непоследователно - което прави тази програма трудна за овладяване. Целта на тази статия е да помогне за преодоляване на тези недостатъци за ползите от RMAN.

Възможностите на RMAN включват следното:

Архивиране/възстановяване на нива на изпълнение с RMAN:

  • база данни
  • пространства за маси
  • файлове от табличното пространство
  • файлове с услуги на база данни (контрол, архив)

Основните понятия на RMAN включват следното:

Синтаксисът на командния език RMAN във версия 9 има определени разлики от версия 8, но всички основни конструкции се запазват. В допълнение, RMAN за версия 9 позволява редица опростявания за писане на команди.

Възможността за работа с RMAN също е включена в най-новите OEM версии, без да е необходимо познаване на командния език.

В текста по-долу за краткост ще се даде предпочитание на синтаксиса на версия 9. В допълнение, за простота, ние обмисляме да работим без директорията RMAN.

RMAN НОКАТАЛОГ
RMAN> CONNECT TARGET вътрешен/oracle
RMAN> ИЗКЛЮЧВАНЕ НЕЗАБАВНО
RMAN> СТАРТОВ МОНТАЖ
RMAN> РАБОТА 2> РАЗПРЕДЕЛЕТЕ КАНАЛ d1 ТИП ДИСК;
3> РЕЗЕРВЕН ПЪЛЕН ФОРМАТ 'd: \ oracle \ oradata \ teacher \ rman-backup \ rman_% d_% U.bus'
4> БАЗА ДАННИ;
4 >>
RMAN>

Файлът RMAN_ TEACHER _02DGA6F0_1_1.BUS се появи в директорията D: \ ORACLE \ ORADATA \ TEACHER \ RMAN-BACKUP (действителното име може да варира). Сега можете да изтриете файлове с таблични пространства и да извършите възстановяване:

RMAN> РАБОТА 2> РАЗПРЕДЕЛЕТЕ КАНАЛ d1 ТИП ДИСК;
3> ВЪЗСТАНОВЯВАНЕ НА БАЗАТА ДАННИ;
4> ВЪЗСТАНОВИТЕ БАЗАТА ДАННИ;
5> ALTER DATABASE ОТВОРЕН;
6 >>

Основата е възстановена и отворена.

Във версията 9 на RMAN, горната съкратеност може да се направи по следния начин:

RMAN> ФОРМАТ НА РЕЗЕРВНАТА БАЗА ДАННИ
2> 'd: \ oracle \ oradata \ teacher \ rman-backup \ rman_% d_% U.bus';

и възстановяването е такова:

RMAN> ВЪЗСТАНОВЯВАНЕ НА БАЗАТА ДАННИ;
RMAN> ВЪЗСТАНОВИТЕ БАЗАТА ДАННИ;
RMAN> ALTER DATABASE ОТВОРЕН;

Това предполага използването на подразбиращия се канал по подразбиране, така че вече не е необходимо да го декларирате.

Освен това във версия 9 се появи командата CONFIGURE, с помощта на която (наред с други неща) можете да свържете посоката и маската на името на файла за архивния набор с канала:

RMAN> ФОРМАТ НА ТИП НА УСТРОЙСТВОТО ЗА КОНФИГУРИРАНЕ НА КАНАЛ
2> 'd: \ oracle \ oradata \ teacher \ rman-backup \ rman_% d_% U.bus';

В този случай командата за архивиране може да изглежда още по-проста:

RMAN> РЕЗЕРВНА БАЗА ДАННИ;

Ако и двете са готови, действията по архивиране се появяват както обикновено. Пример в синтаксис версия 9.0:

RMAN> ФОРМАТ НА РЕЗЕРВНАТА БАЗА ДАННИ
2> 'd: \ oracle \ oradata \ teacher \ rman-backup \ rman_% d_% t_% U.bus';

Пример в синтаксис версия 9.0:

RMAN> РЕЗЕРВНА TABLESPACE система, потребители ФОРМАТ
2> 'd: \ oracle \ oradata \ teacher \ rman-backup \ rman_% d_% t_% U.bus';

Пример в синтаксис версия 9.0:

RMAN> РЕЗЕРВНИ ДАННИ 1, 2;

RMAN> РЕЗЕРВЕН ФОРМАТ
2> 'd: \ oracle \ oradata \ teacher \ rman-backup \ rman_% d_% t_% U.bus'
3> 'd: \ oracle \ oradata \ teacher \ system01.dbf',
4> 'd: \ oracle \ oradata \ teacher \ users01.dbf';

Ако временното пространство на таблици се управлява локално, то не се архивира автоматично. Ако е необходимо, ще трябва да го възстановите (пресъздадете) сами.

Нормалните резервни копия на контролни файлове трябва да се правят отделно. Пример за изрична резервация в синтаксис версия 9.0:

RMAN> КОНТРОЛ НА ТЕКУЩОТО РЕЗЕРВНО РЪКОВОДСТВО;

Във версия 9 обаче можете да поставите RMAN в режим, при който копията на контролния файл ще бъдат взети автоматично всеки път, когато бъде издадена команда РЕЗЕРВНО ИЛИ КОПИРАНЕ:

RMAN> АВТОМАТИЧНО РЕЗЕРВИРАНЕ НА КОНФИГУРИРАНЕ НА КОНФИГУРИРАНЕ;

Онлайн (онлайн) регистрационни файлове не се архивират автоматично. За да запишете нито едно, така и друго

а) копирайте отделно, или
б) изпратете до архива преди пълното архивиране на базата данни.

Файловете на архивни копия на дневника винаги се архивират в отделни файлове от набора за архивиране и като цяло те трябва да бъдат архивирани с отделна команда. Пример в синтаксис версия 9.0:

RMAN> РЕЗЕРВЕН АРХИВЕЛОГ ВСИЧКИ;

Пример за това как във версия 9.0 архивните файлове могат да бъдат включени в набора за архивиране на базата данни:

RMAN> ФОРМАТ НА РЕЗЕРВНАТА БАЗА ДАННИ
2> 'd: \ oracle \ oradata \ teacher \ rman-backup \ rman_% U.bus' PLUS ARCHIVELOG;

Oracle използва традиционен многостепенен модел, за да запази промени, с определен брой нива на копиране от 5 (0 до 4). Отправната точка за копиране на промените трябва да бъде предварително направено пълно копие на базата данни от ниво 0.

Пример за резервации на блокове, които са се променили след резервации на нива 3, 2, 1 и 0 (диференциал, излишък) в синтаксис версия 9:

RMAN> РЕЗЕРВНА БАЗА НА ИНЦЕРМЕНТАЛНО НИВО 3;

Пример за резервиране на блокове, които са се променили от последното архивиране на нива 2, 1 и 0 (диференциално кумулативно, излишък), прескачайки неписани пространства на таблици (синтаксис версия 9):

RMAN> РЕЗЕРВНО ИНЦЕРМЕНТАЛНО НИВО 3 КУМУЛАТИВНА БАЗА ДАННИ
2> ПРОПУСНЕТЕ ГОТОВО;

Диференциално-кумулативно (кумулативно) архивиране на ниво N се различава от диференциалното (диференциално) по това, че запазва промените, настъпили след архивирането на всички нива СПИСЪК НА РЕЗЕРВИРАНЕ;

Изброяване на резервните комплекти, съдържащи пространството за таблици SYSTEM:

RMAN> СПИСЪК РЕЗЕРВ НА СИСТЕМА TABLESPACE;

Вариант за издаване на същото, но в обобщен вид (версия 9):

RMAN> СПИСЪК РЕЗЕРВ НА СИСТЕМА TABLESPACE РЕЗЮМЕ;

Издаване на информация за копия, взети от архивите на дневниците:

RMAN> СПИСЪК РЕЗЕРВ НА АРХИВЕЛОГ ВСИЧКИ;

Издаване на резервни копия, които са остарели:

RMAN> СЪОБЩЕНИЕ ЗАСЪЩЕНО;

Издаване на файлове с данни от базата данни, за възстановяването на които ще ви трябват архиви от 2 дни или повече:

RMAN> ДОКЛАДВА НУЖДА ЗА РЕЗЕРВИРАНЕ ДНИ 2 БАЗА ДАННИ;

Същата информация, но само за СИСТЕМНОТО пространство:

RMAN> СЪОБЩЕНИЕ ЗА НУЖДА НА РЕЗЕРВНИ ДНИ 2 TABLESPACE система;

Показване на информация за това дали архивираните файлове са подходящи за възстановяване:

Изпълнява се от командата DELETE. В най-простата си форма изтриването на остарели копия може да изглежда така:

RMAN> ИЗТРИВАНЕ НА ЗАСТАЛЕНО;

Обърнете внимание, че RMAN е изтрил ненужните архивни набори от файлове. Не е нужно да автоматизирате изтриването на стари файлове, както преди!

Файловете с резервни копия могат да се повредят или повредят. Това може да се отбележи в ръководството (в контролния файл или в директорията RMAN) с помощта на командата CROSSCHECK, която ще ги маркира като ИЗТИЧАНИ там. Следващата команда DELETE EXPIRED ще изтрие файловете, които вече не са необходими поради това:

RMAN> РЕЗЕРВИРАНЕ НА CROSSCHECK;
:
RMAN> ИЗТРИВАНЕ НА ИЗТЕЧАЛОТО РЕЗЕРВНО БАНЕ НА БАЗАТА ДАННИ;
:
RMAN> ИЗТРИВАНЕ НА РЕЗЕРВНО БАНЕ НА БАЗАТА ДАННИ;

По-сложен пример за изтриване на остарели архиви:

RMAN> ИЗТРИВАНЕ НА ПРОСТРАНСТВО ЗА СЪХРАНЕНО ВЪЗСТАНОВЯВАНЕ НА 14 ДНИ;

NOMOUNT: за възстановяване на контролните файлове на базата данни (всъщност - СУБД)

MOUNT: за възстановяване на цялата база данни или табличното пространство SYSTEM

ОТВОРЕНО: за възстановяване на таблични пространства, различни от СИСТЕМА (в този случай, преди процедурата за възстановяване, самата таблична площ ще трябва да бъде изключена ОФЛАЙН).

Някои примери за възстановяване:

RMAN> ВЪЗСТАНОВИТЕ БАЗАТА ДАННИ;

RMAN> потребители на RECOVER TABLESPACE;

RMAN> ВЪЗСТАНОВЯВАНЕ НА ДАННИ 'd: \ oracle \ oradata \ teacher \ users01.dbf';

RMAN> ВЪЗСТАНОВЯВАНЕ НА КОНТРОЛ НА КОНТРОЛА;

RMAN> RUN 2> ЗАДАВАНЕ НА АРХИВЕЛОГ ДЕСТИНАЦИЯ НА 'd: \ oracle \ oradata \ archive';
3> ВЪЗСТАНОВЯВАНЕ НА АРХИВЕЛОГ ВСИЧКИ; >

Възстановяване на затворени пространства за запис:

RMAN> SQL "ALTER TABLESPACE lookup_data_OFFLINE";
RMAN> RECOVER TABLESPACE lookup_data;
RMAN> SQL "ALTER TABLESPACE lookup_data ONLINE";

База данни, работеща в режим на архивиране на дневници, може да бъде възстановена до определен определен момент, използвайки фрази UNTIL. Пример:

RMAN> ВЪЗСТАНОВЯВАНЕ НА БАЗАТА ДАННИ; # възстановени файлове
RMAN> ВЪЗСТАНОВИТЕ БАЗАТА ДАННИ ДО SCN 375831; # възстанови базата данни
RMAN> ALTER DATABASE OPEN RESETLOGS; # пусна дневника

Възстановяването на базата данни (втори и трети ред по-горе) може да се извърши в SQL * Plus:

SQL> ВЪЗСТАНОВИ БАЗАТА ДАННИ ДО ОТМЕНЯНЕ;
SQL> ALTER DATABASE OPEN RESETLOGS;

При такова възстановяване трябва да нулирате онлайн регистрационния файл. След това, както при традиционното възстановяване с нулиране на регистрационните файлове (RESETLOGS), е необходимо да се направи пълно копие на базата данни, тъй като от този момент възстановяването от по-ранни архиви ще стане невъзможно поради факта, че историята на регистрационните записи е прекъсната.

Можете да автоматизирате задачи с RMAN както външно (език на черупката), така и вътрешно. Вътрешните инструменти на RMAN позволяват да се посочи скриптов файл при извикване на тази програма, както и да се организира съхранен скрипт.

Нека файлът listbackup.rcm съдържа редовете:

СВЪРЗВАНЕ НА ЦЕЛТА/
РЕЗЕРВ НА СПИСЪК;
ИЗХОД

Тогава следващите две еквивалентни повиквания към операционната система в резултата ще доведат до въвеждане на RMAN, изпълнение на този скрипт и излизане:

RMAN CMDFILE = listback.rcm НОКАТАЛОГ

RMAN @ listback.rcm НОКАТАЛОГ

Когато използвате директорията RMAN, също е възможно да използвате съхранен скрипт:

RMAN> REPLACE SCRIPT reportobsolete

Пример за достъп до скрипт, съхраняван в директорията: