Linux平臺下RMAN異機恢復總結

来源:http://www.cnblogs.com/kerrycode/archive/2017/05/29/6918292.html
-Advertisement-
Play Games

下麵總結、整理一下RMAN異機恢復這方面的知識點,這篇筆記在個人筆記裡面躺了幾年了,直到最近偶然被翻看到,遂整理、總結一下。如下所示,個人將整個RMAN異機恢復分為準備工作和操作步驟兩大部分。當然,準備工作裡面,有些步驟不是必須的,可以跳過或忽略的。這個取決於你的實際環境和你對RMAN異機恢復的熟悉... ...


下麵總結、整理一下RMAN異機恢復這方面的知識點,這篇筆記在個人筆記裡面躺了幾年了,直到最近偶然被翻看到,遂整理、總結一下。如下所示,個人將整個RMAN異機恢復分為準備工作和操作步驟兩大部分。當然,準備工作裡面,有些步驟不是必須的,可以跳過或忽略的。這個取決於你的實際環境和你對RMAN異機恢復的熟悉程度。

 

準備工作

 

1:瞭解一下目標伺服器與源伺服器的操作系統版本信息

 

需要對比一下目標伺服器與源伺服器的操作系統版本是否一致,具體來說,操作系統版本信息、內核信息(例如Oracle Linux是否使用Unbreakable Enterprise Kernel內核等),以及操作系統是32bit還是64bit等。如果RMAN異機恢復只是準備Dev、Test、UAT環境,那麼這個完全可以忽略,如果是正式環境的遷移,那麼最好關註一下,避免一些問題。例如,有些版本的操作系統對不是官方認證的,如果在遷移前不關註這些,那麼遷移後,有可能出現一些意想不到的問題。

# uname -a
 
# uname -m
 
# more /etc/redhat-release

 

註意:這些工作是前期準備工作,不能到RMAN還原恢復的時候才做。

 

clip_image001

 

2:檢查目標伺服器與源伺服器的資料庫版本信息

 

如果源資料庫和目標資料庫版本一致,那麼完全可以跳過這一步。但是,有時候可能是從32位還原升級到64位;有些是從ORACLE 10g 遷移升級到ORACLE 11g,那麼在後面的RMAN還原後,還需做一些額外的Upgrade工作。個人剛做DBA的第一年,在一次遷移過程,事先安裝過程中不小心選錯了版本(標準版弄成了企業版,安裝過程中由於檢查某個選項,點擊後退過程中系統預設選擇了企業版,當時沒有發現),後續沒有仔細檢查,遷移完成後,驗證時才發現版本是企業版。結果將整個遷移進度全部打亂了!

32bit

clip_image002

64bit

clip_image003

 

3:檢查實例安裝路徑以及數據文件等路徑

 

這裡指資料庫實例的安裝路徑,以及數據文件、控制文件、參數文件是否一致,如果全部一致的話,那麼可以避免很多問題,但是很多時候,

我們需要重新規劃存儲路徑或者其它一些原因,這些數據文件、參數文件等,很有可能跟源伺服器不一致,那麼事先瞭解這些,在遷移過程中

就必須註意到這些情況。作出相應的處理。否則RMAN還原過程中就會遇到一些問題。

 

4:將備份文件拷貝的相關目錄

 

可以將備份拷貝到恢複目錄解壓或指定目錄解壓。如果源伺服器與目標伺服器的RMAN備份路徑一致,那麼可以省去很多不必要的麻煩。

 

5: 創建相關的目錄

 

例如,目標伺服器安裝ORACLE實例時,選擇了“只安裝實例”選項,那麼在RMAN還原之前,我們必須創建下麵一些目錄(這些不是必須的,有些環境甚至完全不必要。具體根據實際情況判斷):

  1: 創建$ORACLE_BASE/admin/$ORACLE_SID/下的六個目錄;

  2: $ORACLE_BASE/oradata下創建$ORACLE_SID目錄;

  3: RMAN備份路徑目錄(這個地方最好與源資料庫一致,創建好後,把源資料庫備份的數據文件複製到這個目錄里);--非必須。

  4: 歸檔日誌目錄(同樣,創建好後,把需要的歸檔日誌文件複製到此目錄) --非必須。

 

[root@getlnx14dev ~]#mkdir -p admin/SCM2/{adump,bdump,cdump,dpdump,pfile,udump}
[root@getlnx14dev ~]#mkdir -p oradata/$ORACLE_SID
 
[root@getlnx14dev ~]# chown -R oracle:oinstall /data
[root@getlnx14dev ~]# su - oracle
Last login: Fri May 26 13:38:38 CST 2017 on pts/2
[oracle@getlnx14dev ~]$ cd /data/
[oracle@getlnx14dev data]$ mkdir scm2
[oracle@getlnx14dev data]$ 

 

操作步驟

 

