Oracle-配监听-hang-住的问题

合集下载

oracle数据库hang分析(HanganAnalyze)

oracle数据库hang分析(HanganAnalyze)

HANGANALYZE EventHANGANALYZE事件在分析系统挂住的时候很有用,尤其是会话(session)因为锁的原因挂住的时候。

用法:SQL>alter session set events 'immediate trace name HANGANALYZE level 4';Trace File:Trace file位于udump目录下,文件名可根据文件的生成时间来确定,或者用下面的脚本。

SQL>select spid from v$processwhere addr=(select paddr from v$sessionwhere sid=(select sid from v$mystatwhere rownum<2));比如例子中的文件ut12sup1_ora_14862.trc,其中14682就是spid的值。

分析:Dump file /u40/UT12SUP1/db/tech_st/10.2.0/admin/UT12SUP1_uhddb01/udump/ut12sup1_ora_14862. trcOracle Database 10g Enterprise Edition Release 10.2.0.2.0 - 64bit ProductionWith the Partitioning, OLAP and Data Mining optionsORACLE_HOME = /u40/UT12SUP1/db/tech_st/10.2.0System name: SunOSNode name: uhddb01Release: 5.10Version: Generic_118833-23Machine: sun4uInstance name: UT12SUP1Redo thread mounted by this instance: 1Oracle process number: 23Unix process pid: 14862, image: oracle@uhddb01 (TNS V1-V3)*** SERVICE NAME:(SYS$USERS) 2009-06-03 10:05:18.102*** SESSION ID:(373.3606) 2009-06-03 10:05:18.102*** 2009-06-03 10:05:18.102==============HANG ANALYSIS:==============Open chains found:会话SID=1185在等待1188Chain 1 : <cnode/sid/sess_srno/proc_ptr/ospid/wait_event> :<0/1188/1236/0xe100f590/14813/SQL*Net message from client>-- <0/1185/1177/0xe10134d0/14825/enq: TX - row lock contention>Other chains found:Chain 2 : <cnode/sid/sess_srno/proc_ptr/ospid/wait_event> :<0/336/4555/0x620134d0/14955/read by other session>Chain 3 : <cnode/sid/sess_srno/proc_ptr/ospid/wait_event> :<0/341/3637/0x62013cb8/14961/read by other session>……验证:SQL> select sid,username, status,event from v$session where sid in (1188,1185);SID USERNAME STATUS EVENT---------- ------------------------------ -------- ---------------------------------------------------------------- 1185 SYSTEM ACTIVE enq: TX - row lock contention1188 SYSTEM INACTIVE SQL*Net message from client关于HANGANALYZE Event:The level determines which processes are asked to dump an errorstack. The main levels are:10 => Dump all processes (voluminous data output, not a good idea)5 => Dump all processes involved in wait chains (can still produce a lot of output)4 => Dump leaf nodes in wait chains3 => Dump only processes thought to be in a hang situation2 => Minimal output1 => Very minimal output如果选择的level越高,除了更多的进程会包括近来外,trace的信息也会更多。

Oracle网络(监听)不通,需要检查的十一个事项

Oracle网络(监听)不通,需要检查的十一个事项

Oracle网络(监听)不通,需要检查的十一个事项重点提示:①如果能ping通,主库自己连自己和连备库都可以连得上,备库连不上主库,说明是TNS没有问题,是网络的连接出了问题,重点检查防火墙②修改过hostname,配置监听tns不成功的话,可以尝试完全关闭后重启主机,再重新连接检查。

ERROR:ORA-12543: TNS:destination host unreachableTNS报错:12543 的解决过程1、service_name错,初始化参数是从备库考过来的,所以一重启主库的服务名就变成备库的了2、网上查可能是对接口有限制,网上查2481也可作为静态监听的接口,把两边都是1526接口,变成了主库改成2481接口,后证明不是这方面的问题3、各方面设置都无误,防火墙两边都关闭,尝试重启,退出主库sqlplus时卡死,关主机,重启后,发现防火墙自动开启,关闭防火墙之后,连接正常。

怀疑是改过一次hostname主机名导致。

Oracle网络(监听)不通,需要检查的十一个事项:1、检查etc/hosts2、ping 网络看通不通3、iptables -L查看防火墙是否关闭Service iptables stop 关闭防火墙chkconfig iptalbes off 防止防火墙开机自动重启:4、检查service names,包括初始化参数中的service names5、检查SID name6、通过简单连接,检查ip地址映射是否有误,能连上说明是ip映射的问题简单连接写法:Sqlplus sys/oracle@192.168.128.128:1526/beijing as sysdba7、通过scott连接,检查口令文件是否正确8、通过授权检查口令文件grant sysdba to user;ORA-01994:授权失败:口令文件丢失或禁用。

