查看日志
SELECT * FROM v$diag_alert_ext
使用SQL*Plus连接到Oracle数据库。
运行以下命令来查看当前会话的日志记录:
SELECT username, os_username, machine, sql_text
FROM v$session
WHERE username IS NOT NULL;
复制代码
这将显示当前所有活动会话的用户名、操作系统用户名、机器名和执行的SQL语句。
运行以下命令来查看数据库的错误日志:
SELECT * FROM v$diag_info;
复制代码
这将显示数据库的诊断信息,包括错误日志的位置和名称。
运行以下命令来查看数据库的警告和错误日志:
SELECT * FROM v$diag_alert_ext;
复制代码
这将显示数据库的警告和错误日志的详细信息,包括日期、时间、消息和日志级别。
运行以下命令来查看数据库的跟踪文件:
SELECT * FROM v$diag_trace_file;
ORA-00020: maximum number of processes 150 exceeded
原因: 1.因为和数据库的连接超过的预设(150),所以数据库罢工了
2.应用程序在使用数据库连接池时,使用完成后没有及时关闭,或者不正常的关闭导致数据库的Process处于inactive状态
修改:
复制代码
--1.连接数据库
sqlplus 账号/密码 as sysdba
--如果无法登录,添加参数 -prelim
sqlplus -prelim 账号/密码 as sysdba
--2.查看进程数
show parameter proce
--3.修改processes
alter system set processes=500 scope=spfile;
create pfile from spfile; --重要
--4.再次查看进程数,现在已经修改为500
show parameter proce
--5.重启
shutdown immediate
startup
--6.完成
复制代码
其他:
复制代码
select count(*) from v$process --当前的连接数
select value from v$parameter where name = 'processes' --数据库允许的最大连接数
--查看当前有哪些用户正在使用数据
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;
select count(*) from v$process;
查看数据库会话的连接数:
select count(*) from v$session;
查看数据库的并发连接数:
select count(*) from v$session where status='ACTIVE';
查看数据库会话建立情况:
select sid,serial#,username,program,machine,status from v$session;
select查询数据库允许的最大连接数:
select value from v$parameter where name = 'processes'; #show parameter processes;
修改数据库允许的最大连接数:
alter system set processes = 500 scope = spfile;
(需要重启数据库才能实现连接数的修改)
重启数据库:
shutdown immediate;
startup;
查看当前有哪些用户正在使用数据:
select osuser 机器名,a.username 数据库账号,cpu_time/executions/1000000||'s' 数据库执行时间,sql_fulltext 完整SQL,machine 用户机器
from v$session a,v$sqlarea b
where a.sql_address = b.address
order by cpu_time/executions desc;