數據庫——Oracle數據庫備份與恢復

Oracle數據庫備份與恢復

一、使用RMAN工具

1、創建恢復目錄

1、創建表空間

[root@oracle ~]# mkdir -p /u01/app/oracle/oradata/rmandb
[root@oracle ~]# chown -R oracle /u01/app/oracle/oradata/rmandb/
[root@oracle ~]# su - oracle 
Last login: Wed Jul 31 18:45:40 CST 2019 on pts/0
[oracle@oracle ~]$ sqlplus / as sysdba
SQL> startup
SQL> create tablespace rmants datafile '/u01/app/oracle/oradata/rmandb/rmants.dbf' size 20M;

表空間已創建。

2、在恢復目錄數據庫中創建RMAN用戶並授權

SQL> create user c##rman identified by rman
  2  default tablespace rmants
  3  temporary tablespace temp
  4  quota unlimited on rmants;

用戶已創建。

SQL> grant connect,resource to c##rman;

授權成功。

SQL> grant recovery_catalog_owner to c##rman;

授權成功。

SQL> exit
從 Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production 斷開

3、在恢復目錄數據庫中創建恢復目錄

[oracle@oracle ~]$ rman catalog c##rman/rman
RMAN> create catalog tablespace rmants;

恢復目錄已創建

RMAN> exit


恢復管理器完成。

2、註冊目標數據庫到恢復目錄

[oracle@oracle ~]$ rman target sys/orcle;
RMAN> connect catalog c##rman/rman

連接到恢復目錄數據庫

RMAN> register database;

註冊在恢復目錄中的數據庫
正在啓動恢復目錄的全部重新同步
完成全部重新同步

RMAN> exit


恢復管理器完成。

3、備份與恢復

1、在歸檔方式下備份與恢復
將數據庫設置爲歸檔模式,數據庫實例要處於啓動狀態,數據庫已經加載或打開狀態

[oracle@oracle ~]$ sqlplus c##rman/rman
SQL> select count(*) from rc_database;

  COUNT(*)
----------
	 1

SQL> conn  sys/oracle  as  sysdba;
已連接。
SQL> shutdown immediate;
SQL> startup mount;
SQL> alter database archivelog;

數據庫已更改。

SQL> alter database open;

數據庫已更改。

修改快閃恢復區的參數

SQL> set line 120
SQL> show parameter db_recovery_file_dest;

NAME				     TYPE	     VALUE
------------------------------------ --------------- ------------------------------
db_recovery_file_dest		     string
db_recovery_file_dest_size	     big integer     0
SQL> alter system set db_recovery_file_dest_size=2g;

系統已更改。

創建一個表空間和表

SQL> create tablespace tab1
  2  datafile '/u01/app/oracle/oradata/rmandb/tab1.dbf' size 10m;

表空間已創建。

創建表tab1

SQL> create table tab1 (id int);

表已創建。

向表tab1中添加記錄

SQL> insert into tab1 values(1);

已創建 1 行。

SQL> commit;

提交完成。

SQL> exit

使用數據庫用戶sys登錄RMAN

[oracle@oracle ~]$ rman target sys/oracle
RMAN> backup database;

