Oracle中会话的状态
我们可以通过Oracle视图v$session来查看当前数据库中的所有会话信息,其中该视图有一列为status标志会话状态,Oracle官方文档对这
我们可以通过Oracle视图v$session来查看当前数据库中的所有会话信息,其中该视图有一列为status标志会话状态,Oracle官方文档对这一列定义如下
STATUS
VARCHAR2(8) Status of the session:ACTIVE - Session currently executing
INACTIVE
KILLED - Session marked to be killed
CACHED - Session temporarily cached for use by Oracle*XA
SNIPED - Session inactive, waiting on the client
通过我们遇到的都是ACTIVE,INACTIVE,KILLED三种状态
1、active 会话处于活动状态,当前session正在执行sql语句
2、inactive会话处于不活动状态,,sql语句已经执行完毕,但是由于某种原因,会话和后台进程没有释放,通过我们在sqlplus中退出和类似plsql developer工具log out或者直接退出,都是直接关闭会话,而不是将会话置于inactive状态,下面以sqlplus命令为例
[oracle@oracle11g ~]$ sqlplus / as sysdba
SQL*Plus: Release 11.2.0.1.0 Production on Thu May 23 23:09:30 2013
Copyright (c) 1982, 2009, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL> select count(*) from v$process;
COUNT(*)
----------
30
SQL>
开启另一会话窗口,查询会话数量
SQL>select count(*) from v$session;
查询结果是27个会话
我们退出之前的会话
SQL> exit
Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
[oracle@oracle11g ~]$
再次查询会话数量,结果是26。说明会话已经释放。而通常情况下inactive会话比较多的情况下是我们采用jboss,weblogic之类的中间件,建立连接池,而连接使用完毕之后并未释放连接,仍然将连接放回到连接池的情况。
我本机上采用weblogic连接池,连接到oracle,设置初始连接数量是5,我们通过查询
SQL> set linesize 150
SQL> select s.SID,s.SERIAL#,s.OSUSER,s.USERNAME,s.STATUS,s.PROGRAM from v$session s where s.STATUS='INACTIVE' and s.USERNAME='TEST';
SID SERIAL# OSUSER USERNAME STATUS PROGRAM
---------- ---------- ------------------------------ ------------------------------ -------- ------------------------------------------------
16 64 Administrator TEST INACTIVE JDBC Connect Client
21 28 Administrator TEST INACTIVE JDBC Connect Client
141 164 Administrator TEST INACTIVE JDBC Connect Client
142 93 Administrator TEST INACTIVE JDBC Connect Client
145 30 Administrator TEST INACTIVE JDBC Connect Client
由于会话的创建和释放都需要耗费一定的资源,应用端往往会通过连接池来缓存会话。如果inactive会话过多,不建议直接kill session,毕竟应用的稳定性是第一位的,可以考虑调整应用连接池的数量,或者考虑增加processes的数量。
3、killed处于此状态的会话,被标注为删除,表示出现了错误,正在回滚
当然,也是占用系统资源的。还有一点就是,killed的状态一般会持续较长时间,而且用windows下的工具pl/sql developer来kill掉,是不管用的,要用命令:alter system kill session 'sid,serial#' ; 可以通过此方式来解除死锁。

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics











Apple's latest releases of iOS18, iPadOS18 and macOS Sequoia systems have added an important feature to the Photos application, designed to help users easily recover photos and videos lost or damaged due to various reasons. The new feature introduces an album called "Recovered" in the Tools section of the Photos app that will automatically appear when a user has pictures or videos on their device that are not part of their photo library. The emergence of the "Recovered" album provides a solution for photos and videos lost due to database corruption, the camera application not saving to the photo library correctly, or a third-party application managing the photo library. Users only need a few simple steps

Hibernate polymorphic mapping can map inherited classes to the database and provides the following mapping types: joined-subclass: Create a separate table for the subclass, including all columns of the parent class. table-per-class: Create a separate table for subclasses, containing only subclass-specific columns. union-subclass: similar to joined-subclass, but the parent class table unions all subclass columns.

To handle database connection errors in PHP, you can use the following steps: Use mysqli_connect_errno() to obtain the error code. Use mysqli_connect_error() to get the error message. By capturing and logging these error messages, database connection issues can be easily identified and resolved, ensuring the smooth running of your application.

How to use MySQLi to establish a database connection in PHP: Include MySQLi extension (require_once) Create connection function (functionconnect_to_db) Call connection function ($conn=connect_to_db()) Execute query ($result=$conn->query()) Close connection ( $conn->close())

Using the database callback function in Golang can achieve: executing custom code after the specified database operation is completed. Add custom behavior through separate functions without writing additional code. Callback functions are available for insert, update, delete, and query operations. You must use the sql.Exec, sql.QueryRow, or sql.Query function to use the callback function.

JSON data can be saved into a MySQL database by using the gjson library or the json.Unmarshal function. The gjson library provides convenience methods to parse JSON fields, and the json.Unmarshal function requires a target type pointer to unmarshal JSON data. Both methods require preparing SQL statements and performing insert operations to persist the data into the database.

Through the Go standard library database/sql package, you can connect to remote databases such as MySQL, PostgreSQL or SQLite: create a connection string containing database connection information. Use the sql.Open() function to open a database connection. Perform database operations such as SQL queries and insert operations. Use defer to close the database connection to release resources.

PHP database connection guide: MySQL: Install the MySQLi extension and create a connection (servername, username, password, dbname). PostgreSQL: Install the PgSQL extension and create a connection (host, dbname, user, password). Oracle: Install the OracleOCI8 extension and create a connection (servername, username, password). Practical case: Obtain MySQL data, PostgreSQL query, OracleOCI8 update record.