看是否有权限,如果没有权限,说明口令文件有问题9、tnsping 如果出现字符串且无报错,说明tns正常,不是tns配置文件的问题10、检查监听里面显示的服务名、实例名,监听的端口等配置文件11、如果修改过hostname,以上方法都不能解决的,建议尝试完全关闭后重启主机,再重新检查补充:linux的防火墙一般是iptables,还有一个是selinux,要开机关闭这两个方法如下:1、开机不自动启动iptables使用命令:chkconfig iptalbes off命令2、开机不启动selinux,需要更改文件vi /etc/selinxu/config 和vi /etc/sysconfig/selinux 两个文件,将其中的SELINUX=enforcing改为SELINUX=disabled启服务器即可。

Oracle监听启动时由“监听程序不支持服务”引出的一系列问题--解决方案

Oracle监听启动时由“监听程序不支持服务”引出的一系列问题--解决方案

Oracle监听启动时由“监听程序不⽀持服务”引出的⼀系列问题--
解决⽅案
由于甲⽅服务器短缺,GB领导叫在⼀个数据库上建三个oracle实例,由于之前没尝试过这样做,故⽽在本地做了⼀下测试,新建完三个实例的时候重启监听程序,就报了“监听程序不⽀持服务”的错误(只想X狗)。

然后⽤plsql连接oracle服务端是连不上的,具体错误五花⼋门。

然后⽹上⼀顿查找,最终锁定是oracle的listerner.ora配置的不对(⾃⼰意淫是由于配置了多个实例,导致此⽂件在启动的时候不知道找哪⼀个实例了)
于是乎在listerner.ora最上边加上⼀⼩段配置,指定⼀下实例就⾏了。

然后重启⼀下监听。

⼀切正常,plsql也可以愉快的连接了。

希望有问题⼤家⼀起交流,⼀起进步,完结撒花~。

oracle_listener_详解

oracle_listener_详解

Oracle监听-提纲o ORACLE工作机制o ORACLE监听参数o ORACLE监听功能o ORACLE监听配置o ORACLE网络构架o ORACLE精简版构造o ORACLE常见问题ORACLE工作机制o从一个用户请求开始讲,ORACLE的完整的工作机制是怎样的,首先一个用户进程发出一个连接请求,如果使用的是主机命名或者是本地服务命中的主机名使用的是机器名(非IP地址),那么这个请求都会通过DNS服务器或HOST文件的服务名解析然后传送到ORACLE监听进程,监听进程接收到用户请求后会采取两种方式来处理这个用户请求o下面我们分专用服务器和共享服务器分别采用这两种方式时的情况来讲专用服务器模式o一种方式是监听进程接收到用户进程请求后,产生一个新的专用服务器进程,并且将对用户进程的所有控制信息传给此服务器进程,也就是说新建的服务器进程继承了监听进程的信息,然后服务器进程给用户进程发一个RESEND包,通知用户进程可以开始给它发信息了,用户进程给这个新建的服务器进程发一个CONNECT包,服务器进程再以ACCEPT包回应用户进程,致此,用户进程正式与服务器进程确定连接。

我们把这种连接叫做HAND-OFF连接,也叫转换连接专用服务器模式o另一种方式是监听进程接收到用户进程的请求后产生一个新的专用服务器进程,这个服务器进程选用一个TCP/IP端口来控制与用户进程的交互,然后将此信息回传给监听进程,监听进程再将此信息传给用户进程,用户进程使用这个端口给服务器进程发送一个CONNECT包,服务器进程再给用户进程发送一个ACCEPT包,致此,用户进程可以正式向服务器进程发送信息了。

这种方式我们叫做重定向连接。

专用服务器模式o另HAND-OFF连接需要系统平台具有进程继承的能力,为了使WINDOWS NT/2000支持HAND-OFF必须在HKEY_LOCAL_MACHINE>SOFTWARE>ORACLE >HOMEX中设置USE_SHARED_SOCKET 。

Oracle数据库监听配置与报错解决方法

Oracle数据库监听配置与报错解决方法

Oracle数据库监听配置与报错解决方法作者:范美卉张俊萌来源:《电脑知识与技术》2023年第24期关键词:监听日志;Oracle数据库;监听器中图分类号:TP311 文献标识码:A文章编号:1009-3044(2023)24-0073-030 引言想要使用Oracle数据库,首先需要用户与数据库建立连接,而怎么在两者之间建立连接,Oracle使用了一个叫网络服务的概念,从而客户端或者中间层的应用服务器与数据库服务器能建立连接,并能在两者之间传递数据。

在客户端,网络服务作为后台运行的进程,在数据库服务器端,网络服务则通过一个叫“监听器”的组件接收来自客户端的连接请求。

监听器(LIS⁃TENER)是位于服务器端的、独立运行的一个后台进程,运行在服务器端,但独立于数据库服务器单独运行,在数据库没有启动的时候,监听器也能独立运行。

1 Oracle 数据库监听配置Oracle监听负责监听客户端传入的连接请求,同时也负责调整服务器的连接负荷。

客户端试图连接数据库服务器时,监听器将接收到客户端的请求并将其传递给服务器进行处理。

