Docker安装配置启动Oracle11g容器解决ORA-12541:TNS: 无监听程序连接第三方客户端

news2024/11/19 4:31:04

Windows下安装可参考我这篇:win11&win7下安装oracle11g数据库全过程

一、下载与启动

前提:需要安装配置好docker(设置镜像源配置阿里云加速)等,可参考我这篇 基于CentOS7安装配置docker与docker-compose 。

Docker容器相关操作可参考我这篇Docker容器基本操作之启动-停止-重启

//查看docker启动状态,若为active(running)则已经启动。
systemctl status docker

//执行start命令启动docker
systemctl start docker

1.1 下载Oracle11g镜像

由于官方镜像所在https://hub.docker.com/ 无法打开,所以使用阿里镜像下载Oracle11g的镜像。
oracle11g是该oracle11g镜像的Names。

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

在这里插入图片描述
注意:镜像比较大,将近7个G。

//查看下载好的镜像
docker images

在这里插入图片描述

1.2、启动容器

//默认启动容器的方式(第一次推荐这种)
docker run -d -it -p 1521:1521 --name oracle11g --restart=always registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g


//持久化启动的方式
docker run -d -it -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

这里我们采用默认启动容器的方式,下次可以直接使用docker start 命令启动该容器
在这里插入图片描述

//docker start 容器名(Names)或完整的容器ID(CONTAINER ID)或容器ID(CONTAINER ID)的前4位
//620b是djc-RabbitMQ容器ID(CONTAINER ID)的前4位
//执行完命令,再执行docker ps(查看当前启动的容器)查看是否启动成功。
docker start djc-RabbitMQ
docker start 620bd670d79b
docker start 620b
或
docker start -i 以交互模式启动
docker start -t 以附加进程模式启动

在这里插入图片描述

//查看所有容器(包含已经启动和未启动的容器)
//此处第一个就是我们刚刚启动的oracle11g,oracle11g是该oracle11g镜像的Names。
docke ps -a

在这里插入图片描述

//查看启动的线程
netstat -tulnp

在这里插入图片描述

1.3 配置容器环境

//1-进入容器
docker exec -it oracle11g bash

//2-切换到 root 用户 su root,该Oracle11g的容器密码默认为helowin。
su root

//3-配置环境变量
将环境变量配置在 /home/oracle/.bashrc 中,这样无需再去执行创建软链接的命令 ln -s $ORACLE_HOME/bin/sqlplus /usr/bin


在这里插入图片描述

//4-执行 vi /home/oracle/.bashrc ,按i或insert键编辑.bashrc文件,在文件最后加入下列内容
//编辑好
export ORACLE_HOME=/home/oracle/app/oracle/product/11.2.0/dbhome_2
export ORACLE_SID=helowin
export PATH=$ORACLE_HOME/bin:$PATH

编辑好,按ECS退出i(insert)模式,:wq保存并退出。  

//5-刷新环境变量,使之生效。
source /home/oracle/.bashrc 

在这里插入图片描述
在这里插入图片描述

//6-查看编辑完成的.bashrc文件
cat .basjrc

在这里插入图片描述

二、登录

2.1 配置防火墙

防火墙要允许 1521 端口,外部的数据库管理工具才能连的上
# 打开防火墙
systemctl start firewalld

# 查询端口状态
firewall-cmd --query-port=1521/tcp

# 永久性开放端口
firewall-cmd --permanent --zone=public --add-port=1521/tcp

# 重启防火墙
firewall-cmd --reload
firewall-cmd --query-port=1521/tcp

在这里插入图片描述

或者

//直接关闭防火墙 
systecmctl stop firewalld

//开机禁用防火墙
systecmctl disable firewalld

在这里插入图片描述

2.2 命令

//1-解决sqlplus /nolog 的 Permission denied 问题 【进入oracle容器之前执行】
setenforce 0

//2-进入容器
docker exec -it oracle11g bash


//3-将当前用户切换到Oracle
//如果直接以root用户执行下一步sqlplus /nolog,会报错Permission denied
su - oracle


//4-进入Oracle命令行
//如果直接以root用户执行sqlplus /nolog,会报错Permission denied
sqlplus /nolog




//5-使用 “操作系统认证” 的方式
//如果这里直接以默认的root用户登录,会报登录失败ORA-12456:TNS:permission denied
//这里会报Connected to an idle instance,表示需要使用startup命令启动数据库
conn / as sysdba



//6-启动数据库  后续补充
startup;

//7-select instance_name
select instance_name from v$instance;

//8-show user
show user;

2.3 为什么要切换到oracle用户

4-进入Oracle命令行-如果直接以root用户执行sqlplus /nolog,会报错Permission denied

在这里插入图片描述

