`

oracle 11g不能导出空表的解决

阅读更多
   在oracle 11g r2中,发现传统的exp居然不能导出空的表,然后查询一下,
发现需要如下的步骤去搞,笔记之。

oracle 11g 新增了一个参数:deferred_segment_creation,含义是段延迟创建,默认是true。具体是什么意思呢?

如果这个参数设置为true,你新建了一个表T1,并且没有向其中插入数据,那么这个表不会立即分配extent,也就是不占数据空间,只有当你insert数据后才分配空间。这样可以节省少量的空间。

解决办法

1 设置deferred_segment_creation 参数为FALSE后,无论是空表还是非空表,都分配segment。

   在sqlplus中,执行如下命令:

   SQL>alter system set deferred_segment_creation=false;

   查看:
   SQL>show parameter deferred_segment_creation;


   该值设置后只对后面新增的表产生作用,对之前建立的空表不起作用。

   注意并且要重新启动数据库,让参数生效

2  使用ALLOCATE EXTENT的说明


   使用ALLOCATE EXTENT可以为数据库对象分配Extent。其语法如下:

   -----------
   ALLOCATE EXTENT { SIZE integer [K | M] | DATAFILE 'filename' | INSTANCE integer }
   -----------

   可以针对数据表、索引、物化视图等手工分配Extent。

   ALLOCATE EXTENT使用样例:

    ALLOCATE EXTENT
    ALLOCATE EXTENT(SIZE integer [K | M])
    ALLOCATE EXTENT(DATAFILE 'filename')
    ALLOCATE EXTENT(INSTANCE integer)
    ALLOCATE EXTENT(SIZE integer [K | M]   DATAFILE 'filename')
    ALLOCATE EXTENT(SIZE integer [K | M]   INSTANCE integer)
  

    针对数据表操作的完整语法如下:

   -----------
    ALTER TABLE [schema.]table_name ALLOCATE EXTENT [({ SIZE integer [K | M] | DATAFILE 'filename' | INSTANCE integer})]
   -----------


    故,需要构建如下样子简单的SQL命令:

   -----------
   alter table aTabelName allocate extent
   -----------



3.2 构建对空表分配空间的SQL命令,


    查询当前用户下的所有空表(一个用户最好对应一个默认表空间)。命令如下:

   -----------
   SQL>select table_name from user_tables where NUM_ROWS=0;
   -----------


   根据上述查询,可以构建针对空表分配空间的命令语句,如下:

   -----------
   SQL>Select 'alter table '||table_name||' allocate extent;' from user_tables where num_rows=0
   -----------


   批量输出上述生成的SQL语句,建立C:\createsql.sql,其内容如下:

   -----------
   set heading off;
   set echo off;
   set feedback off;
   set termout on;
   spool C:\allocate.sql;
   Select 'alter table '||table_name||' allocate extent;' from user_tables where num_rows=0;
   spool off;
   -----------


   执行C:\createsql.sql,命令如下:
   -----------
   SQL>@ C:\createsql.sql;
   -----------

   执行完毕后,得到C:\allocate.sql文件。

   打开该文件会看到,已经得到对所有空表分配空间的命令SQL语句。


3.4 执行SQL命令,对空表分配空间:

   执行C:\allocate.sql,命令如下:
   -----------
   SQL>@ C:\allocate.sql;
   -----------
 
   执行完毕,表已更改。


3.4 此时执行exp命令,即可把包括空表在内的所有表,正常导出。
分享到:
评论

相关推荐

    oracle11g不能导出空表的解决方式

    Oracle 11g 导出空表解决方案 Oracle 11g 是一个功能强大且复杂的关系数据库管理系统,它提供了多种方式来导出数据库中的数据。然而,在使用 exp 命令导出 Oracle 11g 数据库时,空表会出现错误,这是因为 Oracle ...

    oracle 11g R2 exp无法导出空表的解决方法

    Oracle 11g R2 中 exp 无法导出空表的解决方法 Oracle 11g R2 中新增的特性,使得 exp 无法导出空表,这是因为 11g R2 中有一个新特性,即当表无数据时,不分配 segment,以节省空间。这种情况下,使用 exp 命令...

    解决oracle11g不能导出空表的问题

    文档有为什么oracle 11g不能导出空白,导出空表的详细操作方法(很简便哦)

    oracle11G-解决空表导出的问题

    通过以上步骤,你应该能够在Oracle 11g中成功地导出空表。在实际操作中,记得根据自己的具体环境调整参数,确保数据导出的准确性和完整性。对于大型数据库,推荐使用expdp,因为它更高效,且支持并行处理和更多高级...

    Oracle11g使用exp导出空表

    在使用Oracle11g数据库时,用户可能会遇到在使用exp导出工具导出数据时无法导出空表的问题。空表是指那些没有数据行的表,这在Oracle数据库中比较常见。Oracle11g为提高性能和节省空间,默认情况下对空表不分配...

    Oracle11g使用exp导出空表方法

    总之,尽管Oracle11g默认不导出空表,但通过自定义脚本或使用“FULL”选项,我们可以轻松地将空表包含在导出过程中。在进行此类操作时,理解数据库结构、权限以及导出/导入过程的细节至关重要,以确保数据的完整性和...

    Oracle11G导入导出(imp和exp)少表解决方法

    然而,在使用 Oracle 11G 时,用户可能会遇到一些问题,例如无法导出空表的问题。在本文中,我们将讨论如何解决这个问题,并提供了多种方法来导入和导出数据。 一、解决无法导出空表的问题 在 Oracle 11G 中,默认...

    oracle 11g不能导出空表的解决方法

    在Oracle 11g数据库系统中,用户可能会遇到无法导出空表的问题,这主要与Oracle 11g引入的一个新特性有关,即deferred_segment_creation参数。这个参数默认为true,它的作用在于延迟段的创建。当这个参数启用时,...

    Oracle导出空表解决办法

    ### Oracle导出空表解决办法 #### 背景与问题描述 在Oracle数据库管理过程中,经常遇到的一个问题是无法导出空表。这种情况通常发生在使用`expdp`或`exp`命令进行数据导出时,如果表为空,则可能会遇到无法导出的...

    数据库oracle11g导出 空表

    Oracle 11g导出空表、少表的解决办法  ORACLE 11G中有个新特性,当表无数据时,不分配segment,以节省空间。 解决方法:  1)insert一行,再rollback就产生segment了  该方法是在在空表中插入数据,再删除,则...

    解决Oracle导出dmp文件空表导不出问题.docx

    ### 解决Oracle导出DMP文件空表导不出问题 #### 背景与问题描述 在使用Oracle数据库的过程中,可能会遇到一个常见的问题:当尝试使用工具如PL/SQL Developer导出包含空表的DMP文件时,这些空表无法被正确地导出。...

    ORCAL11G 不能导出空表解决办法

    ORCAL11G 不能导出空表解决办法 Oracle 11g 中的 deferred_segment_creation 参数是指延迟段创建的参数,该参数的默认值为 TRUE。在这个参数设置为 TRUE 的情况下,当我们创建一个新的表时,如果没有插入数据,那么...

    解决Oracle 11G空表数据不能导出[程序/源码]

    总的来说,解决Oracle 11G空表数据不能导出的问题,需要理解`expdp`工具的使用、数据库的权限设置、表空间的管理以及可能的触发器和索引影响。通过正确配置和使用这些工具,可以成功导出空表的数据,从而保证数据...

    oracle11g导出空表、少表的解决方案

    Oracle 11g 导出空表、少表的解决方案 在 Oracle 11g 中,有一个新特性:当表无数据时,不分配 segment,以节省空间。这使得在通过 exp 导出时,无法导出没有分配 segment 的表。解决这个问题有两种情况: 情况一...

    Oracle 11g R2 执行export导出时 空表无法导出原因及解决方法

    Oracle 11g R2 执行export导出时空表无法导出原因及解决方法 Oracle 11g R2 版本中,在执行export导出时,可能会出现空表无法导出的问题,本文将会详细介绍这个问题的原因和解决方法。 问题原因 在 Oracle 11g R2...

    oracle11G数据导出

    这意味着你不能将11G导出的文件直接导入到10G或更早的版本,因为它们可能不支持11G的某些特性。 通过以上方法,你可以有效地处理Oracle 11G在数据导出和导入时遇到的空表问题。确保在进行数据迁移时考虑到这些差异...

    解决oracle10以上版本导出空表失败的问题

    在Oracle 11g及以上版本中,用户可能会遇到在尝试导出空表时失败的问题,主要表现为出现"EXP-00011: table 不存在"的错误信息。这个问题是由于Oracle的一种优化策略,即在11g版本以后,默认情况下,新建的表不会立即...

    oracle11g对于空表用exp不能导出的解决办法

    oracle11g对于空表用exp不能导出的解决办法.txt

    Oracle 11G R2 用 exp 无法导出空表解决方法

    关于R2无法exp出空表的方法。考虑到节省空间,oracle11g r2不给空表分配segment,具体办法见附件。

    设置导出时导出空表.txt

    #### 一、Oracle数据库导出空表的背景及需求分析 在Oracle数据库管理与维护过程中,经常会遇到需要备份或者迁移数据的情况。通常,这种操作是通过Oracle的导入导出工具(如`expdp`/`impdp`)来完成的。但在某些特殊...

Global site tag (gtag.js) - Google Analytics