1. Rocky Linux 9环境准备与软件源优化Rocky Linux作为RHEL的完美替代品在企业级应用中越来越受欢迎。我最近在客户现场用Rocky Linux 9搭建DockerOracle环境时发现默认软件源下载速度慢得让人抓狂。下面分享我优化后的配置方案实测安装速度能提升5-8倍。首先处理软件源问题。国内推荐使用浙江大学镜像站稳定性经过我们团队长期验证。执行以下命令替换默认源sed -e s|^mirrorlist|#mirrorlist|g \ -e s|^#baseurlhttp://dl.rockylinux.org/$contentdir|baseurlhttp://mirrors.zju.edu.cn/rocky|g \ -i.bak \ /etc/yum.repos.d/rocky-extras.repo \ /etc/yum.repos.d/rocky.repo这里有个小技巧先备份原始repo文件-i.bak参数万一需要回滚也很方便。更新缓存时建议加上-v参数查看详细过程dnf makecache -v遇到Metadata expired错误时可以强制刷新dnf clean all dnf makecache2. Docker安装与深度配置很多教程只教基础安装但生产环境还需要这些关键配置。先安装必要工具包yum install -y yum-utils device-mapper-persistent-data lvm2添加阿里云Docker CE源时建议同时启用edge和test仓库yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo yum-config-manager --enable docker-ce-edge yum-config-manager --enable docker-ce-test安装时指定版本更稳妥避免自动升级导致兼容问题yum install -y docker-ce-20.10.18 docker-ce-cli-20.10.18配置Docker守护进程时除了镜像加速还要设置这些关键参数{ registry-mirrors: [https://docker.1panel.live], log-driver: json-file, log-opts: { max-size: 100m, max-file: 3 }, storage-driver: overlay2 }重启服务后建议检查cgroup驱动是否与k8s兼容docker info | grep Cgroup3. Oracle 11g容器化部署实战Oracle官方没有提供Docker镜像我们使用第三方优化版。下载后导入时要注意docker load -i 11g.tar启动容器时这些参数很关键docker run -d \ --name oracle_11g \ -p 1521:1521 \ -p 8081:8080 \ -e ORACLE_SIDhelowin \ -e ORACLE_PWDhelowin \ -v /data/oracle:/home/oracle/app/oracle/oradata \ --restartalways \ --shm-size2g \ registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g特别提醒挂载数据卷(-v)避免数据丢失共享内存(--shm-size)至少1GB生产环境建议限制CPU和内存进入容器后的初始化操作# 切换root用户(密码helowin) su root # 创建sqlplus软链接 ln -s $ORACLE_HOME/bin/sqlplus /usr/bin # 修改关键配置 sqlplus / as sysdba EOF alter user system identified by system; alter user sys identified by system; ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED; alter system set processes1000 scopespfile; shutdown immediate; startup; EOF4. 数据迁移高级技巧实际迁移中会遇到各种坑分享几个实用技巧表空间预处理CREATE TABLESPACE USER_DATA DATAFILE /home/oracle/app/oracle/oradata/helowin/user_data.dbf SIZE 2G AUTOEXTEND ON NEXT 512M MAXSIZE UNLIMITED EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO;用户权限最佳实践CREATE USER demo IDENTIFIED BY Demo1234 DEFAULT TABLESPACE USER_DATA TEMPORARY TABLESPACE TEMP QUOTA UNLIMITED ON USER_DATA; GRANT CREATE SESSION, CREATE TABLE, CREATE SEQUENCE, CREATE VIEW, CREATE PROCEDURE TO demo;导入DMP文件时的完整流程在宿主机准备目录mkdir -p /mnt/oracle_import chmod 777 /mnt/oracle_import容器内创建目录映射CREATE OR REPLACE DIRECTORY imp_dir AS /mnt/oracle_import; GRANT READ, WRITE ON DIRECTORY imp_dir TO demo;执行导入注意字符集转换impdp demo/Demo1234helowin \ directoryimp_dir \ dumpfileexport.dmp \ logfileimport.log \ remap_schemaSOURCE_USER:demo \ remap_tablespaceSOURCE_TBS:USER_DATA \ nls_langAMERICAN_AMERICA.AL32UTF8导出时的性能优化参数expdp demo/Demo1234helowin \ directoryimp_dir \ dumpfileexport_%U.dmp \ logfileexport.log \ parallel4 \ compressionALL \ filesize2G遇到ORA-39002错误时检查目录权限和磁盘空间。我遇到过最棘手的问题是字符集不一致建议先用sqlplus查询源库字符集SELECT value FROM nls_database_parameters WHERE parameterNLS_CHARACTERSET;迁移完成后务必验证数据完整性-- 检查表记录数 SELECT table_name, num_rows FROM user_tables; -- 随机抽样验证 SELECT COUNT(*) FROM major_table SAMPLE(10);最后提醒Oracle容器重启后可能需要手动启动监听lsnrctl start