从Oracle9i RMAN全库备份迁移到 Oracle10g
1. 创建以下目录:
mkdir -pv $ORACLE_BASE/admin/$ORACLE_SID/{{a,b,c,dp,u}dump,pfile}
mkdir -pv $ORACLE_BASE/flash_recovery_area
2. 创建Oracle10g的init$ORACLE_SID.ora
dbinfo.__db_cache_size=339738624
dbinfo.__java_pool_size=4194304
dbinfo.__large_pool_size=4194304
dbinfo.__shared_pool_size=243269632
dbinfo.__streams_pool_size=0
*.aq_tm_processes=0
*.audit_file_dest='/home/oracle10/admin/dbinfo/adump'
*.background_dump_dest='/home/oracle10/admin/dbinfo/bdump'
*.compatible='10.2.0.1.0'
*.control_files='/home/oracle10/oradata/dbinfo/control01.ctl','/home/oracle10/oradata/dbinfo/control02.ctl','/home/oracle10/oradata/dbinfo/control03.ctl'
*.core_dump_dest='/home/oracle10/admin/dbinfo/cdump'
*.db_block_size=8192
*.db_domain=''
*.db_file_multiblock_read_count=16
*.db_name='dbinfo'
*.db_recovery_file_dest='/home/oracle10/flash_recovery_area'
*.db_recovery_file_dest_size=2147483648
*.dispatchers='(PROTOCOL=TCP) (SERVICE=dbinfoXDB)'
*.job_queue_processes=0
*.open_cursors=300
*.pga_aggregate_target=199229440
*.processes=150
*.remote_login_passwordfile='EXCLUSIVE'
*.sga_target=598736896
*.undo_management='AUTO'
*.undo_tablespace='UNDOTBS1'
*.user_dump_dest='/home/oracle10/admin/dbinfo/udump'
3. 恢复控制文件:
rman target /
startup nomount;
restore controlfile from '$BAKDIR/controlfile_bak_20150624_DBINFO';
alter database mount;
出现下面错误:
ORA-19905: log_archive_format must contain %s, %t and %r
ORA-32004: obsolete and/or deprecated parameter(s) specified.(说使用的已经废弃的参数.)
解决方法:
Oracle9i的init$ORACLE_SID.ora 不能直接用于 Oracle10g. 必须使用Oracle10g的init$ORACLE_SID.ora
上面贴出的模板就是Oracle10g的init$SID.ora模板。
4. 恢复归档日志文件:
crosscheck archivelog all;
crosscheck backup of archivelog all;
#此步骤是删除源主机上归档存储的信息,这样才能从RMAN备份文件中恢复归档到目标机上新指定的位置。
delete expired archivelog all;
restore archivelog from sequence=4260;
出现下面错误:
ORA-19870 : error reading backup piece /orabackup/archivelog_back_20150731_DBINFO
ORA-19809 : limit exceeded for recovery files
ORA-19804 : cannot reclaim 22348234 bytes disk space from 23487289 limit
解决方法:
确保init$ORACLE_SID.ora 里面 "db_recovery_file_dest" 指定的目录存在.
并且“db_recovery_file_dest_size”的大小要足够恢复归档日志。
5. 恢复数据文件:
rman target /
RMAN> run {
allocate channel a1 type disk;
allocate channel a2 type disk;
set newname for datafile 1 to '/oracle/oradata/dbinfo/1024m_system01.dbf';
set newname for datafile 2 to '/oracle/oradata/dbinfo/8192m_undotbs01.dbf';
set newname for datafile 3 to '/oracle/oradata/dbinfo/256m_users01.dbf';
set newname for datafile 4 to '/oracle/oradata/dbinfo/256m_tools01.dbf';
set newname for datafile 5 to '/oracle/oradata/dbinfo/256m_perf.dbf';
set newname for datafile 6 to '/oracle/oradata/dbinfo/app_data01.dbf';
set newname for datafile 7 to '/oracle/oradata/dbinfo/app_data02.dbf';
set newname for datafile 8 to '/oracle/oradata/dbinfo/app_data03.dbf';
set newname for datafile 9 to '/oracle/oradata/dbinfo/app_index01.dbf';
set newname for datafile 10 to '/oracle/oradata/dbinfo/indx01.dbf';
restore database; //这里就是直接采用默认RMAN备份路径中恢复数据文件。
release channel a1;
release channel a2;
}
出现以下错误:
ORA-01180: 无法创建数据文件 1
ORA-01110: 数据文件 1: '/home/oracle/orabase/oradata/ORACLE/system01.dbf'
解决方法:
crosscheck backupset; #检查过期 或 无效的备份集.
delete expired backup; #删除过期的备份集.
另注:
此位先辈遇到此问题的解决方法:
他是通过Catalog重新注册备份集,使其有效,来解决的:http://www.linuxidc.com/Linux/2014-08/104999.htm
6. 恢复Redo log:
rman target /
RMAN> run {
allocate channel a1 type disk;
allocate channel a2 type disk;
sql "alter database rename file ''/dev/dbinfo/lv_redo11_256m'' to ''/oracle/oradata/dbinfo/256m_redo11.log''";
sql "alter database rename file ''/dev/dbinfo/lv_redo12_256m'' to ''/oracle/oradata/dbinfo/256m_redo12.log''";
sql "alter database rename file ''/dev/dbinfo/lv_redo21_256m'' to ''/oracle/oradata/dbinfo/256m_redo21.log''";
sql "alter database rename file ''/dev/dbinfo/lv_redo22_256m'' to ''/oracle/oradata/dbinfo/256m_redo22.log''";
sql "alter database rename file ''/dev/dbinfo/lv_redo31_256m'' to ''/oracle/oradata/dbinfo/256m_redo31.log''";
sql "alter database rename file ''/dev/dbinfo/lv_redo32_256m'' to ''/oracle/oradata/dbinfo/256m_redo32.log''";
sql "alter database rename file ''/dev/dbinfo/lv_redo41_256m'' to ''/oracle/oradata/dbinfo/256m_redo41.log''";
sql "alter database rename file ''/dev/dbinfo/lv_redo42_256m'' to ''/oracle/oradata/dbinfo/256m_redo42.log''";
sql "alter database rename file ''/dev/dbinfo/lv_redo51_256m'' to ''/oracle/oradata/dbinfo/256m_redo51.log''";
sql "alter database rename file ''/dev/dbinfo/lv_redo52_256m'' to ''/oracle/oradata/dbinfo/256m_redo52.log''";
sql "alter database rename file ''/dev/dbinfo/lv_redo61_256m'' to ''/oracle/oradata/dbinfo/256m_redo61.log''";
sql "alter database rename file ''/dev/dbinfo/lv_redo62_256m'' to ''/oracle/oradata/dbinfo/256m_redo62.log''";
switch datafile all;
release channel a1;
release channel a2;
}
7. 进行数据库恢复:
rman target /
recover database;
出现下面错误,可忽略:
RMAN-03002: failure of recover command at 06/24/2015 16:02:25
RMAN-06054: media recovery requesting unknown log: thread 1 scn 277200603
sqlplus / as sysdba
alter database open resetlogs;
执行此命令后, 后Oracle将报错退出,并在alter log中提示要求使用upgrade来启动.
8. 开始进行数据库升级.
sqlplus / as sysdba
startup upgrade
1. 成功进入Oracle后,第一步需要先创建系统辅助表空间.
create tablespace SYSAUX datafile '/home/oracle/oradata/dbinfo/sysaux01.dbf'
size 100M reuse
extent management local
segment space management auto
online;
2. 适当增加临时表空间
alter tablespace TEMP add tempfile '/home/oracle/oradata/dbinfo/temp_200M.dbf' size 200M;
3. 建议关闭归档模式,一方面加快速度,另一方面避免后面操作执行HUNG。
alter database noarchivelog;
archive log list;
4. 修改共享池 和 Java池大小.
shutdown immediate
startup nomount
create spfile from pfile;
ALTER SYSTEM SET SHARED_POOL_SIZE='150M' SCOPE=spfile;
ALTER SYSTEM SET JAVA_POOL_SIZE='150M' SCOPE=spfile;
shutdown immediate
startup upgrade
5. 升级数据字典:
SQL> spool updict.log
SQL> @$ORACLE_HOME/rdbms/admin/catupgrd.sql
SQL> spool off
SQL> shutdown immediate
6. 编译无效应用程序对象:
SQL> startup
SQL> @$ORACLE_HOME/rdbms/admin/utlrp.sql
SQL> set pagesize 100
SQL> set linesize 200
SQL> col comp_id for a15
SQL> col status for a10
SQL> col version for a20
#检查组件的版本是否都已经成功升级到10g:
SQL> select comp_id,status,version from dba_registry;
#检查是否存在无效对象(没有输出,为正常.):
SQL> select * from dba_objects where OWNER='GISTAR' AND status='INVALID';
#以SYSDBA身份登录上,执行授权脚本:
SQL> grant select on sys.v_$session to public;
SQL> @?/rdbms/admin/utlrp.sql
#最后检查:
SQL> select * from v$Option;
从Oracle9i RMAN全库备份迁移到 Oracle10g的更多相关文章
- 【原创】rman 全库备份脚本
rman 全库备份脚本 run { allocate channel d1 type disk; allocate channel d2 type disk; backup full database ...
- rman全库恢复到不同主机,不同实例名,不同目录下
一.配置目标主机的ip.hostname及与源端主机的连通性 1.配置目标主机IP 使用图形界面配置IP: administration----network---修改IP(指定静态IP) deact ...
- 通过Xtrabackup实现MySQL实例的全库备份与按需单库恢复
在实际的生产环境中,为了管理方便,我们一般是通过 Xtrabackup实现实例的全库备份,即将实例上的所有数据库备份. 但是,考虑到快速恢复 我们常常面临的需求是快速还原单个数据库.针对初学者来说,网 ...
- MySQL 採用Xtrabackup对数据库进行全库备份
1,xtrabackup简单介绍 关于数据库备份以及备份工具.參考:http://blog.itpub.net/26230597/viewspace-1460065/,这里来介绍xtrabackup已 ...
- 从MySQL全库备份中恢复某个库和某张表【转】
从MySQL全库备份中恢复某个库和某张表 一.全库备份-A [root@mha2 backup]#mysqldump -uroot -p123456 --default-character-set=u ...
- 从MySQL全库备份中恢复某个库和某张表
在Mysqldump官方工具中,如何只恢复某个库呢? 全库备份 [root@HE1 ~]# mysqldump -uroot -p --single-transaction -A --master-d ...
- MySQL用全库备份数据恢复单表数据
备份数据库时,采用了全库备份,但是因为某些原因需要回滚一个表的数据到备份数据库上,如果回滚整个库就比较费时间,因为可能这个表只有几十M,但是其它表可能有十几上百G,这时候就需要将需要恢复的表提取出来了 ...
- MySQL 采用Xtrabackup对数据库进行全库备份
1,xtrabackup简介 关于数据库备份以及备份工具,参考:http://blog.itpub.net/26230597/viewspace-1460065/,这里来介绍xtrabackup已经如 ...
- 从mysql全库备份中恢复指定库和指定表
需求:开发要求导入某天某个表的数据,而我们的数据是全库备份 例如: 从newbei_2017-08-31_402793782.tar.bz2中恢复表:bei_table 的数据 一.备份策略 备份全 ...
随机推荐
- Spring实战Day1
为什么要学习使用Spring ------为了全方面简化Java开发 如何简化开发呢? 1.基于POJO[简单老式Java对象(Plain Old Java object)]的轻量级和最小侵入性编程, ...
- 使用微软的 ilasm 和 ildasm 对. net程序进行编译和反编译
为了保证示例的完整性,请先准备好一个 c#写的 exe 程序,或者可以使用我提供的 exe 程序也可以(很简单,为了测试这里仅生成了一个带按钮的 winform,单击按钮提示弹窗) Test WinF ...
- DRBD+Heratbeat+NFS高可用文件共享存储
一.概述 .通过ha-log日志可以看出主释放资源,备接管资源. 来自为知笔记(Wiz)
- 从PRISM开始学WPF(一)WPF?
从PRISM开始学WPF(一)WPF? 我最近打算学习WPF ,在寻找MVVM框架的时候发现了PRISM,在此之前还从一些博客上了解了其他的MVVM框架,比如浅谈WPF中的MVVM框架--MVVM ...
- Opengl ES 1.x NDK实例开发之七:旋转的纹理立方体
开发框架介绍请參见:Opengl ES NDK实例开发之中的一个:搭建开发框架 本章在第六章(Opengl ES 1.x NDK实例开发之六:纹理贴图)的基础上绘制一个旋转的纹理立方体,原理和纹理贴图 ...
- STL源代码剖析——STL算法之set集合算法
前言 本节介绍set集合的相关算法,各自是并集set_union,差集set_difference,交集set_intersection 和对称差集set_symmetric_difference.这 ...
- windows下的两个等待函数
windows下的两个等待技术 第一种: Win32 Sleep()函数 这个函数要求操作系统中止线程动作.直到读过某个指定的时间之后才恢复.能在某个线程结束时(而不是某段时间结束时)被调 ...
- 命令行方式下登录SqlPlus,密码含特殊字符
全撞上了! 真难侍候!oracle 12c,想登录sql plus,结果没有图形界面,直接出来个命令行.这下好了,我这个数据库,多实例,意味着登录要指定实例:密码中含有特殊字符"@" ...
- 使用ADO.NET对SQL Server数据库进行訪问
在上一篇博客中我们给大家简介了一下VB.NET语言的一些情况,至于理论知识的学习我们能够利用VB的知识体系为基础.再将面向对象程序设计语言的知识进行融合便可进行编程实战. 假设我们须要訪问一个企业关系 ...
- keywords和favicon
1.<meta name="keywords" content="xxx"> 曾经网站风靡关键词堆积,往往在首页上设置大量的关键词,以获取最大范围搜 ...