Docker安装oracle数据库最新版教程

 更新时间:2025年02月18日 09:36:32   作者:书生-w  
这篇文章主要介绍了如何在Docker中安装和配置Oracle 11g数据库,包括安装Docker、拉取Oracle镜像、创建容器、进入容器配置、设置环境变量、创建软连接、修改用户密码、重启数据库以及使用Navicat进行连接测试,需要的朋友可以参考下

1. 安装 Docker 环境

首先,确保你的系统已经安装了 Docker 环境。你可以参考官方文档来安装 Docker:Docker安装文档。安装完成后,确保 Docker 可以正常运行。

2. 拉取 Oracle 镜像

使用 Docker 拉取 Oracle 11g 的镜像。这里我们使用的是阿里云的 Oracle 11g 镜像,你也可以根据需要选择其他来源的镜像。

docker pull registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g

此命令会从 Docker Hub 拉取一个 6GB 大小的 Oracle 11g 镜像,可能需要一段时间,静等片刻。

3. 查看镜像

镜像拉取完成后,可以使用以下命令查看已下载的 Docker 镜像:

docker images

成功拉取后,您会看到类似如下的输出,显示镜像的相关信息:

4. 创建容器

我们可以使用以下命令创建并运行一个 Docker 容器:

docker run   -d --privileged -p 1521:1521 --name oracle11g    --restart=always -v /home/oracle:/data/oracle  registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g

命令解析:

  • -d:后台运行容器。
  • --privileged: 允许挂载数据卷,默认是读写权限rw
  • -p 1521:1521:将容器的 1521 端口映射到宿主机的 1521 端口。
  • --name oracle11g:为该容器命名为 oracle11g
  • oracle 数据文件挂载:-v /data/dockerData/oracle:/data/oracle,将容器中的数据文件夹 /data/oracle 挂载到宿主机对应的 /data/dockerData/oracl 文件夹中。
  • registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g:使用之前拉取的镜像。

你还可以编写一个 Shell 脚本,便于下次快速启动 Oracle 容器。脚本内容如下:

# BEGIN ANSIBLE MANAGED BLOCK  
#!/bin/bash  
docker rm -f oracle11;  
docker run -it -d -p 1521:1521 -v /data/oracle:/data/oracle --name oracle11g registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g  
# END ANSIBLE MANAGED BLOCK

**注意:**不推荐每次都使用脚本启动容器,因为为了保留上次配置的值,建议下次直接使用 docker start oracle11 启动。

如果容器创建成功,系统会返回容器 ID。

5. 进入容器进行配置

创建并启动容器后,你可以进入容器内部进行配置:

docker exec -it oracle11g bash

此命令会让你进入 Oracle 容器的 Bash 环境。

6. 进行软连接

在容器中执行以下命令,尝试使用 sqlplus 工具。如果提示没有该命令,你需要切换到 root 用户:

sqlplus /nolog

切换到 root 用户:

su root

输入密码 helowin(默认密码)。

7. 配置 Oracle 环境变量

你需要编辑 Oracle 配置文件,设置环境变量。执行以下命令:

vi /etc/profile

在文件末尾添加以下内容:

# 设置 Oracle 数据库的安装目录
# ORACLE_HOME 是 Oracle 数据库安装的根目录,许多工具和脚本需要依赖这个路径
export ORACLE_HOME=/home/oracle/app/oracle/product/11.2.0/dbhome_2

# 设置 Oracle 实例名
# ORACLE_SID(System Identifier)是数据库实例的标识符,在 Oracle 中用来区分不同的实例
# 这里设置为默认的实例名 "helowin",与安装时的配置一致 (不设置默认服务名就是ORCL)
export ORACLE_SID=helowin

# 将 ORACLE_HOME/bin 添加到 PATH 环境变量中
# PATH 是系统查找可执行程序的路径列表,将 Oracle 的 bin 目录加入 PATH,方便直接运行 Oracle 命令(如 sqlplus)
export PATH=$ORACLE_HOME/bin:$PATH

保存并退出后,执行以下命令加载环境变量:

source /etc/profile

8. 创建软连接

接下来,创建一个软连接,方便在任何地方使用 sqlplus 命令:

ln -s $ORACLE_HOME/bin/sqlplus /usr/bin

9. 切换到 Oracle 用户

切换到 oracle 用户以确保你有足够的权限进行后续操作:

su - oracle

10. 登录 SQL*Plus 并修改 sys、system 用户密码

通过 SQL*Plus 登录并修改 sys 和 system 用户的默认密码:

# 1. 登录 SQL*Plus
# 使用 /nolog 命令启动 sqlplus,并且不立即连接到任何用户
sqlplus /nolog

# 2. 连接数据库并使用 SYSDBA 权限
# 通过以下命令使用 SYSDBA 权限连接到数据库
# 该命令表示通过操作系统身份验证以 sysdba 权限连接数据库,拥有最高管理员权限。
conn /as sysdba

