當前位置:首頁 » 操作系統 » rman資料庫復制

rman資料庫復制

發布時間: 2023-09-13 17:39:53

㈠ 怎麼才能把一個資料庫的rman備份恢復到同平台上的另一個資料庫中

要求:本地已有生產資料庫prod,制定rman備份策略,將數據備份到制定目錄/oracle/rman_bk下。現在需要做恢復測試,驗證備份出來的數據是有效的。且不影響原有的生產資料庫prod。
解決思路:在備份出來的數據中(控制文件),包含了資料庫名,數據文件,redo log等文件的存放路徑,如果在本地直接做恢復,將和原有的資料庫攜頃****,因此,需要修改這些信息,將備份出來的數據恢復到另外一個資料庫辯滑陸中。具體步驟如下:
1.創建新資料庫數據文件及跟蹤文件存放目錄
-bash-2.05b$mkdir -p /oracle/oradata/test
-bash-2.05b$mkdir -p /oracle/admin/test/bmp
-bash-2.05b$mkdir -p /oracle/admin/test/ump
-bash-2.05b$mkdir -p /oracle/admin/test/cmp
2.登錄到生產資料庫。查看當前數據文件信息:
-bash-2.05b$ sqlplus '/ as sysdba'
SQL> select file#,name from v$datafile;
FILE# NAME
---------- --------------------------------------------------
1 /oracle/oradata/test/system01.dbf
2 /oracle/oradata/test/undo01.dbf
3 /oracle/oradata/test/users01.dbf
3.利用rman更改數據文件存放路徑並restore到新的路徑
run {
set newname for datafile 1 to '/oracle/oradata/test/system01.dbf';
set newname for datafile 2 to '/oracle/oradata/test/undo01.dbf';
set newname for datafile 3 to '/oracle/oradata/test/users01.dbf';
restore datafile 1;
restore datafile 2;
restore datafile 3;
}
4。重建控制文件
CREATE CONTROLFILE REUSE set DATABASE "test" RESETLOGS ARCHIVELOG
-- SET STANDBY TO MAXIMIZE PERFORMANCE
MAXLOGFILES 16
MAXLOGMEMBERS 2
MAXDATAFILES 30
MAXINSTANCES 1
MAXLOGHISTORY 453
LOGFILE
GROUP 1 '/oracle/oradata/test/redo01.log' SIZE 10M,
GROUP 2 '/oracle/oradata/test/redo02.log' SIZE 10M,
GROUP 3 '/oracle/oradata/test/redo03.log' SIZE 10M
-- STANDBY LOGFILE
DATAFILE
'/oracle/oradata/test/system01.dbf',
'/oracle/oradata/test/undo01.dbf'讓兄,
'/oracle/oradata/test/users01.dbf'
CHARACTER SET ZHS16GBK
;
5.打開資料庫
SQL> alter database open resetlogs;

backup archivelog all delete input format '/rman/rman_%t_%s_%p.arc';

