11g windows迁移到linux环境
windows操作系统由于本身的稳定性的问题,以及操作系统在联网的情况下自动更新补丁可能会造成系统异常,在这种情况下,选用一款比较靠谱的linux操作系统就显得非常的重要了,同时搭载oracle 11g数据库,对于业务系统来说因该是相当稳定的。某些特殊的情况下,linux操作系统要定期打补丁,这个下一节在讨论,本次讨论11g windows环境迁移到linux环境。
迁移思路:
(1)采用备份还原的方式;
(2)为减少迁移的停机时间,采用level0和level1级别备份,增量附加方式。
一、环境介绍
1、操作系统
(1)源库:windows 2019
目标库:Centos 7.8 x64
(2)数据库 oracle 11g 11.2.0.4
2、地址信息
|
序号 |
名称 |
地址 |
备注 |
|
1 |
11g源库(windows) |
192.168.10.200 |
N/A |
|
2 |
11g目标库(Centos 7.8) |
192.168.10.201 |
N/A |
二、备份源库
备份包括参数文件、控制文件、数据文件等。
(1)备份脚本(level 0 + level 1)windows
Level 0级别备份
backup_level0.bat
@echo off
set timestamp=%date:~0,4%%date:~5,2%%date:~8,2%
mkdir d:\backup\%timestamp%_level0
rman target / nocatalog CMDFILE 'd:\scripts\full_backup0.sql' log 'd:\scripts\log\rman_backup_level0_%timestamp%.log' append
full_backup0.sql
run{
CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default
CONFIGURE CONTROLFILE AUTOBACKUP ON;
allocate channel ch00 device type disk;
allocate channel ch01 device type disk;
allocate channel ch02 device type disk;
allocate channel ch03 device type disk;
crosscheck backup;
crosscheck archivelog all;
delete noprompt expired archivelog all;
delete noprompt expired backup;
report obsolete;
delete noprompt obsolete;
backup INCREMENTAL LEVEL 0 as compressed backupset database format 'D:\backup\%T_level0\full_level0_%T_%u_%p.%d' tag='FULLDB_level0-%T'
plus archivelog format 'D:\backup\%T_level0\arch_%T_%u_%p.%d' delete all input;
sql 'alter system archive log current';
backup current controlfile format 'D:\backup\%T_level0\control_%T_%u_%p.%d.bak';
backup spfile format 'D:\backup\%T_level0\spfile_%T_%u_%p.%d.bak';
crosscheck backup;
crosscheck archivelog all;
delete noprompt expired archivelog all;
delete noprompt expired backup;
report obsolete;
delete noprompt obsolete;
release channel ch00;
release channel ch01;
release channel ch02;
release channel ch03;
}
Level 1级别备份
run{
CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default
CONFIGURE CONTROLFILE AUTOBACKUP ON;
allocate channel ch00 device type disk;
allocate channel ch01 device type disk;
allocate channel ch02 device type disk;
allocate channel ch03 device type disk;
crosscheck backup;
crosscheck archivelog all;
delete noprompt expired archivelog all;
delete noprompt expired backup;
report obsolete;
delete noprompt obsolete;
backup INCREMENTAL LEVEL 1 as compressed backupset database format 'D:\backup\%T_level1\full_level1_%T_%u_%p.%d' tag='FULLDB_level1-%T'
plus archivelog format 'D:\backup\%T_level1\arch_%T_%u_%p.%d' delete all input;
sql 'alter system archive log current';
backup current controlfile format 'D:\backup\%T_level1\control_%T_%u_%p.%d.bak';
backup spfile format 'D:\backup\%T_level1\spfile_%T_%u_%p.%d.bak';
crosscheck backup;
crosscheck archivelog all;
delete noprompt expired archivelog all;
delete noprompt expired backup;
report obsolete;
delete noprompt obsolete;
release channel ch00;
release channel ch01;
release channel ch02;
release channel ch03;
}
备注:改下bat脚本即可。
(2)执行完整备份并拷贝到linux备机
三、恢复linux备机
1、安装备机数据库软件(安装过程略)
2、恢复参数文件
由于windows参数文件和linux参数文件目录不一致,使用备份的参数文件恢复参数文件,需要改下目录即可;
[oracle@db1 ~]$ cat pfile.ora
orcl.__db_cache_size=2063597568
orcl.__java_pool_size=16777216
orcl.__large_pool_size=33554432
orcl.__oracle_base='/u01/app/oracle' #ORACLE_BASE set from environment
orcl.__pga_aggregate_target=872415232
orcl.__sga_target=2583691264
orcl.__shared_io_pool_size=0
orcl.__shared_pool_size=436207616
orcl.__streams_pool_size=0
*.audit_file_dest=/u01/app/oracle/admin/orcl/adump
*.audit_trail='db'
*.compatible='11.2.0.4.0'
*.control_files='/oradata/CONTROL01.CTL','/oradata/CONTROL02.CTL'#Restore Controlfile
*.db_block_size=8192
*.db_domain=''
*.db_name='orcl'
*.db_create_file_dest='/oradata'
*.db_recovery_file_dest='/flash_recovery_area'
*.db_recovery_file_dest_size=43851448320
*.db_unique_name='orcldg'
*.diagnostic_dest='/u01/app/oracle/'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=orclXDB)'
*.log_archive_format='ARC%S_%R.%T'
*.nls_language='SIMPLIFIED CHINESE'
*.nls_territory='CHINA'
*.open_cursors=300
*.pga_aggregate_target=858783744
*.processes=1500
*.remote_login_passwordfile='EXCLUSIVE'
*.sessions=1655
*.sga_target=2576351232
*.undo_tablespace='UNDOTBS1'
3、恢复控制文件
恢复控制文件:RMAN> restore controlfile from '/home/oracle/O1_MF_S_1237894078_O4P85YY4_.BKP';
SQL> alter database mount;
4、恢复数据文件
RMAN> catalog start with '/home/oracle/20260706_level0';
RMAN>report schema;(显示备份文件目录情况)
备注:使用默认的恢复restore database,文件恢复到/u01/app/oracle/product/11.2.0/dbhome_1/dbs/下了,建议根据report schema目录做出目录变更。
run {
set newname for datafile 4 to '/oradata/orcl/USERS01.DBF';
set newname for datafile 3 to '/oradata/orcl/UNDOTBS01.DBF';
set newname for datafile 2 to '/oradata/orcl/SYSAUX01.DBF';
set newname for datafile 1 to '/oradata/orcl/SYSTEM01.DBF';
set newname for datafile 5 to '/oradata/orcl/DATA01.DBF';
restore database;
switch datafile all;
}
RMAN>recover database;
5、启动数据库resetlogs
SQL> alter database open resetlogs;
SQL> select name,open_mode from v$database;
NAME OPEN_MODE
ORCL READ WRITE
6、修改redo日志