從位於 20-5月 -20 的 backup 開始
使用目標數據庫控制文件替代恢復目錄
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: SID=31 設備類型=DISK
通道 ORA_DISK_1: 正在啓動全部數據文件備份集
通道 ORA_DISK_1: 正在指定備份集內的數據文件
輸入數據文件, 文件號 = 00001 名稱 = /u01/app/oracle/oradata/orcl/system01.dbf
輸入數據文件, 文件號 = 00003 名稱 = /u01/app/oracle/oradata/orcl/sysaux01.dbf
輸入數據文件, 文件號 = 00004 名稱 = /u01/app/oracle/oradata/orcl/undotbs01.dbf
輸入數據文件, 文件號 = 00013 名稱 = /u01/app/oracle/oradata/rmandb/rmants.dbf
輸入數據文件, 文件號 = 00014 名稱 = /u01/app/oracle/oradata/rmandb/tab1.dbf
輸入數據文件, 文件號 = 00007 名稱 = /u01/app/oracle/oradata/orcl/users01.dbf
通道 ORA_DISK_1: 正於 20-5月 -20 啓動段 1
通道 ORA_DISK_1: 完成了於 20-5月 -20 啓動段 1
片段句柄 = /u01/app/oracle/product/12.2.0/dbhome_1/dbs/01v0m71d_1_1 標記 = TAG20200520T151141 註釋 = NONE
通道 ORA_DISK_1: 備份集完成, 用時: 00:00:15
通道 ORA_DISK_1: 正在啓動全部數據文件備份集
通道 ORA_DISK_1: 正在指定備份集內的數據文件
輸入數據文件, 文件號 = 00010 名稱 = /u01/app/oracle/oradata/orcl/orclpdb/sysaux01.dbf
輸入數據文件, 文件號 = 00009 名稱 = /u01/app/oracle/oradata/orcl/orclpdb/system01.dbf
輸入數據文件, 文件號 = 00011 名稱 = /u01/app/oracle/oradata/orcl/orclpdb/undotbs01.dbf
輸入數據文件, 文件號 = 00012 名稱 = /u01/app/oracle/oradata/orcl/orclpdb/users01.dbf
通道 ORA_DISK_1: 正於 20-5月 -20 啓動段 1
通道 ORA_DISK_1: 完成了於 20-5月 -20 啓動段 1
片段句柄 = /u01/app/oracle/product/12.2.0/dbhome_1/dbs/02v0m71s_1_1 標記 = TAG20200520T151141 註釋 = NONE
通道 ORA_DISK_1: 備份集完成, 用時: 00:00:03
通道 ORA_DISK_1: 正在啓動全部數據文件備份集
通道 ORA_DISK_1: 正在指定備份集內的數據文件
輸入數據文件, 文件號 = 00006 名稱 = /u01/app/oracle/oradata/orcl/pdbseed/sysaux01.dbf
輸入數據文件, 文件號 = 00005 名稱 = /u01/app/oracle/oradata/orcl/pdbseed/system01.dbf
輸入數據文件, 文件號 = 00008 名稱 = /u01/app/oracle/oradata/orcl/pdbseed/undotbs01.dbf
通道 ORA_DISK_1: 正於 20-5月 -20 啓動段 1
通道 ORA_DISK_1: 完成了於 20-5月 -20 啓動段 1
片段句柄 = /u01/app/oracle/product/12.2.0/dbhome_1/dbs/03v0m71v_1_1 標記 = TAG20200520T151141 註釋 = NONE
通道 ORA_DISK_1: 備份集完成, 用時: 00:00:07
在 20-5月 -20 完成了 backup

從位於 20-5月 -20 的 Control File and SPFILE Autobackup 開始
片段句柄 = /u01/app/oracle/product/12.2.0/dbhome_1/dbs/c-1503444987-20200520-00 註釋 = NONE
在 20-5月 -20 完成了 Control File and SPFILE Autobackup

RMAN> select systimestamp from dual;

SYSTIMESTAMP                         
-------------------------------------
20-5月 -20 03.12.31.337814 下午 +0
RMAN> exit


恢復管理器完成。

刪除tab1表

[oracle@oracle ~]$ sqlplus sys/oracle as sysdba
SQL> drop table tab1;

表已刪除。

SQL> commit;

提交完成。

恢復表

SQL> shutdown immediate;
SQL> startup mount
SQL> exit;
[oracle@oracle ~]$ rman target sys/oracle
RMAN> restore database;

從位於 20-5月 -20 的 restore 開始
使用目標數據庫控制文件替代恢復目錄
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: SID=253 設備類型=DISK

正在跳過數據文件 5; 已還原到文件 /u01/app/oracle/oradata/orcl/pdbseed/system01.dbf
正在跳過數據文件 6; 已還原到文件 /u01/app/oracle/oradata/orcl/pdbseed/sysaux01.dbf
正在跳過數據文件 8; 已還原到文件 /u01/app/oracle/oradata/orcl/pdbseed/undotbs01.dbf
正在跳過數據文件 9; 已還原到文件 /u01/app/oracle/oradata/orcl/orclpdb/system01.dbf
正在跳過數據文件 10; 已還原到文件 /u01/app/oracle/oradata/orcl/orclpdb/sysaux01.dbf
正在跳過數據文件 11; 已還原到文件 /u01/app/oracle/oradata/orcl/orclpdb/undotbs01.dbf
正在跳過數據文件 12; 已還原到文件 /u01/app/oracle/oradata/orcl/orclpdb/users01.dbf
通道 ORA_DISK_1: 正在開始還原數據文件備份集
通道 ORA_DISK_1: 正在指定從備份集還原的數據文件
通道 ORA_DISK_1: 將數據文件 00001 還原到 /u01/app/oracle/oradata/orcl/system01.dbf
通道 ORA_DISK_1: 將數據文件 00003 還原到 /u01/app/oracle/oradata/orcl/sysaux01.dbf
通道 ORA_DISK_1: 將數據文件 00004 還原到 /u01/app/oracle/oradata/orcl/undotbs01.dbf
通道 ORA_DISK_1: 將數據文件 00007 還原到 /u01/app/oracle/oradata/orcl/users01.dbf
通道 ORA_DISK_1: 將數據文件 00013 還原到 /u01/app/oracle/oradata/rmandb/rmants.dbf
通道 ORA_DISK_1: 將數據文件 00014 還原到 /u01/app/oracle/oradata/rmandb/tab1.dbf
通道 ORA_DISK_1: 正在讀取備份片段 /u01/app/oracle/product/12.2.0/dbhome_1/dbs/01v0m71d_1_1
通道 ORA_DISK_1: 片段句柄 = /u01/app/oracle/product/12.2.0/dbhome_1/dbs/01v0m71d_1_1 標記 = TAG20200520T151141
通道 ORA_DISK_1: 已還原備份片段 1
通道 ORA_DISK_1: 還原完成, 用時: 00:00:07
在 20-5月 -20 完成了 restore

