使用命令alter table 表名 drop column 列名出错。

NetSuite - 张老师
博客专家认证
2015-08-13 10:05:10
如题,想要删除表的一个列,使用命令ALTER TABLE cux.cux_ontmax DROP COLUMN age;报错,在网上找了命令:ALTER TABLE cux.cux_ontmax ENABLE TABLE LOCK;处理了很久,又报错
...全文
1343 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
引用 9 楼 xu176032 的回复:
[quote=引用 8 楼 u012025054 的回复:] [quote=引用 7 楼 xu176032 的回复:] [quote=引用 6 楼 u012025054 的回复:] [quote=引用 5 楼 xu176032 的回复:] 查询锁表sql: SELECT object_name, machine, s.sid, s.serial# FROM gv$locked_object l, dba_objects o, gv$session s WHERE l.object_id = o.object_id AND l.session_id = s.sid; 解锁: --释放SESSION SQL: --alter system kill session 'sid, serial#'; ALTER system kill session '23, 1647'; 有人在锁表,解锁以后就能删了,上面的sql要用dba权限才能执行
这样啊,我没有dba权限,但是这个表是我自己建立的,我没有最大权限么?[/quote] 解锁其实就是杀掉session,所以需要dba权限,跟是不是你建的表没啥关系,如果你就是想测试这个语句,再重新建个别的表,一样可以测试的,不用非纠结这个[/quote] 哦,我用的apps有这个权限。可以 kill session。通过上面的语句,并没有找到锁定的表,找到的只是锁定的其他人的表,跟我的没有关系。所以我也不能把别人的session kill掉。 [/quote] alter table cux.cux_ontmax enable table lock; 看看上面那个命令能执行不,如果能的话,执行完再试试[/quote] 昨天执行这条语句报错资源忙,今天早上竟然好了。现在可以drop column啦。
  • 打赏
  • 举报
回复
引用 5 楼 xu176032 的回复:
查询锁表sql: SELECT object_name, machine, s.sid, s.serial# FROM gv$locked_object l, dba_objects o, gv$session s WHERE l.object_id = o.object_id AND l.session_id = s.sid; 解锁: --释放SESSION SQL: --alter system kill session 'sid, serial#'; ALTER system kill session '23, 1647'; 有人在锁表,解锁以后就能删了,上面的sql要用dba权限才能执行
这样啊,我没有dba权限,但是这个表是我自己建立的,我没有最大权限么?
xu176032 2015-08-13
  • 打赏
  • 举报
回复
查询锁表sql: SELECT object_name, machine, s.sid, s.serial# FROM gv$locked_object l, dba_objects o, gv$session s WHERE l.object_id = o.object_id AND l.session_id = s.sid; 解锁: --释放SESSION SQL: --alter system kill session 'sid, serial#'; ALTER system kill session '23, 1647'; 有人在锁表,解锁以后就能删了,上面的sql要用dba权限才能执行
  • 打赏
  • 举报
回复
引用 3 楼 chenfeng1122 的回复:
是否是你的权限不够?你换个dba账户的去执行试试!
我用的apps的账户,应该权限够用了吧。这里不能用dba的账户登陆。我们一起练习的,只有我的出错了。
陈灬风 2015-08-13
  • 打赏
  • 举报
回复
是否是你的权限不够?你换个dba账户的去执行试试!
  • 打赏
  • 举报
回复
引用 1 楼 mayanzs 的回复:
是不是有其他用户正在使用该表?


这个命令什么也没有查出来。
mayanzs 2015-08-13
  • 打赏
  • 举报
回复
是不是有其他用户正在使用该表?
  • 打赏
  • 举报
回复
引用 11 楼 xu176032 的回复:
[quote=引用 10 楼 u012025054 的回复:] [quote=引用 9 楼 xu176032 的回复:] [quote=引用 8 楼 u012025054 的回复:] [quote=引用 7 楼 xu176032 的回复:] [quote=引用 6 楼 u012025054 的回复:] [quote=引用 5 楼 xu176032 的回复:] 查询锁表sql: SELECT object_name, machine, s.sid, s.serial# FROM gv$locked_object l, dba_objects o, gv$session s WHERE l.object_id = o.object_id AND l.session_id = s.sid; 解锁: --释放SESSION SQL: --alter system kill session 'sid, serial#'; ALTER system kill session '23, 1647'; 有人在锁表,解锁以后就能删了,上面的sql要用dba权限才能执行
这样啊,我没有dba权限,但是这个表是我自己建立的,我没有最大权限么?[/quote] 解锁其实就是杀掉session,所以需要dba权限,跟是不是你建的表没啥关系,如果你就是想测试这个语句,再重新建个别的表,一样可以测试的,不用非纠结这个[/quote] 哦,我用的apps有这个权限。可以 kill session。通过上面的语句,并没有找到锁定的表,找到的只是锁定的其他人的表,跟我的没有关系。所以我也不能把别人的session kill掉。 [/quote] alter table cux.cux_ontmax enable table lock; 看看上面那个命令能执行不,如果能的话,执行完再试试[/quote] 可以执行,但是执行时间大概三四十秒,然后弹出错误如题,我在上面提到过。所以这个办法行不通。[/quote] 截图里面,MACHINE一列显示的是锁表人的主机名,问一下这两个人,是否可以杀掉session,如果可以,把所有的锁都kill,再试试,如果还不行我就没办法了。[/quote] 上网查资料,问公司DBA,发SR到oracle support,最后Oracle客服中心都打电话过来也没有解决。在此结贴吧,这次问题引起的原因可能非一般复杂。
  • 打赏
  • 举报
