网站首页 > 技术文章 正文
概述
继续上一篇rman跨版本恢复的内容,今天主要分享在目的端恢复的过程,下面一起来看看吧!
因为目标数据库已经有实例,但不需要的,所以这里需要先删除一下。
1、删除安装oracle数据库时的实例
cmd> dbca
2、创建一个空的数据库实例
cmd> oradim -new -sid orcl -startmode a cmd> rman target / nocatalog
3、编辑pfile文件
因为源数据库是32G内存,目的数据库是8G内存,所以需编辑pfile文件
--8G参考
*.audit_file_dest='F:\app\Administrator\admin\orcl\adump' *.audit_trail='db' *.compatible='11.2.0.4.0' *.control_files='F:\app\Administrator\oradata\orcl\control01.ctl','F:\app\Administrator\fast_recovery_area\orcl\control02.ctl' *.db_block_size=8192 *.db_domain='' *.db_name='orcl' *.db_recovery_file_dest='F:\app\Administrator\fast_recovery_area' *.db_recovery_file_dest_size=107374182400 *.diagnostic_dest='F:\app\Administrator' *.dispatchers='(PROTOCOL=TCP) (SERVICE=orclXDB)' *.log_archive_format='F:\app\Administrator\fast_recovery_area\orcl\archivelog\archivelog_%t_%s_%r.arc' *.memory_target=3722444800 *.open_cursors=2000 *.processes=900 *.remote_login_passwordfile='EXCLUSIVE' *.resource_limit=FALSE *.undo_retention=900 *.undo_tablespace='UNDOTBS1'
4、创建对应目录及授权
--根据前面pfile文件所涉及的目录创建 F:\app\Administrator\oradata\orcl\ F:\app\Administrator\flash_recovery_area\orcl\ F:\app\Administrator\flash_recovery_area\orcl\archivelog\
5、利用参数文件打开实例到nomount模式。
SQL> startup force nomount pfile='E:\rmanbackup\pfile.ora'; SQL> create spfile from pfile='E:\rmanbackup\pfile.ora';
重要:根据修改好的pfile创建新的spfile。
sql > create spfile from pfile;
原因:下次重启oracle的时候,oracle优先用spfile打开数据库,如果spfile还是旧的话,那么就会报错,打不开数据库。
6、恢复控制文件
--恢复控制文件到参数文件指定目录 RMAN> restore controlfile from 'E:\rmanbackup\SPFILE_CONTROLFILE_ORCL_1425356587_13510_1_20190923.BKP';
7、根据控制文件将数据库打开到mount模式。
RMAN> sql 'alter database mount';
清理过期备份:
RMAN> crosscheck backup; RMAN> delete expired backup;
8、注册rman信息
把拷贝来的备份注册到rman里
RMAN> catalog start with 'E:\rmanbackup\';
9、查看数据文件原路径
SQL>select file# as "file/grp#", name from v$datafile;
10、还原数据库数据文件。
根据实际环境设置新的数据文件恢复目录,这里使用之前准备的source数据库文件结构信息。
RMAN> run { allocate channel c1 type disk; allocate channel c2 type disk; allocate channel c3 type disk; set newname for datafile 1 to "F:\oradata\SYSTEM01.dbf"; set newname for datafile 2 to "F:\oradata\SYSAUX01.dbf"; set newname for datafile 3 to "F:\oradata\UNDOTBS01.dbf"; set newname for datafile 4 to "F:\oradata\USERS01.dbf"; set newname for datafile 5 to "F:\oradata\NNC_DATA01.dbf"; set newname for datafile 6 to "F:\oradata\NNC_INDEX01.dbf"; set newname for datafile 7 to "F:\oradata\NNC_DATA02.dbf"; set newname for datafile 8 to "F:\oradata\NNC_DATA03.dbf"; set newname for datafile 9 to "F:\oradata\NNC_DATA04.dbf"; set newname for datafile 10 to "F:\oradata\AUD01.dbf"; restore database; switch datafile all; release channel c1; release channel c2; release channel c3; }
对switch datafile all的说明:
------------------------------------------------------------------- 对于nocatalog 模式下,rman备份的信息是保存在控制文件里的,包括文件的路径信息。 这里的switch datafile all的作用,就是更新控制文件里的信息。 -------------------------------------------------------------------
11、数据库介质恢复
SQL> recover database;
出现此错误的原因是恢复需要的日志记录在控制文件或恢复目录中找不到。解决方法分两种情况:
1.如果相关的日志存在且可用的话,就将此日志记录添加到控制文件或恢复目录中。
2.如果相关的日志已经被删除了或不可用了,那么就按照错误的提示scn将数据库恢复到此scn,本案例是1268579013。
也就是说此时数据库只能进行不完全恢复了,在打开数据库时得使用resetlogs打开。
rman> recover database until scn 1268579013;
12、指定联机日志在新系统中的路径
SQL> alter database rename file 'F:\APP\ADMINISTRATOR\ORADATA\ORCL\REDO01.LOG' to 'F:\APP\ADMINISTRATOR\oradata\orcl\REDO01.LOG'; SQL> alter database rename file 'F:\APP\ADMINISTRATOR\ORADATA\ORCL\REDO02.LOG' to 'F:\APP\ADMINISTRATOR\oradata\orcl\REDO02.LOG'; SQL> alter database rename file 'F:\APP\ADMINISTRATOR\ORADATA\ORCL\REDO03.LOG' to 'F:\APP\ADMINISTRATOR\oradata\orcl\REDO03.LOG'; SQL> alter database rename file 'F:\APP\ADMINISTRATOR\ORADATA\ORCL\REDO04.LOG' to 'F:\APP\ADMINISTRATOR\oradata\orcl\REDO04.LOG'; SQL> alter database rename file 'F:\APP\ADMINISTRATOR\ORADATA\ORCL\REDO05.LOG' to 'F:\APP\ADMINISTRATOR\oradata\orcl\REDO05.LOG'; SQL> alter database rename file 'F:\APP\ADMINISTRATOR\ORADATA\ORCL\REDO06.LOG' to 'F:\APP\ADMINISTRATOR\oradata\orcl\REDO06.LOG';
13、更改temp表空间目录
SQL> select name from v$tempfile; --表空间offline SQL> alter database tempfile 'xxx.dbf' offline; --在OS 级别移动temp 的数据文件 SQL> !mv xxx/temp01.dbf xxxtemp01.dbf --修改控制文件中temp文件的信息 SQL> alter database rename file 'xxxtemp01.dbf' to 'xxxxtemp01.dbf'; --temp 表空间online SQL> alter database tempfile 'xxxtemp01.dbf' online; --验证 SQL> select name from v$tempfile;
14、打开数据库
SQL> shutdown immediate; SQL> startup upgrade; --执行升级脚本catupgrd.sql SQL> spool upgrade.log SQL> @?/rdbms/admin/catupgrd.sql --执行升级脚本catuppst.sql SQL> startup SQL> @?/rdbms/admin/catuppst.sql
需要说明的就是:在open resetlogs 之后,自动在原来默认的路径创建了temp 表空间和online redo 日志文件。为了方便起见,建议先在controlfile中进行这些目录的更改。
15、编译无效对象
重新编译下:
SQL> @?/rdbms/admin/utlrp.sql;
觉得有用的朋友多帮忙转发哦!后面会分享更多devops和DBA方面的内容,感兴趣的朋友可以关注下~
猜你喜欢
- 2025-07-09 安装Redis(安装Red Hat Linux系统要做哪些准备工作?)
- 2024-10-15 Oracle_索引/同义词 oracle的索引有几种,各有何用途
- 2024-10-15 Oracle学习笔记 超详细oracle教程
- 2024-10-15 oracle哪些后台进程不能杀? oracle数据库杀进程
- 2024-10-15 「数据库数据恢复」HP-UX系统误删除ORACLE数据库的数据恢复案例
- 2024-10-15 oracle数据库常见问题处理总结1 oracle数据库错误代码大全
你 发表评论:
欢迎- 598℃几个Oracle空值处理函数 oracle处理null值的函数
- 591℃Oracle分析函数之Lag和Lead()使用
- 579℃0497-如何将Kerberos的CDH6.1从Oracle JDK 1.8迁移至OpenJDK 1.8
- 575℃Oracle数据库的单、多行函数 oracle执行多个sql语句
- 571℃Oracle 12c PDB迁移(一) oracle迁移到oceanbase
- 564℃【数据统计分析】详解Oracle分组函数之CUBE
- 550℃最佳实践 | 提效 47 倍,制造业生产 Oracle 迁移替换
- 545℃Oracle有哪些常见的函数? oracle中常用的函数
- 最近发表
- 标签列表
-
- 前端设计模式 (75)
- 前端性能优化 (51)
- 前端模板 (66)
- 前端跨域 (52)
- 前端缓存 (63)
- 前端aes加密 (58)
- 前端脚手架 (56)
- 前端md5加密 (54)
- 前端路由 (61)
- 前端数组 (73)
- 前端js面试题 (50)
- 前端定时器 (59)
- 前端懒加载 (49)
- 前端获取当前时间 (50)
- 前端接口 (50)
- Oracle RAC (76)
- oracle恢复 (77)
- oracle 删除表 (52)
- oracle 用户名 (80)
- oracle 工具 (55)
- oracle 内存 (55)
- oracle 导出表 (62)
- oracle 中文 (51)
- oracle的函数 (57)
- 前端调试 (52)
本文暂时没有评论,来添加一个吧(●'◡'●)