oracle数据库有时会出现客户端连接间歇性失败,报类似如下错误:
ORA-12519, TNS:no appropriate service handler found
可能是数据库上当前的连接数目已经超过了它能够处理的最大值。
查看数据库允许的最大连接数:
代码如下 | 复制代码 |
select value from v$parameter where name = 'processes'; show parameter processes; |
查看当前的连接数:
代码如下 | 复制代码 |
select count(*) from v$process; |
v$process视图包含当前系统oracle运行的所有进程信息。常被用于将oracle或服务进程的操作系统进程ID与数据库session之间建立联系。
修改最大连接数:
代码如下 | 复制代码 |
alter system set processes = 300 scope = spfile; |
重启数据库:
代码如下 | 复制代码 |
shutdown immediate; startup; |
查看当前有哪些用户正在使用数据:
代码如下 | 复制代码 |
SELECT osuser,a.username,cpu_time/executions/1000000||'s',sql_fulltext,machine from v$session a, v$sqlarea b where a.sql_address =b.address order by cpu_time/executions desc; |
查询数据库自启动以来最大的并发数量(sessions_highwater 记录的是数据库会话曾经达到的最大值):
代码如下 | 复制代码 |
select * from v$license |
查看oracle用户数据库连接数
1、查询oracle的连接数
代码如下 | 复制代码 |
select count(*) from v$session; |
2、查询oracle的并发连接数
代码如下 | 复制代码 |
select count(*) from v$session where status='ACTIVE'; |
3、查看不同用户的连接数
代码如下 | 复制代码 |
select username,count(username) from v$session where username is not null group by username; |
4、查看所有用户:
代码如下 | 复制代码 |
select * from all_users; |
5、查看用户或角色系统权限(直接赋值给用户或角色的系统权限):
代码如下 | 复制代码 |
select * from dba_sys_privs; select * from user_sys_privs; |
6、查看角色(只能查看登陆用户拥有的角色)所包含的权限
代码如下 | 复制代码 |
select * from role_sys_privs; |
7、查看用户对象权限:
代码如下 | 复制代码 |
select * from dba_tab_privs; select * from all_tab_privs; select * from user_tab_privs; |
8、查看所有角色:
代码如下 | 复制代码 |
select * from dba_roles; |
9、查看用户或角色所拥有的角色:
代码如下 | 复制代码 |
select * from dba_role_privs; select * from user_role_privs; |
10、查看哪些用户有sysdba或sysoper系统权限(查询时需要相应权限)
代码如下 | 复制代码 |
select * from V$PWFILE_USERS; |
修改数据库允许的最大连接数:
代码如下 | 复制代码 |
alter system set processes = 300 scope = spfile; |
查看游标数量
代码如下 | 复制代码 |
Select * from v$open_cursor Where user_name='' |
查询数据库允许的最大连接数:
代码如下 | 复制代码 |
select value from v$parameter where name = 'processes'; 或者:show parameter processes; |
查询数据库允许的最大游标数:
代码如下 | 复制代码 |
select value from v$parameter where name = 'open_cursors' |
查看oracle版本
代码如下 | 复制代码 |
select banner from sys.v_$version; |
按降序显示用户"SYSTEM"为每个会话打开的游标数
代码如下 | 复制代码 |
select o.sid, osuser, machine, count(*) num_curs from v$open_cursor o, v$session s where user_name = 'SYSTEM' and o.sid=s.sid group by o.sid, osuser, machine order by num_curs desc; |