一旦客户端与服务器建立连接,它们之后将直接进行通信,而不再需要监听器的介入,监听器将保持空闲状态。

dbca建库后一般会有默认配置好的监听,默认服务端口是1521,通常一个库一个监听就足够,但如果需要处理大量并发请求数,就可能需要配置多个监听,非默认监听的端口号设置成大于1024,不同监听之间服务名和端口号不能一样[1]。

配置监听器有两种方法。

1.1 通过图形界面工具Net Manager如图1所示,选中图中的Oracle Net配置下的本地树形目录中的监听程序项,再点击左侧绿色的“+”按钮添加监听程序,点击监听程序目录,新加的监听器名称默认为LISTENER。

选中该名称,窗口右侧栏的下拉选项中含有四个选项:一般参数、监听位置、数据库服务、其他服务,选中“监听位置”,点击添加地址按钮。

在出现的网络地址栏的协议下拉选项中选中“TCP/IP”,主机文本框中输入主机名称或IP地址(如果主机即用作服务端也作为客户端,输入两项之一均有效;如果主机作为服务端并需要通过网络连接,建议输入IP地址),端口文本框中输入数字端口,默认是1521,也可以自定义任意有效数字端口[2]。

Oracle数据库监听配置浅析与故障定位

Oracle数据库监听配置浅析与故障定位

Oracle数据库监听配置浅析与故障定位作者:弓晓波来源:《电脑知识与技术》2020年第20期摘要:Oracle數据库作为市场占比最高的商业数据库,该系统功能强大,同时也具有一定的复杂性,Oracle的监听服务是客户端连接到数据库的必经之路,远程客户端进程只有通过服务端的监听认证、转发才能连接到数据库。

本文首先分析了Oracle监听服务的工作模式,在此基础上分别研究了通过配置工具与配置文件实现Oracle客户端与Oracle服务器连接的方法,最后以常见的两例客户端连接故障为例,分析故障的原因并给出了故障解决方法。

关键词:Oracle数据库;监听服务;故障解决中图分类号:TP393 文献标识码:A文章编号:1009-3044(2020)20-0040-021引言Oracle数据库是甲骨文公司的关系数据库管理系统,它在数据库领域一直处于领先的地位,可以说Oracle数据库系统是目前世界上最流行的关系数据库管理系统,系统移植性好、使用方便、功能强大,适用于各类大、中、小、微机环境[1]。

它是一种高效率、可靠性好、适应高吞吐量的数据库方案,是各个领域企业级开发的首选。

Oracle是C/S(客户端/服务器)结构的数据库系统,其主要由客户端应用程序和数据库服务器进程组成。

这种结构的优点是可将大量的数据处理工作在客户端完成,减少服务器的负载与网络通信的负载需求,但同时由于在客户端与服务器之间的通信,使得系统在远程认证与连接方面有一定的复杂性,在用户使用过程中,客户端的连接问题成为一个高发率的故障点[2]。

本文阐述了Oracle数据库的监听服务工作模式及几种配置方法,并以常见的两例客户端连接故障为例,分析了故障的原因,给出了故障解决方法。

2Oracle通信方式Oracle的客户端与服务端之间有两种通信方式,进程通信与网络通信,进程通信只适用于客户端与服务端位于同一服务器,当客户端和服务端位于不同的服务器上,只可采用网络通信的方式。

oracle监听启动、停止、查看命令

oracle监听启动、停止、查看命令

oracle监听启动、停⽌、查看命令1.su oracle然后启动监听器1.lsnrctl start会看到启动成功的界⾯;1.lsnrctl stop停⽌监听器命令.1.lsnrctl status查看监听器命令.oracle数据库的安全包含两部分:1.⼀部分是os的安全2.⽹络的安全3.oracle软件本⾝的安全os的安全依赖相应的操作系统及管理员的技术⽔平,我们这⾥只谈谈oracle的安全我了解的oracle软件的安全包含:1.更改oracle的默认监听端⼝号2.给监听器加密码3.oracle控制ip的连接下⾯将针对这三个⽅⾯测试学习---------oracle默认监听端⼝更改--------------1. 更改oracle的默认监听端⼝号修改端⼝号的整体步骤1.1 。

查看当前监听的状态1.2 。

停⽌监听1.3 。

修改监听⽂件的端⼝号1.4 。

修改初始化参数local_listener1.5 . 重启监听器1.6 。

修改完毕,使⽤新端⼝登录测试实践步骤:1.1 。

