`
newslxw
  • 浏览: 212801 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

ORACLE 导出空表和将表导入到指定表空间

阅读更多
背景
Oracle 11g使用exp时,默认无法导出空表;
导入时也无法指定表空间。

导出空表的解决方法
查看是否能导出空表
show parameter deferred_segment_creation
deferred_segment_creation=TRUE表示空表不创建数据段,这是就不能导出表了。
只有在这个参数设置为FALSE后新建的表才能导出。


解决方法
给空表增加一条记录,然后再删除,然后就能导出了。
 导出表
Exp xxx/xxx@dbsid file=xxx.dmp owner=(xxx,xxx);
 然后将xxx.dmp导入一个临时的用户A中,
 将临时用户A的表和原用户表比较,查询所有空表,
用sys登录,运行
select object_name,CREATED,STATUS from dba_objects where owner='XXX'  AND OBJECT_TYPE='TABLE' and OBJECT_NAME NOT IN
(select OBJECT_NAME from dba_objects where owner='A'  ) ORDER BY OBJECT_NAME

 禁用所有外键约束
运行SQL,生成禁用所有外键的SQL预计
select 'alter table '||table_name||' disable constraint '||constraint_name||';' from user_constraints where constraint_type='R'
然后将结果复制下来运行即可。

 使用POWERDESIGN等工具生成测试数据或者手工生成测试数据
使用IMP命令生成这些空表的创建语句
Imp xxx/xxx@dbsid show=y tables=(xxx,xxx) log=xxx.log
然后将xxx.log改成xxx.sql导入到powerdesign中,再利用powerdesign的生成测试数据生成测试数据testdata.sql,生成测试数据前要先设置自动填充的值的模式,否则会生成很长的字符串。

 运行测试数据,然后删除测试数据,空表就会有数据段
 恢复外键约束
运行SQL,生成启动所有外键的SQL预计
select 'alter table '||table_name||' enable constraint '||constraint_name||';' from user_constraints where constraint_type='R'
然后将结果复制下来运行即可。
 导出所有表,这次导出的文件就包含了空表了




将数据导出到指定表空间

 导出数据,最好指定导出某个用户的数据
exp userid/pwd@dbsid file=xxx.dmp owner=(xxx ,xxx)

 创建表空间
create tablespace XXXX
nologging
datafile '+DATA/webdb/datafile/XXX.dbf'
size 1024m
autoextend on
next 100m
maxsize 30810m
extent management local
解释:
nologging 表示不用创建日志,由于新创建的表空间,无需日志
+DATA/webdb/datafile/XXX.dbf' 这个是存储设备路径

 授权用户使用该表空间
alter user XXX quota unlimited on XXXX;

 修改oracle导出文件xxx.dmp中的表空间
Vim xxx.dmp
%s/TABLESPACE "XXX"/XXXX/g

 导入
Imp xxx/xxx@dbsid fromuser=xxx touser=xxx


 检查表空间的表
以用户身份登录
select tablespace_name from user_tables where table_name = 'tabname'


查询空表的另外一种方法
SET SERVEROUTPUT ON;
exec dbms_output.enable(200000);

DECLARE
v_table dba_objects.object_name%TYPE;
v_sql VARCHAR2(888);
v_q NUMBER;
CURSOR c1 IS
SELECT object_name tn FROM dba_objects where owner='xxxx' and object_type='TABLE';
TYPE c IS REF CURSOR;
c2 c;
BEGIN
    DBMS_OUTPUT.PUT_LINE('empty table:');
    FOR r1 IN c1 LOOP
        v_table :=r1.tn;
        v_sql :='SELECT count(*) q FROM xxx.'||v_table||' where rownum = 1';
        OPEN c2 FOR v_sql;
        LOOP
            FETCH c2 INTO v_q;
                EXIT WHEN c2%NOTFOUND;
                IF v_q=0 THEN
            DBMS_OUTPUT.PUT_LINE(v_table);
                END IF;
        END LOOP;
        CLOSE c2;
    END LOOP;
    EXCEPTION
    WHEN OTHERS THEN DBMS_OUTPUT.PUT_LINE('Error occurred');
END;
/

解析
Xxx代表用户名。
需要用DBA角色登录。


分享到:
评论

相关推荐

    ORACLE导入数据文件到指定的表空间

    在Oracle数据库管理中,将数据文件导入到指定的表空间是一项常见的操作,这对于数据迁移、备份恢复或测试环境的构建至关重要。"ORACLE导入数据文件到指定的表空间"这个主题涉及了Oracle数据库的导入工具(IMP)、...

    Oracle dmp文件导出导入(还原)到不同的表空间和不同的用户操作

    通过上述步骤,可以从一个现有的Oracle环境中导出DMP文件,并将其导入到不同的表空间和不同的用户下,从而实现数据的有效迁移和管理。这种方式在进行数据迁移、测试环境搭建等方面非常实用,能够有效避免数据丢失和...

    ORACLE 导入导出表空间文档

    ### Oracle 数据库表空间管理与数据导入导出详解 #### 表空间概念及管理 在Oracle数据库中,**表空间**是逻辑存储结构的一部分,用于组织数据库中的数据和索引。一个表空间由一个或多个数据文件组成,这些数据文件...

    oracle导入时表空间不一致解决方法

    通过上述步骤,我们不仅解决了Oracle导入时表空间不一致的问题,还确保了数据能够顺利地从源系统迁移到目标系统中。在实际操作过程中,需要注意细节处理,尤其是表空间名称的替换以及权限的调整,这些都是保证数据...

    Oracle数据库导入导出工具

    - 表空间:指定数据导入导出的目标表空间。 - 用户和密码:连接数据库所需的身份验证信息。 - 数据文件路径:导出数据的保存位置或导入数据的源文件路径。 - 表/模式:选择要导入导出的特定表或整个模式。 - ...

    oracle备份出来的数据可以导入到另一表空间.txt

    oracle备份出来的数据可以导入到另一表空间.txt

    oracle下导出某用户所有表的方法

    Oracle 下导出某用户所有表的方法 Oracle 是一个功能强大且复杂的关系数据库管理系统,具有强大的数据存储和管理...Oracle 提供了多种方式来导出和导入数据,用户可以根据需要选择合适的方法来实现数据的导出和导入。

    oracle创建用户、表空间、导入导出命令

    ### Oracle 创建用户、表空间及导入导出命令详解 #### 一、创建表空间 在 Oracle 数据库中,表空间是存储数据的基本单位。表空间由一个或多个数据文件组成,用于存储表、索引等数据库对象。创建表空间通常包括创建...

    Oracle导入导出命令bat执行命.rar

    `expdp`用于导出数据库对象和数据,而`impdp`则用于将这些导出的数据导入到数据库中。这两个工具提供了许多选项和参数,以满足各种需求,例如指定导出的用户、表、模式,控制数据的过滤,以及设置导出的压缩级别等。...

    Oracle导出的dmp格式文件导入到达梦的操作步骤

    这部分主要介绍了如何使用达梦数据迁移工具将达梦数据库中的空表迁移到Oracle数据库中。 1. **新建工程** - 打开达梦数据迁移工具,创建新的工程。 2. **新建迁移** - 在新建的工程中创建新的迁移任务。 3. **...

    oracle导入导出表

    在Oracle中,管理和操作数据通常涉及到创建和操作表空间、用户以及数据的导入导出。以下是关于"Oracle导入导出表"这一主题的详细知识: 1. **创建表空间**: 表空间是Oracle数据库中存储数据的逻辑单位,它由一个...

    Oracle 19c 备份恢复-导入导出

    本文将详细介绍 Oracle 19c 备份恢复-导入导出的基本命令、工作方式、模式、选项和高级选项。 一、基本命令 exp 和 imp 是 Oracle 数据库提供的两个命令行工具,用于数据库的备份恢复和数据的导入导出。exp 用于...

    oracle数据库或表导入导出

    ### Oracle数据库或表导入导出知识点详解 #### 数据导出 在Oracle数据库管理中,数据导出是一项重要的操作,主要用于备份、迁移等场景。本文将详细介绍如何通过Oracle提供的工具进行数据库或表的数据导出。 #####...

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

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

    oracle不同用户名及表空间之间的数据导入

    这通常涉及到用户权限、数据导出、表空间映射以及数据的重新组织。下面将详细介绍如何在Oracle中实现这一目标。 首先,理解Oracle的用户名和表空间的概念至关重要。**用户名** 是数据库中的一个身份标识,每个用户...

    Oracle11g使用exp导出空表方法

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

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

    Oracle 11G 的导入导出工具 exp 和 imp 是数据库管理员进行数据迁移、备份和恢复的重要工具。然而,在11G R2 版本中,由于一个新特性,空表在没有数据的情况下不会分配 segment,导致无法通过 exp 导出。这个问题...

    oracle导出导入定时

    Oracle数据库的导出导入是数据库管理员日常维护工作中的重要环节,它涉及到数据的备份、迁移和恢复等操作。Oracle提供了一套强大的数据泵工具(Data Pump),包括expdp(导出)和impdp(导入)命令,用于高效地处理...

Global site tag (gtag.js) - Google Analytics