Linux 上 Oracle 数据库迁移实操指南
一、迁移方法选型
二、Data Pump 实操步骤(推荐优先)
mkdir -p /home/expdp
chown oracle:dba /home/expdp
sqlplus / as sysdba
SQL> create or replace directory expdir as '/home/expdp';
SQL> grant read,write on directory expdir to system;
expdp system/oracle@orcl \
directory=expdir \
dumpfile=exp_20251218.dmp \
logfile=exp_20251218.log \
schemas=SCOTT \
parallel=4 \
compression=all
scp -P 22 /home/expdp/exp_20251218.dmp oracle@target:/home/expdp/
impdp system/oracle@orcl \
directory=expdir \
dumpfile=exp_20251218.dmp \
logfile=imp_20251218.log \
schemas=SCOTT \
remap_schema=SCOTT:SCOTT_NEW \
remap_tablespace=USERS:USERS_NEW \
table_exists_action=REPLACE \
parallel=4
select username,default_tablespace from user_users; 确认默认表空间。三、RMAN 物理迁移步骤(同平台优先)
rman target /
RMAN> run {
allocate channel c1 type disk;
backup database plus archivelog delete input;
backup current controlfile format '/backup/ctl_%U';
backup spfile format '/backup/spfile_%U';
release channel c1;
}
sqlplus / as sysdba
SQL> alter system set db_file_name_convert='/u01/oradata/src','/u01/oradata/tgt' scope=spfile;
SQL> alter system set log_file_name_convert='/u01/oradata/src','/u01/oradata/tgt' scope=spfile;
SQL> shutdown immediate;
SQL> startup nomount;
rman target /
RMAN> startup nomount;
RMAN> restore spfile to pfile '/tmp/init.ora' from '/backup/spfile_*.bkp';
RMAN> restore controlfile from '/backup/ctl_*.bkp';
RMAN> alter database mount;
RMAN> restore database;
RMAN> recover database;
RMAN> alter database open resetlogs;
四、跨平台与大数据量方案要点
跨平台检查与 RMAN Convert Database(同字节序场景)
sqlplus / as sysdba
SQL> select platform_id, platform_name, endian_format
from v$transportable_platform
where platform_name in ('Linux x86 64-bit','AIX-Based Systems (64-bit)');
SQL> startup mount
SQL> alter database open read only;
SQL> set serveroutput on
SQL> declare b boolean; begin b:=dbms_tdb.check_db('Linux x86 64-bit',dbms_tdb.skip_none); end; /
SQL> declare e boolean; begin e:=dbms_tdb.check_external; end; /
rman target /
RMAN> convert database
new database 'NEWDB'
transport script '/tmp/transport.sql'
to platform 'Linux x86 64-bit'
db_file_name_convert '/u01/oradata/src','/tmp/xtts';
XTTS 跨平台传输表空间(适合 TB 级,支持增量)
五、迁移前后关键检查与最佳实践