一、环境准备
1.1 服务器信息
| 项目 | 配置 |
|---|---|
| 操作系统 | Ubuntu/Debian |
| 服务器 IP | 118.31.124.108 |
| 数据库版本 | Oracle 11g XE |
| 容器名称 | oracle11g |
1.2 创建数据持久化目录
sudomkdir-p/docker/oracle19c/oradatasudochmod777/docker/oracle19c/oradata二、安装 Docker
2.1 更新软件包并安装 Docker
sudoaptupdatesudoaptinstalldocker.io-y2.2 验证 Docker 版本
docker--version2.3 将当前用户加入 docker 组(免 sudo 执行 docker 命令)
sudousermod-aGdocker$USER执行后需要退出 MobaXterm 重新登录,或执行:
newgrpdocker2.4 配置 Docker 镜像加速器(可选,提升下载速度)
sudomkdir-p/etc/dockersudotee/etc/docker/daemon.json<<-'EOF' { "registry-mirrors": [ "https://docker.mirrors.ustc.edu.cn", "https://hub-mirror.c.163.com" ] } EOFsudosystemctl daemon-reloadsudosystemctl restartdocker三、部署 Oracle 11g XE
3.1 拉取并启动容器
dockerrun-d\--nameoracle11g\--restart=unless-stopped\-p1521:1521\-p8080:8080\-eORACLE_PASSWORD=oracle\-eORACLE_SID=XE\-eORACLE_CHARACTERSET=AL32UTF8\--shm-size=512m\-v/docker/oracle19c/oradata:/u01/app/oracle/oradata\gvenzl/oracle-xe:11.2.0.23.2 查看容器运行状态
dockerps|greporacle11g3.3 查看启动日志(等待数据库初始化,约 2-3 分钟)
dockerlogs-foracle11g看到Database ready to use. Enjoy!或Completed: ALTER DATABASE OPEN表示启动完成。按Ctrl+C退出日志查看。
3.4 验证数据库连接
dockerexec-itoracle11g sqlplus system/oracle@XE看到SQL>提示符表示成功。输入exit退出。
四、开放防火墙端口
4.1 开放 1521 端口
sudoufw allow1521/tcp4.2 查看防火墙状态
sudoufw status4.3 验证端口监听
netstat-tlnp|grep15214.4 测试端口连通性
telnet 服务器公网 IP1521⚠️重要:云服务器还需在控制台开放安全组
- 登录阿里云/腾讯云控制台
- 进入安全组 → 入方向
- 添加规则:端口
1521/1521,授权对象0.0.0.0/0
五、远程连接信息
| 项目 | 配置 |
|---|---|
| 主机 | 服务器公网 IP(如 118.31.124.108) |
| 端口 | 1521 |
| SID | XE(选择 SID,不是服务名) |
| 用户名 | system |
| 密码 | oracle |
六、数据库备份
6.1 创建备份目录
dockerexecoracle11gbash-c"mkdir -p /u01/app/oracle/dump && chmod 777 /u01/app/oracle/dump"6.2 执行全量备份(使用 exp)
dockerexecoracle11g exp system/oracle@XE\FULL=Y\FILE=/u01/app/oracle/dump/full_backup.dmp\LOG=/u01/app/oracle/dump/full_backup.log6.3 查看备份文件
dockerexecoracle11gls-la/u01/app/oracle/dump/6.4 将备份文件拷贝到宿主机
dockercporacle11g:/u01/app/oracle/dump/full_backup.dmp ./dockercporacle11g:/u01/app/oracle/dump/full_backup.log ./6.5 验证备份文件
ls-lafull_backup.*七、数据库恢复
7.1 确保备份文件在容器内
dockercp./full_backup.dmp oracle11g:/u01/app/oracle/dump/7.2 执行全量恢复
dockerexecoracle11g imp system/oracle@XE\FULL=Y\IGNORE=Y\FILE=/u01/app/oracle/dump/full_backup.dmp\LOG=/u01/app/oracle/dump/restore.log7.3 查看恢复日志
dockerexecoracle11gcat/u01/app/oracle/dump/restore.log7.4 验证恢复结果
echo"SELECT name, open_mode FROM v\$database;"|dockerexec-ioracle11g sqlplus system/oracle@XE预期输出:XE READ WRITE