场景:从cs库(U:cs,P:cspass) 复制库到 zs库(U:zs P:zspass)中
前期设置:
第一种方式:(1-4)
1、在对oracle11g进行exp命令时,当表没有数据时,不分配segment,以节省空间。而使用exp命令时,无segment的表不会被导出。
2、首先登陆cs库,使用以下sql查看一下:
select * from user_tables;
3、然后执行一下语句:
SELECT 'alter table ' ||table_name|| ' allocate extent;' FROM user_tables WHERE num_rows=0;
可以查看到无数据表的拼接sql语句:
alter table 表1 allocate extent;
alter table 表2 allocate extent;
alter table 表3 allocate extent;
alter table 表4 allocate extent;
alter table 表5 allocate extent;
4、执行上面拼接好的sql语句;
第二种方式:(5)
5、新装完数据库立即设置deferred_segment_creation 参数
show parameter deferred_segment_creation
NAME TYPE VALUE
------------------------------------ ----------- ----------
deferred_segment_creation boolean TRUE
SQL> alter system set deferred_segment_creation=false;
系统已更改。
SQL> show parameter deferred_segment_creation
NAME TYPE VALUE
------------------------------------ ----------- ----------
deferred_segment_creation boolean FALSE
该参数值默认是TRUE,当改为FALSE时,无论是空表还是非空表,都分配segment。
上面两种选择其中一种进行设置后,执行下面的备份、导入命令:
6、打开cmd窗口,执行数据库备份语句(system和system用户的密码);
exp system/szsa@oral1 rows=y indexes=y grants=y triggers=y compress=n direct=y recordlength=65536 file=D:\data\spqz20200406.dmp log=D:\data\exp20180506.log owner=(cs)
7、备份后,执行imp语句,导入到zs库中(system和system用户的密码)
imp system/szsa@oral2 ignore=y fromuser=cs touser=zs file=D:/data/spqz20200406.dmp log=D:/data/imp20200406.log full=n