下麵測試,是將資料庫通過RMAN備份恢復到一臺測試伺服器,出於測試目的,故意將實例的安裝路徑,以及恢復路徑全部故意弄成不一致。具體測試環境如下:

 

源伺服器:

   

    操作系統: Red Hat Enterprise Linux Server release 5.1

  資料庫版本: Oracle Database 10g Release 10.2.0.4.0 32bit 標準版

 

目標伺服器:

 

   操作系統: Red Hat Enterprise Linux Server release 7.2 (Maipo) #註意,這個版本不是官方認證版本,僅做測試而已。

資料庫版本: Oracle Database 10g Release 10.2.0.4.0 64bit 標準版

 

1:查詢DBID信息

 

DBID是DataBase IDentifier的縮寫,意思就是資料庫的唯一標識符。這個DBID在數據文件頭和控制文件都是存在的,可以用於標示數據文件的歸屬。

對於不同資料庫來說,DBID應當不同,而db_name則可能是相同的。一般在nocatalog模式並且控制文件丟失時才需要這個。

 

SQLselect name,dbid from v$database;
 
NAME            DBID
--------- ----------
SCM2      3990839260
 
SQL> 

 

如果源伺服器已經宕機,那麼如何查詢DBID相關信息呢? 關於這個,其實也有很多方法獲取,例如,如果你曾經做過AWR報告,可以從AWR中找到對應的DBID,也可以從恢復的控制文件獲取等。

 

2:啟動資料庫實例到nomount狀態

 

 

使用RMAN還原恢復時,DB必須啟動到nomout狀態。

[oracle@getlnx14dev SCM2]$ rman target /
 
Recovery Manager: Release 10.2.0.4.0 - Production on Sun May 28 21:14:36 2017
 
Copyright (c) 1982, 2007, Oracle.  All rights reserved.
 
connected to target database (not started)
 
RMAN> startup nomount  pfile='/home/oracle/oracle/product/10.2.0/db_1/dbs/init.ora';
 
Oracle instance started
 
Total System Global Area     159383552 bytes
 
Fixed Size                     2082400 bytes
Variable Size                150997408 bytes
Database Buffers               4194304 bytes
Redo Buffers                   2109440 bytes

 

 

3:還原參數文件spfile

RMAN>set DBID=3990839260;
 
RMAN>restore spfile to pfile '/home/oracle/oracle/product/10.2.0/db_1/dbs/spfileSCM2.ora' from '/app/backup/backup/backupsets/ora_cfc-3990839260-20170518-00';

 

參數文件恢復後,需要修改相關參數,這裡由於測試緣故,我們故意在目標伺服器安裝ORACLE實例時,隨意選擇了一個路徑,故意與源伺服器ORACLE實例的安裝路徑不一致,當然,還有其它一些情況,也有可能導致你必須修改一些參數。

 

db_name=SCM2

db_block_size=8192

db_file_multiblock_read_count=16

sga_target=1200M

pga_aggregate_target=760M

audit_file_dest=/u01/app/oracle/admin/SCM2/adump

background_dump_dest=/u01/app/oracle/admin/SCM2/bdump

user_dump_dest=/u01/app/oracle/admin/SCM2/udump

core_dump_dest=/u01/app/oracle/admin/SCM2/cdump

control_files=('/u01/app/oracle/oradata/SCM2/control01.ctl','/u01/app/oracle/oradata/SCM2/control02.ctl','/u01/app/oracle/oradata/SCM2/control03.ctl')

compatible=10.2.0.1.0

remote_login_passwordfile=exclusive

open_cursors=300

sessions=450

processes=300

undo_management=auto

undo_tablespace=UNDOTBS1

 

修改後的pfile參數文件。

 

db_name=SCM2

db_block_size=8192

db_file_multiblock_read_count=16

sga_target=1200M

pga_aggregate_target=760M

audit_file_dest=/home/oracle/oracle/admin/SCM2/adump

background_dump_dest=/home/oracle/oracle/admin/SCM2/bdump

user_dump_dest=/home/oracle/oracle/admin/SCM2/udump

core_dump_dest=/home/oracle/oracle/admin/SCM2/cdump