回复
引用 11 楼 xu176032 的回复:
[quote=引用 10 楼 u012025054 的回复:] [quote=引用 9 楼 xu176032 的回复:] [quote=引用 8 楼 u012025054 的回复:] [quote=引用 7 楼 xu176032 的回复:] [quote=引用 6 楼 u012025054 的回复:] [quote=引用 5 楼 xu176032 的回复:] 查询锁表sql: SELECT object_name, machine, s.sid, s.serial# FROM gv$locked_object l, dba_objects o, gv$session s WHERE l.object_id = o.object_id AND l.session_id = s.sid; 解锁: --释放SESSION SQL: --alter system kill session 'sid, serial#'; ALTER system kill session '23, 1647'; 有人在锁表,解锁以后就能删了,上面的sql要用dba权限才能执行
这样啊,我没有dba权限,但是这个表是我自己建立的,我没有最大权限么?[/quote] 解锁其实就是杀掉session,所以需要dba权限,跟是不是你建的表没啥关系,如果你就是想测试这个语句,再重新建个别的表,一样可以测试的,不用非纠结这个[/quote] 哦,我用的apps有这个权限。可以 kill session。通过上面的语句,并没有找到锁定的表,找到的只是锁定的其他人的表,跟我的没有关系。所以我也不能把别人的session kill掉。 [/quote] alter table cux.cux_ontmax enable table lock; 看看上面那个命令能执行不,如果能的话,执行完再试试[/quote] 可以执行,但是执行时间大概三四十秒,然后弹出错误如题,我在上面提到过。所以这个办法行不通。[/quote] 截图里面,MACHINE一列显示的是锁表人的主机名,问一下这两个人,是否可以杀掉session,如果可以,把所有的锁都kill,再试试,如果还不行我就没办法了。[/quote] ebs8061估计是服务器的,不是客户端的吧。最后一个session可以kill掉,我试试。
xu176032 2015-08-13
  • 打赏
  • 举报
回复
引用 10 楼 u012025054 的回复:
[quote=引用 9 楼 xu176032 的回复:] [quote=引用 8 楼 u012025054 的回复:] [quote=引用 7 楼 xu176032 的回复:] [quote=引用 6 楼 u012025054 的回复:] [quote=引用 5 楼 xu176032 的回复:] 查询锁表sql: SELECT object_name, machine, s.sid, s.serial# FROM gv$locked_object l, dba_objects o, gv$session s WHERE l.object_id = o.object_id AND l.session_id = s.sid; 解锁: --释放SESSION SQL: --alter system kill session 'sid, serial#'; ALTER system kill session '23, 1647'; 有人在锁表,解锁以后就能删了,上面的sql要用dba权限才能执行
这样啊,我没有dba权限,但是这个表是我自己建立的,我没有最大权限么?[/quote] 解锁其实就是杀掉session,所以需要dba权限,跟是不是你建的表没啥关系,如果你就是想测试这个语句,再重新建个别的表,一样可以测试的,不用非纠结这个[/quote] 哦,我用的apps有这个权限。可以 kill session。通过上面的语句,并没有找到锁定的表,找到的只是锁定的其他人的表,跟我的没有关系。所以我也不能把别人的session kill掉。 [/quote] alter table cux.cux_ontmax enable table lock; 看看上面那个命令能执行不,如果能的话,执行完再试试[/quote] 可以执行,但是执行时间大概三四十秒,然后弹出错误如题,我在上面提到过。所以这个办法行不通。[/quote] 截图里面,MACHINE一列显示的是锁表人的主机名,问一下这两个人,是否可以杀掉session,如果可以,把所有的锁都kill,再试试,如果还不行我就没办法了。
  • 打赏
  • 举报
