beebe_3 发表于 2018-9-24 09:03:01

【Win7 Oracle 10G rman迁移恢复到Linux 32bit oracle 10G实战】

  原系统: win7 64位系统 oracle 10.2.0.3.0 32位数据库,里面真实数据:

目标系统:redhat 5.4 oracle 10.2.0.3.0 32位数据库

【最好做迁移的是同数据库版本,可以避免不少问题,但可以尝试从低版本恢复到高版本,而高版本恢复到低版本就不推荐了,至少试过恢复,但不少问题】

备份脚本:
orclDBID=1297031839【要在源数据库记录下来】

run{
allocate channel c1 type disk;
sql 'alter system archive log current';
backup database format 'D:\rman\rman\full_db_%U_%T';
backup archivelog all delete all input format 'D:\rman\rman\ARC_%U_%T';
backup current controlfile format 'D:\rman\rman\ctr_%U_%T';
release channel c1;
}
【注意:控制文件一定要最后备份,由于没做归档目录数据库,rman备份信息都放在控制文件里面,要保证备份过程的信息内容都进入到控制文件,保证数据文件和控制文件是一致备份】

pfile备份是由win7数据库直接利用一下语句备份出来的:
create pfile='D:/initorcl.ora' from spfile;【pfile备份后,拷贝到目标数据库服务器】

  【一般rman全备只备份spfile 那pfile可以通过restore spfile to pfile ‘xxx’ from ‘spfile备份集’来恢复pfile,
  然后对pfile进行相应修改(不同平台迁移必须修改,同平台迁移 路径不同的时候,也有时候要修改)】

需要对pfile进行修改【由于Windows跟Linux磁盘路径不一样,要手工修改到目标数据库的相关路径,并建立相关数据库目录】,不然会提示找不到adump udump等目录路径文件的
====================================================
orcl.__db_cache_size=398458880
orcl.__java_pool_size=16777216
orcl.__large_pool_size=4194304
orcl.__shared_pool_size=163577856
orcl.__streams_pool_size=0
*.audit_file_dest='/opt/app/oracle/product/10.2/admin/orcl/adump'
*.background_dump_dest='/opt/app/oracle/product/10.2/admin/orcl/bdump'
*.compatible='10.2.0.3.0'
*.control_files='/opt/app/oracle/oradata/control01.ctl','/opt/app/oracle/oradata/control02.ctl','/opt/app/oracle/oradata/control03.ctl'
*.core_dump_dest='/opt/app/oracle/product/10.2/admin/orcl/cdump'
*.db_block_size=8192
*.db_domain=''
*.db_file_multiblock_read_count=16
*.db_name='orcl'
*.db_recovery_file_dest='/opt/app/oracle/product/10.2/flash_recovery_area'
*.db_recovery_file_dest_size=2147483648
*.dispatchers='(PROTOCOL=TCP) (SERVICE=orclXDB)'
*.job_queue_processes=10
*.open_cursors=300
*.pga_aggregate_target=196083712
*.processes=150
*.remote_login_passwordfile='EXCLUSIVE'
*.sga_target=589299712
*.undo_management='AUTO'
*.undo_tablespace='UNDOTBS1'
*.user_dump_dest='/opt/app/oracle/product/10.2/admin/orcl/udump'

对于修改的路径要进行确认,是否linux下已经有该路径了
====================================================
然后传送进去linux系统,正式恢复数据库:

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
1,用传进来的pfile启动nomount数据库:set DBID=1296363687




现在还看不到备份集的:


2,恢复控制文件



3,把数据库mount起来



4,设置【由于Windows跟Linux路径不同,控制文件虽然恢复出来,但里面信息还是Windows下的目录路径,如下动作是告诉rman从哪里读取备份集】







【如上图 catalog with 命令后,就可以识别存放备份集的物理位置了】

5,执行数据库恢复脚本如下:【目标数据库是Linux 目录路径不同,要对数据文件进行set newname操作】
run{
allocate channel c1 type disk;
set newname for datafile 1 to '/opt/app/oracle/product/10.2/oradata/orcl/SYSTEM01.DBF';
set newname for datafile 2 to '/opt/app/oracle/product/10.2/oradata/orcl/UNDOTBS01.DBF';
set newname for datafile 3 to '/opt/app/oracle/product/10.2/oradata/orcl/SYSAUX01.DBF.DBF';
set newname for datafile 4 to '/opt/app/oracle/product/10.2/oradata/orcl/USERS01.DBF.DBF';
set newname for datafile 5 to '/opt/app/oracle/product/10.2/oradata/orcl/RMAN.DBF';
restore database;
switch datafile all;
release channel c1;
}
【如下为操作步骤and过程输出信息】







6.recover database;





报错了,但是没关系,并非严重错误,只是提醒你一些不完整recover信息,有时候会提示恢复到一个未知的scn号。如果要避免这个scn未知错误,可以在alter database mount之后,通过set until scn或者set until time命令设置恢复到的scn号或时间

7,启动数据库【由于有新的log文件和临时表空间,要resetlogs】



8验证是否恢复成功



到这里证明已经正确恢复了数据库,以下是善后工作:

在sqlplus / as sysdba下执行:




要重建下spfile,因为恢复时候是通过pfile恢复的,建好spfile后,重启就不需要指定pfile,直接默认用spfile启动数据库了。


可以再做个pfile的备份。

  恢复好数据库后,最好对数据库做个全备喔。

页: [1]
查看完整版本: 【Win7 Oracle 10G rman迁移恢复到Linux 32bit oracle 10G实战】