In addition to Weibo, there is also WeChat
Please pay attention
WeChat public account
Shulou
2025-01-16 Update From: SLTechnology News&Howtos shulou NAV: SLTechnology News&Howtos > Database >
Share
Shulou(Shulou.com)05/31 Report--
In this issue, the editor will bring you instructions on how to carry out session and v$session. The article is rich in content and analyzes and narrates it from a professional point of view. I hope you can get something after reading this article.
1. Preface
V$session and v$process views are the most commonly used views for database management to understand system performance and analyze system reasons, so as a non-rookie DBA administrator, you need to have a full understanding of these two views.
2. Concept
You must first understand what session is: generally speaking, session is a context between the two parties from the beginning of the communication to the end of the communication. This context is a piece of memory on the server side: it records the client machine of this connection, which application is passed, which user is logging in, and so on. Session and connection are established at the same time, and they are different levels of description of the same thing. To put it simply, connection is the physical communication link between the client and the server, and session is the logical communication interaction between the user and the server.
The prerequisite for a user in oracle to log on to the oracle server is that the user has the "create session" permission of oracle. Oracle allows the same user to establish multiple connections to the server on the same client, as can be seen in oracle's view V$session [select * from sessions;]. Each session represents an interaction between the user and the server. Just like two countries can have a lot of negotiations at the same time, economic, environmental and so on. The closure of negotiations on the economy will not affect the progress of environmental negotiations. The background process PMON will test the user's connection status every once in a while. If the connection has been disconnected, PMON will clean up the site and release related resources.
1. Log in to oracle with sqlplus
This scenario is easy to understand, where a connection corresponds to a session.
two。 Other client tools log in to oracle
For example, pl/sql developer logs in to oracle. Pl/sql developer can set whether each window shares the same session. If you want to debug a stored procedure or function in the debug window, you must set it to a shared session. If set to non-shared, each time an operation window is opened, pl/sql developer uses the account and password initially entered to establish a new connection and session.
3. IIS logs in to oracle with a program
In this case, IIS is actually logging into oracle. The establishment of connection and session is related to the iis mechanism.
"for Oracle, the safe number of Sessions should be Sessions = (IIS process number) * (min pool size)."
IIS processes: in IIS6.0, a new process isolation mode is used to respond to user requests, and in IIS Manager, you can set the maximum number of processes in the application pool. For new WEB application requests, the IIS process manager starts multiple W3wp.exe to respond.
4. Java configure connection pooling
When you apply the script to configure java, you can configure the corresponding number of session, so that the corresponding session is assigned by default when the application is connected, and these session will not be cleared by PMON regardless of whether there is a connection or not, reducing database overhead.
3. Description of v$session view
All the session of the database provides the corresponding view v$session, which provides a window of query and management for all dba, so it is necessary to know the relevant information of v$session.
Column
Datatype
Description
Description
SADDR
RAW (4 | 8)
Session address
SID
NUMBER
Session identifier
Use these two values to determine the unique session
SERIAL#
NUMBER
Session serial number. Used to uniquely identify a session's objects. Guarantees that session-level commands are applied to the correct session objects if the session ends and another session begins with the same session ID.
AUDSID
NUMBER
Auditing session ID
If AUDSID=0, then it is an internally generated SYS session.
If AUDSID=UB4MAX (4294967295), then it is a direct SYS session.
PADDR
RAW (4 | 8)
Address of the process that owns the session
Process address, the addr field associated with the v$process
USER#
NUMBER
Oracle user identifier
Associate with dba_users
USERNAME
VARCHAR2 (30)
Oracle username
Same as dba_users
COMMAND
NUMBER
Command in progress (last statement parsed).
Session is executing sql id,1 on behalf of create table,3 on behalf of select
You can find the command name for any value n returned in thisCOMMAND column by running this SQL query:
SELECT command_name
FROM v$sqlcommand
WHERE command_type = n
A value of 0 in this COMMAND column means the command is not recorded in V$SESSION.
OWNERID
NUMBER
Identifier of the user who owns the migratable session; the column contents are invalid if the value is 2147483644
For operations using Parallel Slaves, interpret this value as a 4-byte value. The low-order 2 bytes represent the session number and the high-order bytes represent the instance ID of the query coordinator.
TADDR
VARCHAR2 (8)
Address of the transaction state object
The current transaction address. Can be used to associate addr fields in v$transaction
LOCKWAIT
VARCHAR2 (8)
Address of the lock the session is waiting for; NULL if none
You can use this field to query information about the lock you are currently waiting for. Sid + lockwait corresponds to sid + kaddr in v$loc.
STATUS
VARCHAR2 (8)
Status of the session:
Used to determine the status of session. Active: executing SQL statement. Inactive: wait for the operation. Killed: marked to kill
ACTIVE-Session currently executing SQL
INACTIVE-Session which is inactive and either has no configured limits or has not yet exceeded the configured limits
KILLED-Session marked to be killed
CACHED-Session temporarily cached for use by Oracle*XA
SNIPED-An inactive session that has exceeded some configured limits (for example, resource limits specified for the resource manager consumer group or idle_time specified in the user's profile). Such sessions will not be allowed to become active again.
SERVER
VARCHAR2 (9)
Server type:
Service type (general dedicated type)
DEDICATED
SHARED
PSEUDO
POOLED
NONE
SCHEMA#
NUMBER
Schema user identifier
Consistent with USER#
SCHEMANAME
VARCHAR2 (30)
Schema user name
Consistent with USERNAME
OSUSER
VARCHAR2 (30)
Operating system client user name
Client operating system user name
PROCESS
VARCHAR2 (24)
Operating system client process ID
Client process id
MACHINE
VARCHAR2 (64)
Operating system machine name
Client machine name
PORT
NUMBER
Client port number
Port number of the client
TERMINAL
VARCHAR2 (30)
Operating system terminal name
Terminal name executed by the client
PROGRAM
VARCHAR2 (48)
Operating system program name
Client application
TYPE
VARCHAR2 (10)
Session type
User process or background process. Generally speaking, background process cannot KILL
SQL_ADDRESS
RAW (4 | 8)
Used with SQL_HASH_VALUE to identify the SQL statement that is currently being executed
SQL_HASH_VALUE
NUMBER
Used with SQL_ADDRESS to identify the SQL statement that is currently being executed
SQL_ID
VARCHAR2 (13)
SQL identifier of the SQL statement that is currently being executed
The SQL statement that is currently executed, associated with v$sql
SQL_CHILD_NUMBER
NUMBER
Child number of the SQL statement that is currently being executed
SQL_EXEC_START
DATE
Time when the execution of the SQL currently executed by this session started; NULL if SQL_ID is NULL
The start time of the current sql
SQL_EXEC_ID
NUMBER
SQL execution identifier; NULL if SQL_ID is NULL or if the execution of that SQL has not yet started (see V$SQL_MONITOR)
PREV_SQL_ADDR
RAW (4 | 8)
Used with PREV_HASH_VALUE to identify the last SQL statement executed
PREV_HASH_VALUE
NUMBER
Used with SQL_HASH_VALUE to identify the last SQL statement executed
PREV_SQL_ID
VARCHAR2 (13)
SQL identifier of the last SQL statement executed
The SQL statement that has just been executed. Query the corresponding SQL statement from v$sql.
PREV_CHILD_NUMBER
NUMBER
Child number of the last SQL statement executed
PREV_EXEC_START
DATE
SQL execution start of the last executed SQL statement
PREV_EXEC_ID
NUMBER
SQL execution identifier of the last executed SQL statement
PLSQL_ENTRY_OBJECT_ID
NUMBER
Object ID of the top-most PL/SQL subprogram on the stack; NULL if there is no PL/SQL subprogram on the stack
PLSQL_ENTRY_SUBPROGRAM_ID
NUMBER
Subprogram ID of the top-most PL/SQL subprogram on the stack; NULL if there is no PL/SQL subprogram on the stack
PLSQL_OBJECT_ID
NUMBER
Object ID of the currently executing PL/SQL subprogram; NULL if executing SQL
PLSQL_SUBPROGRAM_ID
NUMBER
Subprogram ID of the currently executing PL/SQL object; NULL if executing SQL
MODULE
VARCHAR2 (48)
Name of the currently executing module as set by calling theDBMS_APPLICATION_INFO.SET_MODULE procedure
MODULE_HASH
NUMBER
Hash value of the MODULE column
ACTIONFootref 1
VARCHAR2 (32)
Name of the currently executing action as set by calling theDBMS_APPLICATION_INFO.SET_ACTION procedure
ACTION_HASH
NUMBER
Hash value of the ACTION column
CLIENT_INFO
VARCHAR2 (64)
Information set by the DBMS_APPLICATION_INFO.SET_CLIENT_INFOprocedure
FIXED_TABLE_SEQUENCE
NUMBER
This contains a number that increases every time the session completes a call to the database and there has been an intervening select from a dynamic performance table. This column can be used by performance monitors to monitor statistics in the database. Each time the performance monitor looks at the database, it only needs to look at sessions that are currently active or have a higher value in this column than the highest value that the performance monitor saw the last time. All the other sessions have been idle since the last time the performance monitor looked at the database.
ROW_WAIT_OBJ#
NUMBER
Object ID for the table containing the row specified in ROW_WAIT_ROW#
ROW_WAIT_FILE#
NUMBER
Identifier for the datafile containing the row specified inROW_WAIT_ROW#. This column is valid only if the session is currently waiting for another transaction to commit and the value ofROW_WAIT_OBJ# is not-1.
ROW_WAIT_BLOCK#
NUMBER
Identifier for the block containing the row specified in ROW_WAIT_ROW#. This column is valid only if the session is currently waiting for another transaction to commit and the value of ROW_WAIT_OBJ# is not-1.
ROW_WAIT_ROW#
NUMBER
Current row being locked. This column is valid only if the session is currently waiting for another transaction to commit and the value ofROW_WAIT_OBJ# is not-1.
TOP_LEVEL_CALL#
NUMBER
Oracle top level call number
LOGON_TIME
DATE
Time of logon
LAST_CALL_ET
NUMBER
If the session STATUS is currently ACTIVE, then the value represents the elapsed time (in seconds) since the session has become active.
If the session STATUS is currently INACTIVE, then the value represents the elapsed time (in seconds) since the session has become inactive.
PDML_ENABLED
VARCHAR2 (3)
This column has been replaced by the PDML_STATUS column
FAILOVER_TYPE
VARCHAR2 (13)
Indicates whether and to what extent transparent application failover (TAF) is enabled for the session:
NONE-Failover is disabled for this session
SESSION-Client is able to fail over its session following a disconnect
SELECT-Client is able to fail over queries in progress as well
See Also:
Oracle Database Concepts for more information on TAF
Oracle Database Net Services Administrator's Guide for information on configuring TAF
FAILOVER_METHOD
VARCHAR2 (10)
Indicates the transparent application failover method for the session:
NONE-Failover is disabled for this session
BASIC-Client itself reconnects following a disconnect
PRECONNECT-Backup instance can support all connections from every instance for which it is backed up
FAILED_OVER
VARCHAR2 (3)
Indicates whether the session is running in failover mode and failover has occurred (YES) or not (NO)
RESOURCE_CONSUMER_GROUP
VARCHAR2 (32)
Name of the session's current resource consumer group
PDML_STATUS
VARCHAR2 (8)
If ENABLED, the session is in a PARALLEL DML enabled mode. If DISABLED,PARALLEL DML enabled mode is not supported for the session. If FORCED, the session has been altered to force PARALLEL DML.
PDDL_STATUS
VARCHAR2 (8)
If ENABLED, the session is in a PARALLEL DDL enabled mode. If DISABLED,PARALLEL DDL enabled mode is not supported for the session. If FORCED, the session has been altered to force PARALLEL DDL.
PQ_STATUS
VARCHAR2 (8)
If ENABLED, the session is in a PARALLEL QUERY enabled mode. IfDISABLED, PARALLEL QUERY enabled mode is not supported for the session. If FORCED, the session has been altered to force PARALLELQUERY.
CURRENT_QUEUE_DURATION
NUMBER
If queued (1), the current amount of time the session has been queued. If not currently queued, the value is 0.
CLIENT_IDENTIFIER
VARCHAR2 (64)
Client identifier of the session
BLOCKING_SESSION_STATUS
VARCHAR2 (11)
This column provides details on whether there is a blocking session:
VALID-there is a blocking session, and it is identified in theBLOCKING_INSTANCE and BLOCKING_SESSION columns
NO HOLDER-there is no session blocking this session
NOT IN WAIT-this session is not in a wait
UNKNOWN-the blocking session is unknown
BLOCKING_INSTANCE
NUMBER
Instance identifier of the blocking session. This column is valid only ifBLOCKING_SESSION_STATUS has the value VALID.
BLOCKING_SESSION
NUMBER
Session identifier of the blocking session. This column is valid only ifBLOCKING_SESSION_STATUS has the value VALID.
FINAL_BLOCKING_SESSION_STATUS
VARCHAR2 (11)
The final blocking session is the final element in the wait chain constructed by following the sessions that are blocked by one another starting with this session. In the case of a cyclical wait chain, one of the sessions in the wait chain will be chosen as the final blocker.
This column provides details on whether there is a final blocking session:
VALID-there is a final blocking session and it is identified in theFINAL_BLOCKING_INSTANCE and FINAL_BLOCKING_SESSION columns
NO HOLDER-there is no session blocking this session
NOT IN WAIT-this session is not in a wait
UNKNOWN-the final blocking session is unknown
FINAL_BLOCKING_INSTANCE
NUMBER
Instance identifier of the final blocking session. This column is valid only ifFINAL_BLOCKING_SESSION_STATUS has the value VALID.
FINAL_BLOCKING_SESSION
NUMBER
Session identifier of the blocking session. This column is valid only ifFINAL_BLOCKING_SESSION_STATUS has the value VALID.
SEQ#
NUMBER
A number that uniquely identifies the current or last wait (incremented for each wait)
EVENT#
NUMBER
Event number
The number of the waiting event is associated with v$session_wait
EVENT
VARCHAR2 (64)
Resource or event for which the session is waiting
The interpretation of waiting events is associated with v$session_wait
See Also: Appendix C, "Oracle Wait Events"
P1TEXT
VARCHAR2 (64)
Description of the first wait event parameter
FILE_ID,BLOCK_ID,BLOCKS corresponding to DBA_EXTENTS
P1
NUMBER
First wait event parameter (in decimal)
P1RAW
RAW (8)
First wait event parameter (in hexadecimal) Foot 2
P2TEXT
VARCHAR2 (64)
Description of the second wait event parameter
P2
NUMBER
Second wait event parameter (in decimal)
P2RAW
RAW (8)
Second wait event parameter (in hexadecimal) Footref 2
P3TEXT
VARCHAR2 (64)
Description of the third wait event parameter
P3
NUMBER
Third wait event parameter (in decimal)
P3RAW
RAW (8)
Third wait event parameter (in hexadecimal) Footref 2
WAIT_CLASS_ID
NUMBER
Identifier of the class of the wait event
WAIT_CLASS#
NUMBER
Number of the class of the wait event
WAIT_CLASS
VARCHAR2 (64)
Name of the class of the wait event
WAIT_TIME
NUMBER
If the session is currently waiting, then the value is 0. If the session is not in a wait, then the value is as follows:
> 0-Value is the duration of the last wait in hundredths of a second
-1-Duration of the last wait was less than a hundredth of a second
-2-Parameter TIMED_STATISTICS was set to false
This column has been deprecated in favor of the columnsWAIT_TIME_MICRO and STATE.
SECONDS_IN_WAIT
NUMBER
If the session is currently waiting, then the value is the amount of time waited for the current wait. If the session is not in a wait, then the value is the amount of time since the start of the last wait.
This column has been deprecated in favor of the columnsWAIT_TIME_MICRO and TIME_SINCE_LAST_WAIT_MICRO.
STATE
VARCHAR2 (19)
Wait state:
WAITING-Session is currently waiting
The current session is waiting
WAITED UNKNOWN TIME-Duration of the last wait is unknown; this is the value when the parameter TIMED_STATISTICS is set to false
WAITED SHORT TIME-Last wait was less than a hundredth of a second
WAITED KNOWN TIME-Duration of the last wait is specified in theWAIT_TIME column
WAIT_TIME_MICRO
NUMBER
Amount of time waited (in microseconds). If the session is currently waiting, then the value is the time spent in the current wait. If the session is currently not in a wait, then the value is the amount of time waited in the last wait.
TIME_REMAINING_MICRO
NUMBER
Value is interpreted as follows:
> 0-Amount of time remaining for the current wait (in microseconds)
0-Current wait has timed out
-1-Session can indefinitely wait in the current wait
NULL-Session is not currently waiting
TIME_SINCE_LAST_WAIT_MICRO
NUMBER
Time elapsed since the end of the last wait (in microseconds). If the session is currently in a wait, then the value is 0.
SERVICE_NAME
VARCHAR2 (64)
Service name of the session
SQL_TRACE
VARCHAR2 (8)
Indicates whether SQL tracing is enabled (ENABLED) or disabled (DISABLED)
Whether to turn on tracking
SQL_TRACE_WAITS
VARCHAR2 (5)
Indicates whether wait tracing is enabled (TRUE) or not (FALSE)
SQL_TRACE_BINDS
VARCHAR2 (5)
Indicates whether bind tracing is enabled (TRUE) or not (FALSE)
SQL_TRACE_PLAN_STATS
VARCHAR2 (10)
Frequency at which row source statistics are dumped in the trace files for each cursor:
Never
First_execution
All_executions
SESSION_EDITION_ID
NUMBER
Shows the value that, in the session, would be reported bysys_context ('USERENV',' SESSION_EDITION_ID')
CREATOR_ADDR
RAW (4 | 8)
Address of the creating process or circuit
CREATOR_SERIAL#
NUMBER
Serial number of the creating process or circuit
ECID
VARCHAR2 (64)
Execution context identifier (sent by Application Server)
The above are just annotations of commonly used fields. If you miss them, please add them, and follow up with the deepening of the work.
4. The role of v$session in practical work.
4.1 query the session information of locked objects:
SELECT OBJECT_NAME, MACHINE, S.SID, S.SERIAL#
FROM GV$LOCKED_OBJECT L, DBA_OBJECTS O, GV$SESSION S
WHERE L.OBJECT_ID = O.OBJECT_ID AND L.SESSION_ID = S.SID
4.2 View the statements executed in the current session and session-related information:
SELECT A.SID, A.SERIAL#, A.USERNAME, A.TERMINAL, A.PROGRAM, S.SQL_TEXT
FROM V$SESSION A, V$SQLAREA S WHERE A.SQL_ADDRESS = S.ADDRESS (+)
AND A.SQL_HASH_VALUE = S.HASH_VALUE (+) ORDER BY A.USERNAME, A.SID
4.3 Kill the conversation:
ALTER SYSTEM KILL SESSION 'SID, # SERIAL'; (note that the current session tpye cannot be background)
The above is the editor for you to share how to carry out session and v$session explained, if you happen to have similar doubts, you might as well refer to the above analysis to understand. If you want to know more about it, you are welcome to follow the industry information channel.
Welcome to subscribe "Shulou Technology Information " to get latest news, interesting things and hot topics in the IT industry, and controls the hottest and latest Internet news, technology news and IT industry trends.
Views: 0
*The comments in the above article only represent the author's personal views and do not represent the views and positions of this website. If you have more insights, please feel free to contribute and share.
Continue with the installation of the previous hadoop.First, install zookooper1. Decompress zookoope
"Every 5-10 years, there's a rare product, a really special, very unusual product that's the most un
© 2024 shulou.com SLNews company. All rights reserved.