1. 迁移前准备
sqlplus -v查看源库版本);检查字符集一致性(通过SELECT parameter, value FROM nls_database_parameters WHERE parameter IN ('NLS_CHARACTERSET', 'NLS_NCHAR_CHARACTERSET')查询源库字符集,目标库需与之匹配)。sudo apt-get update && sudo apt-get install gcc make binutils libmotif3 lesstif2 libaio1 libdb3 awk libc6-dev安装Oracle安装所需的依赖。groupadd oinstall; groupadd dba; useradd -g oinstall -G dba -m oracle创建oinstall(安装组)、dba(数据库管理员组)和oracle用户。mkdir -p /u01/app/oracle),并设置权限chown -R oracle:oinstall /u01/app/oracle; chmod -R 755 /u01/app/oracle。/etc/sysctl.conf,添加或修改以下参数(满足Oracle内存与进程需求):kernel.shmall = 2097152
kernel.shmmax = 536870912
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
fs.file-max = 65536
net.ipv4.ip_local_port_range = 1024 65000
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
fs.aio-max-nr = 1048576
执行sysctl -p使参数生效。/etc/security/limits.conf,添加以下内容(限制oracle用户的进程、文件句柄等资源):oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft memlock 33554432
oracle hard memlock 33554432
编辑/etc/pam.d/login,确保包含session required /lib64/security/pam_limits.so(加载资源限制)。/home/oracle/.bashrc,添加以下变量(指定Oracle安装路径、实例名等):export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0.3/db_1 # 根据实际版本调整
export ORACLE_SID=orcl # 实例名
export PATH=$ORACLE_HOME/bin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib:/usr/local/lib
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK # 字符集匹配源库
export NLS_DATE_FORMAT='YYYY-MM-DD HH24:MI:SS'
执行source /home/oracle/.bashrc使变量生效。2. 安装Oracle数据库软件(目标Debian系统)
oracleshellinstall)或手动安装Oracle Database软件(需从Oracle官网下载对应Debian版本的安装包)。手动安装时,需按照向导完成软件安装,并创建数据库实例(若未提前创建)。3. 数据迁移(核心步骤)
expdp/impdp,适用于同版本或兼容版本迁移);若需跨平台且字节序不同,可使用RMAN CONVERT DATABASE(需源与目标字节序一致);实时迁移可选择Oracle GoldenGate。CREATE DIRECTORY dump_dir AS '/path/to/dump_dir';
GRANT READ, WRITE ON DIRECTORY dump_dir TO your_user; -- your_user为迁移用户
expdp命令(需替换为实际用户名、密码、数据库连接串):expdp your_user/your_password@source_db dumpfile=export.dmp directory=dump_dir logfile=export.log
export.dmp文件从源系统复制到目标Debian系统的相同目录(如/path/to/dump_dir)。impdp命令(需替换为目标数据库连接串):impdp your_user/your_password@target_db dumpfile=export.dmp directory=dump_dir logfile=import.log
sudo apt-get install oracle-goldengate)。extract进程,捕获变更数据)、目标端(replicat进程,应用变更数据)的参数文件(如extparam.prm、repparam.prm)。extract进程(捕获数据),在目标端启动replicat进程(应用数据),实现实时同步。4. 迁移后验证
SELECT COUNT(*) FROM table_name)、关键数据值(如订单金额、用户信息),确保数据一致。SELECT object_name, object_type FROM user_objects查询目标库对象数量,与源库对比)。CREATE INDEX idx_name ON table_name(column_name))、调整参数(如SGA_TARGET、PGA_AGGREGATE_TARGET),优化数据库性能。5. 应用切换
tnsnames.ora),指向目标Debian系统的Oracle数据库(如jdbc:oracle:thin:@target_host:1521:orcl)。sqlplus / as sysdba执行SHUTDOWN IMMEDIATE)。