oracle--imp不能导入到另一个用户的默认表空间

    技术2026-04-08  1

        今天需要将部分表导入到同一个库下的一个新用户下,于是按照下列步骤依次进行:

     

        1.  新建表空间:

         CREATE TABLESPACE TBL_TS_NEW DATAFILE '/lvora1/app/oracle/oradata/ORCL/tbl_ts/TBL_TS_NEW .DBF' SIZE 512M AUTOEXTEND ON NEXT 128M EXTENT MANAGEMENT LOCAL AUTOALLOCATE SEGMENT SPACE MANAGEMENT AUTO /

     

        2. 新建用户:

        create user usr_new identified by usr_new default tablespace TBL_TS_NEW temporary tablespace TEMP; GRANT CONNECT TO usr_new; GRANT RESOURCE TO usr_new; GRANT SELECT_CATALOG_ROLE TO usr_new; GRANT EXECUTE_CATALOG_ROLE TO usr_new; GRANT RECOVERY_CATALOG_OWNER TO usr_new; GRANT SELECT ANY DICTIONARY TO usr_new;

     

        3. 原用户usr_old,默认表空间是TBL_TS_OLD,于是设置新用户usr_new的限额:

        revoke unlimited tablespace from usr_new; ALTER USER usr_new QUOTA 0 ON TBL_TS_OLD; ALTER USER usr_new QUOTA 0 ON TBL_TS_OLD ; ALTER USER usr_new QUOTA 0 ON SYSAUX; ALTER USER usr_new QUOTA 0 ON SYSTEM; ALTER USER usr_new QUOTA 0 ON USERS; ALTER USER usr_new QUOTA UNLIMITED ON TBL_TS_NEW;

     

        4. 执行导出:

        exp usr_old/usr_old@orcl file=exp.dmp tables=(SYS_1,SYS_2,SYS_3,SYS_4) log=expsys.log

     

        5. 执行导入:

        imp usr_new/usr_new@orcl file=sysexp.dmp fromuser=usr_old touser=usr_new tables=(SYS_1,SYS_2,SYS_3,SYS_4) log=impsys.log

     

        但是总是报错,说在表空间TBL_TS_OLD上的限额不够,郁闷。google了很多次,也没找到为啥。于是不得不使用本办法,首先使用indexifle选项导出脚本,然后编辑脚本,替换表空间名,执行建表语句,然后使用ignore选项导入数据。

        // 导出脚本 imp usr_new/usr_new@orcl file=sysexp.dmp fromuser=usr_old touser=usr_new tables=(SYS_1,SYS_2,SYS_3,SYS_4) log=impsys.log indexfile=index.sql // 导入数据 imp usr_new/usr_new@orcl file=sysexp.dmp fromuser=usr_old touser=usr_new tables=(SYS_1,SYS_2,SYS_3,SYS_4) log=impsys.log ignore=y

     

        虽然问题搞定了,但是为啥呢,不明白。

    最新回复(0)