Docker 安装 Oracle 12C

镜像

https://docker.aityp.com/image/docker.io/truevoly/oracle-12c:latest
docker pull swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/truevoly/oracle-12c:latest
docker tag  swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/truevoly/oracle-12c:latest  docker.io/truevoly/oracle-12c:latest
docker images

创建并启动容器

# 容器内端口默认1521,且通过 -p 参数修改不成功,所以只能修改外部的端口
docker run -itd --name oracle12c --restart=always -p 1522:1521 -e ORACLE_PWD=oracle -v /home/oracle/app/oracle12c/oradata:/home/oracle/app/oracle12c/oradata docker.io/truevoly/oracle-12c:latest

查看日志

docker logs -f --tail 100 oracle12c
Database not initialized. Initializing database.
Starting tnslsnr
Copying database files
1% complete
3% complete
11% complete
18% complete
26% complete
37% complete
Creating and starting Oracle instance
40% complete
45% complete
50% complete
55% complete
56% complete
60% complete
62% complete
Completing Database Creation
66% complete
70% complete
73% complete
85% complete
96% complete
100% complete
Look at the log file "/u01/app/oracle/cfgtoollogs/dbca/xe/xe.log" for further details.
Configuring Apex console
Database initialized. Please visit http://#containeer:8080/em http://#containeer:8080/apex for extra configuration if needed
Starting web management consolePL/SQL procedure successfully completed.Starting import from '/docker-entrypoint-initdb.d':
ls: cannot access /docker-entrypoint-initdb.d/*: No such file or directory
Import finishedDatabase ready to use. Enjoy! ;)

登录到容器内

docker exec -it oracle12c bash

配置环境变量

vi /etc/profile
export ORACLE_HOME=/u01/app/oracle-product/12.1.0/xe
export PATH=$ORACLE_HOME/bin:$PATH
source /etc/profilevi /home/oracle/.bashrc
export ORACLE_HOME=/u01/app/oracle-product/12.1.0/xe
export PATH=$ORACLE_HOME/bin:$PATH
source /home/oracle/.bashrc

登录

# 必须要切到 oracle 用户
su oracle
sqlplus / as sysdba

命令解释:

  • sqlplus / as sysdba : 使用操作系统认证以 SYSDBA 特权用户身份连接到 Oracle 数据库的命令
    • sqlplus:Oracle 提供的命令行工具,用于与数据库交互(SQL*Plus 的缩写)。
    • /:表示使用操作系统认证(OS Authentication),无需显式输入用户名和密码。
    • as sysdba:以 SYSDBA 特权角色连接,拥有最高权限(如启动 / 关闭数据库、创建用户等)。
  • sqlplus sys/oracle as sysdba : 使用用户名密码以 SYSDBA 特权身份连接到 Oracle 数据库 (不过这里用户名密码不管写什么都能连接)
    • sys/oracle:用户名和密码
    • sys:Oracle 数据库的超级管理员用户(拥有最高权限)
    • oracle:默认密码
  • sqlplus /nolog : 启动 SQL*Plus 工具但不立即连接到数据库的命令
  • CONNECT sys/oracle AS SYSDBA :SQL*Plus 中使用用户名密码以 SYSDBA 特权身份连接到 Oracle 数据库的命令。(同样的这里用户名密码不管写什么都能连接)
    • CONNECT:SQL*Plus 内置命令,用于建立或切换数据库连接(可简写为 CONN 或 LOGON)。
  • conn / as sysdba 是 Oracle SQL*Plus 中使用操作系统认证以 SYSDBA 特权身份连接数据库的命令

登录异常

sqlplus / as sysdbaSQL*Plus: Release 12.1.0.2.0 Production on Tue Jun 10 11:32:04 2025Copyright (c) 1982, 2014, Oracle.  All rights reserved.ERROR:
ORA-01017: invalid username/password; logon denied

解决:以oracle用户登录。

启动数据库

SQL> startup
ORACLE instance started.Total System Global Area 1610612736 bytes
Fixed Size                  2924928 bytes
Variable Size            1006636672 bytes
Database Buffers          587202560 bytes
Redo Buffers               13848576 bytes
ORA-01102: cannot mount database in EXCLUSIVE mode

解决 cannot mount database in EXCLUSIVE mode

首先关闭数据库

SHUTDOWN IMMEDIATE;
方法1
su oracle
# 查找共享内存和信号量:
ipcs -m
ipcs -s
# 清理共享内存和信号量:
ipcrm -m <shmid>
ipcrm -s <semid>

参考:https://blog.csdn.net/qq_47502724/article/details/144828940

方法2

和我在之前写的Centos7 安装oracle11 中用的方法一样: 通过 fuser -k 释放占用 lk<SID> 的进程。一般系统自带 fuser 命令,但是我们装的oracle 容器内没有自带,所以需要先安装对应的命令。

sudo apt update
sudo apt install psmisc

需要先联网 update ,再安装 psmisc,联网需要修改 /etc/resolv.conf ,添加 DNS(前提是宿主机也能联网):

nameserver 223.5.5.5
nameserver 10.100.1.12
nameserver 114.114.114.114

在 Docker 容器中使用 vi 编辑文件时, 可能遇到一些体验问题(如方向键乱码、退格键失效等),可通过安装最小化的 vim-tiny

apt-get install -y vim-tiny
ln -s /usr/bin/vim.tiny /usr/bin/vim  # 替换vim为vim-tiny

lk<SID> 在 $ORACLE_HOME/dbs

su oracle
cd $ORACLE_HOME/dbs
fuser -u lkXE
fuser -k lkXE
fuser -u lkXE

查询数据库状态

SELECT status FROM v$instance;STATUS
------------
OPEN

返回值说明:

  • STARTED:实例已启动,但未装载数据库。
  • MOUNTED:实例已装载数据库(ALTER DATABASE MOUNT)。
  • OPEN:数据库正常打开,可读写。
  • OPEN READ ONLY:数据库只读模式。

连接验证

  • SID 和 Service Name 均为 XE
  • 用密码密码: sys/oracle 和 system/oracle
    • sys 用户:具有 “SYSDBA” 或者 “SYSOPER” 系统权限,登录EM(企业管理器)也只能用这两个身份,不能用normal(普通用户)身份。SYSDBA是管理 Oracle 实例的,拥有最高的系统权限,可完成数据库的所有管理任务,如创建数据库、删除数据库、数据库日志归档、执行不完全恢复,以及创建其它的SYSOPER和SYSDBA用户等
    • system 用户:SYSTEM用户:默认拥有普通DBA角色权限,能完成除备份恢复、升级之外的大部分数据库管理任务。但只能用normal身份登录EM,除非对它授予了SYSDBA或SYSOPER系统权限。如果SYSTEM用户以AS SYSDBA登录,其结果实际上是作为SYS用户登录的。

修改密码

alter user system identified by test123;
alter user sys identified by test123;

删除 Docker 容器

docker stop oracle12c
docker rm oracle12c

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.pswp.cn/web/83634.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux内核网络协议注册与初始化:从proto_register到tcp_v4_init_sock的深度解析

一、协议注册:proto_register的核心使命 在Linux网络协议栈中,proto_register是协议初始化的基石,主要完成三项关键任务: Slab缓存创建(内存管理核心) prot->slab = kmem_cache_create_usercopy(prot->name, prot->obj_size, ...); if (prot->twsk_prot) pr…

GD32 MCU的真随机数发生器(TRNG)

GD32 MCU的真随机数发生器(TRNG) 文章目录 GD32 MCU的真随机数发生器(TRNG)一、定义与核心特征二、物理机制:量子与经典随机性三、生成方法四、应用场景五、与伪随机数的对比六、局限性⚙️ 七、物理熵源原理🔧 八、硬件实现流程(以GD32F450 GD32L233为例)8.1. **初始…

Vulkan学习笔记6—渲染呈现

一、渲染循环核心 while (!glfwWindowShouldClose(window)) {glfwPollEvents();helloTriangleApp.drawFrame(); // 绘制帧} 在 Vulkan 中渲染帧包含一组常见的步骤 等待前一帧完成&#xff08;vkWaitForFences&#xff09; 从交换链获取图像&#xff08;vkAcquireNextImageKH…

React第六十二节 Router中 createStaticRouter 的使用详解

前言 createStaticRouter 是 React Router 专为 服务端渲染&#xff08;SSR&#xff09; 设计的 API&#xff0c;用于在服务器端处理路由匹配和数据加载。它在构建静态 HTML 响应时替代了客户端的 BrowserRouter&#xff0c;确保 SSR 和客户端 Hydration 的路由状态一致。 一…

qt 双缓冲案例对比

双缓冲 1.双缓冲原理 单缓冲&#xff1a;在paintEvent中直接绘制到屏幕&#xff0c;绘制过程被用户看到 双缓冲&#xff1a;先在redrawBuffer绘制到缓冲区&#xff0c;然后一次性显示完整结果 代码结构 单缓冲&#xff1a;所有绘制逻辑在paintEvent中 双缓冲&#xff1a;绘制…

华为云AI开发平台ModelArts

华为云ModelArts&#xff1a;重塑AI开发流程的“智能引擎”与“创新加速器”&#xff01; 在人工智能浪潮席卷全球的2025年&#xff0c;企业拥抱AI的意愿空前高涨&#xff0c;但技术门槛高、流程复杂、资源投入巨大的现实&#xff0c;却让许多创新构想止步于实验室。数据科学家…

ParaGraphX [特殊字符]

https://github.com/stevechampion1/paragraphx 一个基于 JAX 的、为 CPU/GPU 加速而生的超高性能图算法库。 ParaGraphX 是一个实验性的 Python 库&#xff0c;旨在利用 JAX 的即时编译 (JIT) 和大规模并行计算能力&#xff0c;为经典的图算法提供惊人的性能提升。我们的目标…

如何用4 种可靠的方法更换 iPhone(2025 年指南)

Apple 每年都会发布新版本的 iPhone。升级到新 iPhone 是一种令人兴奋的体验&#xff0c;但转移所有宝贵数据的想法有时会让人感到畏惧。幸运的是&#xff0c;我们准备了 4 种有效的更换 iPhone 的方法&#xff0c;让你可以毫不费力地更换到你的新 iPhone。 此外&#xff0c;您…

GitLab 拉取变慢的原因及排查方法

前言&#xff1a;在软件开发的快节奏世界里&#xff0c;高效协作与快速交付是制胜关键。然而&#xff0c;当开发团队兴高采烈地投入工作&#xff0c;却发现从GitLab拉取代码的速度慢如蜗牛&#xff0c;那种沮丧感简直能瞬间浇灭热情。在分布式开发环境中&#xff0c;这种情况时…

落水人员目标检测数据集(猫脸码客第253期)

落水人员目标检测&#xff1a;科技守护生命之舟 一、背景与意义 随着人类海洋活动和水上活动的日益频繁&#xff0c;海上与水域安全事故频发。每年都会开展大量的海上救援行动&#xff0c;以搜救数以万计的落难人员。在水上活动区域&#xff0c;如水库、河道等&#xff0c;溺…

JAVA_强制类型转换:

类型范围大的变量&#xff0c;不可以直接赋值给类型变量小的变量 需要进行强制类型转换&#xff1a; 想要完成类型范围大的变量传给类型范围小的变量需要先创建一个新的变量&#xff08;类型与方法的形参类型要相同&#xff09;。将类型范围大的变量前面加上&#xff08;转换类…

打卡第44天:无人机数据集分类

重复以下内容 作业&#xff1a; kaggle找到一个图像数据集&#xff0c;用cnn网络进行训练并且用grad-cam做可视化 进阶&#xff1a; 并拆分成多个文件 import os import torch import torch.nn as nn import torch.optim as optim from torch.utils.data import DataLoader,…

个人网站大更新,还是有个总站比较好

个人网站大更新&#xff0c;还是有个总站比较好 放弃了所有框架&#xff0c;用纯htmlcssjs撸了个网站&#xff0c;这回可以想改啥改啥了。 选择了黑紫作为主色调&#xff0c;暂时看着还算可以。 为什么不用那些框架了 几个原因&#xff1a; 尝试用vuepress、vitepress、not…

高精度算法详解:从原理到加减乘除的完整实现

文章目录 一、为什么需要高精度算法二、高精度算法的数据结构设计2.1 基础工具函数2.2 高精度加法实现2.3 高精度减法实现2.4 高精度乘法实现2.5 高精度除法实现 三、完整测试程序四、总结 一、为什么需要高精度算法 在编程中&#xff0c;处理极大数值是常见需求&#xff0c;例…

排序--计数排序

一,引言 计数排序是一种针对整数数据的高效排序算法。其主要流程可分为三个步骤&#xff1a;首先计算整数数据的数值范围&#xff1b;接着按大小顺序统计各数值的出现次数&#xff1b;最后根据统计结果输出排序后的数据序列。 二,求最值 遍历现有数据&#xff0c;获取最大值…

Kubernetes安全机制深度解析(四):动态准入控制和Webhook

#作者&#xff1a;程宏斌 文章目录 动态准入控制什么是准入 Webhook&#xff1f; 尝试准入Webhook先决条件编写一个准入 Webhook 服务器部署准入 Webhook 服务即时配置准入 Webhook对 API 服务器进行身份认证 Webhook 请求与响应Webhook 配置匹配请求-规则匹配请求&#xff1a…

WDK 10.0.19041.685,可在32位win7 sp1系统下搭配vs2019使用,可以编译出xp驱动。

(14)[驱动开发]配置环境 VS2019 WDK10 写 xp驱动 (14)[驱动开发]配置环境 VS2019 WDK10 写 xp驱动_microsoft visual 2019 wdk-CSDN博客文章浏览阅读3k次&#xff0c;点赞8次&#xff0c;收藏17次。本文介绍了如何在VS2019环境下安装和配置Windows Driver Kit(WDK)&#xff0…

论坛系统自动化测试

1、项目背景与测试目标 系统定位 论坛系统作为典型的高并发Web应用&#xff0c;需支持用户注册、登录、发帖、评论、私信及个人中心管理等核心功能&#xff0c;是用户公开交流与信息共享的核心平台。其稳定性与响应效率直接影响用户体验及平台活跃度。 测试必要性 功能可靠性&…

ChipWhisperer教程(一)

一、ChipWhisperer介绍 ChipWhisperer 是一个完整的开源工具链&#xff0c;用于学习嵌入式设备上的侧信道攻击并验证这些设备的侧信道抗性。ChipWhisperer主要用于功耗分析&#xff0c;利用设备功耗泄露的信息进行攻击&#xff0c;也可用于故障攻击&#xff08;电压和时钟毛刺…

【持续更新】计算机网络试题

问题1 请简要说明TCP/IP协议栈的四层结构&#xff0c;并分别举出每一层出现的典型协议或应用。 答案 应用层&#xff1a;ping,telnet,dns 传输层&#xff1a;tcp,udp 网络层&#xff1a;ip,icmp 数据链路层&#xff1a;arp,rarp 问题2 下列协议或应用分别属于TCP/IP协议…