RMAN> recover database until time "to_date('2020-05-20 15:12:31','yyyy-mm-dd  hh24:mi:ss')";

從位於 20-5月 -20 的 recover 開始
使用通道 ORA_DISK_1

正在開始介質的恢復
介質恢復完成, 用時: 00:00:00

在 20-5月 -20 完成了 recover

RMAN> alter database open resetlogs;

已處理語句

RMAN> select * from tab1;

        ID
----------
         1

RMAN> exit


恢復管理器完成。

2、恢復表空間

[oracle@oracle ~]$ sqlplus / as sysdba
SQL> create tablespace tab2
  2  Datafile '/u01/app/oracle/oradata/rmandb/tab2.dbf' size 10m;

表空間已創建。

SQL> quit
[oracle@oracle ~]$ rman target sys/oracle
RMAN> backup tablespace tab2;

從位於 20-5月 -20 的 backup 開始
使用目標數據庫控制文件替代恢復目錄
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: SID=31 設備類型=DISK
通道 ORA_DISK_1: 正在啓動全部數據文件備份集
通道 ORA_DISK_1: 正在指定備份集內的數據文件
輸入數據文件, 文件號 = 00015 名稱 = /u01/app/oracle/oradata/rmandb/tab2.dbf
通道 ORA_DISK_1: 正於 20-5月 -20 啓動段 1
通道 ORA_DISK_1: 完成了於 20-5月 -20 啓動段 1
片段句柄 = /u01/app/oracle/product/12.2.0/dbhome_1/dbs/06v0m815_1_1 標記 = TAG20200520T152837 註釋 = NONE
通道 ORA_DISK_1: 備份集完成, 用時: 00:00:01
在 20-5月 -20 完成了 backup

從位於 20-5月 -20 的 Control File and SPFILE Autobackup 開始
片段句柄 = /u01/app/oracle/product/12.2.0/dbhome_1/dbs/c-1503444987-20200520-02 註釋 = NONE
在 20-5月 -20 完成了 Control File and SPFILE Autobackup

RMAN> quit


恢復管理器完成。
[oracle@oracle ~]$ mv /u01/app/oracle/oradata/rmandb/tab2.dbf /u01/app/oracle/oradata/rmandb/tab2.dbf.bak
[oracle@oracle ~]$ rman target sys/oracle11g
RMAN> run{
2> sql 'alter tablespace tab2 offline immediate';
3> restore tablespace tab2;
4> recover tablespace tab2;
5> sql 'alter tablespace tab2 online';
6> }

使用目標數據庫控制文件替代恢復目錄
sql 語句: alter tablespace tab2 offline immediate

從位於 20-5月 -20 的 restore 開始
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: SID=33 設備類型=DISK

通道 ORA_DISK_1: 正在開始還原數據文件備份集
通道 ORA_DISK_1: 正在指定從備份集還原的數據文件
通道 ORA_DISK_1: 將數據文件 00015 還原到 /u01/app/oracle/oradata/rmandb/tab2.dbf
通道 ORA_DISK_1: 正在讀取備份片段 /u01/app/oracle/product/12.2.0/dbhome_1/dbs/06v0m815_1_1
通道 ORA_DISK_1: 片段句柄 = /u01/app/oracle/product/12.2.0/dbhome_1/dbs/06v0m815_1_1 標記 = TAG20200520T152837
通道 ORA_DISK_1: 已還原備份片段 1
通道 ORA_DISK_1: 還原完成, 用時: 00:00:01
在 20-5月 -20 完成了 restore

從位於 20-5月 -20 的 recover 開始
使用通道 ORA_DISK_1

正在開始介質的恢復
介質恢復完成, 用時: 00:00:00

在 20-5月 -20 完成了 recover

