千家信息网

Oracle expdp/impdp导出导入命令及数据库备份

发表于:2024-10-20 作者:千家信息网编辑
千家信息网最后更新 2024年10月20日,使用EXPDP和IMPDP时应该注意的事项:EXP和IMP是客户端工具程序,它们既可以在客户端使用,也可以在服务端使用。EXPDP和IMPDP是服务端的工具程序,他们只能在ORACLE服务端使用,不能
千家信息网最后更新 2024年10月20日Oracle expdp/impdp导出导入命令及数据库备份使用EXPDP和IMPDP时应该注意的事项:

EXP和IMP是客户端工具程序,它们既可以在客户端使用,也可以在服务端使用。

EXPDP和IMPDP是服务端的工具程序,他们只能在ORACLE服务端使用,不能在客户端使用。

IMP只适用于EXP导出的文件,不适用于EXPDP导出文件;IMPDP只适用于EXPDP导出的文件,而不适用于EXP导出文件。

expdp或impdp命令时,可暂不指出用户名/密码@实例名 as 身份,然后根据提示再输入,如:

expdp schemas=scott dumpfile=expdp.dmp DIRECTORY=dpdata1;

一、创建逻辑目录,该命令不会在操作系统创建真正的目录,最好以system等管理员创建。

create directory dpdata1 as 'd:\test\dump';

二、查看管理理员目录(同时查看操作系统是否存在,因为Oracle并不关心该目录是否存在,如果不存在,则出错)

select * from dba_directories;

三、给scott用户赋予在指定目录的操作权限,最好以system等管理员赋予。

grant read,write on directory dpdata1 to scott;

四、导出数据

1)按用户导

expdp scott/tiger@orcl schemas=scott dumpfile=expdp.dmp DIRECTORY=dpdata1;

2)并行进程parallel

expdp scott/tiger@orcl directory=dpdata1 dumpfile=scott3.dmp parallel=40 job_name=scott3

3)按表名导

expdp scott/tiger@orcl TABLES=emp,dept dumpfile=expdp.dmp DIRECTORY=dpdata1;

4)按查询条件导

expdp scott/tiger@orcl directory=dpdata1 dumpfile=expdp.dmp Tables=emp query='WHERE deptno=20';

5)按表空间导

expdp system/manager DIRECTORY=dpdata1 DUMPFILE=tablespace.dmp TABLESPACES=temp,example;

6)导整个数据库

expdp system/manager DIRECTORY=dpdata1 DUMPFILE=full.dmp FULL=y;

五、还原数据

1)导到指定用户下

impdp scott/tiger DIRECTORY=dpdata1 DUMPFILE=expdp.dmp SCHEMAS=scott;

2)改变表的owner

impdp system/manager DIRECTORY=dpdata1 DUMPFILE=expdp.dmp TABLES=scott.dept REMAP_SCHEMA=scott:system;

3)导入表空间

impdp system/manager DIRECTORY=dpdata1 DUMPFILE=tablespace.dmp TABLESPACES=example;

4)导入数据库

impdb system/manager DIRECTORY=dump_dir DUMPFILE=full.dmp FULL=y;

5)追加数据

impdp system/manager DIRECTORY=dpdata1 DUMPFILE=expdp.dmp SCHEMAS=system TABLE_EXISTS_ACTION



数据泵impdp参数:
1.REMAP_DATAFILE 该选项用于将源数据文件名转变为目标数据文件名,在不同平台之间搬移表空间时需要该选项. REMAP_DATAFILE=source_datafie:target_datafile
2.REMAP_SCHEMA 该选项用于将源方案的所有对象装载到目标方案中. REMAP_SCHEMA=source_schema:target_schema
3.REMAP_TABLESPACE 将源表空间的所有对象导入到目标表空间中 REMAP_TABLESPACE=source_tablespace:target:tablespace
4.REUSE_DATAFILES 该选项指定建立表空间时是否覆盖已存在的数据文件.默认为N REUSE_DATAFIELS={Y | N}
5.SKIP_UNUSABLE_INDEXES 指定导入是是否跳过不可使用的索引,默认为N 6,sqlfile 参数允许创建DDL 脚本文件 impdp scott/tiger directory=dump_scott dumpfile=a1.dmp sqlfile=c.sql 默认放在directory下,因此不要指定绝对路径 7.STREAMS_CONFIGURATION 指定是否导入流元数据(Stream Matadata),默认值为Y.
8.TABLE_EXISTS_ACTION 该选项用于指定当表已经存在时导入作业要执行的操作,默认为SKIP TABBLE_EXISTS_ACTION={SKIP | APPEND | TRUNCATE | REPLACE } 当设置该选项为SKIP时,导入作业会跳过已存在表处理下一个对象; 当设置为APPEND时,会追加数据; 当设置为TRUNCATE时,导入作业会截断表,然后为其追加新数据; 当设置为REPLACE时,导入作业会删除已存在表,重建表并追加数据;
注意,TRUNCATE选项不适用与簇表和NETWORK_LINK选项
从一个用户的一个表空间导入到另一个用户的另一个表空间 impdp username/passwd directory=expdptemp dumpfile=2015.11.24.dmp remap_schema=training_zj:hagen.zj REMAP_TABLESPACE=training:zhejiang.jianli

关于空表exp不会导出的问题

1、Oracle11g默认对空表不分配segment,故使用exp导出Oracle11g数据库时,空表不会导出。


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

在sqlplus中,执行如下命令:

SQL>alter system set deferred_segment_creation=false;

查看:
SQL>show parameter deferred_segment_creation;


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


3、可以使用手工为空表分配Extent的方式,来解决导出之前建立的空表的问题。说明如下:


3.1 使用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中,对密码是大小写敏感的,即密码中的字母是区分大小写的。

在Oracle10g中及以前,密码中的字母大小写无所谓

数据 空间 命令 文件 分配 用户 目录 数据库 密码 对象 作业 参数 大小 客户 客户端 最好 目标 语句 服务 查询 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 无线桥接dns服务器没有响应 奇盈爷爷互联网科技有限公司 宜兴森时网络技术 2021网络安全宣传周活动时间 加强网络安全法制宣传 终端用户参与软件开发的原因 2019两会热点网络安全 网络安全示范点创建方案 安卓软件开发初学 本地会话管理服务器登陆失败 崇明区推广网络技术活动方案 数据服务器访问权限管理 网络安全的目的是保证信息的 江苏商城软件开发价钱是多少 前端与后端数据库 陈酿数据库炸号 usb打印机 打印服务器 胖东来软件开发 关于工业网络技术的报告 金山区品牌软件开发郑重承诺 无法连接深潜数据库 信息技术部网络安全小组 辽宁新东方网络技术有限公司 同一台服务器可以装两个数据库吗 本地专业软件开发联系方式 县级第三次国土调查数据库标准 数据库中用于表示实体的是 湖北国家网络安全操作 哈尔滨软件开发价格表 网络安全 誓词
0