当还原dmp文件前必须把现有实例中的用户及表进行删除当出现ORA-01940: 无法删除当前已连接的用户的错误
解决方法如下:
方法一:在plsql中输入sql命令查询当前用户连接信息
select username,sid,serial# from v$session;
或
select sid,serial#,username,program,machine,status,client_info from v$session
或
Select saddr,sid,serial#,paddr,username,program,machine,status,client_info from v$session where username is not null;
或
select * FROM v$session ;
select sysdate 当前时间,
sys.login_user 数据库用户,
machine 登录机器名,
SYS_CONTEXT('USERENV', 'IP_ADDRESS') 登录IP,
program 应用程序
from v$session
where AUDSID = USERENV('SESSIONID');
获取当前session的hostname和ip address:
select sys_context('userenv','host') from dual;
select sys_context('userenv','ip_address') from dual;
SELECT UTL_INADDR.GET_HOST_ADDRESS, SYS_CONTEXT('userenv', 'ip_address') FROM DUAL;
获取其他电脑的ip
select utl_inaddr.get_host_address('DRAGON-PC') from dual;
获取sina以及其他web site的ip
select utl_inaddr.get_host_address('www.sina.com.cn') from dual;
查询显示列表如下
USERNAME SID SERIAL#
------------------------------ ---------- ----------
1 1
2 1
3 1
4 1
5 1
6 1
7 1
SYS 8 3
A 9 4
当有当前用户出现的列表信息中使用以下方法删除,在plsql使用以下删除命令
alter system kill session'9,4';
或以下命令:
alter system disconnect session 'sid,serial#' post_transaction immediate;
或alter system kill session '154,56090' immediate;
这个会立即释放会话及相应的进程
如果在drop 后还提示ORA-01940:无法删除当前已链接的用户,说明还有连接的session,可以通过查看session的状态来确定该session是否被kill 了,用如下语句查看:
-------------------------------------
select saddr,sid,serial#,paddr,username,status from v$session where username is not null
结果如下(以我的库为例):
saddr sid serial# paddr username status
--------------------------------------------------------------------------------------------------------
564A1E28 513 22974 569638F4 NETBNEW ACTIVE
564A30DC 514 18183 569688CC NETBNEW INACTIVE
564A5644 516 21573 56963340 NETBNEW INACTIVE
564B6ED0 531 9 56962D8C NETBNEW INACTIVE
564B8184 532 4562 56A1075C WUZHQ KILLED
status 为要删除用户的session状态,如果还为inactive,说明没有被kill掉,如果状态为killed,说明已kill。
由此可见,WUZHQ这个用户的session已经被杀死。此时可以安全删除用户。
unxi下查找文件
find / -name 文件名
方法二:在oem管理工具会话界面中终止所有不属于oracle的连接(数据操作本机连接勿断)或者断开网络、重启数据库服务器以及更改当前报错用户名的密码
关闭及启动数据库步骤(需要在数据库的实际安装ip上操作)
在root用户下,进入cd /u01/app/oracle/product/10.2.0/crs_1/bin
运行./crs_stop -all 关闭(注意stop后有空格)
./crs_start -all 开启
ORACLE查询用户连接语句:
1、查询oracle的并发连接数
select count(*) from v$session where status='ACTIVE';
2、查看不同用户的连接数
select username,count(username) from v$session where username is not null group by username;
3、查看所有用户:
select * from all_users;
4、查看当前连接数
select * from V$SESSION where username is not null