1.创建Oracle镜像和容器
1.下载镜像
拉取oracle镜像:
docker pull registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g
文件较大 大概7G 请耐心等待 下载成功之后 执行 docker images -a 查看镜像是否拉取成功
2. 创建并启动oracle11g容器
先后运行下面2个命令
docker run -d -p 1521:1521 --name oracle11g registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g
docker start oracle11g
结束后 执行docker ps -a 查看容器是否启动
3. 容器配置
(1) 进入容器 docker exec -it oracle11g bash
(2) 切换到root用户s
su root 密码为:helowin (这是因为拉取下来的oracle镜像 默认带了一个叫helowin的实例)
(3) 编辑profile文件配置ORACLE环境变量
vi /etc/profile
在文件最后追加以下三行配置
export ORACLE_HOME=/home/oracle/app/oracle/product/11.2.0/dbhome_2
export ORACLE_SID=helowin
export PATH=$ORACLE_HOME/bin:$PATH
按ESC键 然后输入:wq! 然后按ENTER键保存并退出vi编辑器
让配置生效:运行 source /etc/profile
(4) 创建软连接ln -s $ORACLE_HOME/bin/sqlplus /usr/bin
(5) 切换到oracle用户su - oracle
(6) 登录sqlplus并修改sys、system用户密码:sqlplus /nolog --登录
startup; --启动数据库,注意第一次进入才执行
conn /as sysdba --连接数据库
alter user system identified by 123456;–修改system用户账号密码;
alter user sys identified by 123456;–修改sys用户账号密码;
create user test identified by 123456; – 创建内部管理员账号密码;
grant connect,resource,dba to test; --将dba权限授权给内部管理员账号和密码;
alter profile default limit password_life_time unlimited; --修改密码规则策略为密码永不过期;
alter system set processes=1000 scope=spfile; --修改数据库最大连接数据;grant sysdba to system;
修改以上信息后,需要重新启动数据库
conn /as sysdba
shutdown immediate; --关闭数据库
startup; --启动数据库
exit:退出软链接
4. navicat无法登陆
alter system set local_listener=‘(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))’;
然后重启,如果执行不成也退出!!!!!!!!
然后退出SQL页面在执行
lsnrctl start #开启监听
dbstart # 启动用户实例
2.docker-compose部署
1.交给docker-compose管理: 在根目录下新建oracle11目录 并在里面新建datahe和etc目录 全部赋予chmod 777 权限
回到根目录 执行 docker cp oracle11g:/etc/profile ./oracle11g/data/etc/ 将容器内的profile文件复制到宿主机用于挂载。profile位置:/opt/oracle11g/data/etc/profile
2.将下面配置追加到docker-compose.yml
version: '3.7'
services:
oracle_11g:
image: registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g
container_name: oracle_11g
environment:
- TZ=Asia/Shanghai
volumes:
- $PWD/etc/localtime:/etc/localtime:ro
- $PWD/data/oracle:/data/oracle
- $PWD/data/etc/profile:/etc/profile
ports:
- 1522:1521
privileged: true
user: root
restart: always
command: /bin/bash -c "ln -s $ORACLE_HOME/bin/sqlplus /usr/bin"
deploy:
resources:
limits:
memory: 2G
reservations:
memory: 500M
networks:
application:
aliases:
- net-oracle_11g
application:
name: net
driver: bridge
3.注意: 从docker run直接启动的容器 不能直接交给docker-compose继续关闭或启动 会冲突
如果已经用docker启动了容器 需要先用 docker rm 删除 然后再用 docker-compose up -d 命令统一启动,docker-compose会首先检查容器是否存在 存在就直接启动 不存在先创建容器再启动
4.执行
docker-compose up -d
sqlplus /nolog
如果没有 进行一下操作
vi /etc/profile
export ORACLE_HOME=/home/oracle/app/oracle/product/11.2.0/dbhome_2
export ORACLE_SID=helowin
export PATH=$ORACLE_HOME/bin:$PATH
然后在执行 source /etc/profile 使配置生效
最后方便使用创建软连接 ln -s $ORACLE_HOME/bin/sqlplus /usr/bin
参考:
docker-compose部署oracle11-CSDN博客