5-使用 “操作系统认证” 的方式-如果这里直接以默认的root用户登录,会报登录失败ORA-12456:TNS:permission denied
在这里插入图片描述
su - oracle
在这里插入图片描述
在这里插入图片描述

2.4 登录全过程截图

在这里插入图片描述

三、连接第三方客户端Navicat Premium 16

3.1 ORA-12541:TNS: 无监听程序

 ORA-12541:TNS: 无监听程序

在这里插入图片描述

原因:lsnrctl 没有启动,导致监听器没有启动。
//查看lsnrctl 状态
lsnrctl status

//reload
lsnrctl reload

//启动lsnrctl,启动监听器。
lsnrctl start


//关闭lsnrctl,关闭监听器
lsnrctl stop

在这里插入图片描述
在这里插入图片描述
启动lsnrctl,启动监听器
在这里插入图片描述
启动监听器后,再次查看lsnrctl 状态
在这里插入图片描述

3.2 再次连接Navicat Premium 16

在这里插入图片描述

在这里插入图片描述

3.3 测试SELECT * FROM EMP

在这里插入图片描述

3.5 连接第三方客户端Navicat Premium 16全过程截图

在这里插入图片描述
在这里插入图片描述

3.6 关闭Oracle11g容器

Docker容器基本操作之启动-停止-重启

//1-exit退出Oracle11g容器内
eixt

//2-停止Oracle11g容器并在60s内保存其状态
docker stop -t=60 oracle11g

//3-查看正在运行的容器-若无,则表示Oracle11g容器已经成功关闭
docker ps

在这里插入图片描述
在这里插入图片描述

四、参考资料

Docker容器基本操作之启动-停止-重启
docker 安装 oracle
cannot restore segment prot after reloc: Permission denied
docker安装oracle11g史上最全步骤(带图文)
docker安装oracle11g史上最全步骤(带图文)

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

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

相关文章

【自动化运维】playbook剧本

目录 一、Ansible 的脚本 playbook 剧本1.1playbooks的组成 二、剧本编写实验2.1定义、引用变量2.2使用远程主机sudo切换用户2.3whenn条件判断2.4迭代 三、Templates 模板四、Tags模板 一、Ansible 的脚本 playbook 剧本 1.1playbooks的组成 (1)Tasks&…

Diffusion扩散模型学习2——Stable Diffusion结构解析-以文本生成图像(文生图,txt2img)为例

Diffusion扩散模型学习2——Stable Diffusion结构解析-以文本生成图像(文生图,txt2img)为例 学习前言源码下载地址网络构建一、什么是Stable Diffusion(SD)二、Stable Diffusion的组成三、生成流程1、文本编码2、采样流…

Python自动化测试----生成测试报告

如何才能让用例自动运行完之后,生成一张直观可看易懂的测试报告呢? 对于自动化测试有兴趣的朋友可以观看这个视频: 【整整200集】超超超详细的Python接口自动化测试进阶教程,真实模拟企业项目实战!! 小编使…

【Ap模块EM】09- 什么是Manifest?

先直观感受一下下面的这个服务定义: -fidl文字描述版本: arxml版本: 了解Manifest之前,我们了解一下AutoSAR是怎么开发的? AUTOSAR方法论 AUTOSAR 提供了一种开发方法论,该方法描述了从抽象系统定义一直到最终 EUC 可执行文件的流程步骤,并包含设计步骤和工作产品列…

读取application-dev.properties的中文乱码【bug】

读取application-dev.properties的中文编码【bug】 2023-7-30 22:37:46 版权 禁止其他平台发布时删除以下此话 本文首次发布于CSDN平台 作者是CSDN日星月云 博客主页是https://blog.csdn.net/qq_51625007 禁止其他平台发布时删除以上此话 bug 读取application-dev.propert…

详解Unity中的Nav Mesh|导航寻路系统 (一)

前言 在类RTS、RPG游戏中,都会提供自动寻路功能,当玩家下达指令后,NPC就会自动计算到达目标的路径,实现这种功能的方式有很多种,其中Unity本身也自带了一种导航寻路系统,该系统会将游戏场景中复杂的对象烘…

STM32入门学习之外部中断

1.STM32的IO口可以作为外部中断输入口。本文通过按键按下作为外部中断的输入,点亮LED灯。在STM32的19个外部中断中,0-15为外部IO口的中断输入口。STM32的引脚分别对应着0-15的外部中断线。比如,外部中断线0对应着GPIOA.0-GPIOG.0,…

SpaceX 摊上事?未获环境许可,星舰发射系统涉嫌违规排放污染物