sql 語句: alter tablespace tab2 online

RMAN> exit


恢復管理器完成。
[oracle@oracle ~]$ ls /u01/app/oracle/oradata/rmandb/
rmants.dbf  tab1.dbf  tab2.dbf  tab2.dbf.bak

3、數據文件備份與恢復

[oracle@oracle ~]$ sqlplus / as sysdba
SQL> col file_name for a50;
SQL> col file_id for 99999;
SQL> set line 100
SQL> col TABLESPACE_NAME for a10;
SQL> select file_id,file_name,tablespace_name from dba_data_files;

FILE_ID FILE_NAME					   TABLESPACE_NAME
------- -------------------------------------------------- ------------------------------
      1 /u01/app/oracle/oradata/orcl/system01.dbf	   SYSTEM
      3 /u01/app/oracle/oradata/orcl/sysaux01.dbf	   SYSAUX
      4 /u01/app/oracle/oradata/orcl/undotbs01.dbf	   UNDOTBS1
      7 /u01/app/oracle/oradata/orcl/users01.dbf	   USERS
     13 /u01/app/oracle/oradata/rmandb/rmants.dbf	   RMANTS
     14 /u01/app/oracle/oradata/rmandb/tab1.dbf 	   TAB1
     15 /u01/app/oracle/oradata/rmandb/tab2.dbf 	   TAB2

已選擇 7 行。
SQL> quit
[oracle@oracle ~]$ rman target sys/oracle
RMAN> backup  datafile 15;

從位於 20-5月 -20 的 backup 開始
使用目標數據庫控制文件替代恢復目錄
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: SID=19 設備類型=DISK
通道 ORA_DISK_1: 正在啓動全部數據文件備份集
通道 ORA_DISK_1: 正在指定備份集內的數據文件
輸入數據文件, 文件號 = 00015 名稱 = /u01/app/oracle/oradata/rmandb/tab2.dbf
通道 ORA_DISK_1: 正於 20-5月 -20 啓動段 1
通道 ORA_DISK_1: 完成了於 20-5月 -20 啓動段 1
片段句柄 = /u01/app/oracle/product/12.2.0/dbhome_1/dbs/09v0m8n9_1_1 標記 = TAG20200520T154025 註釋 = NONE
通道 ORA_DISK_1: 備份集完成, 用時: 00:00:01
在 20-5月 -20 完成了 backup

從位於 20-5月 -20 的 Control File and SPFILE Autobackup 開始
片段句柄 = /u01/app/oracle/product/12.2.0/dbhome_1/dbs/c-1503444987-20200520-04 註釋 = NONE
在 20-5月 -20 完成了 Control File and SPFILE Autobackup

RMAN> quit


恢復管理器完成。
[oracle@oracle ~]$ mv /u01/app/oracle/oradata/rmandb/tab2.dbf /u01/app/oracle/oradata/rmandb/tab2.dbf.bak1
[oracle@oracle ~]$ rman target sys/oracle
RMAN> run{
2> allocate channel dev1 type disk;
3> sql 'alter tablespace tab2 offline immediate';
4> restore datafile 15;
5> recover datafile 15;
6> sql 'alter tablespace tab2 online';
7> release channel dev1;
8> }

使用目標數據庫控制文件替代恢復目錄
分配的通道: dev1
通道 dev1: SID=31 設備類型=DISK

sql 語句: alter tablespace tab2 offline immediate

從位於 20-5月 -20 的 restore 開始

通道 dev1: 正在開始還原數據文件備份集
通道 dev1: 正在指定從備份集還原的數據文件
通道 dev1: 將數據文件 00015 還原到 /u01/app/oracle/oradata/rmandb/tab2.dbf
通道 dev1: 正在讀取備份片段 /u01/app/oracle/product/12.2.0/dbhome_1/dbs/09v0m8n9_1_1
通道 dev1: 片段句柄 = /u01/app/oracle/product/12.2.0/dbhome_1/dbs/09v0m8n9_1_1 標記 = TAG20200520T154025
通道 dev1: 已還原備份片段 1
通道 dev1: 還原完成, 用時: 00:00:01
在 20-5月 -20 完成了 restore

從位於 20-5月 -20 的 recover 開始

正在開始介質的恢復
介質恢復完成, 用時: 00:00:00

在 20-5月 -20 完成了 recover

sql 語句: alter tablespace tab2 online

釋放的通道: dev1

RMAN> quit


恢復管理器完成。
[oracle@oracle ~]$ ls /u01/app/oracle/oradata/rmandb/
rmants.dbf  tab1.dbf  tab2.dbf  tab2.dbf.bak  tab2.dbf.bak1
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章