# docker-oracledg **Repository Path**: darkathena/docker-oracledg ## Basic Information - **Project Name**: docker-oracledg - **Description**: 使用docker-compose拉起ORACLE 19.3版本基于ADG的一主一备环境 - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-12-18 - **Last Updated**: 2025-12-18 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Oracle Active Data Guard Docker 环境 基于 Docker Compose 的 Oracle 19c 一主一备 ADG(Active Data Guard)环境,支持**近实时同步**。 ## 特性 - **分层镜像构建**:oracle-base(系统依赖) → oracle-installed(Oracle软件) - **LGWR ASYNC 实时传输**:主库变更秒级同步到备库 - **Active Data Guard**:备库 READ ONLY WITH APPLY 模式,可同时查询和应用日志 - **自动化部署**:一键启动,自动完成主库创建、备库克隆、DG配置 ## 系统要求 - Docker 18.06+, Docker Compose 1.22+ (本项目开发环境: Docker 27.0.3 ,Docker Compose v2.28.1) - 内存 ≥ 16GB(推荐 48GB+) - 磁盘 ≥ 100GB - Oracle 安装包:`LINUX.X64_193000_db_home.zip` ## 快速开始 ### 1. 准备安装包 将 Oracle 19c 安装包放入 `oracle-install/` 目录: ```bash ls oracle-install/ # LINUX.X64_193000_db_home.zip ``` ### 2. 构建镜像 ```bash chmod +x scripts/*.sh build.sh docker-compose build ``` ### 3. 启动环境 ```bash docker-compose up -d oracle-primary oracle-standby ``` 首次启动需要约 15-20 分钟完成数据库创建和备库克隆。 ### 4. 查看日志 ```bash docker logs -f oracle-primary # 主库日志 docker logs -f oracle-standby # 备库日志 ``` ## 连接信息 | 角色 | 主机 | 端口 | SID | 密码 | |------|------|------|-----|------| | 主库 | localhost | 1521 | ORCL | Oradoc_db1 | | 备库 | localhost | 1522 | ORCL | Oradoc_db1 | ### sqlplus 连接示例 ```bash # 本机连接主库 sqlplus sys/Oradoc_db1@localhost:1521/ORCL as sysdba # 本机连接备库(只读) sqlplus sys/Oradoc_db1@localhost:1522/ORCL as sysdba # 远程连接(将 替换为实际 IP 地址) sqlplus sys/Oradoc_db1@:1521/ORCL as sysdba sqlplus sys/Oradoc_db1@:1522/ORCL as sysdba # 使用普通用户连接(需先创建用户) sqlplus username/password@:1521/ORCL ``` ### Easy Connect 格式 ``` sqlplus user/password@host:port/service_name ``` 示例: ```bash # 完整格式 sqlplus sys/Oradoc_db1@//192.168.1.100:1521/ORCL as sysdba # 简化格式 sqlplus sys/Oradoc_db1@192.168.1.100:1521/ORCL as sysdba ``` ## 状态检查 ```bash # 使用脚本 ./scripts/check_status.sh # 或手动检查主库状态 docker exec -u oracle oracle-primary bash -c 'sqlplus -s / as sysdba < 注意:主备切换是高风险操作,请先确认同步正常。 ## 故障排除 ### 备库同步延迟 ```bash # 检查 DEST_2 状态 docker exec -u oracle oracle-primary bash -c 'sqlplus -s / as sysdba <&1 | tail -100 docker logs oracle-standby 2>&1 | tail -100 ``` ### 重新部署 ```bash docker-compose down -v docker-compose up -d oracle-primary oracle-standby ``` ### 关于内网构建 需要先在外网构建 oracle-adg-base 镜像,然后导出,再放到内网继续构建 1. 外网 ```bash docker-compose build oracle-base docker save oracle-adg-base | bzip2 > oracle-adg-base.tar.bz2 ``` 2. 内网 ```bash docker load -i oracle-adg-base.tar.bz2 docker-compose build oracle-installed docker-compose up -d oracle-primary oracle-standby # 监控日志 docker logs -f oracle-primary # 主库日志 docker logs -f oracle-standby # 备库日志 ``` > **注意:该方案仅能用于简单测试,禁止用于生产环境!** > **本项目不提供ORACLE安装包,请自行从ORACLE官方网站获取!**