目前正在ALTER一个oracle表的结构,大概有4亿多条数据。请问如何查看这个ALTER操作执行到了什么程度?或者已经处理了多少条记录呢?谢谢!

解决方案 »

  1.   

    执行过程中是不可能查看的
    如果是存储过程,sql执行完后可以查看共处理了多少条 SQL%ROWCOUNT
      

  2.   

    ALTER一个oracle表的结构...
    我理解错了你想看进度条。。?
      

  3.   

    alter什么东西,列名?还是长度,还是别的?
      

  4.   


    Alter部分表字段的长度。我的目的其实很简单,命令提交出去了,执行一晚上了,想看到什么程度了,要不心里不踏实。谢谢楼上两位关注!
      

  5.   

    表里存在数据,你还能alter表字段长度?
      

  6.   

    Alter部分表字段的长度。
    应该很快的,你alter的是数据结构啊,不是很懂,呵呵
      

  7.   


    ALTER TABLE IPSA3.IPHDVAL MODIFY("HOSTALNE" VARCHAR2(4), "JRNCDE" VARCHAR2(5), "HDCDE" VARCHAR2(6), "ORIGCTY" VARCHAR2(5), "DESTCTY" VARCHAR2(5), "CARRIER" VARCHAR2(3), "DOTB" VARCHAR2(8), "DOTE" VARCHAR2(8), "PETD" VARCHAR2(8))执行没有问题,就是这个表数据量比较大。我真的只想看下进度就可以了。
      

  8.   

    这个要求好像很难实现,对于后台来说,只是一个SQL正在执行中,除此之外,很难查到进度
      

  9.   

    这个要求好像很难实现,对于后台来说,只是一个SQL正在执行中,除此之外,很难查到进度
      

  10.   

    你试着变通一下方法,不知道你这个表的字段多不多? 不多的话,创建一个新表,然后分批插入新表中,最后再drop旧表。
      

  11.   

    SQL> select count(*) from t_get_string;
     
      COUNT(*)
    ----------
      10000002
     
    Executed in 3.781 seconds
     
    SQL> alter table t_get_string modify sysname varchar2(300);
     
    Table altered
     
    Executed in 0.032 seconds
     
    SQL> 
    alter 是ddl,只是改变表的字段长度定义,不实际去更改数据的.
      

  12.   

    SQL> alter table t_get_string modify sysname varchar2(200);
     
    Table altered
     
    Executed in 2.875 seconds
     
    SQL> 
    额,不对.从数据看应该是这样的.
    如果是增加长度,则只是更改数据字典.
    如果是减少长度,需要检查现有数据是否符合长度定义,这时候会对数据进行检索.
      

  13.   

    使用联机表的重定义的功能,下面的例子是我把字段的长度扩大100倍。Connected to Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 
    Connected as SYS
    SQL> drop table scott.customer;Table droppedSQL> 
    SQL> create table scott.customer
      2  (
      3    name varchar2(20) primary key,
      4    street varchar2(50)
      5  );Table createdSQL> drop table scott.customer_online;Table droppedSQL> 
    SQL> create table scott.customer_online
      2  (
      3    name varchar2(200) primary key,
      4    street varchar2(500)
      5  );Table createdSQL> execute dbms_redefinition.can_redef_table('SCOTT','CUSTOMER');PL/SQL procedure successfully completedSQL> execute dbms_redefinition.start_redef_table('SCOTT','CUSTOMER','CUSTOMER_ONLINE');PL/SQL procedure successfully completedSQL> execute dbms_redefinition.FINISH_redef_table('SCOTT','CUSTOMER','CUSTOMER_ONLINE');PL/SQL procedure successfully completedSQL> drop table scott.customer_online;Table droppedSQL> desc scott.customer;
    Name   Type          Nullable Default Comments 
    ------ ------------- -------- ------- -------- 
    NAME   VARCHAR2(200)                           
    STREET VARCHAR2(500) Y                         SQL> 
      

  14.   

    你试着变通一下方法,不知道你这个表的字段多不多? 不多的话,创建一个新表,然后分批插入新表中,最后再drop旧表。数据量这么大,其实不建议删旧表的。可以将旧表改名转为备份表,用新表代替。个人建议。