查看当前监听的状态C:/Documents and Settings/skate_db>lsnrctl statusLSNRCTL for 32-bit Windows: Version 10.2.0.1.0 - Production on 19-7⽉ -2008 12:11:19Copyright (c) 1991, 2005, Oracle. All rights reserved.正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1)))LISTENER 的 STATUS------------------------别名 LISTENER版本 TNSLSNR for 32-bit Windows: Version 10.2.0.1.0 - Production启动⽇期 19-7⽉ -2008 11:47:59正常运⾏时间 0 天 0 ⼩时 23 分 19 秒跟踪级别 off安全性 ON: Password or Local OS AuthenticationSNMP OFF监听程序参数⽂件 E:/oracle/product/10.2.0/db_3/network/admin/listener.ora监听程序⽇志⽂件 E:/oracle/product/10.2.0/db_3/network/log/listener.log监听端点概要...(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=//./pipe/EXTPROC1ipc))) (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=skate)(PORT=1522)))服务摘要..服务 "PLSExtProc" 包含 1 个例程。

Oracle数据库教程 ——oracle僵死会话锁住buffer,导致数据库hang住

Oracle数据库教程 ——oracle僵死会话锁住buffer,导致数据库hang住

Oracle数据库教程——oracle僵死会话锁住buffer,导致数据库hang住1、问题描述今天早上,现数据库有点异常,通过hanganalyze分析,使用hanganalyze请参阅《数据库hang 住,分析处理》,发现2172这个会话产生了enqueue阻塞,,导到程序运行非常缓慢,快到hang住的地步,开启会话窗口查询SQL> select a.sid,a.serial#,b.spid,a.status,a.machine,a.program from v$session a,v$process b 2 where a.paddr = b.addr and a.sid = 2172SID SERIAL#SPID STATUS MACHINEPROGRAM---------- ---------- ------------ -------- ----------------------------------- ----------- 2172 51610 12649312 ACTIVE JDBC Thin Client由于这个会话产生了阻塞,首先我想到了直接查杀。

SQL> alter system kill session '2172,51610';alter system kill session '2172,51610'*ERROR at line 1:ORA-00030: User session ID does not exist.发现,提示这个会话不存在。

2、问题分析于是,我尝试从操作系统上面查询这个进程[oracle@mydbtest:/oracle]$kill -9 12649312kill: 13304684: 0403-003 The specified process does not exist.从操作系统上,显示没有这个进程,所以,初步判断,会话存在,由于某些意外产生,导致该会话的进程被操作系统清理掉了,但其在oracle的sga仍然占有资源没有被pmon\smon清理掉,未能释放,导致其它进程无法使用,进而产生阻塞。

ORACLE启动监听失败

ORACLE启动监听失败
解决方法:
SQL> startup
ORACLE例程已经启动。
Total System Global Area 135338868 bytes
Fixed Size 453492 bytes
Variable Size 109051904 bytes
Database Buffers 25165824 bytes
)
)
)
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = /home/oracle/oracle10g)
(PROGRAM = extproc)
)
(SID_DESC =
(GLOBAL_DBNAME = zxin)
ff02::3 ipv6-allhosts
192.168.1.105linux-3gb//linux-3gb为主机名
3.查看/home/oracle/oracle10g/network/admin/listener.ora下的hostname
linux-3gb:~ # cat /home/oracle/oracle10g/network/admin/listener.ora
ORACLE启动监听失败?
1.查看主机名字:uname–n或hostname,修改主机名字命令:hostname主机名
linux-3gb:~ # uname -n
linux-3gb//此为主机名
2.查看/etc/hosts下hostname名字
linux-3gb:~ # cat /etc/hosts
你可以在.bashrc里面加进:

Oracle监听器日志配置与管理

Oracle监听器日志配置与管理

Oracle监听器⽇志配置与管理--========================-- Oracle 监听器⽇志配置与管理--========================Oracle 监听器是⼀个服务器端程序,⽤于监听所有来⾃客户端的请求,并为其提供数据库服务。

因此对监听器的管理与维护相当重要。

本⽂主要描述对Oracle监听器⽇志⽂件的配置与管理。

有关监听器的描述请参考⼀、监听器⽇志特性1. 监听器⽇志是⼀个纯⽂本⽂件,通常位于$ORACLE_HOME/network/log⽬录下,与sqlnet.log⽇志⽂件处于同⼀路径2. 其缺省的⽂件名为listener.log。

对于⾮缺省的监听器,则产⽣的⽇志⽂件通常为listenername.log3. 该⽂件缺省由监听器⾃动创建,当⽇志⽂件丢失时或不存在时,会⾃动重新创建⼀个同名的⽂件,与alert_<SID>.log⽂件类似4. 该⽂件的尺⼨会不断⾃动增长,当尺⼨过⼤时或不便于阅读时,考虑将其备份5. Oracle监听器在运⾏时不允许对⽇志⽂件做删除,重命名操作6. 可以设置⽇志状态为ON或OFF来实现启⽤或关闭⽇志⼆、设置⽇志⽂件⽬录及路径1. 设置⽇志⽂件⽬录的两种⽅法1. lsnrctl SET LOG_DIRECTORY directory2. LSNRCTL> SET LOG_DIRECTORY /usr/oracle/admin/log2. 设置⽇志⽂件的两种⽅法1. lsnrctl SET LOG_FILE file_name2. LSNRCTL> SET LOG_FILE file_name3. 设置⽇志的状态1. lsnrctl ET LOG_STATUS {on | off}2. LSNRCTL> SET LOG_STATUS {on | off}4. 演⽰设置a. 切换到⽇志⽬录查看⽇志⽂件1. [oracle@test ~]$ cd $ORACLE_HOME/network/log2. [oracle@test log]$ ls -hltr3. total 348K4. -rw-r--r-- 1 oracle oinstall 305K Apr 6 05:30 listener.log5. -rw-r--r-- 1 oracle oinstall 26K Jun 27 01:52 listener_demo92.logb. 查看当前监听器的状态1. [oracle@test log]$ lsnrctl status listener_demo922. LSNRCTL for Linux: Version 9.2.0.8.0 - Production on 27-JUN-2011 01:54:313. Copyright (c) 1991, 2006, Oracle Corporation. All rights reserved.4. Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=test)(PORT=1521)))5. STATUS of the LISTENER6. ------------------------7. Alias listener_demo928. Version TNSLSNR for Linux: Version 9.2.0.8.0 - Production9. Start Date 27-JUN-2011 01:52:1810. Uptime 0 days 0 hr. 2 min. 13 sec11. Trace Level off12. Security ON13. SNMP OFF14. Listener Parameter File /oracle/92/network/admin/listener.ora15. Listener Log File /oracle/92/network/log/listener_demo92.log16. Listening Endpoints Summary...17. (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=test)(PORT=1521)))18. (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC)))19. Services Summary...20. Service "demo92" has 1 instance(s).21. Instance "demo92", status READY, has 1 handler(s) for this service...22. The command completed successfullyc. 设置监听器⽬录及⽇志⽂件1. LSNRCTL> set current_listener listener_demo922. Current Listener is listener_demo923. LSNRCTL> set password4. Password:5. The command completed successfully6. LSNRCTL> set log_directory /home/oracle/log7. Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=test)(PORT=1521)))8. listener_demo92 parameter "log_directory" set to /home/oracle/log9. The command completed successfully10. LSNRCTL> set log_file listener_test.log11. Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=test)(PORT=1521)))12. listener_demo92 parameter "log_file" set to listener_test.log13. The command completed successfully14. LSNRCTL> set log_status on15. Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=test)(PORT=1521)))16. listener_demo92 parameter "log_status" set to ON17. The command completed successfully18. LSNRCTL> save_config19. Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=test)(PORT=1521)))20. Saved listener_demo92 configuration parameters.21. Listener Parameter File /oracle/92/network/admin/listener.ora22. Old Parameter File /oracle/92/network/admin/listener.bak23. The command completed successfully24. LSNRCTL> exitd. 查看新路径下产⽣的⽇志⽂件1. [oracle@test admin]$ cd /home/oracle/log2. [oracle@test log]$ ls -hltr3. total 16K4. -rw-r--r-- 1 oracle oinstall 41 Jun 27 02:11 listener_demo92.log -->设置⽬录之后⽣成的5. -rw-r--r-- 1 oracle oinstall 113 Jun 27 02:12 listener_test.log -->设置⽇志⽂件名之后的新⽇志⽂件6. [oracle@test log]$ ls -hltr -->隔段时间查看,原来的⽇志⽂件不再增长,使⽤设定的⽇志⽂件名记录⽇志7. total 16K8. -rw-r--r-- 1 oracle oinstall 41 Jun 27 02:11 listener_demo92.log9. -rw-r--r-- 1 oracle oinstall 1.3K Jun 27 02:17 listener_test.loge. 查看listener.ora配置⽂件的变化1. [oracle@test admin]$ more listener.ora2. #----ADDED BY TNSLSNR 27-JUN-2011 02:12:37---3. LOG_DIRECTORY_listener_demo92 = /home/oracle/log4. LOG_FILE_listener_demo92 = listener_test.log5. LOGGING_listener_demo92 = ON6. #--------------------------------------------三、⽇志⽂件的备份与重命名通常情况下,需要停⽌监听器来对⽇志⽂件进⾏备份,下⾯使⽤不停⽌监听的情况下对⽇志⽂件重命名以实现备份 1. Windows平台的处理1. C:\>cd \oracle\ora92\network\log -->切换到监听器⽇志⽂件所在⽬录2. C:\oracle\ora92\network\log> lsnrctl set log_status off -->暂停或脱机记录⽇志⽂件3. C:\oracle\ora92\network\log> rename listener.log listener.old -->重命名⽇志⽂件,⼀般加上⽇期4. C:\oracle\ora92\network\log> lsnrctl set log_status on -->联机监听器⽇志⽂件,会⾃动重新创建⼀个新的⽇志⽂件2. Unix/Linux平台的处理1. $ lsnrctl set log_status off2. $ mv listener.log listener.old -->另⼀种⽅法,cp listener.log /log/bak/. 然后 cp /dev/null >listener.log3. $ lsnrctl set log_status on3. 演⽰Linux平台下重命名⽇志⽂件1. [oracle@test ~]$ cd /home/oracle/log2. [oracle@test log]$ lsnrctl set log_status off -->如果存在密码,应使⽤LSNRCTL界⾯来完成3. LSNRCTL for Linux: Version 9.2.0.8.0 - Production on 27-JUN-2011 02:41:094. Copyright (c) 1991, 2006, Oracle Corporation. All rights reserved.5. Connecting to (ADDRESS=(PROTOCOL=tcp)(PORT=1521))6. LISTENER parameter "log_status" set to OFF7. The command completed successfully8. [oracle@test log]$ mv listener_test.log listener_test.old9. [oracle@test log]$ lsnrctl set log_status on10. LSNRCTL for Linux: Version 9.2.0.8.0 - Production on 27-JUN-2011 02:41:3111. Copyright (c) 1991, 2006, Oracle Corporation. All rights reserved.12. Connecting to (ADDRESS=(PROTOCOL=tcp)(PORT=1521))13. LISTENER parameter "log_status" set to ON。

