标签:acl parameter 命令 单位 pre 数据 解决 use system
使用exp命令的时候,会出现少表的情况,是因为在11g版本中如果一个表里面是空的,为了节省空间,默认是不会给这个表分配空间的,在导出的时候也就不会将空表导出的,自然导入到另一个库里的时候会出现少表的情况。但缺少的表虽然里面没有数据,但有时候还是会影响到应用程序的执行,所以得把所有表都得导出来。
所以在正常导出表时,请一定要注意。
原因分析:
由于oracle 11g新增了一个参数: "deferred_segment_creation" "段延迟创建",默认值为true。
什么是段:
段(segment)是一种在数据库中消耗物理存储空间的任何实体(一个段可能存在于多个数据文件中,因为物理的数据文件是组成逻辑表空间的基本物理存储单位)。简单点说可以把segment当作占据物理存储空间的一个单位。
deferred_segment_creation:
如果这个参数设置为true,当你新建一个表table1时,并且没有向其中插入数据,那么这个表不会立即分配extent,也就是不占数据空间,即表也不分配segment以节省空间,所以这些表也没能导出来。在系统表user_tables中也可以看到segment_created的字段里是“NO”或者“YES”说明了某张表是否分配了segment。说白了是为了可以节省少量的空间。
sql语句:
SQL> show parameter deferred_segment_creation;
SQL> alter system set deferred_segment_creation=false;
SQL> Select segment_created,table_name from user_tables where segment_created = ‘NO‘;
SQL> select ‘alter table ‘||table_name||‘ allocate extent;‘ from user_tables where num_rows=0;
执行过后,就可以使用命令导出用户下的所有表了。
标签:acl parameter 命令 单位 pre 数据 解决 use system
原文地址:https://www.cnblogs.com/dance-walter/p/9425163.html