当前位置: 首页 > news >正文

Docker安装oracle数据库【最新版】

文章目录

      • 1. 安装 Docker 环境
      • 2. 拉取 Oracle 镜像
      • 3. 查看镜像
      • 4. 创建容器
      • 5. 进入容器进行配置
      • 6. 进行软连接
      • 7. 配置 Oracle 环境变量
      • 8. 创建软连接
      • 9. 切换到 Oracle 用户
      • 10. 登录 SQL*Plus 并修改 sys、system 用户密码
      • 11. 重新启动数据库
      • 12. 解决 "Database Not Open" 错误
      • 13. 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

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

image-20250102224239845

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

image-20250102225228853

切换到 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 登录并修改 syssystem 用户的默认密码:

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

image-20250102225515129

11. 重新启动数据库

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

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

12. 解决 “Database Not Open” 错误

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

ORA-01507: database not open

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

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

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

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

ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;

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

image-20250102225833551

13. Navicat 连接测试

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

image-20250102230621443

相关文章:

Docker安装oracle数据库【最新版】

文章目录 1. 安装 Docker 环境2. 拉取 Oracle 镜像3. 查看镜像4. 创建容器5. 进入容器进行配置6. 进行软连接7. 配置 Oracle 环境变量8. 创建软连接9. 切换到 Oracle 用户10. 登录 SQL*Plus 并修改 sys、system 用户密码11. 重新启动数据库12. 解决 "Database Not Open&qu…...

基于STM32的智能门锁系统设计

目录 引言系统设计 硬件设计软件设计系统功能模块 用户身份验证模块开锁控制模块状态监控与报警模块数据存储与管理模块控制算法 用户身份验证算法开锁控制算法状态监控与报警算法代码实现 用户身份验证模块实现开锁控制模块实现状态监控模块实现系统调试与优化结论与展望 1. …...

【踩坑指南:2025年最新】如何在Linux(Ubuntu)启动第一个Scala Hello World程序(Scala3)

如何正确地写出Scala的第一个程序,并且利用Scala3的简洁特性? 在解释器中直接输出Hello world非常简单,只需要直接执行即可: scala> println("Hello World") Hello World 但如果我们希望编写一个脚本文件&#xf…...

SAP系统中的标准价、移动平均价是什么?有何区别?物料分类账的优点

文章目录 前言一、SAP系统中的价格控制二、移动平均价、标准价是什么?三、S价(标准价)的优势四、S价(标准价)的劣势五、V价(移动平均价)的优势六、V价(移动平均价)的劣势…...

9.类的定义与使用

类的定义构造函数(__init__)实例变量类变量方法(实例方法)类方法(classmethod)静态方法(staticmethod)属性装饰器(property)私有属性与方法继承多态方法重写super()函数类的文档字符串类的属性和方法访问控制 1.类的定义: 如int,list,tuple等等都是类,还可以通过class方法自己…...

【网络安全 | 漏洞挖掘】JS Review + GraphQL滥用实现管理面板访问

未经许可,不得转载。 正文 在映射目标范围后,我发现了一个用于管理的控制台界面,但没有注册功能。 于是我开始尝试: 1、模糊测试注册端点 -> 失败 2、在请求中将登录替换为注册 -> 再次失败 尝试均未奏效后,我决定冷静下来,重新思考方法并利用技术手段。 我观察…...

前端如何判断多个请求完毕

在前端开发中,经常会遇到需要同时发起多个异步请求,并在所有请求都完成后再进行下一步操作的情况。 这里有几个常用的方法来实现这一需求: 使用 Promise.all() Promise.all() 方法接收一个 Promise 对象的数组作为参数,当所有的…...

atrust异常导致ERR_NETWORK_CHANGED

首先因为工作需要不断安装卸载不同版本深信服的atrust。那么可能遇到和我一样的问题。 深信服的这种东西有点毛病,以前只是偶尔导致我局域网无法访问,我停止atrust后,他还有后台程序在后台不断更改我的适配器,在我局域网需要固定…...

【网络安全 | 漏洞挖掘】绕过电子邮件确认实现预账户接管

未经许可,不得转载。 文章目录 正文漏洞步骤赏金正文 我测试的应用程序有多个子域名: 1、account.example.com:处理用户账户管理。 2、project.example.com:管理用户拥有或被邀请的项目。 3、org.example.com:一个新的子域,用于管理多个项目的组织。 4、collaborator.ex…...