通过oracle 监听器日志 分析数据库服务器是否安全

通过oracle 监听器日志 分析数据库服务器是否安全
通过oracle 监听器日志 分析数据库服务器是否安全
----------------通过oracle 监听器日志 分析挖掘 连接数据库服务器的IP
by liangwg 2012-01-06
数据库的审计很重要,如果每次登录都实时记录用户行为,会对系统性能造成很大的影响,但如果不做记录分析,又担心数据库的安全:
BEGIN
SYS.DBMS_JOB.REMOVE(94);
COMMIT;
END;
/
DECLARE
X NUMBER;
BEGIN
SYS.DBMS_JOB.SUBMIT
( job => X
,what => 'ADMIN.PRO_MONTOR_IP;'
delete from lsn_log_detail_tmp nologging;
insert into lsn_log_detail_tmp
select substr(text,1,20) as create_time,
substr(text,instr(text,'(ADDRESS=(PROTOCOL=tcp)(HOST=')+29,instr(text,')(PORT=')-instr(text,'(ADDRESS=(PROTOCOL=tcp)(HOST=')-29) as IP
)
REJECT LIMIT UNLIMITED
NOPARALLEL
NOMONITORING;
----------------------------统计表:ip , 连接DB 的次数 -------------------------

Oracle数据库无响应故障处理方式

