Oracle数据库连接数设置过大

今天做项目时,数据库老挂,查了一下发现是最大会话数已经达到极限了。

总结在日常中查看数据库连接情况的语句,供参看
1.
select count(*) from v$process
select count(*) from v$process where program=‘Oracle.EXE(SHAD)’; --当前的数据库连接数
2.
select value from v$parameter where name ='processes'--数据库允许的最大连接数
3.
alter system set processes = 300 scope = spfile;--修改最大连接数:
4.
shutdown immediate;
startup;--重启数据库
5.
SELECT osuser, a.username,cpu_time/executions/1000000||'s',b.sql_text,machine
from v$session a, v$sqlarea b
where a.sql_address =b.address order by cpu_time/executionsdesc;
--查看当前有哪些用户正在使用数据
6.
select count(*) from v$session --当前的session连接数
7.
select count(*) from v$session where status='ACTIVE' --并发连接数
8.
show parameter processes --最大连接

然后修改了一下最大会话数。。。然后宕机了。。。

提示监听未找到。。经查询。是设置的连接数太大。。导致内存不足。。监听程序没问题,但实例启动不了。

修改配置文件即可。
1) sqlplus / as sysdba
2) create pfile='d:\pfile.ora' from spfile;
3) 修改d:\pfile.ora中的*.processes参数,比如改成*.processes=200
4)create spfile from pfile='d:\pfile.ora';
5)startup

sqlplus连接的三种方式

sys用户在cmd下以DBA身份登陆:

扫描二维码关注公众号,回复: 2826233 查看本文章

   sqlplus /nolog   
   
--运行sqlplus命令,进入sqlplus环境。其中/nolog是不登陆到数据库服务器的意思,如果没有/nolog参数,sqlplus会提示你输入用户名和密码

SQL〉connect / as sysdba   

--以系统管理员(sysdba)身份连接数据库,如果需要对数据库进行管理操作,那么需要以这种方式登陆数据库,或者:

connect sys@service_name as sysdba
--其中service_name是你配置的客户tnsname服务名

SQL> startup         --如果数据库没有启动的话,经过上述步骤连接后,正常启动数据


这里介绍下几种连接用到的命令形式
  
  1.sqlplus / as sysdba 这是典型的操作系统认证,不需要listener进程
  
  2.sqlplus sys/oracle 这种连接方式只能连接本机数据库,同样不需要listener进程
  
  3.sqlplus sys/oracle@orcl 这种方式需要listener进程处于可用状态。最普遍的通过网络连接。
  
  以上连接方式使用sys用户或者其他通过密码文件验证的用户都不需要数据库处于可用状态,操作系统认证也不需要数据库可用,普通用户因为是数据库认证,所以数据库必需处于open状态。

平时排错可能会用到的
  
  1.lsnrctl status查看服务器端listener进程的状态
     2.tnsping 查看客户端sqlnet.ora和tnsname.ora文件的配置正确与否,及对应的服务器的listener进程的状态。
        3.SQL>show sga 查看instance是否已经启动

如果在sql*plus环境中使用shutdown命令关闭了数据库,现在要启动数据库的话,必须先用不登陆到数据库服务器的方式进入sqlplus环境,再用startup命令启动数据库。因为数据库没有启动的话,不能登陆数据库,也无法验证用户名和密码。

sqlplus命令格式如下:

用法: SQLPLUS [ [<option>] [<logon>] [<start>] ]
其中 <option> ::= -H | -V | [ [-M <o>] [-R <n>] [-S] ]
      <登录>  ::= <用户名>[/<口令>][@<connect_string>] | / | /NOLOG
      <启动>  : : = @<文件名>[.<ext>] [<参数> ...]
 "-H" 显示 SQL*Plus 的版本标帜和使用语法
 "-V" 显示 SQL*Plus 的版本标帜
 "-M <o>" 使用 HTML 标志选项 <o>
 "-R <n>" uses restricted mode <n>
 "-S" uses silent mode

1,sqlplus  '/ as sysdba '

2,sqlplus /nolog
SQL> connect / as sysdba

1和2是一样的意思。

SQLPlus 在连接时通常有三种方式
1. sqlplus / as sysdba
    操作系统认证,不需要数据库服务器启动listener,也不需要数据库服务器处于可用状态。比如我们想要启动数据库就可以用这种方式进入
    sqlplus,然后通过startup命令来启动。

    sqlplus / as sysdba 是操作系统用户验证登录方式,通过OS本地的IPC可以直接连接到实例,IPC由本地OS提供,允许各种进程在主机内进行通信。所以不需要listener也可以连接到实例。
 

2. sqlplus username/password
    连接本机数据库,不需要数据库服务器的listener进程,但是由于需要用户名密码的认证,因此需要数据库服务器处于可用状态才行。

3. sqlplus usernaem/password@orcl
    通过网络连接,这是需要数据库服务器的listener处于监听状态。此时建立一个连接的大致步骤如下 
  a. 查询sqlnet.ora,看看名称的解析方式,默认是TNSNAME  
  b. 查询tnsnames.ora文件,从里边找orcl的记录,并且找到数据库服务器的主机名或者IP,端口和service_name  
  c. 如果服务器listener进程没有问题的话,建立与listener进程的连接。  
  d. 根据不同的服务器模式如专用服务器模式或者共享服务器模式,listener采取接下去的动作。默认是专用服务器模式,没有问题的话客户端
            就连接上了数据库的server process。
  e. 这时连接已经建立,可以操作数据库了。


参考来源:http://fanqiang.chinaunix.net/db/oracle/2006-06-29/4714.shtml

猜你喜欢

转载自blog.csdn.net/BinGuoLA/article/details/81545654
今日推荐