重庆分公司,新征程启航

为企业提供网站建设、域名注册、服务器等服务

oracle怎么看进程数,怎么查看oracle进程

oracle数据库怎么查看进程数?

oracle进程数查询

成都创新互联专业为企业提供温岭网站建设、温岭做网站、温岭网站设计、温岭网站制作等企业网站建设、网页设计与制作、温岭企业网站模板建站服务,十余年温岭做网站经验,不只是建网站,更提供有价值的思路和整体网络服务。

1.cmd

2.sqlplus /nolog

3.connect sys/test@test as sysdba

SQL show parameter process;

NAME                                 TYPE        VALUE

------------------------------------ ----------- -----

aq_tm_processes                      integer     0

db_writer_processes                  integer     1

gcs_server_processes                 integer     0

job_queue_processes                  integer     10

log_archive_max_processes            integer     2

processes                            integer     1000

再查进程数

SQL select count(*) from v$session;

COUNT(*)

----------

224

查看ORACLE最大进程数:

SQL select count(*) from v$session  #连接数

SQL Select count(*) from v$session where status='ACTIVE' #并发连接数

SQL show parameter processes  #最大连接

SQL alter system set processes = value scope = spfile;重启数据库  #修改连接

unix 1个用户session 对应一个操作系统 process

而 windows体现在线程

------------------------------------------------------------------------------

修改ORACLE最大进程数:

使用sys,以sysdba权限登录:

SQL show parameter processes;

NAME                                 TYPE        VALUE

------------------------------------ ----------- ------------------------------

aq_tm_processes                      integer     1

db_writer_processes                  integer     1

job_queue_processes                  integer     10

log_archive_max_processes            integer     1

processes                            integer     150

SQL alter system set processes=300 scope = spfile;

系统已更改。

SQL show parameter processes;

NAME                                 TYPE        VALUE

------------------------------------ ----------- ------------------------------

aq_tm_processes                      integer     1

db_writer_processes                  integer     1

job_queue_processes                  integer     10

log_archive_max_processes            integer     1

processes                            integer     150

SQL create pfile from spfile;

文件已创建。

重启数据库,

SQL show parameter processes;

NAME                                 TYPE        VALUE

------------------------------------ ----------- ------------------------------

aq_tm_processes                      integer     1

db_writer_processes                  integer     1

job_queue_processes                  integer     10

log_archive_max_processes            integer     1

processes                            integer     300

怎样查看oracle当前的连接数

1,查看当前会话数

SQL conn / as sysdba

已连接。

SQL select count(*) from v$session;

COUNT(*)

----------

45

注:session值=processes值*1.1+5

2,查看数据库最大进程数

SQL show parameter processes

NAME                               TYPE        VALUE

---------------------------------- ----------- ------------

aq_tm_processes                    integer     0

db_writer_processes                integer     1

gcs_server_processes               integer     0

job_queue_processes                integer     10

log_archive_max_processes          integer     2

processes                          integer     50

3,查看数据库最大会话数

SQL show parameter sessions

NAME                               TYPE        VALUE

---------------------------------- ----------- ------------

java_max_sessionspace_size         integer     0

java_soft_sessionspace_limit       integer     0

license_max_sessions               integer     0

license_sessions_warning           integer     0

logmnr_max_persistent_sessions     integer     1

sessions                           integer     60

shared_server_sessions             integer

4,修改processes和sessions值

SQL alter system set processes=300 scope=spfile;

系统已更改。

SQL alter system set sessions=300 scope=spfile;

系统已更改。

注:一般只执行第一个命令就可以,session自动更改

5,创建pfile

SQLcreate pfile from spfile;

注:如果不做此步,可能会导致更改最大连接数之后数据库不能启动现象

6,重启数据库,使更改生效

SQL shutdown immediate

SQL startup

注:shutdown normal正常关闭数据库可能会相当相当的慢呢

shutdown abort 可能会导致启动数据库时很慢。

7,查看进程数,会话数,已经修改过来了

SQL show parameter processes

NAME                                 TYPE        VALUE

------------------------------------ ----------- -----------

aq_tm_processes                      integer     0

db_writer_processes                  integer     1

gcs_server_processes                 integer     0

job_queue_processes                  integer     10

log_archive_max_processes            integer     2

processes                            integer     300

SQL show parameter sessions

NAME                                 TYPE        VALUE

------------------------------------ ----------- ------------

java_max_sessionspace_size           integer     0

java_soft_sessionspace_limit         integer     0

license_max_sessions                 integer     0

license_sessions_warning             integer     0

logmnr_max_persistent_sessions       integer     1

sessions                             integer     335

shared_server_sessions               integer

如何查找oracle进程

Oracle数据库查看一个进程是如何执行相关的实际SQL语句

SELECT b.sql_text, sid, serial#, osuser, machine

FROM v$session a, v$sqlarea b

WHERE a.sql_address = b.address;

查询前台发出的SQL语句.

select user_name,sql_text

from v$open_cursor

where sid in