Oracle数据库无响应故障处理方式

Oracle数据库无响应故障处理方式无响应的故障现象一般有以下几种:1.Oracle的进程在等待某个资源或事件这种现象一般可以从V$SESSION_WAT、V$LATCH、V$LATCHHOLDER等动态视图中检查进程正在等待的资源或事件,而被等待的资源或事件,一直都不能被获取,甚至是很长时间都不可获得。

如果这个正在等待的进程持有了其他的资源,则会引起其他的进程等待,这样就很可能引起实例中大范围的会话发生等待。

由于进程在等待资源或事件时,通常都处于SLEEP状态,消耗的CPU资源非常少(在等待latch时要稍微多消耗一些CPU资源),所以从OS来看,CPU的消耗并不高,甚至是非常低。

这种因为等待而引起的个别进程Hang,相对比较容易处理。

2. OracleProcess Spins所谓Spin,就是指Oracle进程中的代码在执行某个过程时,陷入了循环。

在V$SESSION视图中,往往可以看到Hang住的会话,一直处于“ACTIVE”状态。

对于这样的会话,用“alter system kill session ‘sid,serial#’”命令也不能完全断开会话,会话只能被标记为“killed”,会话会继续消耗大量的CPU。

进程Spins由于是在做循环,CPU的消耗非常大,从OS上明显可以看到这样的进程,通常会消耗整个CPU的资源。

而对于这样的Hang住的会话,处理起来相对比较复杂,并且为了从根本上解决问题,需要超过DBA日常维护所需要的技能。

从故障范围来看,无响应故障可以分为以下几种情况:1. 单个或部分会话(进程)Hang住这种情况属于小范围的故障,业务影响相对较小,一般来说只会影响业务系统的个别模块。

在一个多应用系统的数据库上面,如果Hang住的会话比较多,则影响的可能是其中的一个应用系统。

这里有一个例外,如果Hang住的进程是系统后台进程,如pmon、smon等,则影响的范围就非常大了,最终甚至会影响整个数据库及所有应用系统。

ORACLE监听

ORACLE监听

ORACLE监听今天来学习⼀下监听的相关内容,昨晚被⽼⼤问了两个关于监听很简单的问题,但是却吞吞吐吐回答,⽽且有⼀个问题还答错了,刚刚查了下资料,才发现“驴头对了马嘴”,哭笑不得。

⼀、监听(listener)是什么监听器是Oracle基于服务器端的⼀种⽹络服务,主要⽤于监听客户端向数据库服务器端提出的连接请求。

既然是基于服务器端的服务,那么它也只存在于数据库服务器端,进⾏监听器的设置也是在数据库服务器端完成的。

