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: registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g
container_name: oracle
privileged: true
ports:
- 31995: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 test identified by oracle; # 创建一个 test 用户,密码 oracle
select * from dba_users t where t.username = 'TEST'; # 查询用户是否创建成功
grant connect, resource to test; # 给用户授予连接和数据权限
5,相关配置(可省略)
grant select on V_$session to test;
grant select on V_$sesstat to test;
grant select on V_$statname to test;
show parameter deferred_segment_creation; -- 查看是否启用 true 为启动
alter system set deferred_segment_creation=false; -- 修改为不启用
show parameter deferred_segment_creation; -- 查看是否修改成功 false 未启用
6,使用 plsql 连接
账号:test
密码:oracle
连接:ip:1521/helowin
2,数据持久化
1,可以发现,helowin 的实例安装在:/home/oracle/app/oracle/oradata/helowin 目录下
2,拷贝数据到本地,并修改拥有者
docker cp oracle:/home/oracle/app/oracle/oradata/helowin /usr/local/docker/oracle/helowin
cd /usr/local/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: registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g
container_name: oracle
privileged: true
ports:
- 31995:1521
volumes:
- ./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 数据库
SQL> shutdown immediate # 关闭数据库实例(这里会报错,不用管)
SQL> startup # 启动实例
SQL> alter user system identified by system; ## 修改用户 system 的密码为 system ,可以自定义
测试
lsnrctl status
sqlplus system/baifendian@//192.168.40.183:31995/helowin
7,再次使用 plsql 连接,发现之前创建 test 用户可以连接,数据持久化顺利完成
PS,镜像的 root 用户账号密码:root/helowin
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/75783.html