with a as
(select rownum p from al connect by level<=21)
select
7 + CEIL(
(7 + CEIL(
(7 + CEIL(p/3))
/3))
/3)
from a;
7+CEIL((7+CEIL((7+CEIL(p/3))/3))/3
本答案來自於互聯網,僅供參考學習作用
如果您對我的回答有不滿意的地方,還請您繼續追問;
答題不易,互相理解,互相幫助!

㈡ 用rman,在oracle不同版本間作數據恢復,怎麼弄

一、RMAN 備份的內容
RMAN做資料庫全備時包含了 數據文件、歸檔日誌、控制文件和參數文件和備份日誌,如下:
arch_20160223_08qukp2t_1_1 arch_20160223_0bqukp92_1_1 ctl_c-3234695588-20160223-01 rmanbak-20160223-0852.log scp_20160223_09qukp2u_1_1 scp_20160223_0aqukp2u_1_1
二、測試環境
OS:CentOS release 6.4 (Final)
Database:Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Proction
原平台與當前平台環境一致,但是oracle資料庫目錄結構不一致。
三、開始恢復
1、 確認原資料庫的DBID(通過RMAN的備份日誌,或者通過RMAN備份的控制文件名來識別),同時確認一下原資料庫的實例名;
2、 將RMAN備份的內容拷貝到目標資料庫上;
3、 設置好環境變數:
[oracle@dg1 ~]$ export NLS_DATA_FORMAT='YYYY-MM-DD HH24:MI:SS'
[oracle@dg1 ~]$ export ORACLE_SID=scp
[oracle@dg1 ~]$ rman target /
Recovery Manager: Release 12.1.0.2.0 - Proction on Fri May 6 22:18:52 2016
4、裝載資料庫並進行恢復
A、裝斗兆載資料庫
復制代碼
RMAN> set dbid=3234695588;
executing command: SET DBID
RMAN> startup nomount;
startup failed: ORA-01078: failure in processing system parameters
LRM-00109: could not open parameter file '/u01/app/oracle/proct/12.1.0.2/dbs/initscp.ora'
starting Oracle instance without parameter file for retrieval of spfile
Oracle instance started
復制代碼
B、先恢復spfile文件(或者是pfile文件,可以修改各項參數),因為在spfile 文件中包含了控制文件的位置
RMAN> restore spfile to pfile '$ORACLE_HOME/dbs/initscp.ora' from '/home/OracleBack/rmanbak/ctl_c-3234695588-20160223-01';
OR:
RMAN> restore spfile to '$ORACLE_HOME/培則dbs/spfilescp.ora' from '/home/OracleBack/rmanbak/ctl_c-3234695588-20160223-01';
C、根據pfile文件中的相關參數去修改本地系統目錄,或者修改這個pfile文件來匹配本地系統中的路徑和目錄,我們選擇後者
需要修改:oracle_base、*.audit_file_dest、*.control_files、*.db_recovery_file_dest、*.db_recovery_file_dest_size、*.diagnostic_dest、*.log_archive_dest_1、
memory_target、undo_tablespace等。並在當前配銷棚系統中創建好相關的目錄和許可權。
復制代碼
[oracle@dg1 dbs]$ vim initscp.ora
scp.__data_transfer_cache_size=0
scp.__db_cache_size=822083584
scp.__java_pool_size=16777216
scp.__large_pool_size=33554432
scp.__oracle_base='/u01/app/oracle'#ORACLE_BASE set from environment
scp.__pga_aggregate_target=654311424
scp.__sga_target=1241513984
scp.__shared_io_pool_size=50331648
scp.__shared_pool_size=301989888
scp.__streams_pool_size=0
*.audit_file_dest='/u01/app/oracle/admin/scp/amp'
*.audit_trail='db'
*.compatible='12.1.0.2.0'
*.control_files='/u01/app/oracle/oradata/scp/control01.ctl','/u01/app/oracle/fast_recovery_area/scp/control02.ctl'
*.db_block_size=8192
*.db_domain=''
*.db_name='scp'
*.db_recovery_file_dest='/u01/app/oracle/fast_recovery_area'
*.db_recovery_file_dest_size=4560m
*.diagnostic_dest='/u01/app/oracle'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=scpXDB)'
*.log_archive_dest_1='LOCATION=/OracleArch'
*.memory_target=1800m
*.open_cursors=300
*.processes=300
*.remote_login_passwordfile='EXCLUSIVE'
*.undo_tablespace='UNDOTBS1'
復制代碼
D、從修改後的pfile文件啟動資料庫,進行控制文件的恢復
復制代碼
RMAN> shutdown abort;
RMAN> startup nomount pfile='$ORACLE_HOME/dbs/initscp.ora';
RMAN> restore controlfile from '/home/OracleBack/rmanbak/ctl_c-3234695588-20160223-01';
Starting restore at 06-MAY-16
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=243 device type=DISK
channel ORA_DISK_1: restoring control file
channel ORA_DISK_1: restore complete, elapsed time: 00:00:01
output file name=/home/OracleData/scp/control01.ctl
output file name=/home/OracleArch/fast_recovery_area/control02.ctl
Finished restore at 06-MAY-16
復制代碼
E、控制文件恢復後就可以mount資料庫了
RMAN> alter database mount;
Statement processed
released channel: ORA_DISK_1
F、至此,控制文件已經恢復,資料庫已經mount,所有的RMAN配置參數均已設置,您應該驗證路徑以確保它們適用於該主機。
復制代碼
RMAN> show all;
RMAN configuration parameters for database with db_unique_name SCP are:
CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS;
CONFIGURE BACKUP OPTIMIZATION OFF; # default
CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default
CONFIGURE CONTROLFILE AUTOBACKUP ON;
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/orabackup/RmanBackupSet/20160223/ctl_%F';
CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET; # default
CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE MAXSETSIZE TO UNLIMITED; # default
CONFIGURE ENCRYPTION FOR DATABASE OFF; # default
CONFIGURE ENCRYPTION ALGORITHM 'AES128'; # default
CONFIGURE COMPRESSION ALGORITHM 'BASIC' AS OF RELEASE 'DEFAULT' OPTIMIZE FOR LOAD TRUE ; # default
CONFIGURE RMAN OUTPUT TO KEEP FOR 7 DAYS; # default
CONFIGURE ARCHIVELOG DELETION POLICY TO NONE; # default
CONFIGURE SNAPSHOT CONTROLFILE NAME TO '/u01/app/oracle/proct/12.1.0.2/dbs/snapcf_scp.f'; # default
復制代碼
G、為了能讓RMAN找到恢復文件的位置,我們有兩種途徑可以實現:一是修改RMAN配置以符合當前備份文件所在位置,其次是將RMAN備份文件拷貝到配置文件中設定的位置 (需要參考RMAN的備份日誌)。在第一個方法中,為了讓RMAN知道備份文件位置 /home/OracleBack/rmanbak ,我們使用catalog命令:
復制代碼
RMAN> catalog start with '/home/OracleBack/rmanbak';
Starting implicit crosscheck backup at 06-MAY-16
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=243 device type=DISK
Crosschecked 4 objects
Finished implicit crosscheck backup at 06-MAY-16
Starting implicit crosscheck at 06-MAY-16
using channel ORA_DISK_1
Finished implicit crosscheck at 06-MAY-16
searching for all files in the recovery area
cataloging files...
no files cataloged
searching for all files that match the pattern /home/OracleBack/rmanbak
List of Files Unknown to the Database
=====================================
File Name: /home/OracleBack/rmanbak/scp_20160223_09qukp2u_1_1
File Name: /home/OracleBack/rmanbak/arch_20160223_0bqukp92_1_1
File Name: /home/OracleBack/rmanbak/scp_20160223_0aqukp2u_1_1
File Name: /home/OracleBack/rmanbak/ctl_c-3234695588-20160223-01
File Name: /home/OracleBack/rmanbak/arch_20160223_08qukp2t_1_1
Do you really want to catalog the above files (enter YES or NO)? yes
cataloging files...
cataloging done
List of Cataloged Files
=======================
File Name: /home/OracleBack/rmanbak/scp_20160223_09qukp2u_1_1
File Name: /home/OracleBack/rmanbak/arch_20160223_0bqukp92_1_1
File Name: /home/OracleBack/rmanbak/scp_20160223_0aqukp2u_1_1
File Name: /home/OracleBack/rmanbak/ctl_c-3234695588-20160223-01
File Name: /home/OracleBack/rmanbak/arch_20160223_08qukp2t_1_1
復制代碼
H、對備份集做交叉檢查,否則還原資料庫時可能會報錯
復制代碼
RMAN> crosscheck backup;
using channel ORA_DISK_1
crosschecked backup piece: found to be 'EXPIRED'
backup piece handle=/orabackup/RmanBackupSet/20160223/arch_20160223_08qukp2t_1_1 RECID=8 STAMP=904553565
crosschecked backup piece: found to be 'AVAILABLE'
backup piece handle=/home/OracleBack/rmanbak/arch_20160223_08qukp2t_1_1 RECID=16 STAMP=911172456
crosschecked backup piece: found to be 'EXPIRED'
backup piece handle=/orabackup/RmanBackupSet/20160223/scp_20160223_0aqukp2u_1_1 RECID=9 STAMP=904553567
crosschecked backup piece: found to be 'AVAILABLE'
backup piece handle=/home/OracleBack/rmanbak/scp_20160223_0aqukp2u_1_1 RECID=14 STAMP=911172456
crosschecked backup piece: found to be 'EXPIRED'
backup piece handle=/orabackup/RmanBackupSet/20160223/scp_20160223_09qukp2u_1_1 RECID=10 STAMP=904553567
crosschecked backup piece: found to be 'AVAILABLE'
backup piece handle=/home/OracleBack/rmanbak/scp_20160223_09qukp2u_1_1 RECID=12 STAMP=911172456
crosschecked backup piece: found to be 'EXPIRED'
backup piece handle=/orabackup/RmanBackupSet/20160223/arch_20160223_0bqukp92_1_1 RECID=11 STAMP=904553762
crosschecked backup piece: found to be 'AVAILABLE'
backup piece handle=/home/OracleBack/rmanbak/arch_20160223_0bqukp92_1_1 RECID=13 STAMP=911172456
crosschecked backup piece: found to be 'AVAILABLE'
backup piece handle=/home/OracleBack/rmanbak/ctl_c-3234695588-20160223-01 RECID=15 STAMP=911172456
Crosschecked 9 objects
復制代碼
I、通過控制文件獲得表空間及數據文件列表
復制代碼
RMAN> report schema;
RMAN-06139: WARNING: control file is not current for REPORT SCHEMA
Report of database schema for database with db_unique_name SCP
List of Permanent Datafiles
===========================
File Size(MB) Tablespace RB segs Datafile Name
---- -------- -------------------- ------- ------------------------
1 0 SYSTEM *** /u01/app/oracle/oradata/scp/system01.dbf
2 0 ZYTK_AC *** /u01/app/oracle/oradata/scp/zytk_ac01.dbf
3 0 SYSAUX *** /u01/app/oracle/oradata/scp/sysaux01.dbf
4 0 UNDOTBS1 *** /u01/app/oracle/oradata/scp/undotbs01.dbf
5 0 EXAMPLE *** /u01/app/oracle/oradata/scp/example01.dbf
6 0 USERS *** /u01/app/oracle/oradata/scp/users01.dbf
7 0 ZYTK_AC *** /u01/app/oracle/oradata/scp/zytk_ac02.dbf
8 0 ZYTK_ID *** /u01/app/oracle/oradata/scp/zytk_id01.dbf
9 0 ZYTK_ID *** /u01/app/oracle/oradata/scp/zytk_id02.dbf
10 0 ZYTK_OP *** /u01/app/oracle/oradata/scp/zytk_op01.dbf
11 0 ZYTK_OP *** /u01/app/oracle/oradata/scp/zytk_op02.dbf
12 0 ZYTK_TEST01 *** /u01/app/oracle/oradata/scp/zytk_test01.dbf
List of Temporary Files
=======================
File Size(MB) Tablespace Maxsize(MB) Tempfile Name
---- -------- -------------------- ----------- --------------------
1 60 TEMP 32767 /u01/app/oracle/oradata/scp/temp01.dbf
注意:restore 的時候不會對temp 表空間進行restore。所以等restore 之後,我們需要手工創建temp表空間。