创建日志组:
SQL> alter database add logfile group 10 size 50M;
SQL> alter database add logfile group 11 size 50M;
SQL> alter database add logfile group 12 size 50M;
切换日志组:
SQL> alter system switch logfile;
删除现有空闲日志组:
SQL> alter database drop logfile group 1;
SQL> alter database drop logfile group 2;
SQL> alter database drop logfile group 3;
SQL> alter database drop logfile group 4;
SQL> alter database drop logfile group 5;
SQL> alter database drop logfile group 6;
7、创建temp1表空间,删除现有temp表空间;
SQL> create temporary tablespace temp1 tempfile '/oradata/orcl/temp1.dbf' size 100M autoextend on ;
SQL> alter database default temporary tablespace temp1;
SQL> drop tablespace temp including contents;
8、检查备机数据库运行状况
(1)日志无报错

(2)查询数据

四、增量恢复数据(进行增量恢复,无需进行resetlogs,最后一次性open resetlogs)
(1)录入测试数据

(2)备份增量数据库



(3)将增量数据level 1文件放到目标库level0一个文件夹
(4)将数据库启动到nomount状态恢复level1级别控制文件
(5)恢复数据文件
run {
set newname for datafile 4 to '/oradata/orcl/USERS01.DBF';
set newname for datafile 3 to '/oradata/orcl/UNDOTBS01.DBF';
set newname for datafile 2 to '/oradata/orcl/SYSAUX01.DBF';
set newname for datafile 1 to '/oradata/orcl/SYSTEM01.DBF';
set newname for datafile 5 to '/oradata/orcl/DATA01.DBF';
restore database;
switch datafile all;
}
(6)recover database
(7)修改redo文件位置
(8)重建temp文件
(9)检查增量数据是否一致

至此:数据库增量恢复完成。(增量恢复减少了文件拷贝时间,文件存在,部分文件不用更新)
总结:增量恢复主要以下几点;一是在恢复侧level1文件和level0文件可以可以放在一起,二是第一次level0恢复不要进行resetlogs 三是最终恢复完成后,需要修改redo路径和重建temp文件。至于性能诊断,后面一一分析。
2026-07-06
于合肥
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐

所有评论(0)