1.错误信息
Listener refused the connection with the following error:
ORA-12518, TNS:listener could not hand off client connection
先 free -m 查看swap交换区是否用完了,用完了的话增加swap交换区,
看下还有问题吗,有的话再看后面的
2.查询数据库允许的最大连接数
select (select count(*) from v$process )
||'/'||(select value from v$parameter where name ='processes') "实际连接数/数据库进程数上限"
, (select count(*) from v$session)
||'/'||(select value from v$parameter where name = 'sessions') "目前的会话数/会话数的上限"
from dual;
/* 查看不同用户的连接数 */
select username,count(username) from v$session where username is not null group by username;
或者:(sqlplus / as sysdba)终端执行
show parameter processes;
show parameter sessions;
先直接重启监听试下,看看效果,不行的话,在按后面的处理
切换用户: su - oracle
关闭监听: lsnrctl stop
查看监听状态: lsnrctl status
启动监听: lsnrctl start
3.修改最大连接数(切换到根容器以执行操作,修改后需要重启数据库)
conn / as sysdba
alter system set processes = 4096 scope = spfile;
alter system set sessions=4096 scope=spfile;
4.重启oracle数据库
命令注释 | 命令脚本 |
1.切换用户 | su - oracle |
2.关闭监听 | lsnrctl stop |
3.查看监听状态 | lsnrctl status |
4.先登陆sqlplus | sqlplus / as sysdba |
5.检查点操作(防止丢失数据,提高关闭速度) | alter system checkpoint; |
6.sqlplus中关闭oracle(比较卡) | shutdown immediate; |
7.sqlplus中启动orcacle | startup; |
8.退出sqlplus | quit |
9.启动监听 | lsnrctl start |
5.shutdown immediate之后数据库长时间无反应。
另开窗口尝试开启、关闭操作皆不可行。
解决方案:
5.1)Ctrl + C(取消上一步操作:shutdown immediate;),
检查点操作:alter system checkpoint;
然后用 shutdown abort; 命令关闭
6.shutdown abort 与 shutdown immediate的区别
-
shutdown abort:
- 行为:立即终止所有用户连接,中断所有事务,不执行检查点,不关闭数据文件。
- 数据恢复:下次启动时需进行实例恢复,可能花费较长时间。
- 使用场景:非特殊情况下不推荐使用,可能导致数据不一致。
-
shutdown immediate:
- 行为:不允许新连接,不等待会话和事务结束,执行检查点并关闭数据文件。
- 数据恢复:未提交的事务自动回滚,下次启动无需实例恢复。
- 使用场景:常用且安全的关闭方式,适用于需要快速关闭数据库的场景。
- 会卡死:事务自动回滚等操作造成卡死。
综上所述,shutdown immediate
是一种更为常用且安全的数据库关闭方式,而shutdown abort
则在特殊情况下使用,且使用后需要额外的恢复时间