oracle⽹络配置有三个配置⽂件 listener.ora,tnsnames.ora,sqlnet.ora,其⽬录均在$ORACLE_HOME/network/admin 。

Oracle客户端与服务器端的连接是通过客户端发出连接请求,由服务器端监听器对客户端连接请求进⾏合法检查,如果连接请求有效,则进⾏连接,否则拒绝该连接。

⼆、如何配置监听1)listener.ora 主要负责服务器端的监听配置,配置的基本模板:# listener.ora Network Configuration File: /home/oracle/app/product/11/db/network/admin/listener.ora# Generated by Oracle configuration tools.LISTENER_ORA = (注:LISTENER_ORA 为监听名字)(DESCRIPTION_LIST =(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = 12.1.4.5)(PORT = 1521))))SID_LIST_LISTENER_ORA = (注:LISTENER_ORA 为监听名字)(SID_LIST =(SID_DESC =(GLOBAL_DBNAME = wsj)(ORACLE_HOME = /home/oracle/app/product/11/db)(SID_NAME = wsj)))ADR_BASE_LISTENER = /oracle/app/oracle其中:PROTOCOL指的是监听接收链接的协议;HOST是指的监听运⾏的主机或者IP地址;PORT指的是监听运⾏的端⼝;SID_NAME指的是监听服务的实例名;GLOBAL_NAME指的是监听服务的服务名;ORACLE_HOME指的是监听服务的$ORACLE_HOME。

Oracle 10.2.0.1 数据库hang住 Bug 4612267

Oracle 10.2.0.1 数据库hang住 Bug 4612267

Oracle 10.2.0.1 数据库hang住Bug 4612267分类:Oracle 故障解决案例2011-07-08 11:28 132人阅读评论(0) 收藏举报一. Bug问题表现CPU使用率100%,vmstat 显示有大量等待运行的进程,有大量的上下文切换。

sqlplus 和lsnrctl 命令无效。

数据基本是hang住了。

啥都不能用。

该bug 存在与Oracle 10.2.0.1.1.1 Top 显示top - 04:46:06 up198 days, 22:05, 5 users, load average: 16.20, 16.63, 21.22tasks: 112 total, 19 running, 93 sleeping, 0 stopped, 0 zombiecpu(s): 26.3%us, 73.0%sy, 0.0%ni, 0.6%id, 0.0%wa, 0.0%hi, 0.1%si, 0.0%stmem: 4026344k total, 3255488kused, 770856k free, 279252k buffersswap: 4192924k total, 369088kused, 3823836k free, 2835992k cached结合网上google的结果,该bug 对cpu 表现是。

用户使用30%左右,系统使用70%。

系统启动198天,会触发这个bug。

解决这个问题一是升级数据库,二是定期重启操作系统。

Linux Top 命令详解/tianlesoftware/article/details/61977831.2 vmstat 命令[root@localhost ~]# vmstat 2procs -----------memory---------- ---swap-------io---- --system-- -----cpu------r b swpd free buff cache si so bi bo in cs us sy id wa st36 0 369092 503308 2481042815564 1 1 31 5 0 0 1 1 97 1 036 0 369092 503308 2481042815600 0 0 0 10 1047 237 26 74 0 0 038 0 369092 503308 2481042815600 0 0 0 0 1045 232 25 75 0 0 0...--这里r 表示等待运行的进行,一般小于cpu的个数。

Oracle密码延迟验证导致的系统HANG住

Oracle密码延迟验证导致的系统HANG住

Oracle密码延迟验证导致的系统HANG住问题现象:更改密码后,每次连接异常慢,就算用正确的密码连接,验证延时也非常大,导致应用程序连接反复出现超时现象;问题分析:经查实,这是由于11G的延迟密码特性引起,特别在一些自动连接特性的应用来说,如果密码认证错误,会一直累积密码验证时间,导致后面的正确验证也异常超时,这种问题一般发生在修改应用账户密码后,应用服务器没有及时更新数据库连接信息导致。

解决方案:如果需要修改应用账户密码,需要提前确定好那些应用服务器需要更改连接信息,需提前准备好相应的脚本,如应用太多,需要在更改后作出相应的监控措施,如:检查数据库登录日志dba_audit_session,可以查出登录失败的主机和应用,通知架构负责人及时调整:Select *From Dba_Audit_SessionWhere User_Name = ’mbs7_Oms’And Action_Name = ’logon’And Timestamp BetweenTo_Date('2020-12-03 1:00:00', 'yyyy-mm-dd hh24:mi:ss') AndTo_Date('2020-12-03 2:10:00', 'yyyy-mm-dd hh24:mi:ss')Order By Sample_Time Desc如处理不及时,导致用户被延迟认证特性阻塞,可用以下脚本在异常节点批量查杀远程连接进程的办法解决,脚本如下:ps -ef | grep LOCAL=NO | awk '{print $2}' | xargs kill -9这里注意的是:查杀的同时要通知架构人员尽快清理连接缓存,另外注意查杀后,对于一些正常的连接进程要手工重新启动,如审计库的远程连接进程等。

