IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> Oracle数据库服务器CPU100造成应用程序异常记录 -> 正文阅读

[大数据]Oracle数据库服务器CPU100造成应用程序异常记录

前言?

本文针对Oracle的避免无解决方案,只尽量保持程序可以顺利运行。只是遇到问题的现象描述。如今很多项目的数据库即将转为mysql的国内二开数据库等其他类型的数据库。不知道以后会不会还有人用Oracle数据库。

程序背景

非记账类程序。不属于严格一致性的程序。项目遇到故障以业务优先抢通为主。故障时,对落盘要求不严格。

程序为服务端。

系统环境linux。

故障描述

运维反馈服务异常,登入利用ps查看程序正常运行,运维通过ss命令查看大量连接未被接收,说明网络连通性正常。

查日志程序除首次退出记录数据库线程僵死,利用sqlplus直接连接,发现也僵死。针对这个现象作为开发,客户端我们是可以控制阻塞和非阻塞。一般为了防止因为服务端异常僵死,我们一般采用非阻塞连接,其他环境数据库异常我们一般会获得连接超时。而这次却僵死很久。因此反馈数据库异常,运维排查数据库服务器CPU100%。

程序在线却不服务,进行源码分析。发现首次重启进行主线程连接数据库加载。因此数据库连接僵死。造成程序无法正常服务。而以前其他环境数据库异常会报道time out 无连接僵死的情况。根据程序对落盘要求不高的项目性质,提供程序进行优化方案,数据库操作脱离主线程。而数据库提供的数据进行本地备份,作为程序启动优先加载项目,保证数据库异常可以业务畅通。

针对开发经验反馈给DBA客户端配置是否有相关设置可以设置超时配置,后续暂无解决方案。自己查阅Oracle官方文档,看到的是服务端的配置项数据。反馈给DBA,暂时没有客户端的配置项。

?

官方信息和部分中文搜到的信息

?

SQLNET.RECV_TIMEOUT=3

?

SQLNET.SEND_TIMEOUT=3

https://docs.oracle.com/cd/E11882_01/network.112/e10835/sqlnet.htm#NETRF227

?

You can also set this parameter on the client-side to specify the time, in seconds, for a client to wait for response data from the database server after connection establishment. Without this parameter, the client may wait a long period of time for a response from a database server saturated with requests. If you choose to set the value, then set the value to an initial low value and adjust according to system and network capacity. If necessary, use this parameter with the SQLNET.SEND_TIMEOUT parameter

注﹕在修改sqlnet.ora文件之后重新启动监听﹐修改才能生效﹗﹗﹗
oracle网络设置主要包括三个文件,sqlnet.ora\ lisnter.ora\ tnsnames.ora
1、通过netmgr 可以配置 lisnter.ora 和 tnsnames.ora
2、lisnter.ora 为oracle服务器使用的监听器配置文件,监听器可以通过 lsnrctl 进行管理
3、tnsnames.ora 为客户端配置文件,为连接服务器的参数信息
4、sqlnet.ora 为服务端sql*net 网络配置文件,主要参数如下:

1.设置日志参数

#设置客户端和服务器端的log文件的目录

LOG_DIRECTORY_CLIENT

LOG_DIRECTORY_SERVER

#设置客户端和服务器端的log文件的名称

LOG_FILE_CLIENT

LOG_FILE_SERVER

2.设置默认的domain,会在连接中自动追加domain

NAMES.DEFAULT_DOMAIN

如设置NAMES.DEFAULT_DOMAIN=us.acme.com

使用conn scott/tiger@test连接数据库时会自动追加domain,变成conn scott/tiger@test.us.acme.com,而直接使用connscott/tiger@test.us.acme.com连接数据库则不会追加

//可以通过show parameter domain查看,一般将该参数注释掉;如果设置了该参数

//通过netmgr设置本地服务名时系统会在本地服务名后面自动追加该参数

//sql*plus访问时如果该参数存在,则会在服务名追加该参数,然后利用追加后的服务名,在tns中查找

//造成tnsping可以 但是使用sqlplus不可以的现象

3.设置客户端的命名方法和优先级(最常用的参数),可选值有tnsnames,onames,hostname,ldap等

NAMES.DIRECTORY_PATH

例如:names.directory_path =(tnsnames,onames,hostname)

//服务端的解析路径1.tnsname; 2.oname; 3.hostname

4.设置允许连入数据库的客户端版本,可选值10,9,8,7

SQLNET_ALLOWED_LOGON_VERSIONS

5.设置使用何种验证方式,可选值

none(使用用户名/密码的方式连接数据库)

all(使用所有方式的验证,包括OS验证)

nts(OS验证方式,连入OS后可以不用密码连接数据库)

SQLNET.AUTHENTICATION_SERVICES

6.设置客户端和服务器是否使用加密,可选值

accepted(如果对方设置为requested或required,则使用加密服务)

rejected(不使用加密服务,即使对方设置为requested也不使用)

requested(如果对方使用加密服务,则使用加密服务)

required(使用加密服务,如果对方没有使用则无法连接)

SQLNET.ENCRYPTION_CLIENT

SQLNET.ENCRYPTION_SERVER

#设置使用的加密算法

SQLNET.ENCRYPTION_TYPES_CLIENT

SQLNET.ENCRYPTION_TYPES_SERVER

7.设置连入数据库后必须在多长时间内完成认证(如:输入用户名/密码),超过此时间没有完成的话,数据库会断开此连接,并将客户端的IP地址和ORA-12170: TNS:Connect timeout occurred错误信息记录到sqlnet.log,而且客户端会收到ORA-12547: TNS:lost contact或ORA-12637: Packet receive failed错误信息。这个设置主要是为了防止denial-of-service攻击

SQLNET.INBOUND_CONNECT_TIMEOUT

8.设置在指定的时间间隔内必须有数据接收/发送,为了防止长时间的等待

SQLNET.RECV_TIMEOUT

SQLNET.SEND_TIMEOUT

?

?

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-05-24 18:15:37  更:2022-05-24 18:19:56 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 19:41:38-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码