Oracleデータベースのバックアップとリカバリ[RMAN]

1.バックアップとリカバリを理解する

1.1、バックアップとリカバリとは

データベースのバックアップは通常、次の2つのタイプに分けられ
ます。1。物理バックアップ:データベースを構成する物理ファイル(データファイル、制御ファイル、アーカイブREDOログファイルを含む)、つまりデータベースの物理の同じコピーをバックアップします。オフラインディスクやテープデバイスなど、他の場所に保存されているファイル
。2。論理バックアップ:データベース内の論理データ(データテーブルやストアドプロシージャなど)をバックアップします。これらのデータは、Oracleのデータポンプツールを使用してバイナリファイルにエクスポートできます。 、およびデータベースが復元されたときにデータベースにインポートされます。
1と2の関係:物理バックアップはバックアップ戦略を立てるための基礎です。論理バックアップは物理バックアップの効果的な補足と見なすことができますが、物理バックアップにはより長いバックアップとリカバリ時間が必要ですが、論理バックアップは重要な目的にのみ使用できます。データベースデータバックアップを実行すると、バックアップとリカバリの操作を高速化できます。したがって、実際の作業では物理バックアップを実行する必要があり、重要なデータの即時論理バックアップも実行する必要があります。
実際の作業プロセスでは、DBAが処理する必要のある障害には、メディア障害、ユーザーエラー、アプリケーションエラーの3種類があります。その他のエラーは、データの損失を引き起こさないか、バックアップから復元する必要があります。データベースを再起動する必要があります。データベースインスタンスの障害を回復するため。以下は、バックアップと復元が必要なこれら3種類のDBAエラーの詳細な説明です。

  1. 物理ディスクの損傷によるディスクの読み取りまたは書き込みの失敗などのメディア障害では、データの整合性を実現するためにメディアリカバリが必要です。このような障害の場合、DBAは、壊滅的なデータの損失を防ぐための完全なバックアップおよびリカバリ戦略を開発する必要があります。
    データベースのバックアップとメディアのリカバリ
  2. ユーザーエラー
  3. アプリケーションエラー
  4. インスタンスの回復
  5. メディアリカバリ
    DBAは、効果的なバックアップおよびリカバリ戦略を策定し、平均リカバリ時間(MTTR)を短縮し、平均故障間隔(MTBF)を延長し、バックアップおよびリカバリ戦略の有効性を定期的にチェックする必要があります(自動バックアップが可能かどうか)。バックアップ後、正常に実行ファイルは正常に復元できます)。

1.2バックアップとリカバリの方法

1.Oracleのバックアップとリカバリを実行する方法は3つあります。

  1. バックアップとリカバリにはRMANRecovery Managerを使用します。RMANはOracleに組み込まれているバックアップとリカバリのプログラムであり、個別にインストールする必要はありません。データベース制御インターフェースを介してデータベースインスタンスを管理することもできます。
  2. ユーザー管理のバックアップとリカバリ。これは、オペレーティングシステムコマンドを使用してデータベースファイルをバックアップおよび復元することです。
  3. SQL * Loaderまたはデータポンプのインポートおよびエクスポートツールを使用して、論理的なバックアップとリカバリを行います。この方法では、重要なデータをバックアップでき、異なるオペレーティングシステム間または異なるOracleバージョン間でのデータ転送を実現できます。
    ただし、オラクルはRMANを使用してバックアップとリカバリの作業を完了することをお勧めします。ユーザーがバックアップデータファイルとアーカイブREDOログファイルを覚えておく必要がないという利点があります。RMANはこの情報を独自の保存場所に記録でき、RMAANは有効性を確認できます。バックアップファイルの内部データブロックの。そしてデータベースにコピーを記録することができます。
    2.バックアップの方法
  4. 一貫性のあるバックアップ:バックアップに含まれる各ファイルのシステム変更番号(SCN)は同じです。つまり、バックアップに含まれる各ファイルのすべてのデータは同じ時点からのものです。
  5. 一貫性のないバックアップ:さまざまな時点のデータを含むファイルを指します。これは主にオンラインバックアップモードで使用されます。つまり、データベースはトランザクションの処理時にデータファイルをバックアップします。このバックアップ方法では、データの復元に加えて、アーカイブも必要です。オンラインREDOログファイルは、データベースデータを特定の時点に復元するために復元されます。
  6. 完全データベースバックアップとは、データベース内のすべてのデータファイルと制御ファイルのバックアップを指します。これは最も一般的に使用されるバックアップタイプです。完全に分類されるのは、一貫性のあるバックアップまたは一貫性のないバックアップのいずれかです。
  7. データベースを部分的にバックアップし、テーブルやデータファイルなどのデータベースの内容の一部をバックアップします。この方法は通常、ほとんど使用されません。
  8. オンラインバックアップとは、運用中のデータベースのバックアップ(ホットバックアップとも呼ばれます)を指しますが、データベースがアーカイブモードで実行されている場合にのみ、データベース全体をオンラインでバックアップできます。データベースが非アーカイブモードの場合は、オフラインバックアップである。
  9. オフラインバックアップ、データが閉じた状態のときのバックアップもホットバックアップです。データベースがSHUTDOWN ABORTによって閉じられていない限り、バックアップは常に一貫性のあるバックアップです。そうでない場合、バックアップは一貫性のないバックアップになります。データベースの場合は、再適用する必要があります。一貫した状態を維持するためにログファイルを作成します。