当然这个特性也可以设置屏蔽,通过设置EVENTS 28401可以屏蔽密码延迟验证:The event can be set as follows:SQL> alter system set event =“28401 TRACE NAME CONTEXT FOREVER, LEVEL 1” scope=spfile;设置该事件后重启数据库即可。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /u01/app/oracle/product/10.2.0/db_1/network/admin/listener.ora
Listener Log File /u01/app/oracle/product/10.2.0/db_1/network/log/listener.log
Trace information written to /u01/app/oracle/product/10.2.0/db_1/network/trace/listener.trc
Trace level is currently 0
Started with pid=29938
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.6.1)(PORT=1521)))
[oracle@dg1 ~]$
[root@dg1 ~]#
因为系统是默认安装的,没有注意这个问题。 将IP改成过来后,在次配置监听。 一切ok。
[oracle@dg1 ~]$ cat /etc/hosts
# Do not remove the following line, or various programs
# that require network functionality will fail.
Copyright (c) 1991, 2005, Oracle. All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=dg1)(PORT=1521)))
STATUS of the LISTENER
Oracle 配监听 hang 住的问题Oracle 配监听 hang 住的问题
做Oracle Data Guard 的实验。 2个节点,一个节点配置监听没有问题。 在另一个节点。 执行任何与监听有关的命令都是hang住。如:lsnrctl stop/start/status, 还有就是运行netmgr和netca的时候。 表现在命令没有反应。
------------------------
Alias LISTENER
Version TNSLSNR for Linux: Version 10.2.0.1.0 - Production
Start Date 05-NOV-2010 02:13:26
Uptime 0 days 0 hr. 1 min. 56 sec
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=dg1)(PORT=1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC0)))
Services Summary...
127.0.0.1 localhost.localdomain localhost
::1 localhost6.localdomain6 localhost6
192.168.6.1 dg1
[oracle@dg1 ~]$ lsnrctl status
LSNRCTL for Linux: Version 10.2.0.1.0 - Production on 05-NOV-2010 02:15:21
Service "PLSExtProc" has 1 instance(s).
Instance "PLSExtProc", status UNKNOWN, has 1 handler(s) for this service...
The command completed successfully
127.0.0.1 localhost.localdomain localhost
::1 localhost6.localdomain6 localhost6
60.191.124.236 dg1
[root@dg1 ~]# ifconfig eth0
eth0 Link encap:Ethernet HWaddr 00:0C:29:97:A2:2E
inet addr:192.168.6.1 Bcast:192.168.6.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fe97:a22e/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
[oracle@dg1 log]$ cat listener.log
TNSLSNR for Linux: Version 10.2.0.1.0 - Production on 05-NOV-2010 00:39:45
Copyright (c) 1991, 2005, Oracle. All rights reserved.
[oracle@dg1 log]$
最终的问题还是出在/etc/hosts 文件上.
[root@dg1 ~]# cat /etc/hosts
# Do not remove the following line, or various programs
# that require network functionality will fail.
Listener completed notification to CRS on start
TIMESTAMP * CONNECT DATA [* PROTOCOL INFO] * EVENT [* SID] * RETURN CODE
05-NOV-2010 00:42:55 * ping * 0
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=dg1)(PORT=1521)))
[oracle@dg1 network]$ lsnrctl stop
LSNRCTL for Linux: Version 10.2.0.1.0 - Production on 05-NOV-2010 01:21:18
[root@dg1 ~]# netstat -anp| grep 1521
[root@dg1 ~]#
端口正常。
Log也没有什么有用的信息:
[oracle@dg1 ~]$ cd $ORACLE_HOME/network/admin
[oracle@dg1 admin]$ ls
listener.ora samples shrept.lst sqlnet.ora tnsnames.ora
RX packets:12249 errors:0 dropped:0 overruns:0 frame:0
TX packets:54 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:1832733 (1.7 MiB) TX bytes:10202 (9.9 KiB)
System parameter file is /u01/app/oracle/product/10.2.0/db_1/network/admin/listener.ora
Log messages written to /u01/app/oracle/product/10.2.0/db_1/network/log/listener.log
[oracle@dg1 network]$ lsnrctl status
LSNRCTL for Linux: Version 10.2.0.1.0 - Production on 05-NOV-2010 01:21:01
Copyright (c) 1991, 2005, Oracle. All rights reserved.
[oracle@dg1 admin]$ cd ..
[oracle@dg1 network]$ ls
admin doc install jlib lib log mesg tools trace
[oracle@dg1 network]$ cd log
[oracle@dg1 log]$ ls Байду номын сангаас
listener.log sqlnet.log
Copyright (c) 1991, 2005, Oracle. All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=dg1)(PORT=1521)))
开始以为是1521 端口被占用了。 查看了端口正常:
相关文档
最新文档