python3GUI--智慧交通监控与管理系统 By:PyQt5

文章目录 一.前言二.预览三.软件组成&技术难点1.软件组成结构2.技术难点3.项目结构 四.总结 大小:35.5 M,软件安装包放在了这里! 一.前言 博主高产,本次给大家带来一款我自己使…...

Java重要面试名词整理(十八):Sentinel

文章目录 服务雪崩及其解决方案技术选型: Sentinel or Hystrix 流量治理组件Sentinel**基于SentinelResource注解埋点实现资源保护** Sentinel控制台**限流阈值类型****流控模式****直接****关联** **流控效果**系统规则——系统自适应保护 限流算法**计数器法****滑动时间窗口…...

一文大白话讲清楚TCP连接的三次握手和断开连接的四次挥手的原理

文章目录 一文大白话讲清楚TCP连接的三次握手和断开连接的四次挥手的原理1.TCP建立连接需要3次握手1.1 先讲个你兄弟的故事1.2 TCP 3次握手1.2 TCP 3次握手8件事1.3 TCP握手能不能是两次 2. TCP 断开连接要4次挥手2.1 还回到你兄弟的故事上2.2 TCP 4次挥手2.2 TCP4次挥手4件事2…...

CSS——1.优缺点

<!DOCTYPE html> <html><head><meta charset"UTF-8"><title></title><link rel"stylesheet" type"text/css" href"1-02.css"/></head><body><!--css&#xff1a;层叠样式表…...

TIM——编码器测速

Encoder Interface 编码器接口 编码器接口可接收增量&#xff08;正交&#xff09;编码器的信号&#xff0c;根据编码器旋转产生的正交信号脉冲&#xff0c;自动控制CNT自增或自减&#xff0c;从而指示编码器的位置、旋转方向和旋转速度 每个高级定时器和通用定时器都拥有1个编…...

抢先体验:人大金仓数据库管理系统KingbaseES V9 最新版本 CentOS 7.9 部署体验

一、简介 KingbaseES 是中国人大金仓信息技术股份有限公司自主研发的一款通用关系型数据库管理系统&#xff08;RDBMS&#xff09;。 作为国产数据库的杰出代表&#xff0c;它专为中国市场设计&#xff0c;广泛应用于政府、金融、能源、电信等关键行业&#xff0c;以高安全性…...

供应链系统设计-供应链中台系统设计(七)- 商品中心设计篇

概述 上篇文章我们大致讲了一些商品中心相关的概念&#xff0c;例如&#xff1a;SPU、SKU、Item等等&#xff0c;在这里我们来简单的回顾一下&#xff1a; 商品概念的分层与定义&#xff1a; SPU&#xff08;Standard Product Unit&#xff09;&#xff1a;代表产品系列或产品…...

Power BI如何连接Azure Databricks数据源?

故事背景: 近期有朋友询问&#xff0c;自己公司有一些项目使用了Azure Databricks用于数据存储。如何使用Power BI Desktop桌面开发软件连接Azure Databricks的数据源呢&#xff1f; 解决方案: 其实Power BI是提供了连接Azure Databricks数据源的选项的&#xff0c;只是配置…...

【HarmonyOS】鸿蒙应用如何进行页面横竖屏切换以及注意事项,自动切换横竖屏,监听横竖屏

【HarmonyOS】鸿蒙应用如何进行页面横竖屏切换以及注意事项&#xff0c;自动切换横竖屏&#xff0c;监听横竖屏 一、鸿蒙应用如何进行页面横竖屏调用API手动切换 1.首先要在EntryAbility 中获取主窗口对象 EntryAbility.ets import { AbilityConstant, UIAbility, Want } fr…...

编译 C++ 程序:分离与保留调试信息以支持 GDB 对 Core 文件的调试

在 C 程序开发过程中&#xff0c;调试是一个非常重要的环节。当程序出现问题&#xff0c;尤其是在生产环境中出现崩溃并生成 Core 文件时&#xff0c;我们需要使用调试工具&#xff08;如 GDB&#xff09;对程序进行深入分析&#xff0c;找出问题的根源。为了在需要时能够有效地…...

009:传统计算机视觉之边缘检测