2.RMANを使用してバックアップします

2.1、アーカイブログモードを設定します

最初のステップ:SQL * PLUSでARCHIVELOG LISTを使用するか、v $ databaseデータディクショナリビューにクエリを実行して、現在のデータベースモードを表示します。
1. sysdbaアカウントを使用して、オペレーティングシステムのデータベースにログインします

1、sqlplus / as sysdba;--登陆本机数据库
2、sqlplus [username]/[password]@[IP]:1521/[SID];--远程登陆数据库

手順2:v $ databaseデータディクショナリビューのlog_modeフィールドをクエリするか、ARCHIVE LOGLISTを使用してデータベースのモードを表示します。

set linesize 500;--格式化输出结果宽度
select dbid,name,log_mode,platform_name from v$database;--使用v$database查询

結果は以下の通りである:NOARCHIVELOGは、非アーカイブモードの略
v $ databaseクエリ結果

archive log list;

結果は次のとおりです。
アーカイブログリストのクエリ結果
ステップ2:最初のステップの結果から、現在のデータベースが非アーカイブモードになっていることがわかります。次に、次の手順を使用して、データベースをアーカイブモードに設定します。
(1)SHUTDOWNを使用します。データベースインスタンスをシャットダウンしてからデータベースを起動するコマンドMOUNT状態の場合、例は次のとおりです。

SQL> SHUTDOWN IMMEDIATE;--关闭数据库实例
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> STARTUP MOUNT;--启动数据库到MOUNT状态
ORACLE 例程已经启动。

Total System Global Area 3373858816 bytes
Fixed Size                  2180424 bytes
Variable Size            2348812984 bytes
Database Buffers         1006632960 bytes
Redo Buffers               16232448 bytes
数据库装载完毕。

(2)ALTER DATABASE ARCHIVELOGステートメントを使用してデータベースをアーカイブログモードに設定するか、ALTER DATABASENOARCHIVELOGを使用してデータベースを非アーカイブログモードに設定します。ステートメントは次のとおりです。

SQL> ALTER DATABASE ARCHIVELOG;

数据库已更改。

(3)データベースをオープン状態に設定します。ステートメントは次のとおりです。

SQL> ALTER DATABASE OPEN;

数据库已更改。

(4)この時点で、データベースはすでにアーカイブモードで実行されているため、ARCHIVE LOGALLを使用してREDOログファイルをアーカイブできます。ステートメントの例は次のとおりです。

SQL> ARCHIVE LOG ALL;
ORA-00271: 没有需要归档的日志

