技术标签: oracle TNS oracle oracle TNS连接问题 后端部署笔记 linux ORA-12537
在偶然一次断电之后,服务器 oracle 数据库出问题了,系统可以连接,系统功能正常访问,但是数据库连接工具不能连接数据库。
笔者很久没整过 oracle,本来以为只需要开启 TNS 就行,结果是台 linux 服务器,对 linux 不熟悉,着实花了不少时间。后来经长时间排查试错(百度搜的多数不太靠谱,或者很多都是 windows 系统解决办法),终于解决问题,连接工具也能正常连接数据库。
这里记录总结一下过程,如有网友遇到类似问题可以迅速解决;另外,网友不一定跟笔者一样,把所有错误都试一遍,可以根据自己遇到的问题,找到对应的解决方法即可。
PS:如果一台服务器数据库运行好好的,突然有问题,八成重启一下就好!
系统:centos 7
网络:单位内网
oracle:oracle 18
连接工具:WinSCP(界面操作)+Putty(命令)
数据库连接工具:navicat 15
问题错误码:ORA-12537
完整问题信息:ORA-12537: TNS:connection closed
或者:ORA-12537:TNS:连接关闭
首先检查一下,是否已经开启 TNS 监听,可以通过以下命令:
# 查看运行状态
lsnrctl status;
# 关闭
lsnrctl stop;
# 启动
lsnrctl start;
如果执行命令 lsnrctl start 报错:TNS:permission denied。
注意:这里笔者就进入了第一个误区,通过百度搜索的答案,各种尝试无果!
百度的几乎都认为是 /var/tmp/.oracle 或 /tmp/.oracle 的读写权限引起的 ,而实际上,笔者服务器并没有 /tmp/.oracle 文件夹,经过尝试之后,排除了这个原因!
后来发现是登陆用户的问题,需要登录 oracle 用户才可以执行 lsnrctl start 。感谢 这位网友。
注意:这里笔者又进入了第二个误区,以为 The listener supports no services 是个错误 !
实际上,这个并不影响 TNS 监听,请不要陷入修改 tnsnames.ora、listener.ora 误区!
然而,TNS 正常启动,工具还是不能连接数据库。
可能是 oracle 文件权限问题,查看 $ORACLE_HOME/bin下的 oracle 文件权限,将所有权限选上即可。
笔者通过图形化工具操作。
首先输入命令 sqlplus.exe / as sysdba 进入数据库,然后输入命令查看进程和连接数:
# 查看进程数
show parameter processes;
# 查看连接数
show parameter sessions;
# 查看最大进程
select count(*) from v$process ; COUNT(*)
# 查看最大连接
select count(*) from v$session; COUNT(*)
修改数据库连接数:
alter system set processes=4000 scope=spfile;
alter system set sessions=5000 scope=spfile;
期间,笔者遇到错误:ORA-01012 :not logged on
原因是:最大连接数或最大线程数超了;或者是上次关闭数据库异常。笔者应该是后者。
解决办法:强制重启数据库即可。笔者使用命令:
# 首先进入数据库
# 强制关闭
shutdown abort
# 启动
startup
小结:笔者的进程数和连接数应该都没有超,但是重启 oracle 之后问题至此解决。原因可能就是断电数据库异常关闭导致的。
笔者到第三步的时候,问题其实已经解决,但是之前的过程中,进入第二个误区的时候,不小心把 sqlnet.ora 文件改了,导致出现最后一个问题:ORA-28040: No matching authentication protocol
解决办法: sqlnet.ora 中加入参数
SQLNET.ALLOWED_LOGON_VERSION_CLIENT=8
SQLNET.ALLOWED_LOGON_VERSION_SERVER=8
至此,所有遇到问题已经解决,可以正常连接数据库。
参考博客:
ORA-12537:TNS:连接关闭 错误处理
怎么进入oracle界面,进入oracle的SQL*PLUS界面
Oracle启动监听提示:The listener supports no services 的处理方法
linux中 oracle的tns,Linux中Oracle启动侦听报错TNS:permission denied的解决方法
ORA-12537: TNS:connection closed问题解决
Oracle的网络三大配置文件(sqlnet.ora、tnsnames.ora、listener.ora)
ORA-01012 :not logged on的原因及其解决办法
重启oracle的方法
ORACLE查看并修改session和连接最大数
连接数据库时报错:ORA-28040:No matching authentication protocol 解决方案
if-else语句简单的if-else语句的基本结构:语义是: 如果表达式的值为真,则执行代码块1,否则执行代码块2。多重if-else语句C语言中多重if-else语句,其结构如下:嵌套if-else语句C语言中嵌套if-else语句。嵌套if-else语句的意思,就是在if-else语句中,再写if-else语句。其一般形式为:多重循环多重循环就是在循环结构的循环体中又出现循环结构。在实际开发中一般最多用到三层重循环。因为循环层...
实验过程步骤(注意是主要关键步骤,适当文字+截图说明)、实验结果及分析一、总代码呈现#n为样本数目#m为特征数目#k为簇心数目#导入包import numpy as npimport pandas as pdimport matplotlib.pyplot as pltimport copy as cpfrom sklearn.decomposition import PCA#计算欧几里得距离def Eucl_distance(array_x,a._python 手肘法
原文出处摘要:性能测试是软件测试过程中必不可少的一项关键测试。面对复杂而繁琐的测试过程,易操作的JMeter、结合快捷录制测试脚本的Badboy,大幅度提高了测试人员对web性能测试的效率。本文通过介绍JMeter和Badboy两款软件的使用方法并结合具体案例对web软件进行性能测试,更直观和全面地反映出这两款软件的便捷性和高效性。关键词:JMeter; Badbo; 软件测试; 性能测试; w..._jmeter badboy
golang使用andlabs/ui库交叉编译成exe后运行报错报错提示:无法定位程序输入点TaskDialog于动态链接库解决办法:加入 import _ “github.com/andlabs/ui/winmanifest” 包,然后按原来的交叉编译之后就能正常运行...
psutil是一个开源且跨平台(http://code.google.com/p/psutil/)的库,能够轻松实现**获取系统运行的进程和系统利用率(包括CPU、内存、磁盘、网络等)信息。它主要应用于系统监控,分析和限制系统资源及进程的管理。它实现了同等命令行工具提供的功能,**如ps、top、lsof、netstat、ifconfig、who、df、kill、free、nice、ionice、iostat、iotop、uptime、pidof、tty、taskset、pmap等。........._psutil模块
近日,脉脉上有位程序员爆出了领导让他去帮忙加油后,加油卡的余额,真的是震惊了!余额4000多万是认真的吗?确定一辈子能加完?还是说直接绑定的银行卡?如果是银行卡的话领导还真是有钱呐!缺不缺腿上挂件?无聊的一个周末,我随便挑选了一个员工开我的车去加油站,不是为了给我的车加油,而是为了不经意间展示我加油卡的余额,员工看到余额后,开心的跳着吹着口哨回到家,炒了两个拿手好菜,倒上..._油卡系统源码
误区,antd按需加载同样是需要先安装antd,只是通过插件的配置实现不用再进行样式的引入,可以直接引用antd组件进行开发怎样判断按需加载配置成功?通过组件引用的判断,在不引入antd样式的前提下,直接引入,使用组件,看组件样式是否有效,如果生效则按需加载配置成功完成的配置流程安装antdnpm i antd --save安装babel-plugin-impor..._antd tabs 取消按需加载
SOLIDWORKS Simulation 2018引入了一种新的研究类型--拓扑研究(Topology Study),帮助设计人员和工程师能够开发出创新的最小质量的元件。 在线性静态载荷和约束的条件下,拓扑研究将从有限元网格中“移除”元素,直到达到目标质量或最好的刚度和重量的尺寸比例为止。这种元素去除的迭代过程受限于研究限制,例如最大允许挠度和任何制造控制。让我们通过一个简单的例子来深入研究_sw拓补
利用该方法去重 <script> let arr = [1,1,3,3,4,4,5] console.log([...new Set(arr)]); //打印数组[1,3,4,5] </script>_new set去重
1.这是python的语言特性,python先创建对象,在给变量赋值时,不需要定义变量的名称和类型,它实际是用变量引用对象。变量类型在给变量赋值时自动声明2.原因类似变量无须声明类型3.python用下划线作为变量前缀和后缀指定特殊变量,对解释器有特殊意义,也是内建标识符所使用的特殊符号,故一般避免用下划线作为变量的开头和结尾4.python一行可以书写多个语句,多个语句间用";"分隔。但是为了良..._python语句x,y,z=1,2,3;y,z,x=z,x,y; print(x y,z)的结果是___。
统一短沟道圆柱形围栅MOSFET紧凑模型Bastien Cousin , Marina Reyboz , Olivier Rozrau , Marie-Anne Jaud , Thimas Ernst , Jalal Jomaah摘要本文首次提出了一种适用于所有工作区域的连续的详尽的模型,该模型适用于无掺杂短沟道圆柱形围栅场效应管(GAA)。从二维分析出发,对阈值电压降低、漏致势垒降低..._mosfet的tcad模型
ji简介与其他语言相同,在python中,try/except语句主要是用于处理程序正常执行过程中出现的一些异常情况,如语法错(python作为脚本语言没有编译的环节,在执行过程中对语法进行检测,出错后发出异常消息)、数据除零错误、从未定义的变量上取值等;而try/finally语句则主要用于在无论是否发生异常情况,都需要执行一些清理工作的场合,如在通信过程中,无论通信是否发生错误,都需要..._try except异常数据是默认剔除吗