回复
引用 9 楼 xu176032 的回复:
[quote=引用 8 楼 u012025054 的回复:] [quote=引用 7 楼 xu176032 的回复:] [quote=引用 6 楼 u012025054 的回复:] [quote=引用 5 楼 xu176032 的回复:] 查询锁表sql: SELECT object_name, machine, s.sid, s.serial# FROM gv$locked_object l, dba_objects o, gv$session s WHERE l.object_id = o.object_id AND l.session_id = s.sid; 解锁: --释放SESSION SQL: --alter system kill session 'sid, serial#'; ALTER system kill session '23, 1647'; 有人在锁表,解锁以后就能删了,上面的sql要用dba权限才能执行
这样啊,我没有dba权限,但是这个表是我自己建立的,我没有最大权限么?[/quote] 解锁其实就是杀掉session,所以需要dba权限,跟是不是你建的表没啥关系,如果你就是想测试这个语句,再重新建个别的表,一样可以测试的,不用非纠结这个[/quote] 哦,我用的apps有这个权限。可以 kill session。通过上面的语句,并没有找到锁定的表,找到的只是锁定的其他人的表,跟我的没有关系。所以我也不能把别人的session kill掉。 [/quote] alter table cux.cux_ontmax enable table lock; 看看上面那个命令能执行不,如果能的话,执行完再试试[/quote] 可以执行,但是执行时间大概三四十秒,然后弹出错误如题,我在上面提到过。所以这个办法行不通。
xu176032 2015-08-13
  • 打赏
  • 举报
回复
引用 8 楼 u012025054 的回复:
[quote=引用 7 楼 xu176032 的回复:] [quote=引用 6 楼 u012025054 的回复:] [quote=引用 5 楼 xu176032 的回复:] 查询锁表sql: SELECT object_name, machine, s.sid, s.serial# FROM gv$locked_object l, dba_objects o, gv$session s WHERE l.object_id = o.object_id AND l.session_id = s.sid; 解锁: --释放SESSION SQL: --alter system kill session 'sid, serial#'; ALTER system kill session '23, 1647'; 有人在锁表,解锁以后就能删了,上面的sql要用dba权限才能执行
这样啊,我没有dba权限,但是这个表是我自己建立的,我没有最大权限么?[/quote] 解锁其实就是杀掉session,所以需要dba权限,跟是不是你建的表没啥关系,如果你就是想测试这个语句,再重新建个别的表,一样可以测试的,不用非纠结这个[/quote] 哦,我用的apps有这个权限。可以 kill session。通过上面的语句,并没有找到锁定的表,找到的只是锁定的其他人的表,跟我的没有关系。所以我也不能把别人的session kill掉。 [/quote] alter table cux.cux_ontmax enable table lock; 看看上面那个命令能执行不,如果能的话,执行完再试试
  • 打赏
  • 举报
回复
引用 7 楼 xu176032 的回复:
[quote=引用 6 楼 u012025054 的回复:]
[quote=引用 5 楼 xu176032 的回复:]
查询锁表sql:
SELECT object_name, machine, s.sid, s.serial#
FROM gv$locked_object l, dba_objects o, gv$session s
WHERE l.object_id = o.object_id
AND l.session_id = s.sid;

解锁:
--释放SESSION SQL:
--alter system kill session 'sid, serial#';
ALTER system kill session '23, 1647';

有人在锁表,解锁以后就能删了,上面的sql要用dba权限才能执行

这样啊,我没有dba权限,但是这个表是我自己建立的,我没有最大权限么?[/quote]
解锁其实就是杀掉session,所以需要dba权限,跟是不是你建的表没啥关系,如果你就是想测试这个语句,再重新建个别的表,一样可以测试的,不用非纠结这个[/quote]
哦,我用的apps有这个权限。可以 kill session。通过上面的语句,并没有找到锁定的表,找到的只是锁定的其他人的表,跟我的没有关系。所以我也不能把别人的session kill掉。

xu176032 2015-08-13
  • 打赏
  • 举报
回复
引用 6 楼 u012025054 的回复:
[quote=引用 5 楼 xu176032 的回复:] 查询锁表sql: SELECT object_name, machine, s.sid, s.serial# FROM gv$locked_object l, dba_objects o, gv$session s WHERE l.object_id = o.object_id AND l.session_id = s.sid; 解锁: --释放SESSION SQL: --alter system kill session 'sid, serial#'; ALTER system kill session '23, 1647'; 有人在锁表,解锁以后就能删了,上面的sql要用dba权限才能执行
这样啊,我没有dba权限,但是这个表是我自己建立的,我没有最大权限么?[/quote] 解锁其实就是杀掉session,所以需要dba权限,跟是不是你建的表没啥关系,如果你就是想测试这个语句,再重新建个别的表,一样可以测试的,不用非纠结这个

17,075

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