上記の結果に示すように、エラーORA-00271:アーカイブするログは報告されません。これは、アーカイブがアーカイブされているか、ログファイルグループがまだ書き込みを開始していないことが原因である可能性があります。次のコマンドを使用してアーカイブできます。現在のロググループ。
(5)エラーメッセージORA-00271を解決します

SQL> ALTER SYSTEM ARCHIVE LOG CURRENT;

系统已更改。

3番目のステップ:この時点で、データベースは自動的にアーカイブを完了できます。この時点で、「2番目のステップ」の文を再度使用して、アーカイブログの保存場所を照会できます。

SQL> ARCHIVE LOG LIST;
数据库日志模式            存档模式
自动存档             启用
存档终点            USE_DB_RECOVERY_FILE_DEST--归档日志默认使用闪回区域
最早的联机日志序列     593
下一个存档日志序列   595
当前日志序列           595

アーカイブログファイルを表示する必要がある場合は、次のコマンドを実行できます。

C:\>RMAN TARGET /   --使用rman target / 命令登陆RAMN并连接数据库,或者使用rman target [username]/[passwd]@[IP]:1521/[SID]连接目标数据库

恢复管理器: Release 11.2.0.1.0 - Production on 星期四 1017 17:46:06 2019

Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.

连接到目标数据库: ORCL (DBID=1547773451)

RMAN> crosscheck archivelog all;--查看所有的归档日志文件

使用目标数据库控制文件替代恢复目录
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: SID=129 设备类型=DISK
对归档日志的验证成功
归档日志文件名=D:\APP\MINGYUAN\FLASH_RECOVERY_AREA\ORCL\ARCHIVELOG\2019_10_17\O1_MF_1_594_GTJ9Q3HR_.ARC RECID=1 STAMP=1021912291  --这个就是归档日志存储位置
已交叉检验的 1 对象
RMAN>

2.2、完全なデータベースバックアップ

完成したデータベースバックアップを作成し、すべてのデータベースファイルとSPFILEファイルをバックアップし、Oracleインストールディレクトリをコピーします。ステートメントは次のとおりです。

2.2.1、バックアップセットの場所を指定します

RMAN> BACKUP DATABASE FORMAT 'C:\backup\%d_bak_%U';--%d指定数据库名称,%U指定产生一个唯一的命名,%t指定备份集的时间戳,%s指定备份集编号及%p指定备份片编号。

启动 backup18-10-19
使用通道 ORA_DISK_1
通道 ORA_DISK_1: 正在启动全部数据文件备份集
通道 ORA_DISK_1: 正在指定备份集内的数据文件
输入数据文件: 文件号=00005 名称=D:\APP\ORADATA\ORCL\XTDATA.DBF
输入数据文件: 文件号=00003 名称=D:\APP\ORADATA\ORCL\UNDOTBS01.DBF
输入数据文件: 文件号=00004 名称=D:\APP\ORADATA\ORCL\USERS01.DBF
输入数据文件: 文件号=00001 名称=D:\APP\ORADATA\ORCL\SYSTEM01.DBF
输入数据文件: 文件号=00002 名称=D:\APP\ORADATA\ORCL\SYSAUX01.DBF
通道 ORA_DISK_1: 正在启动段 118-10-19
通道 ORA_DISK_1: 已完成段 118-10-19
段句柄=C:\BACKUP\ORCL_BAK_04UEKOF4_1_1 标记=TAG20191018T150404 注释=NONE
通道 ORA_DISK_1: 备份集已完成, 经过时间:00:05:25
通道 ORA_DISK_1: 正在启动全部数据文件备份集
通道 ORA_DISK_1: 正在指定备份集内的数据文件
备份集内包括当前控制文件
备份集内包括当前的 SPFILE
通道 ORA_DISK_1: 正在启动段 118-10-19
通道 ORA_DISK_1: 已完成段 118-10-19
段句柄=C:\BACKUP\ORCL_BAK_05UEKOP9_1_1 标记=TAG20191018T150404 注释=NONE
通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:01
完成 backup18-10-19

RMAN>

