Docker安装Oracle数据库

Docker安装Oracle数据库

Author: histonevon@zohomail.com

Date: 2023/08/24

[TOC]

Docker

  • 由于Oracle官方仅支持Red Hat与Oracle Linux,使用CentOS安装较为繁琐,故使用Docker安装并学习
  • 按照以下文档安装Docker,建议参考官方文档
  • 使用此方法检查是否安装Docker:docker --help,如果有帮助文件则证明安装成功
  • 使用此语句检查Docker是否正在运行:docker images,实际上是查看本地镜像
  • 如果发现未运行则开启Docker:sudo systemctl start docker

image-20230824101245470

  • 查看正在运行的服务:systemctl list-units --type=service

image-20230824104302692

  • 设置Docker自启:systemctl enable docker.service
  • 查看自启动的项目:systemctl list-unit-files | grep enable

image-20230824104149288

Oracle

官方最新版本镜像

image-20230824102320734

Oracle-11g

image-20230824105424509

  • 为了保证Docker实例停止后数据不会丢失,故需要数据持久化,需要创建数据卷,此处名为oracle_vol
    • 创建数据卷:docker volume create oracle_vol
    • 查看数据卷:docker volume ls
    • 删除数据卷:docker volume rm oracle_vol

image-20230824134634401

  • 持久化启动镜像
    • -i:交互式运行容器,常与-t一起使用
    • -t:为容器分配一个伪终端,常与-i一起使用
    • -d:后台运行容器,并返回容器ID
    • -p:端口映射<宿主机:容器>
    • --name:自定义容器名称
    • --restart:重启Docker时是否重启该容器服务
    • --mount:挂载
docker run -itd \
-p 1521:1521 \
--name oracle \
--restart=always \
--mount source=oracle_vol,target=/home/oracle/app/oracle/oradata \
registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g

image-20230824134821988

  • 查看容器:docker ps -a

image-20230824135524920

  • 查看系统端口情况:netstat -antulp
    • -a:--all,显示所有链接和监听端口
    • -n:进制使用域名解析功能。链接以IP展示,而不是通过主机名或域名形式展示
    • -t:所有的 tcp 协议的端口
    • -u:所有的 udp 协议的端口
    • -l:--listening,显示所有监听的端口
    • -p:--programs,与链接相关程序名和进程的PID

image-20230824135625514

Oracle-11g配置

  • 进入容器环境:docker exec -it oracle bash
  • 切换至root用户:su root密码helowin

image-20230824142057116

  • 编辑环境变量:vi /etc/profile,点击i键进入编辑,追加如下内容,点击esc键退出编辑,:wq保存退出
# oracle home目录
export ORACLE_HOME=/home/oracle/app/oracle/prouct/11.2.0/dbhome_2   
# oracle 服务名或者 SID名,要记住这个名字helowin,它是naivcat或者DBeaver登录的重要选项
export ORACLE_SID=helowin     
# oracle环境变量
export PATH=$ORACLE_HOME/bin:$PATH

image-20230824142715765

  • 加载环境变量:source /etc/profile

image-20230824142750071

  • 创建软连接:ln -s $ORACLE_HOME/bin/sqlplus /usr/bin
  • 切换回oracle用户:su - oracle,中间有减号

image-20230824143235955

  • sqlplus修改sys、system用户密码
sqlplus /nolog   # 登录

# 以下是SQL
conn /as sysdba
alter user system identified by system; -- 修改system用户账号密码为system;
alter user sys identified by sys; -- 修改sys用户账号密码为sys;

image-20230824145349347

  • 添加远程用户,远程登录参数如下
    • SID:helowin
    • User:test
    • Password:test
create user test identified by test; -- 创建内部管理员账号密码;
grant connect,resource,dba to test; -- 将dba角色授权给内部管理员账号和密码;
ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED; -- 设置密码永不过期
alter system set processes=1000 scope=spfile; -- 修改数据库最大连接数

image-20230824145837493

  • 保存并重启数据库
conn /as sysdba; -- 保存数据库
shutdown immediate; -- 关闭数据库
startup; -- 启动数据库
show user;

image-20230824150138300

远程连接

  • 使用DataGrip连接,可能需要下载驱动
  • 点击Test Connection测试连接

image-20230824155107556

  • 点击左侧刷新按钮,可以看到数据库内容

image-20230824160521258

参考文献