㈢ 請解釋下Oracle里邏輯備份、物理備份、Rman備份的區別。教科書和百度上的解釋不是很懂,謝謝。

Oracle資料庫的邏輯備份
ORACLE資料庫有兩類備份方法。第一類為物理備份,該方法實現資料庫的完整恢復,但資料庫必須運行在歸擋模式下(業務資料庫在非歸擋模式下運行),且需要極大的外部存儲設備,例如磁帶庫;第二類備份方式為邏輯備份,業務資料庫採用此種方式,此方法不需要資料庫運行在歸擋模式下,不但備份簡單,而且可以不需要外部存儲設備。資料庫邏輯備份方法ORACLE資料庫的邏輯備份分為三種模式:表備份、用戶備份和完全備份。

表模式

備份某個用戶模式下指定的對象(表)。業務資料庫通常採用這種備份方式。若備份到本地文件,使用如下命令:

exp icdmain/icd rows=y indexes=n compress=n buffer=65536
feedback=100000 volsize=0
file=exp_icdmain_csd_yyyymmdd.dmp
log=exp_icdmain_csd_yyyymmdd.log
tables=icdmain.commoninformation,icdmain.serviceinfo,icdmain.dealinfo

若直接備份到磁帶設備,使用如下命令:
exp icdmain/icd rows=y indexes=n compress=n buffer=65536
feedback=100000 volsize=0
file=/dev/rmt0
log=exp_icdmain_csd_yyyymmdd.log
tables=icdmain.commoninformation,icdmain.serviceinfo,icdmain.dealinfo