2.2.2、デフォルトでフラッシュバックリカバリ領域を使用してバックアップを作成します

RMAN> BACKUP AS BACKUPSET DATABASE SPFILE;

启动 backup18-10-19
使用目标数据库控制文件替代恢复目录
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: SID=192 设备类型=DISK
通道 ORA_DISK_1: 正在启动全部数据文件备份集
通道 ORA_DISK_1: 正在指定备份集内的数据文件
输入数据文件: 文件号=00005 名称=D:\APP\ORADATA\ORCL\XTDATA.DBF
输入数据文件: 文件号=00003 名称=D:\APP\ORADATA\ORCL\UNDOTBS01.DBF
输入数据文件: 文件号=00004 名称=D:\APP\ORADATA\ORCL\USERS01.DBF
输入数据文件: 文件号=00001 名称=D:\APP\ORADATA\ORCL\SYSTEM01.DBF
输入数据文件: 文件号=00002 名称=D:\APP\ORADATA\ORCL\SYSAUX01.DBF
通道 ORA_DISK_1: 正在启动段 118-10-19
RMAN-03009: backup 命令 (ORA_DISK_1 通道上,10/18/2019 14:32:33) 失败
ORA-19809: 超出了恢复文件数的限制
ORA-19804: 无法回收 52428800 字节磁盘空间 (4102029312 限制中)
继续执行其他作业步骤, 将不重新运行失败的作业
通道 ORA_DISK_1: 正在启动全部数据文件备份集
通道 ORA_DISK_1: 正在指定备份集内的数据文件
备份集内包括当前控制文件
备份集内包括当前的 SPFILE
通道 ORA_DISK_1: 正在启动段 118-10-19
通道 ORA_DISK_1: 已完成段 118-10-19
段句柄=D:\APP\FLASH_RECOVERY_AREA\ORCL\BACKUPSET\2019_10_18\O1_MF_NCSNF_TAG20191018T143217_GTLQ426G_.BKP 标记=TAG20191018T143217 注释=NONE
通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:01
通道 ORA_DISK_1: 正在启动全部数据文件备份集
通道 ORA_DISK_1: 正在指定备份集内的数据文件
备份集内包括当前的 SPFILE
通道 ORA_DISK_1: 正在启动段 118-10-19
通道 ORA_DISK_1: 已完成段 118-10-19
段句柄=D:\APP\FLASH_RECOVERY_AREA\ORCL\BACKUPSET\2019_10_18\O1_MF_NNSNF_TAG20191018T143217_GTLQ439W_.BKP 标记=TAG20191018T143217 注释=NONE
通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:01
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================

RMAN-03009: backup 命令 (ORA_DISK_1 通道上,10/18/2019 14:32:33) 失败
ORA-19809: 超出了恢复文件数的限制
ORA-19804: 无法回收 52428800 字节磁盘空间 (4102029312 限制中)

RMAN>

上記のように、エラーメッセージが表示されます。これは、アーカイブファイルが大きすぎて、アーカイブが失敗したことを意味します。db_recovery_file_descにはサイズ制限があり、デフォルトは2Gです。
解決策:冗長なアーカイブファイルを削除します。次に、より大きなdb_recovery_file_dest_sizeを設定します。
プロセスは次のとおりです。
(1)フラッシュリカバリ領域スペースを表示します。

C:\Users>sqlplus / as sysdba

SQL*Plus: Release 11.2.0.1.0 Production on 星期五 1018 16:07:10 2019

Copyright (c) 1982, 2010, Oracle.  All rights reserved.


连接到:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL> select * from v$recovery_file_dest;--space_limit:该区域的大小是多少,space_used:已经使用了多少空间,space_reclaimable:删除一些垃圾数据之后可以回收的空间大小(如obsolete,redundant、low priority),number_of_files:说明该区域目前存在有多少文件

NAME                                           SPACE_LIMIT SPACE_USED        SPACE_RECLAIMABLE NUMBER_OF_FILES
---------------------------------------------- ----------  ----------------- ----------------- ---------------
D:\app\flash_recovery_area                     4102029312  372635648         372635648         12
SQL>

