1,采用 docker-compose 安装

1,创建相关文件

mkdir /usr/local/docker
cd /usr/local/docker
mkdir oracle
cd oracle
touch docker-compose.yml 

2,docker-compose.yml 配置文件的内容如下

version: '3.1'
services:
  master:
    image: akaiot/oracle_11g
    container_name: oracle
    privileged: true
    ports:
      - 1521:1521

3,启动容器,并进入容器

docker-compose up -d
docker exec -it oracle bash

4,配置环境,并创建一个用户,实现外部连接

cd /home/oracle                                                                   # 进入到 oracle 用户目录
source .bash_profile                                                              # 加载 oracle 环境变量
$PATH                                                                             # 查看 oracle 环境变量是否生效
sqlplus / as sysdba                                                               # 连接 oracle 数据库
alter user system identified by oracle;                                           # 修改 DBA 账号的密码
alter user sys identified by oracle;                                              # 修改 DBA 账号的密码
alter profile default limit password_life_time unlimited;                         # 设置密码为永不过期
create user mitchell identified by oracle;                                        # 创建一个 mitchell 用户,密码 oracle
select USERNAME, ACCOUNT_STATUS  from dba_users t where t.username = 'MITCHELL';  # 查询用户是否创建成功
grant connect, resource to mitchell;                                              # 给用户授予连接和数据权限

5,相关配置(可省略)

grant select on V_$session to mitchell;
grant select on V_$sesstat to mitchell;
grant select on V_$statname to mitchell;
show parameter deferred_segment_creation;          -- 查看是否启用 true 为启动
alter system set deferred_segment_creation=false;  -- 修改为不启用
show parameter deferred_segment_creation;          -- 查看是否修改成功 false 未启用

6,使用 工具 连接

  • ip:1521/helowin
  • 管理账号:system/oracle
  • 普通账号:mitchell/oracle

2,数据持久化

1,可以发现,helowin 的实例安装在:/home/oracle/app/oracle/oradata/helowin 目录下

2,拷贝数据到本地,并修改拥有者

docker cp oracle:/home/oracle/app/oracle/oradata/helowin /opt/docker/oracle/helowin
cd /opt/docker/oracle
chown -R 500.500 ./helowin  # 500 500 是容器内 oracle 组合用户的 id

3,关闭容器:docker-compose down

4,重新启动容器,并在 docker-composr.yml 添加数据卷配置

version: '3.1'
services:
  master:
    image: akaiot/oracle_11g
    container_name: oracle
    privileged: true
    ports:
      - 1521:1521
    volumes:
      - /opt/docker/oracle/helowin:/home/oracle/app/oracle/oradata/helowin

5,查看启动日志:docker logs -f oracle,我们发现了一个错误,这是由于 oracle 为了数据安全,添加的版本验证

6,进入容器内,解决错误

docker exec -it oracle bash
cd /home/oracle              # 进入到 oracle 用户目录
source .bash_profile         # 加载 oracle 环境变量(每次进入容器都要加载配置文件)

# 删除新生成的版本控制文件,将数据卷中的版本控制文件复制为新生成的版本控制文件
rm -rf /home/oracle/app/oracle/flash_recovery_area/helowin/control02.ctl
cp /home/oracle/app/oracle/oradata/helowin/control01.ctl /home/oracle/app/oracle/flash_recovery_area/helowin/control02.ctl

sqlplus / as sysdba          # 以 dba 身份连接 oracle 数据库
shutdown immediate           # 关闭数据库实例(这里会报错,不用管)
startup                      # 启动实例

7,再次使用 plsql 连接,发现之前创建 test 用户可以连接,数据持久化顺利完成

PS,镜像的 root 用户账号密码:root/helowin

posted on 2020-03-22 17:07  被遗忘的优雅  阅读(4527)  评论(3编辑  收藏  举报