註:在磁碟空間允許的情況下,應先備份到本地伺服器,然後再拷貝到磁帶。出於速度方面的考慮,盡量不要直接備份到磁帶設備。

用戶模式

備份某個用戶模式下的所有對象。業務資料庫通常採用這種備份方式。 若備份到本地文件,使用如下命令:

exp icdmain/icd owner=icdmain rows=y indexes=n compress=n buffer=65536
feedback=100000 volsize=0
file=exp_icdmain_yyyymmdd.dmp
log=exp_icdmain_yyyymmdd.log

若直接備份到磁帶設備,使用如下命令:

exp icdmain/icd owner=icdmain rows=y indexes=n compress=n buffer=65536
feedback=100000 volsize=0
file=/dev/rmt0
log=exp_icdmain_yyyymmdd.log

註:如果磁碟有空間,建議備份到磁碟,然後再拷貝到磁帶。如果資料庫數據量較小,可採用這種辦法備份。

完全模式

備份完整的資料庫。業務資料庫不採用這種備份方式。備份命令為:

exp icdmain/icd rows=y indexes=n compress=n buffer=65536
feedback=100000 volsize=0 full=y
file=exp_fulldb_yyyymmdd.dmp(磁帶設備則為/dev/rmt0)
log=exp_fulldb_yyyymmdd.log