(2)、無効なアーカイブログファイルをクエリして削除します

C:\Users>rman target /
RMAN>crosscheck archivelog all;   -- 运行这个命令可以把无效的expired的archivelog标出来。
RMAN>delete expired archivelog all;  -- 直接全部删除过期的归档日志。

(3)アーカイブログファイルを削除できない場合は、アーカイブログファイルをリセットし、より多くのスペースを割り当てて、適切なカバレッジ戦略を構成できます。[具体的な方法については、関連するブログ記事を参照してください]

2.2.3、クエリ、バックアップセットの削除


RMAN> LIST BACKUP OF DATABASE;--查询备份数据库文件


备份集列表
===================

BS 关键字  类型 LV 大小       设备类型 经过时间 完成时间
------- ---- -- ---------- ----------- ------------ ----------
3       Full    11.13G     DISK        00:05:17     18-10-19
        BP 关键字: 3   状态: AVAILABLE  已压缩: NO  标记: TAG20191018T150404
段名:C:\BACKUP\ORCL_BAK_04UEKOF4_1_1
  备份集 3 中的数据文件列表
  文件 LV 类型 Ckp SCN    Ckp 时间   名称
  ---- -- ---- ---------- ---------- ----
  1       Full 4228805    18-10-19 D:\APP\MINGYUAN\ORADATA\ORCL\SYSTEM01.DBF
  2       Full 4228805    18-10-19 D:\APP\MINGYUAN\ORADATA\ORCL\SYSAUX01.DBF
  3       Full 4228805    18-10-19 D:\APP\MINGYUAN\ORADATA\ORCL\UNDOTBS01.DBF
  4       Full 4228805    18-10-19 D:\APP\MINGYUAN\ORADATA\ORCL\USERS01.DBF
  5       Full 4228805    18-10-19 D:\APP\MINGYUAN\ORADATA\ORCL\XTDATA.DBF

BS 关键字  类型 LV 大小       设备类型 经过时间 完成时间
------- ---- -- ---------- ----------- ------------ ----------
5       Full    11.13G     DISK        00:03:34     18-10-19
        BP 关键字: 5   状态: AVAILABLE  已压缩: NO  标记: TAG20191018T154338
段名:C:\BACKUP\HYYS0508_BAK_06UEKQPA_1_1
  备份集 5 中的数据文件列表
  文件 LV 类型 Ckp SCN    Ckp 时间   名称
  ---- -- ---- ---------- ---------- ----
  1       Full 4230473    18-10-19 D:\APP\MINGYUAN\ORADATA\ORCL\SYSTEM01.DBF
  2       Full 4230473    18-10-19 D:\APP\MINGYUAN\ORADATA\ORCL\SYSAUX01.DBF
  3       Full 4230473    18-10-19 D:\APP\MINGYUAN\ORADATA\ORCL\UNDOTBS01.DBF
  4       Full 4230473    18-10-19 D:\APP\MINGYUAN\ORADATA\ORCL\USERS01.DBF
  5       Full 4230473    18-10-19 D:\APP\MINGYUAN\ORADATA\ORCL\XTDATA.DBF

RMAN> DELETE BACKUPSET 5;--删除BS关键字为5的备份数据库文件

使用通道 ORA_DISK_1

备份片段列表
BP 关键字  BS 关键字  Pc# Cp# 状态      设备类型段名称
------- ------- --- --- ----------- ----------- ----------
5       5       1   1   AVAILABLE   DISK        C:\BACKUP\HYYS0508_BAK_06UEKQPA_1_1

是否确定要删除以上对象 (输入 YES 或 NO)? Y
已删除备份片段
备份片段句柄=C:\BACKUP\HYYS0508_BAK_06UEKQPA_1_1 RECID=5 STAMP=1021995818
1 对象已删除

RMAN>

3.RMANを使用してデータベースを復元します