马斯克“寄予厚望”的星舰SpaceX最近可能摊上事了,疑似未申请环境许可,星舰发射系统涉嫌违规排放污染物。 据报导,SpaceX可能在火焰偏转器系统方面存在环境许可问题,其在火箭发射时,可能涉及违反相关环境法规。 最近&a…

深入学习 Redis - 基于 Spring Data Redis 操作 Redis

目录 一、前置工作 1.1、引入 Spring Data Redis 依赖 1.2、编写配置文件 二、Spring Data Redis 2.1、前置知识 2.2、演示 Demo 一、前置工作 1.1、引入 Spring Data Redis 依赖 1.2、编写配置文件 spring:redis:host: 127.0.0.1port: 8888二、Spring Data Redis 2.1、…

yolo系列笔记(v4-v5)

YOLOv4 YOLOv4网络详解_哔哩哔哩_bilibili 网络结构,在Yolov3的Darknet的基础上增加了CSP结构。 CSP的优点: 加强CNN的学习能力 去除计算瓶颈。 减少显存的消耗。 结构为: 、 其实还是类似与残差网络的结构,保留下采样之前…

标准IO_格式化IO之printf函数

目录 1.可变参数原理 1.1 函数参数入栈原理 1.2 可变参数如何实现? 1.2.1 可变参数实现原理 1.2.2 固定参数有什么用? 1.2.3 va_start,va_arg,va_end如何使用? 2.printf函数实现原理 2.1 printf函数流程 2.2 printf函数格式解析原理…

WebSocket协议解析

文章目录 概要一、WS原理1.1、帧格式 二、WS实战2.1、客户端发起协议升级请求2.2、服务端响应协议升级2.3、核心事件2.4、心跳保活 三、总结 概要 项目中的IM系统是基于WebSocket做的,所以这里聊一下。 说到WS,不得不提HTTP,HTTP是基于TCP,面…

Mycat分片函数详解

Mycat新一代Mysql分布式集群,大数据处理中间件,中国第一开源软件 Checkout项目 可以用eclipse的svn插件来进行项目检出,也可以用Tortoise SVN等工具检出,由于maven(M2)中的buildnumber-maven-plugin 中的SVNkit最高支持1.7的SVN仓库,因此当你用Tortoise SVN 1.8的工具或版…

聊聊原子弹之父:奥本海默

最近诺兰的电影奥本海默即将热映,其改编自Kai Bird和 Martin J. Sherwin的 2005 年Pulitzer Prize 获奖小说:“American Prometheus: The Triumph and Tragedy of J. Robert Oppenheimer”。这本小说作者研究奥本海默25年,才得以成形,可见奥神本人身上的故事曲折和传奇。 …

MP的开发流程-2

RESTful的实现等级 0级:传统的RPC,基于SOAP的WS,调用的服务名,参数放在HTTP协议的body里面,同时必须以POST方式提交,问题在于你必须清楚的知道所有服务,子服务,及其参数的信息&…

SpringBoot环境标识设置及nacos匹配配置

本地环境标识设置 本地父类maven配置 可以看到相关的分类&#xff0c;设置环境标识主要需要用到profiles; <profiles><profile><id>dev</id><properties><!-- 环境标识&#xff0c;需要与配置文件的名称相对应 --><profiles.active&…

AX7A200教程(8): HDMI输入和输出显示1080p视频

文章目录 本章节主要将hdmi输入的1080p视频通过ddr3缓存&#xff0c;然后通过hdmi输出口输出到显示屏上显示 一&#xff0c; 突发读写命令 设置读写突发长度为64 //parameter defineparameter WRITE_LENGTH 64;parameter READ_LENGTH 64;parameter IDLE 3d0; …

SSM面试题-Spring容器的启动流程

解答: 1. BeanDefinitionReader读取配置文件(xml yml properties),创建BeanDefinition(存储bean的定义信息) 2. 配置文件读取成功后&#xff0c;将相应的配置转换成 BeanDefinition 的对象实例保存在DefaultListableBeanFactory#beanDefinitionMap 中 3. 根据配置的 BeanFacto…

fastadmin采坑之固定表格某一列

// 初始化表格table.bootstrapTable({url: $.fn.bootstrapTable.defaults.extend.index_url,pk: id,sortName: id,fixedColumns: true,fixedRightNumber: 1,columns: [[{checkbox: true},{field: id, title: __(Id)},{field: proposal_title, title: __(Proposal_title), opera…

Modbus Poll 软件----下载和安装

Modbus Poll 下载 modbus tools 官网地址&#xff1a;https://www.modbustools.com/ 步骤1 点击进入官网&#xff0c;然后点击 DOWNLOAD&#xff0c;进入下载界面。 步骤2 在下载界面&#xff0c;点击 Download 64bit &#xff0c;下载 Modbus Poll。 步骤3 下载完成 Mo…