本文为合集收录&#xff0c;欢迎查看合集/专栏链接进行全部合集的系统学习。 合集完整版请参考这里。 本节来看一个利用传统计算机视觉方法来实现图片边缘检测的方法。 什么是边缘检测&#xff1f; 边缘检测是通过一些算法来识别图像中物体之间或者物体与背景之间的边界&…...

JAVA创建绘图板JAVA构建主窗口鼠标拖动来绘制线条

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c; 忍不住分享一下给大家。点击跳转到网站 学习总结 1、掌握 JAVA入门到进阶知识(持续写作中……&#xff09; 2、学会Oracle数据库入门到入土用法(创作中……&#xff09; 3、手把…...

机器人对物体重定向操作的发展简述

物体重定向操作的发展简述 前言1、手内重定向和外部重定向2、重定向原语3、重定向状态转换网络4、连续任意姿态的重定向5、利用其他环境约束重定向总结Reference 前言 对于一些特殊的任务&#xff08;如装配和打包&#xff09;&#xff0c;对物体放置的位姿由明确的要求&#…...

自动驾驶三维重建

大概八成估计是未来的科研方向了 文章目录 自动驾驶中的NeRF[4]CLONeR&#xff1a;Urban Radiance Fields[6]S-NERFBlock-NeRFSwitch-NeRFSceneRFBehind the Scenes 大规模与自动驾驶场景重建:3D高斯VastGaussianPeriodic Vibration Gaussian&#xff08;复旦大学&#xff09;…...

30分钟学会css

CSS 基本语法 CSS&#xff08;Cascading Style Sheets&#xff09;是一种样式表语言&#xff0c;用于描述 HTML&#xff08;或 XML&#xff09;文档的呈现。它可以控制网页元素的颜色、字体、布局等外观样式&#xff0c;实现内容与表现的分离&#xff0c;让网页设计更加灵活和…...

vue路由模式面试题

vue路由模式 1.路由的模式有哪些?有什么区别? history和hash模式 区别: 1.表现的形态不同: 在地址栏url中:hash模式中带有**#**号,history没有 2.请求错误时表现不同: 在hash模式中,对于404地址请求时,不会进行请求 但是在history模式中,对于404请求时,仍然会进行请求…...

Python 开发框架搭建简单博客系统:代码实践与应用

在当今数字化时代&#xff0c;博客作为一种流行的信息分享和交流平台&#xff0c;拥有广泛的受众。Python 以其强大的功能和丰富的库&#xff0c;为构建博客系统提供了理想的技术支持。本文将详细介绍如何利用 Python 开发框架搭建一个简单博客系统&#xff0c;包括功能实现、代…...

如何在 VSCode 中配置 C++ 开发环境:详细教程

如何在 VSCode 中配置 C 开发环境&#xff1a;详细教程 在软件开发的过程中&#xff0c;选择一个合适的开发环境是非常重要的。Visual Studio Code&#xff08;VSCode&#xff09;作为一款轻量级的代码编辑器&#xff0c;凭借其强大的扩展性和灵活性&#xff0c;受到许多开发者…...

三甲医院等级评审八维数据分析应用(一)--组织、制度、管理可视化篇

一、引言 1.1 研究背景与意义 在当今医疗领域,三甲医院作为医疗服务的核心载体,肩负着保障民众健康、推动医学进步的重任。随着信息技术的飞速发展,数据已成为医院运营管理、医疗质量提升以及科学决策的关键要素。三甲医院等级评审作为衡量医院综合实力与服务水平的重要标…...

2024 年度总结|勇敢去探索~

写作这件事&#xff0c;果然是一旦中断&#xff0c;就很难再拾起来。但年度总结这么有意义的话题&#xff0c;思来想去&#xff0c;万万不能落下。 工作 得益于同事们的帮衬和认可&#xff0c;年初的时候&#xff0c;我的角色发生了变化&#xff1a;需要开始承担部门内的一些…...

2024年, Milvus 社区的那些事

随着跨年钟声响起&#xff0c;2024 年告一段落。这一年&#xff0c;Milvus GitHub Stars 正式突破 3 万大关&#xff0c;Docker 下载量突破6700w 次&#xff0c;达到一个新的里程碑&#xff0c;在开源向量数据库领域继续引领前行。在这遥遥领先的数据背后&#xff0c;不妨让我们…...