# 3. 修改 system 用户的密码
# system 是 Oracle 数据库中的一个管理员账户,修改默认的密码为更安全的密码
# 这里将密码设置为 system(可以自行修改为更复杂的密码)
alter user system identified by system;

# 4. 修改 sys 用户的密码
# sys 用户是 Oracle 数据库的另一个管理员账户,修改 sys 用户的默认密码
# 同样可以将密码设置为更复杂的值
alter user sys identified by system;

# 5. 创建新用户 test
# 创建一个新的普通用户 test,并设置其密码为 test
# 新用户创建后,可以根据需求授予其特定的权限
create user test identified by test;

# 6. 授予 test 用户 DBA 权限
# 这里我们为新创建的 test 用户授予了 DBA 权限,使其能够进行数据库的管理操作
# 注意:可以根据实际需求调整授予的权限
grant connect, resource, dba to test;

# 7. 设置密码永不过期
# Oracle 默认有一个密码过期策略,这里我们将密码策略设置为永不过期
# 这将防止在测试和开发环境中因密码过期而中断使用
ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;

# 8. 修改数据库最大连接数
# 默认情况下,Oracle 数据库的最大连接数是有限的,如果需要支持更多并发连接,可以调整该参数
# 这条命令将数据库最大连接数设置为 1000,并保存在 spfile 中
# 需要重启数据库后才能生效
alter system set processes=1000 scope=spfile;

# 执行完以上命令后,我们完成了用户密码修改、新用户创建、权限授予、密码策略配置和数据库配置

11. 重新启动数据库

修改完数据库用户和设置后,需要重新启动 Oracle 数据库。执行以下命令:

conn /as sysdba
shutdown immediate;   -- 关闭数据库
startup;              -- 启动数据库

12. 解决 “Database Not Open” 错误

在执行 alter user 命令时,有时可能会遇到如下错误:

ORA-01507: database not open

如果你遇到此问题,可以按照以下步骤解决:

  • 先输入以下命令挂载数据库:
alter database mount;
  • 然后再输入:
alter database open;

完成后就可以执行修改密码的操作了。

修改完后,再次执行 ALTER PROFILE 语句,设置密码永不过期:

ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;

执行完毕后,输入 exit 退出 SQL*Plus。

13. Navicat 连接测试

成功完成数据库配置后,可以使用 Navicat 或其他数据库管理工具测试连接。确保可以顺利连接到数据库:

总结 

到此这篇关于Docker安装oracle数据库的文章就介绍到这了,更多相关Docker安装oracle数据库内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Docker 镜像构建保姆级入门示例教程

    Docker 镜像构建保姆级入门示例教程

    Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明,这篇文章主要介绍了Docker 镜像构建保姆级入门实战指南,需要的朋友可以参考下
    2022-09-09
  • docker中通过nginx+confd动态生成配置的解决方案

    docker中通过nginx+confd动态生成配置的解决方案

    这篇文章主要介绍了docker:nginx+confd动态生成配置,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-03-03
  • Docker Portainer 可视化面板的使用

    Docker Portainer 可视化面板的使用

    本文主要介绍了Docker Portainer 可视化面板的使用,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-03-03
  • Kubernetes(k8s)基础介绍

    Kubernetes(k8s)基础介绍

    今天小编就为大家分享一篇关于Kubernetes(k8s)基础介绍,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-10-10
  • docker安装ros2详细步骤介绍

    docker安装ros2详细步骤介绍

    大家好,本篇文章主要讲的是docker安装ros2详细步骤介绍,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下,方便下次浏览
    2021-12-12
  • Docker 部署 Grafana持久化存储配置避免重启丢失的问题

    Docker 部署 Grafana持久化存储配置避免重启丢失的问题

    文章介绍了将宿主机目录挂载到容器的/var/lib/grafana路径,以实现Grafana数据的持久化,详细描述了在Docker和Docker Compose环境中实现这一方案的步骤,包括创建目录、修正文件权限、启动容器等,同时,文章还列举了一些常见问题及排查方法
    2026-05-05
  • docker部署rustdesk远程控制服务器的实现

    docker部署rustdesk远程控制服务器的实现

    RustDesk是一款体验优秀的远程控制软件,本文主要介绍了docker部署rustdesk远程控制服务器的实现,具有一定的参考价值,感兴趣的可以了
    2024-05-05
  • docker python api 安装配置的详解

    docker python api 安装配置的详解

    这篇文章主要介绍了docker python api 安装配置的详解的相关资料,希望通过本文能帮助到大家,让大家理解掌握这部分内容,需要的朋友可以参考下
    2017-10-10
  • 使用docker的python基础镜像时要指定patch版本原理

    使用docker的python基础镜像时要指定patch版本原理

    这篇文章主要为大家介绍了使用docker的python基础镜像时要指定patch版本原理,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-10-10
  • docker中nginx的默认路径位置和映射目录启动方式

    docker中nginx的默认路径位置和映射目录启动方式

    这篇文章主要介绍了docker中nginx的默认路径位置和映射目录启动方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-08-08

最新评论