日期:2014-05-17  浏览次数:20813 次

oracle10-恢复unused列方法解析
SQL> SELECT OBJECT_ID,OBJECT_NAME FROM USER_OBJECTS;
OBJECT_ID OBJECT_NAME
--------------------------------------------------------------------------------------------------    51147 PK_DEPT
    51146 DEPT
    51148 EMP
    51149 PK_EMP
    51150 BONUS
    51151 SALGRADE
    52613 D
    52614 D1
    52615 D3
    52696 BIG
    52717 XS------------------------ OBJECT_ID=52717
11 rows selected.
SQL> conn / as sysdba
Connected.
SQL> select col#,intcol#,name from col$ where obj#=52717;
      COL#    INTCOL# NAME
---------- ---------- ------------------------------
        1          1 ID
        2          2 NAME
        0          3 SYS_C00003_12092313:06:51$----------原来的列名为C,被系统修了.
SQL> select cols from tab$ where obj#=71930;
COLS
----------
      2    -----------------------系统的字段数目也发生了变化
SQL> update col$ set col#=intcol# where obj#=52717;
3 rows updated.
SQL> update tab$ set cols=cols+1 where obj#=52717;
1 row updated.
SQL> update col$ set name='AGE' where obj#=52717 and col#=3;
1 row updated.
SQL> update col$ set property=0 where obj#=52717;
3 rows updated.
SQL> commit;

这是网上找的,其中的#,$是什么呀?我直接复制过去报错,无法执行,
其中select col#,intcol#,name from col$ where obj#=    这里面的col#,intcol#, col$ obj#各代表什么呀?直接写这个不行好像。哪位大神知道?
------解决方案--------------------
直接复制过去报什么错误啊。
是权限不足还是全角半角的问题。
$#这些是oracle内部用的一些字段和表所带的标示,没什么不好的。