對於資料庫備份,建議採用增量備份,即只備份上一次備份以來更改的數據。增量備份命令:

exp icdmain/icd rows=y indexes=n compress=n buffer=65536
feedback=100000 volsize=0 full=y inctype=incremental
file=exp_fulldb_yyyymmdd.dmp(磁帶設備則為/dev/rmt0)
log=exp_fulldb_yyyymmdd.log

註:關於增量備份必須滿足下列條件:
1. 只對完整資料庫備份有效,且第一次需要full=y參數,以後需要inctype=incremental參數。
2. 用戶必須有EXP_FULL_DATABASE的系統角色。
3. 話務量較小時方可採用資料庫備份。
4. 如果磁碟有空間,建議備份到磁碟,然後再備份到磁帶。

業務資料庫備份方法及周期用EXP進行備份前,先在SYS用戶下運行CATEXP.SQL文件(如果以前已運行該文件,則不要執行這個腳本)。
沒有特殊說明,不允許在客戶端執行備份命令。

備份命令參照表模式下的備份命令。

RMAN備份原理

在之前,看了用戶管理的備份恢復管理,通過以SCN為線索貫穿整個過程,來熟悉了備份原理。
RMAN的備份過程和用戶備份恢復管理有很大的區別,很多朋友了都沒有理清楚原理
下面的是我的理解:
RMAN備份數據塊的工作原理:

原理:RMAN基於備份演算法規則來編譯要備份的數據文件列表。基於通道數和同時備份的數據文件數,RMAN在ORACEL共享內存段中
創建一些內存緩沖區一般是在PGA中不過有時候內存緩沖區會被推入SGA。通道服務進程隨後就開始讀取數據文件,並在RMAN緩沖取
中填充這些數據塊。一個緩沖區被填滿時,輸入緩沖區的數據就會推出到輸出緩沖區。數據文件中的數據塊都會都會發生這種
memery—to—monery write 的過程,如果數據塊符合備份的標准,並且memery—to—monery write操作沒有檢查到
數據corruption則該數據塊會被保存到輸出數據緩沖區中,直到輸出緩沖區被填滿。一但輸出緩沖區被填滿,輸出緩沖區的內容就會被
推到備份位置(磁碟或者磁帶)

RMAN備份資料庫過程:
RMAN發出備份全庫命令後,RMAN生成到目標資料庫的bequeath連接,也就是說會檢查ORACLA_SID變數中的實例名,並在該在實
例上產生一個伺服器進程,然後作為sysdba登陸,然後會產生一個作為備份的通道,(在PGA或者是在SGA分配存儲)。隨後RMAN調用
SYS.DBMS_RCVMAN請求資料庫結構信息,包括控制文件的信息(當前序列號,創建時間……)由於指定了備份全庫,所以RMAN會請求
資料庫中數據文件信息,並判斷是否存在offline數據文件(包括所在的位置和工作方式)。
RMAN開始備份,為了保持數據一致性RMAN必須構建控制文件快照,接下來RMAN調用DBMS _BACKUP_RESTORE數據包,該調用
可以創建備份片。RMAN擁有文件列表,所以它為數據文件讀取操作分配內存緩沖區,分配緩沖區後RMAN初始化備份片。一旦初始化了備份片,
RMAN會判斷是否使用了伺服器參數文件,如果使用了則會做為備份的一部分,還要備份控制文件,之後才開始備份數據文件,並將其推至內存。
為了實現這一功能,通道進程在磁碟上執行預讀取操作,並且將多個數據文件讀入內存中,RMAN會判斷數據塊頭信息是否仍然為零,如果數據塊
沒有被使用過,就不會發生到輸出緩沖區的寫操作,同時會丟棄這個數據塊(這就RMAN為什麼會只備份使用過的數據的原因,也是它的優點)
RMAN還會執行檢查數據塊有沒有corruption操作。當檢查通過了就被寫入到輸出緩沖區。一旦輸出緩沖區填滿了,就被推至備份文件位置。
在備份數據塊的時候,RMAN影子進程會得到備份狀態信息。並將它傳給V$session_longops視圖。查詢它能得到信息。
當數據文件的所有數據塊都被讀入輸入緩沖區並確定了狀態之後RMAN就會通過將這個數據文件寫入備份片來結束該文件的備份操作。所有
數據文件寫入備份片之後,RMAN生成最後一個對SYS DBMS BACKUP RESTORE 數據包的調用,該調用在控制文件中寫入備份信息(包括
備份片名,啟動備份操作時的檢查點的SCN和完成備份的時間)
至此完成備份!

希望大家繼續討論RMAN備份恢復原理(RMAN功能太強大了)

熱點內容
機房伺服器如何安裝系統 發布:2025-01-25 07:03:02 瀏覽:937
linux命令for循環 發布:2025-01-25 06:58:07 瀏覽:268
c語言鏈表的排序 發布:2025-01-25 06:48:17 瀏覽:887
查看存儲空間的命令 發布:2025-01-25 06:40:06 瀏覽:610
安卓系統如何保活 發布:2025-01-25 06:36:27 瀏覽:779
緩存不退出 發布:2025-01-25 06:35:02 瀏覽:265
protel編譯 發布:2025-01-25 06:35:00 瀏覽:203
bt我的世界伺服器 發布:2025-01-25 06:33:35 瀏覽:392
桃子解壓碼 發布:2025-01-25 06:26:46 瀏覽:726
ubuntu飢荒伺服器搭建伺服器 發布:2025-01-25 06:19:54 瀏覽:51