RMANリカバリには2つの操作があります。

  • データベースの復元[RESTORE]とは、バックアップセットのデータファイルを使用して、破損したデータベースファイルを置き換えるか、新しい場所に復元することです。
  • データベースリカバリ[RECOVER]、すべてのアーカイブREDOログを適用してデータベースを正常な状態に復元するか、REDOの一部のみを適用してデータベースを指定した時点に復元します。
    データベースのリカバリを実行するときは、データベース全体をMOUNT状態にする必要があります。個々の表スペースまたはデータ・ファイルのみを復元する場合は、OPEN状態で操作できます。
    リカバリ操作中に、完全リカバリを使用して最新の時点にリカバリするか、部分リカバリを使用して特定の時点にリカバリできます。リカバリが完了したら、データベースを開くか、完全にリカバリされていない場合は、データベースを開くには、RESETLOGSを指定する必要があります。
    データベースを完全に復元する手順は次のとおりです。
    (1)データベースをMOUNT状態で起動します。
RMAN> STARTUP MOUNT;--需要数据库已经被SHUTDOWN才能恢复到这个状态,如果是正常的数据库需要使用管理员账号进行SHUTDOWN IMMEDIATE之后才能进行该操作。
Oracle 实例已启动
数据库已装载
系统全局区域总计    3373858816 字节
Fixed Size                     2180424 字节
Variable Size               2348812984 字节
Database Buffers            1006632960 字节
Redo Buffers                  16232448 字节

RMAN>

(2)RESTOREDATABASEを使用してデータベースを復元します

RMAN> RESTORE DATABASE;

启动 restore18-10-19
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: SID=212 设备类型=DISK

通道 ORA_DISK_1: 正在开始还原数据文件备份集
通道 ORA_DISK_1: 正在指定从备份集还原的数据文件
通道 ORA_DISK_1: 将数据文件 00001 还原到 D:\APP\MINGYUAN\ORADATA\ORCL\SYSTEM01.DBF
通道 ORA_DISK_1: 将数据文件 00002 还原到 D:\APP\MINGYUAN\ORADATA\ORCL\SYSAUX01.DBF
通道 ORA_DISK_1: 将数据文件 00003 还原到 D:\APP\MINGYUAN\ORADATA\ORCL\UNDOTBS01.DBF
通道 ORA_DISK_1: 将数据文件 00004 还原到 D:\APP\MINGYUAN\ORADATA\ORCL\USERS01.DBF
通道 ORA_DISK_1: 将数据文件 00005 还原到 D:\APP\MINGYUAN\ORADATA\ORCL\XTDATA.DBF
通道 ORA_DISK_1: 正在读取备份片段 C:\BACKUP\HYYS0508_BAK_08UELAFM_1_1
通道 ORA_DISK_1: 段句柄 = C:\BACKUP\HYYS0508_BAK_08UELAFM_1_1 标记 = TAG20191018T201134
通道 ORA_DISK_1: 已还原备份片段 1
通道 ORA_DISK_1: 还原完成, 用时: 00:01:55
完成 restore18-10-19

RMAN>

(3)データベースの復元後、バックアップ後にデータベースがトランザクションを生成していなければ、復元操作は完了です。
それ以外の場合は、リカバリ操作にRECOVERを使用する必要があります。操作方法は以下のとおりです。

RMAN> RECOVER DATABASE;

启动 recover 于 18-10-19
使用通道 ORA_DISK_1
正在开始介质的恢复
介质恢复完成, 用时: 00:00:01

完成 recover 于 18-10-19

RMAN>

(4)復元したデータベースをOPEN状態に切り替えて、データベースの復元を完了します。

RMAN> ALTER DATABASE OPEN;
数据库已打开

注:上記の回復コマンドは、RUNを使用してバッチで実行できます。

RMAN>RUN{
SHUTDOWN IMMEDIATE;
STARTUP MOUNT;
RESTORE DATABASE;
RECOVER DATABASE;
ALTER DATABASE OPEN;
}

おすすめ

転載: blog.csdn.net/sinat_31633205/article/details/102602803