报错原因:对表的操作短时间内太过快速和频繁而导致的数据库锁表。即由于其他Session已经对目标表做了操作,并且已经有排他锁在表上了,所以新的Session无法再对表进行DDL操作。
解决方案:
- 连接数据库服务器远程桌面
- 输入下面命令进入sql窗口
-
create user 库名 identified by 密码;
- 以管理员权限登录
-
conn / as sysdba;
- 查询被锁的会话ID
-
select session_id from v$locked_object;
- 根据查询出来的id到本地数据库可视化工具相关库的sql窗口中查看详细信息(sid为上面查出来的被锁的会话ID)
-
SELECT sid, serial#, username, osuser FROM v$session where sid = 9;
- 根据查询出来的id到本地数据库可视化工具相关库的sql窗口中查看详细信息(sid为上面查出来的被锁的会话ID)
-
SELECT sid, serial#, username, osuser FROM v$session where sid = 9;
- 将被锁定的会话关闭(将查询出来的值替换到下面命令中)
-
ALTER SYSTEM KILL SESSION 'sid,serial#';
- 关闭被锁的会话后就可以对之前操作报错的表进行操作了。