control_files=('/home/oracle/oracle/oradata/SCM2/control01.ctl','/home/oracle/oracle/oradata/SCM2/control02.ctl','/home/oracle/oracle/orada

ta/SCM2/control03.ctl')

compatible=10.2.0.1.0

remote_login_passwordfile=exclusive

open_cursors=300

sessions=450

processes=300

undo_management=auto

undo_tablespace=UNDOTBS1

 

 

如果前面準備步驟,沒有創建對應的udmp等目錄,就會遇到下麵錯誤

RMAN>  startup nomount  pfile='/home/oracle/oracle/product/10.2.0/db_1/dbs/initSCM2.ora';
 
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of startup command at 05/26/2017 15:27:45
RMAN-04014: startup failed: ORA-00444: background process "PMON" failed while starting
ORA-07446: sdnfy: bad value '' for parameter .

 

 

Problem

The path to bdump,adump or udump does not exist. Oracle itself does not create any path if a path does not exist. So, you have to change the value of user_dump_dest in the initialize parameter.

Solution

If you use pfile to start your database then edit the pfile with any editor (for example vi on unix) and either change the location of user_dump_dest or remove the parameter user_dump_dest from pfile. And then perform. startup

 

4: 還原控制文件(control file)。

 

如果你實在不知道控制文件在那個備份集的那個文件,那麼可以在源伺服器使用list命令查看。如下所示。 當然如果經驗豐富或者你對備份與還原瞭如指掌的話, 完全不用這一步驟。

RMAN> list backup of controlfile;
 
using target database control file instead of recovery catalog
 
List of Backup Sets
===================
 
BS Key  Type LV Size       Device Type Elapsed Time Completion Time
------- ---- -- ---------- ----------- ------------ ---------------
4       Full    7.58M      DISK        00:00:00     18-MAY-17      
        BP Key: 4   Status: AVAILABLE  Compressed: NO  Tag: TAG20170518T224247
        Piece Name: /u03/backup/backupsets/ora_cfc-3990839260-20170518-00
  Control File Included: Ckp SCN: 22876629756   Ckp time: 18-MAY-17

 

後續具體操作操作如下所示

RMAN> shutdown immediate;
 
using target database control file instead of recovery catalog
Oracle instance shut down
RMAN> exit
 
 
Recovery Manager complete.
 
[oracle@getlnx14dev ~]$ export ORACLE_SID=SCM2;
[oracle@getlnx14dev ~]$ rman target /
 
Recovery Manager: Release 10.2.0.4.0 - Production on Mon May 29 08:41:17 2017
 
Copyright (c) 1982, 2007, Oracle.  All rights reserved.
 
connected to target database: SCM2 (DBID=3990839260)
 
RMAN> 
RMAN> startup nomount  pfile='/home/oracle/oracle/product/10.2.0/db_1/dbs/initSCM2.ora';
 
connected to target database (not started)
Oracle instance started
 
Total System Global Area    1258291200 bytes
 
Fixed Size                     2083624 bytes
Variable Size                318768344 bytes
	   

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 說明 本文寫於2017 05 20,使用MySQL 5.7.18。操作系統為64位CentOS Linux release 7.2.1511 (Core),以桌面形式安裝。 卸載MariaDB CentOS7預設安裝MariaDB而不是MySQL,而且yum伺服器上也移除了MySQL相關的軟體包。因 ...
  • Azure的遷移繼續進行中,這次是MySQL Database on Azure服務,微軟在SQL Server之外的資料庫能力到底如何呢 ...
  • 今天,終於把MySQL資料庫的知識系統的過了一遍,下麵整理出一些常用的基本操作。 一、MySQL伺服器的啟動與關閉 1、啟動MySQL伺服器 開始 -> 運行 輸入“cmd”,然後在命令提示符下輸入“net start MySQL”指令。 2、連接MySQL伺服器 輸入指令:MySQL -uroot ...
  • Redis 小白指南(二) 引言 目錄 基礎命令 字元串類型 散列類型 列表類型 集合類型 有序集合類型 基礎命令 1.獲得符合規則的鍵名列表 pattern 支持 glob 風格通配符: 2.判斷一個鍵是否存在 如果鍵存在則返回整數類型 1,否則返回 0 3.刪除鍵 可以刪除一個或者多個鍵,返回值 ...
  • 這是我的第一篇博文,有一絲小激動,不曾想有一天我也能寫出一點經驗為大家服務。如有表達不清請多見諒。 首先,我之前必須完成過註冊,並把個人信息存入資料庫中。 其次,這部分的個別對象是存於某些文檔中的,需要引用命名空間。 using System;using System.Collections.Gen ...
  • mysql系統資料庫主要存儲了一些存儲MySQL服務的系統信息表。一般情況下mysql庫的表都是MYASIM引擎,除非個別情況。mysql庫的表的作用大致可以分為以下幾類: (1)授權系統表 (2)系統對象信息系統表 (3)日誌系統表 (4)伺服器端輔助系統表 (5)time zone系統表 (6) ...
  • Redis 小白指南(一) 目錄 簡介 安裝 入門指令 GUI 工具 C# 驅動介紹 簡介 ANSI C 編寫,開源,基於記憶體,可持久化,一個鍵值對的資料庫,用法簡單。 支持的類型:字元串、散列、列表、集合和有序集合。 因為 Redis 預設將所有數據都存儲到記憶體中,並且記憶體的讀寫速度遠遠高於硬碟, ...
  • 1. Oracle跟SQL Server 2005的區別? 巨集觀上: 1). 最大的區別在於平臺,oracle可以運行在不同的平臺上,sql server只能運行在windows平臺上,由於windows平臺的穩定性和安全性影響了sql server的穩定性和安全性 2). oracle使用的腳本語 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...