如题!我用如下命令:
exp scott/tiger file=c:/mytest3.dmp log=c:/1.log tables=online1注意:online1中没有任何记录。输出显示SCOTT.ONLINE1不存在。但是在PL/SQL中可以看到,并且执行select命令,只不过没有记录罢了!这是为什么?

解决方案 »

  1.   

    把online1的建表语句贴出来看看.
    还有
    select * from user_tables  t where t.table_name='ONLINE1';
    这样有数据没?
      

  2.   

    问题的关键不在于表中是否存储记录,而在于表是否有对应的段。
    如果表没有对应的段,则 exp 将不能发现此表。这个可能是由于 exp 通过 dba_segments 视图查询表。因此,在创建表时需要指定 segment creation immediate 存储选项,让 oracle 在创建表时立即生成对应的段。这样,exp 便可以成功导出此表,即使此表中没有任何记录。
      

  3.   

    tables=online1 首先确认表明是否正确,是否有引号
    其次表名改成大写的试试
      

  4.   

    简表语句:
    CREATE TABLE ONLINE1 (
    ID NVARCHAR2(30) NOT NULL,
    PASSEDPSW NVARCHAR2(50),
    USER_ORDID NCLOB,
    USER_CAST NVARCHAR2(50),
    USER_NAME NVARCHAR2(30),
    LOGIN_DATE DATE
    )发现了一个很奇怪的现象,执行 SELECT * FROM ONLINE1; 和执行 SELECT * FROM “ONLINE1”;都能得到表的结构,这是为什么?
      

  5.   

    执行select * from user_tables t where t.table_name='ONLINE1';有数据。
      

  6.   


    我用的是oracle 11gR2,不知道你用的是哪个呢?
      

  7.   

    建议 lz 先检查一下 user_segments 视图中是否存在此表对应的段。select * from user_segments where segment_name='ONLINE1';oracle 11g 在创建新表时默认是不会立即为表分配段的,直到用户开始向表中插入记录。