跨版本的恢复总结及案例,Linux服务器数据库

你正在看的ORACLE教程是:简介用RMAN举办Oracle自动备份。

Linux服务器数据库(MySQL、ORACLE卡塔尔(英语:State of Qatar)轻巧的异域备份方案

— 在标希图份早前,一定按如下供给去做。

 

结论:

各文件的机能:

Linux服务器MySQL数据水库蓄水体量易的异乡备份方案

1.
Kugaman得以跨平台,互连网有资料基于ID
413586.1(metalink上有),可是依旧少用rman来展开跨平台操作。

1.rman_db_all.sh :

  www.2cto.com  

2.
安德拉man方可跨版本,不过经常只好从低到高,且要执行catupgrd.sql。不可能从高到低,唯一中标的是低版本升级到高版本后备份能够过来到均等的低版本

备份整个oracle数据库,该公文子禽前后相继调用rman_db.sh,scp_rman_db_files.sh文件

率先简单说下:

 

2.rman_db.sh:

 

 

由rman_db_all.sh文件调用,达成用rman备份数据库.

1、实施脚本导出数据库。

跨平台的实例:

该脚本会首先根据蒙受变量的装置:

 

Solaris上的9i的DB通过rman备份后恢复到揽胜HEL5.4上的11.2.0.1

a.生成四个rman脚本文件(rman_arch_cr_g.sh卡塔尔, 去反省归档日志的景色

mysqldump -h127.0.0.1 -P3306 -uroot -ppassword dbname >
/bak/db/backup.sql

 

b.生成贰个rman脚本文件(rman_db_backup_g.sh卡塔尔(英语:State of Qatar), 备份整个数据库

 

跨版本的实例:

3.scp_rman_db_files.sh:

2、使用scp将导出的数据库文件传输到别的服务器上,平日进行异乡备份,容灾。

RMAN_11.2.0.1异机恢复生机到11.2.0.4

由rman_db_all.sh文件调用,将用rman备份出的数据文件拷贝到其余二个机器上,用scp拷贝

 

RMAN_11.2.0.1晋级到11.2.0.4的DB异机恢复到11.2.0.1版本的DB

4.OS_bak_arch.sh:

scp -P 195 /bak/db/backup.sql
[email protected]:/bak

RMAN_11.2.0.1升官到11.2.0.4的DB异机恢复生机到12.1.0.2

用操作系统拷贝方法只备份归档日志文件,该文件会先后调用OS_bak_arch.sh,scp_rman_arch_files.sh文件

 

 

5.OS_bak_arch.sh:

内部195为ssh端口号,假若是默认的22,可以轻便 -P 22。

 

由OS_bak_arch.sh文件调用,实现将新产生的存档日志拷贝到内定的目录.

 

 

6.scp_rman_arch_files.sh


 

由OS_bak_arch.sh文件调用,将第5步的钦定目录的存档日志用scp拷贝到其余生龙活虎台机器上。

  www.2cto.com  

 

现实设置方法:

现行反革命亟待编写制定一个sh脚本,并设定到依期任务中

 

1.设置服务器,使之用ssh与scp密码登入时决不密码

 

RMAN_备份在外地苏醒

2.在备份服务器上开创相应的备份目录, 为 BACKUP_SERVER_TARGET,

sh脚本内容如下:

A的整库备份在B还原

BACKUP_SERVER_SCRIPT_TACR-VGET 碰到变量钦赐的值

 

以下相当于到在多个只设置了oracle软件的B服务器上进展的还原,B未有别的关于A库的数目,也发未来全路经过中都尚未去手动创设B库的在线日志,因为B库在线日志会在alter
database open resetlogs的时候自动创建,只要B服务器的在线日志路径和A库相符就能够(如若B服务器已经安装了oracle软件并成立了DB,则第五、六步能够统八分之一步即对象库根据spfile成立pfile,并改过pfile中的db_name为源库DB名称,并在对象库成立源库datafile、online redo
log对应的目录

3.在数据库服务器上创立相应的目录, 为 BACKUP_BASE, SCRIPT_FILE_TATucsonGET
意况变量钦点的值

[java] 

 

3.改动全数文件中的相应情状变量的值,全部文件的意况变量都平等

#!/bin/sh  

1. 
A库执行backup
database format ‘/backup/rman/full_%U.bak’;

4.运维前将rman_db_all.sh,rman_arch_all.sh文件前边有中文的行去掉

  

   
在A的/backup/rman会出现七个以full命名的文本,八个是数据库备份,多个参数文件和调节的备份

5.依照归档目录个数的不等,适当的校订剧本

filename=`date ‘+%Y%m%d-%H%M%S’`  

2. 
A库再试行alter
system archive log current或alter
system switch logfile

6.将具有脚本拷贝到备份服务器的BACKUP_SERVER_SCRIPT_TAEscortGET目录下,并使全部的本子由可实行权限

filename=”${filename}bak.sql”  

在A的存档目录下转移刚刚最新的存档日志

10.将rman_db_all.sh文件加到cron中,每天运转一回。rman_arch_all.sh也加到cron中,每30分钟运营一遍

  

如上两步可接产生一步如下

11.依据必要改善,LOG_CHECKPOINT_TIMEOUT,使之在钦点的光阴内归档,

mysqldump -h127.0.0.1 -P3306 -uroot -ppassword dbname >
/bak/db/${filename}  

Rman>backup
database format ‘/u01/app/rman/full%U.bak’ plus archivelog format
‘/u01/app/rman/arch%U.bak’

与上述同类能够保险在整整体系硬盘都完蛋的情状的,只损失指依时期的记录

  

3. 
把A库/backup/rman下的五个文本和恰巧最新的存档日志拷贝到B库雷同的目录

备注:

scp -P 195 /bak/db/${filename}
[email protected]:/bak
 

4. 
更换目标库的.bash_profile中ORACLE_SID=源库的sid,并source应用一下

1.在oracle9i下测量试验通过

  

5. 
在B库执行echo
$ORACLE_SID,等于A库sid的状态下再实行

2.每一个scrip中都设置enviroment
variable的原由是:用ssh时,蒙受变量传不过去。

echo “success”  

rman
target /

sh文件不要遗忘行使 chmod +x backup.sh 实行付与可进行权限。

rman>startup
nomount

倘使大家将sh文件寄放与opt目录下,须求计划一下依期职务

rman>restore
spfile to pfile ‘$ORACLE_HOME目录/dbs/initA的SID.ora’
from’/backup/rman/full_09l9esg4_1_1′;

 

6. 
修正刚刚复苏出来的pfile,并依据pfile文件创立诸如dump、archivelog、datafile、online redo
log等路线,如B库创制了和A库相仿的主宰文件路径、数据文件路线、日志文件路径

编纂文件:vi /etc/crontab 设定每一日晚上4点半实施

7. 
B库shutdown
abort再startup
nomount

30 04 * * * root /bin/sh /opt/db/backup-database.sh

8. 
B库rman 恢复生机操作

 

rman>restore
controlfile from’/backup/rman/full_09l9esg4_1_1′;

能够接纳命令:cat /var/log/cron  查看准时职责实践日志

rman>alter
database mount;

如上拍卖后,服务器就能够活动实行数据库备份并上盛传异域服务器上了,然则有个难题还要求解决,那正是让scp命令不需求密码才行。

rman>restore
database;

 

rman>recover
database until sequence 主库拷贝过来的十二分归档日志的sequence+1

现实安插形式参谋:

如上假使应用归档日志的备份包要求在recover
database以前推行如下两句(供给catalog
最后一个归档日志的备份包,为啥供给catalog是因为它在controlfile备份包之后生成的。XX只供给from最大的十分sequence-2就能够了,无需源库和对象库的archivelog目录大器晚成致,只要指标库有archivelog目录就足以了,会自行restore到对象库的archivelog目录卡塔尔(قطر‎

 

rman>catalog
backuppiece ”;

上面说一下oracle与mysql的分化的地方

rman>restore
archivelog from sequence XX;

 

9. 
B库open
resetlogs

oracle备份平日景色要求选取 su – oracle
切换来oracle顾客下手艺举行,上边说一下直接在root顾客下怎么进展操作。

Sqlplus>alter
database open resetlogs

 

心得:

非常的地点正是,有的操作供给root客户(比方无密码scp操作,作者那边只是比喻卡塔尔(قطر‎,有的操作须求oracle客户(exp导出客户卡塔尔(قطر‎。

第8步,若无了A库最新的存档日志,restore
database后直接recover
database,会报错说找不到归档日志,所以举办整库备份后,必得手动归档,并把归档日志也拷贝到异乡

重大命令:su – oracle -c “/opt/expdatabase.sh” 

第8步,万一一点都不小心在mount状态时改革了B的存档路径,以致A库和B库的存档日志路线不平等,则把A库的存档日志拷贝到B库的实际上归档路线,就能够恢复生机,不要再度创立三个归档路线和A库同样,再把归档日志拷贝到那几个新建的存档路线,一切以B库的archive log
list中的路线为准

情趣是在root顾客下不须要切换到oracle客户,而一向利用oracle客户的剧中人物施行expdatabase.sh 文件。

 

  www.2cto.com  

 

大家须要在 root 下的 sh 文件中调用 expdatabase.sh 文件。

20160812RMAN异乡还原的操作的例证

 

1. 
源库A实施如下

shell 脚本如下:

Rman>delete
noprompt archivelog until time ‘sysdate-1’;

 

Rman>backup
database format ‘/orabackup/rman_backup/data%U.bak’ plus archivelog
format ‘/orabackup/rman_backup/arch%U.bak’

1、主 sh 脚本,root 执行

2. 
把源库的备份包拷贝至目的库B(并不是/orabackup/rman_backup/,所以前面第8步要catalog数据文件备份包和归档日志文件备份包)

 

3. 
在B库的linux下执行ORACLE_SID=A库的sid或修改.bash_profile中ORACLE_SID=A库的sid并source
.bash_profile

[java] 

4. 
B库关闭DB并认同spfile已经删除(顺便删除全数datafile、redofile和archivelog)

#!/bin/sh  

5. 
在B库执行echo
$ORACLE_SID,等于A库sid的状态下再实行

  

rman
target /

filename=`date ‘+%Y%m%d-%H%M%S’`  

rman>startup
nomount

filename=”${filename}bak.dmp”  

rman>restore
spfile to pfile ‘$ORACLE_HOME目录/dbs/initA的SID.ora’
from’/backup/rman/data_09l9esg4_1_1′;

  

6. 
退换刚刚过来出来的pfile,如control、dump、archivelog等路子

su – oracle -c “/u01/oradata/bak/expdatabase.sh ${filename}”  

7. 
B库shutdown
abort再startup
nomount

  

8. 
B库rman
恢复生机操作

scp -P 195 /u01/oradata/bak/${filename}
[email protected]:/bak/202.102.41.35
 

rman>restore
controlfile from’/backup/rman/full_09l9esg4_1_1′;

  

rman>alter
database mount;

echo “Execution completed”  

rman>
catalog backuppiece ‘/backup/rman/data0bqedd5a_1_1.bak’;

 

RMAN>run{

2、须要用oracle客户的剧中人物来实践的sh脚本 expdatabase.sh

set
newname for datafile 1 to ‘ /datafile/system01.dbf’;

[java] 

set
newname for datafile 2 to ‘ /datafile/sysaux01.dbf’;

#!/bin/sh  

set
newname for datafile 3 to ‘ /datafile/undotbs01.dbf’;

  

set
newname for datafile 4 to ‘ /datafile/users01.dbf’;

#进入oracle home  

set
newname for tempfile 1 to ‘/datafile/temp01.dbf’;

cd /u01/oracle  

restore
database;

#加载oracle客户境况变量  

switch
datafile all;

. ./.bash_profile  

switch
tempfile all;

  

}

exp
user/[email protected]
file=/u01/oradata/bak/$1 full=y  

rman>
catalog backuppiece ‘/backup/rman/arch0bqedd5a_1_1.bak’;

 

rman>
catalog backuppiece ‘/backup/rman/arch0bqedd5a_1_1.bak’;

Linux服务器MySQL数据水库蓄水体量易的异域备份方案 www.2cto.com 首先轻巧说下:
1、实行脚本导出数…

RMAN>
recover database;

依据上边报错提醒再施行

RMAN>
recover database until sequence 3160;

9. 
退出rman进入[oracle@localhost
dbs]$ sqlplus / as sydba

10.SQL>
alter database open resetlogs;

倘使报错ORA-00344:
unable to re-create online log ‘/oradata/TESTIO/redo01.log’

则select
* from v$logfile;后再推行

SQL>
alter database rename file ‘/oradata/TESTIO/redo01.log’ to
‘/u01/app/oracle/oradata/redo01.log’;

SQL>
alter database rename file ‘/oradata/TESTIO/redo02.log’ to
‘/u01/app/oracle/oradata/redo02.log’;

SQL> 
alter database rename file ‘/oradata/TESTIO/redo03.log’ to
‘/u01/app/oracle/oradata/redo03.log’;

SQL>
alter database open resetlogs;

 

如上急需明白的是

set
newname for datafile在这之中是含有datafile和undofile

set
newname for tempfile只包含tempfile

故而意气风发伊始须要先在源库实践

select
file_id,file_name
from
dba_data_files order
by
file_id

select
file_id,file_name
from
dba_temp_files order
by
file_id

 

当然固然前方set
newname for tempfile引致前边报错
图片 1

 

ALTER
TABLESPACE TEMP drop TEMPFILE ‘/oradata/TESTIO/temp01.dbf’;

ALTER
TABLESPACE TEMP ADD TEMPFILE ‘/u01/app/oracle/oradata/temp01.dbf’ size
500M autoextend on next 50M maxsize 30G;

 

 

 

 

 

 

RMAN_11.2.0.1异机复苏到一贯设置11.2.0.4的版本

RMAN_11.2.0.1异机苏醒到11.2.0.1提高后的11.2.0.4本子

 

源DB信息:DB_NAME为DB521102,版本为直接设置的11.2.0.1

目标DB信息:DB_NAME为DB11204,版本为直接设置的11.2.0.4,非11.2.0.1荣升的本子

目标DB信息:DB_NAME为DB11204,版本为11.2.0.1晋级到一贯设置的11.2.0.4的本子

 

 

 

1. 
源DB执行

Rman>backup
database format ‘/u01/app/rman/full%U.bak’ plus archivelog format
‘/u01/app/rman/arch%U.bak’ delete input;

2. 
源库把备份后的四个备份包scp到对象库/u01/app/rman/目录

3. 
目的库依照spfile创设pfile,并改善pfile中的db_name为DB521102,并在目的库创设源库datafile、online redo
log对应的目录

4. 
改革指标库的.bash_profile中ORACLE_SID=源库的sid,并source应用一下

5. 
对象库按顺序实行如下语句(上面第5个语句,必要catalog
最后一个归档日志的备份包,为啥须求catalog是因为它在controlfile备份包之后生成的。下边第6个语句,只必要from最大的可怜sequence-2就能够了,无需源库和对象库的archivelog目录生龙活虎致,只要目的库有archivelog目录就能够了,会自行restore到对象库的archivelog目录卡塔尔(قطر‎

sql>startup
nomount pfile=’’

rman>restore
controlfile from ’/u01/app/rman/fullXX.bak’

rman>alter
database mount;

rman>restore
database;

rman>catalog
backuppiece ’/u01/app/rman/52arch04rc7tru_1_1’

rman>restore
archivelog from sequence XX;

rman>recover
database until sequence 最大的sequence+1;

sql>alter
database open resetlogs;

现身如下报错

ORA-01092:
ORACLE instance terminated. Disconnection forced

ORA-00704:
bootstrap process failure

ORA-39700:
database must be opened with UPGRADE option

6. 
消除方法,指标库重新登入按如下试行(施行catupgrd.sql完后实例会自行shutdown,之后直接startup的历程不再须要resetlogs了)

sql>startup
upgrade;

SQL>@$ORACLE_HOME/rdbms/admin/catupgrd.sql;

sql>
startup

 

 

 

 

 

 

 

 

 

RMAN_11.2.0.4异机苏醒到11.2.0.1

源DB信息:DB_NAME为DB11204,版本为间接设置的11.2.0.4

目标DB信息:DB_NAME为ORCL,版本为11.2.0.1

 

1. 
源DB执行

Rman>backup
database format ‘/u01/app/rman/full%U.bak’ plus archivelog format
‘/u01/app/rman/arch%U.bak’ delete input;

2. 
源库把备份后的三个备份包scp到目的库/u01/app/rman/目录

3. 
对象库根据spfile成立pfile,并改进pfile中的db_name为DB11204,并在对象库创设源库datafile、online redo
log对应的目录

4. 
改变目的库的.bash_profile中ORACLE_SID=源库的sid,并source应用一下

5. 
对象库按顺序推行如下语句

sql>startup
nomount pfile=’’

rman>restore
controlfile from ’/u01/app/rman/fullXX.bak’

直白报错如下(把pfile中的由*.compatible=’11.2.0.0.0’改成*.compatible=’11.2.0.4.0’并shutdown
abort再startup
nomount pfile的历程中则报错ORA-00401:
the value for parameter compatible is not supported by this release,即pfile中的由*.compatible改成吗都于事无补)

 

 图片 2

 

 

 

 

 

 

 

 

RMAN_11.2.0.1进级到11.2.0.4的DB异机苏醒到11.2.0.1版本的DB

源DB信息:DB_NAME为ORCL,由11.2.0.1升任到了11.2.0.4

目标DB信息:DB_NAME为TESTDB,版本为11.2.0.1

 

1. 
源DB执行

Rman>backup
database format ‘/u01/app/rman/full%U.bak’ plus archivelog format
‘/u01/app/rman/arch%U.bak’ delete input;

2. 
源库把备份后的八个备份包scp到对象库/u01/app/rman/目录

3. 
对象库依照spfile制造pfile,并改革pfile中的db_name为ORCL,并在对象库创设源库datafile、online redo
log对应的目录

4. 
退换目的库的.bash_profile中ORACLE_SID=源库的sid,并source应用一下

5. 
对象库按梯次推行如下语句(上面第5个语句,必要catalog
最后三个归档日志的备份包,为何要求catalog是因为它在controlfile备份包之后生成的。上边第6个语句,只需求from最大的十二分sequence-2就足以了,不要求源库和目标库的archivelog目录后生可畏致,只要目的库有archivelog目录就足以了,会自行restore到指标库的archivelog目录卡塔尔(قطر‎

sql>startup
nomount pfile=’’

rman>restore
controlfile from ’/u01/app/rman/fullXX.bak’

rman>alter
database mount;

rman>restore
database;

rman>catalog
backuppiece ’/u01/app/rman/52arch04rc7tru_1_1’;

rman>restore
archivelog from sequence XX;

rman>recover
database until sequence 最大的sequence+1;

sql>alter
database open resetlogs;

出现如下报错

ORA-01092:
ORACLE instance terminated. Disconnection forced

ORA-00704:
bootstrap process failure

ORA-39700:
database must be opened with UPGRADE option

6. 
减轻方法,指标库重新登入按如下实施(奇异的是上边首个语句实施进度中遇见标题,不像平常进级同样会shutdown数据库,而且以下第五个语句也不要再resetlogs了)

sql>startup
upgrade;

SQL>
@$/rdbms/admin/catupgrd.sql;

sql>
shutdown
immediate;

sql>
startup

RMAN_11.2.0.1异机苏醒到一直设置12.1.0.2的本子

源DB信息:DB_NAME为DB521102,版本为直接设置的11.2.0.1

目标DB信息:DB_NAME为DB12c,版本为直接设置的12.1.0.2

 

前面restore
spfile to pfile,并修改pfile中*.compatible=’12.1.0.0.0′

Startup
nomount

Restore
controlfile

Alter
database mount

Restore
database

Recover
database until sequence都以常规的,alter
database open resetlogs开首现出难点了,不晓得如何原因,莫非真是11G库罗德2无法异机苏醒到12CRubicon1?
图片 3
图片 4
图片 5

图片 6

RMAN_11.2.0.1晋级到11.2.0.4的异机恢复生机到间接设置12.1.0.2的本子

源DB信息:DB_NAME为DB521102,版本为直接设置的11.2.0.1,再升高到11.2.0.4

目标DB信息:DB_NAME为DB12c,版本为直接设置的12.1.0.2

 

 

1. 
源DB执行

Rman>backup
database format ‘/u01/app/rman/full%U.bak’ plus archivelog format
‘/u01/app/rman/arch%U.bak’ delete input;

2. 
源库把备份后的八个备份包scp到目的库/u01/app/rman/目录

3. 
目的库依据spfile创设pfile,并更改pfile中的db_name为DB521102,并在目的库创造源库datafile、online redo
log对应的目录

rman>restore
spfile to pfile ‘XX/initDB521102.ora’
from’/backup/rman/full_09l9esg4_1_1′;

并修改pfile中*.compatible=’12.1.0.0.0′

4. 
修改目的库的.bash_profile中ORACLE_SID=源库的sid,并source应用一下

5. 
对象库按顺序实行如下语句(上边第5个语句,要求catalog
最后三个归档日志的备份包,为何须要catalog是因为它在controlfile备份包之后生成的。上面第6个语句,只供给from最大的非常sequence-2就能够了,无需源库和目的库的archivelog目录风流倜傥致,只要指标库有archivelog目录就能够了,会自动restore到指标库的archivelog目录卡塔尔(قطر‎

sql>startup
nomount pfile=’’

rman>restore
controlfile from ’/u01/app/rman/fullXX.bak’

rman>alter
database mount;

rman>restore
database;

rman>catalog
backuppiece ’/u01/app/rman/52arch04rc7tru_1_1’

rman>restore
archivelog from sequence XX;

rman>recover
database until sequence 最大的sequence+1;

sql>alter
database open resetlogs;

并发如下报错

alter
database open resetlogs

*

ERROR
at line 1:

ORA-01092:
ORACLE instance terminated. Disconnection forced

ORA-00704:
bootstrap process failure

ORA-00604:
error occurred at recursive SQL level 2

ORA-00904:
“I”.”UNUSABLEBEGINNING#”: invalid identifier

Process ID:
11222

Session ID:
188 Serial number: 65058

6. 
缓和措施,指标库重新登录按如下试行(试行/u01/app/oracle/product/12c/db_1/perl/bin/perl
catctl.pl -n 4 catup完后实例会自动shutdown,之后从来startup的历程不再须要resetlogs了)

sql>startup
upgrade;

cd
/u01/app/oracle/product/12c/db_1/rdbms/admin/

/u01/app/oracle/product/12c/db_1/perl/bin/perl
catctl.pl -n 4 catupgrd.sql

sql> startup
图片 7
图片 8
图片 9
图片 10
图片 11

发表评论

电子邮件地址不会被公开。 必填项已用*标注