【发布时间】:2015-10-12 03:09:58
【问题描述】:
我使用 Oracle 10g。几个月以来,我对表格有以下错误:
ORA-12986: columns in partially dropped state. Submit ALTER TABLE DROP COLUMNS CONTINUE
语句 ALTER TABLE DROP COLUMNS CONTINUE 超时失败。
我没有此数据库的 DBA 权限。
我能做什么?删除并重新创建表?
这是一张包含数百万条记录的庞大表格。
我尝试了什么:
-
曾几何时,我做了以下命令来设置一些列 处于未使用状态:
ALTER TABLE hr.admin_emp SET UNUSED (hiredate, mgr);然后,我给出了以下命令:
ALTER TABLE hr.admin DROP UNUSED columns;系统挂了,运行时间过长,所以出错了。
现在表
hr.admin有两列处于部分删除状态, 我既不能前进,也不能后退。我不明白为什么会这样。
-
我做了以下步骤,系统在第二阶段挂断:
第一阶段 =============
SQL> select * from user_unused_col_tabs; TABLE_NAME COUNT ----------- ---------- TEMP 1第二阶段 =============
SQL> alter table temp drop unused columns; Table altered.第三阶段 ==============
SQL> select * from user_unused_col_tabs; no rows selected -
检查点 500 选项
我再次尝试使用以下语句:
ALTER TABLE MYUSER.MYTABLE DROP COLUMNS CONTINUE CHECKPOINT 500;CHECKPOINT 500 选项对我有帮助吗?
【问题讨论】:
-
你是什么意思,“它有故障”?确切的错误信息是什么?
-
Oracle 会话在 48 小时后到期。我不能要求 dba。
-
我不知道错误信息是什么,会话过期,进程死亡。
-
您可能想要检查会话并找出它正在等待的内容和对象。像这样的 SQL 语句可能会让您入门:
select event, final_blocking_session, gv$session.* from gv$session;。也许其他一些会话已锁定表。 -
这很奇怪。你用的是9i吗?从手册来看,这些列似乎是 10g 的新列。如果您的 DBA 让您继续使用 9i,那么他们真的应该在帮助解决这些问题方面发挥更积极的作用!
标签: oracle oracle10g ddl alter-table