(select sid from (select sid,serial#,username,program from v$session where status='ACTIVE'));

根据SPID查询session

SELECT * FROM v$session WHERE paddr IN

(SELECT addr FROM v$process WHERE spid=spid);

根据SID查询process

SELECT * FROM v$process WHERE addr IN

(SELECT paddr FROM v$session WHERE sid=sid);

DBA如何查询其他用户所进行的操作

SELECT sql_text

FROM v$sql t1, v$session t2

WHERE t1.address = t2.sql_address

AND t2.sid = sid;

根据process查询sql语句

SELECT sql_text

FROM v$sqltext a

WHERE (a.hash_value, a.address) IN (

SELECT DECODE (sql_hash_value,0, prev_hash_value,sql_hash_value ),

DECODE (sql_hash_value, 0, prev_sql_addr, sql_address)

FROM v$session b

WHERE b.paddr = (SELECT addr

FROM v$process c

WHERE c.spid = '$processID'))

ORDER BY piece ASC;

其他

执行下列命令语句

sqlplus / as sysdba EOF

create tablespace test datafile '/data/test01.dbf' size 10240M;

quit;

EOF

通过ps -ef|grep sqlplus命令得到上面所执行的命令的进程id为:12345

(1)关于v$process

执行下面的SQL是查不到相关的信息:

select * from v$process where spid='12345';

因为这个spid字段对应的并不是我们用ps命令从系统中查询到的进程id,而是这个进程执行的当前SQL的进程id,

也就是上面命令中的“create tablespace test datafile '/data/test01.dbf' size 10240M;”所对应的进程id,如果想

通过用ps命令从系统中查询到的进程id查看对应的信息,那么必须使用下面语句:

select spid,sid,process,sql_address from v$session where process='12345'

上面sql中的process就是通过ps查看的进程id,而spid就是里面的sql语句所对应的进程id。

还可以通过上面的sql_address 查看正在执行的SQL语句内容:

select sql_text from v$sqlarea s,v$session ses where s.address=ses.sql_address and ses.process='12345';

(2)关于v$session

在查询 v$session 视图的时候,我们根据command字段内部表示解码每一个字段,当我们需要快速找出他们的 Oracle 系统的内部情况时非常有用。

select

substr(s.username,1,18) username,substr(s.program,1,15) program,p.spid,s.process,

decode(s.command,

0,'No Command',

1,'Create Table',

2,'Insert',

3,'Select',

6,'Update',

7,'Delete',

9,'Create Index',

15,'Alter Table',

21,'Create View',

23,'Validate Index',

35,'Alter Database',

39,'Create Tablespace',

41,'Drop Tablespace',

40,'Alter Tablespace',

53,'Drop User',

62,'Analyze Table',

63,'Analyze Index',

s.command||': Other') command

from

v$session s,

v$process p,

v$transaction t,

v$rollstat r,

v$rollname n

where s.paddr = p.addr

and s.taddr = t.addr (+)

and t.xidusn = r.usn (+)

and r.usn = n.usn (+)

order by username

(3)几个相关的SQL

--查看系统进程对应的信息

select se.saddr,se.sid,se.serial#,p.pid,se.paddr,s.sql_id,s.sql_text

from v$session se ,v$process p, v$sqlarea s

where se.paddr=p.addr and se.sql_address=s.address and se.process='1'

and se.username is not null

--查看所有的会话

select se.username,se.saddr,se.sid,se.serial#,se.process,s.sql_id

from v$session se,v$sqlarea s

where se.sql_address=s.address

--查看会话对应的sql内容

select se.username,se.process,s.sql_text

from v$session se,v$sqlarea s

where se.sql_address=s.address and s.sql_id='1'

如何检查oracle数据库性能

这种问题要回答好要求知识比较全面。

1 从操作系统层次上看

看CPU 内存 swqp(交换分区)等使用率

2 从磁盘上看

主要看磁盘读写。可以用dd测磁盘读写的速度 也可以在业务高峰期检测磁盘的速率。

3 从数据库本身来看。

先要看数据库各个参数的值 。 如sga的大小,process的大小,redo日志的个数与大小等这些关系到性能的参数是否设置合理。

长期观察的方式就是看各个时期的AWR报告。里面有各种性能指标,以及按执行时间或资源排列的sql ,以及各种等待时间的排名。从这里面可以掌握数据库的长期的性能变化。

即时观察的方式就是利用各种sql 查询 数据库在当前时间的各个性能指标(AWR报告里面的各种指标也都是通过sql查询出来的)

还有对数据库整体的一个检查:

如 表的大小,表是否需要分区而没有分区,索引是否创建,索引是否失效,开发人员写的sql是否正确使用到了索引,频繁使用的sql是否有绑定变量,有频繁大批量增删改的表是否存在高水位。。。

额 总之,这个话题涉及的知识非常多,尽可能多的学习一些东西,祝你好运。


本文题目:oracle怎么看进程数,怎么查看oracle进程
URL链接:http://cqcxhl.com/article/hoidsg.html

其他资讯

在线咨询
服务热线
服务热线:028-86922220
TOP