数据库我的专题

Oracle系列之一:备份还原之:EXP、IMP和EXPDP、I

2019-02-22  本文已影响33人  小六的昵称已被使用

title: Oracle系列之一:备份还原之:EXP、IMP和EXPDP、IMPDP
categories: Linux
tags:
- Oracle
timezone: Asia/Shanghai
date: 2019-02-01


环境

[root@rehl7501 oracle]# cat /etc/redhat-release 
Red Hat Enterprise Linux Server release 7.5 (Maipo)

Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production

简介

1、exp和imp是客户端工具程序,它们既可以在客户端使用,也可以在服务端使用。
2、expdp和impdp是服务端的工具程序,他们只能在oracle服务端使用,不能在客户端使用。
3、imp只适用于exp导出的文件,不适用于expdp导出文件;impdp只适用于expdp导出的文件,而不适用于exp导出文件。

方法1:EXP\IMP方式备份和还原数据库

1.1.EXP备份:传统路径导出

# 用户模式:备份admin用户的所有表
exp admin/xiaoliu@11.11.11.111/oracledb FILE=/home/oracle/full.dmp LOG=/home/oracle/full.log OWNER=admin

# 表模式(只导出C_CONS, DATASOURCE两个表数据)
exp admin/xiaoliu@11.11.11.111/oracledb FILE=/home/oracle/full.dmp LOG=/home/oracle/full.log TABLES=C_CONS, DATASOURCE

    ROWS=N      # 可以加此参数只导出数据库结构而不导出数据

1.2.EXP备份:直接路径导出

# 用户模式:备份admin用户的所有表
exp admin/xiaoliu@11.11.11.111/oracledb FILE=/home/oracle/full.dmp LOG=/home/oracle/full.log OWNER=admin \
    recordlength=65535 direct=y buffer=104857600

# 表模式(只导出C_CONS, DATASOURCE两个表数据)
exp admin/xiaoliu@11.11.11.111/oracledb FILE=/home/oracle/full.dmp LOG=/home/oracle/full.log TABLES=C_CONS, DATASOURCE \
    recordlength=65535 direct=y buffer=104857600

    ROWS=N      # 可以加此参数只导出数据库结构而不导出数据

1.3.传统路径导出和直接路径导出对比

1.两者的差异

2.性能问题

3、直接路径导出的限制

2.IMP还原:

# 用户模式:恢复所有表
imp admin/xiaoliu FILE=/home/oracle/full.dmp LOG=/home/oracle/full.log FROMUSER=user_pssc_sm64 TOUSER=admin
imp admin/xiaoliu FILE=/home/oracle/full.dmp LOG=/home/oracle/full.log FULL=y

# 表模式:(只恢复C_CONS, DATASOURCE两个表数据)
imp admin/xiaoliu FILE=/home/oracle/full.dmp FROMUSER=user_pssc_sm64 TOUSER=admin TABLES=C_CONS, DATASOURCE
imp admin/xiaoliu FILE=/home/oracle/full.dmp TABLES=C_CONS, DATASOURCE


    ignore=y    # 表示忽略创建错误,继续后面的操作
                # Oracle不执行CREATE TABLE语句,直接将数据插入到表中
                # 假如插入的记录违反了约束条件,比如主键约束
                # 则出错的记录不会插入,但合法的记录会添加到表中。
    
    ignore=n    # Oracle不执行CREATE TABLE语句
                # 同时也不会将数据插入到表中
                # 而是忽略该表的错误,继续恢复下一个表。

方法2:EXPDP\IMPDP数据泵方式备份和还原数据库

准备工作

su - oracle
mkdir -p /home/oracle/bak/
sqlplus / as sysdba
select * from dba_directories;
CREATE OR REPLACE DIRECTORY bak AS '/home/oracle/bak/';
GRANT READ, WRITE ON DIRECTORY test_dir TO scott;

1.用户模式:备份和恢复admin的所有表

# 普通方式导入导出
expdp admin/xiaoliu SCHEMAS=admin DIRECTORY=bak DUMPFILE=full.dmp LOGFILE=full.log COMPRESSION=all
impdp admin/xiaoliu SCHEMAS=admin DIRECTORY=bak DUMPFILE=full.dmp LOGFILE=full.log

# 开启并行模式
expdp admin/xiaoliu SCHEMAS=admin DIRECTORY=bak DUMPFILE=full_%U.dmp LOGFILE=full.log COMPRESSION=all PARALLEL=2
impdp admin/xiaoliu SCHEMAS=admin DIRECTORY=bak DUMPFILE=full_%U.dmp LOGFILE=full.log PARALLEL=2

    COMPRESSION={ALL | DATA_ONLY | METADATA_ONLY | NONE}
        ALL:压缩元数据和数据。
        DATA_ONLY:仅压缩数据。
        METADATA_ONLY:仅压缩元数据。这是默认设置。
        NONE:什么都没有被压缩。
        
    PARALLEL=4      # 并行导入和导出,这里的4一般设置为CPU的个数,可提高效率
    CLUSTER=NO      # 对于小作业,最好指定CLUSTER = NO来约束作业在启动它的实例上运行。
                    # 使用CLUSTER参数可能会影响性能
                    # 因为跨Oracle RAC实例分发导出作业会产生一些额外的开销。

2.表模式:只备份和恢复C_CONS, DATASOURCE表

expdp admin/xiaoliu TABLES=C_CONS, DATASOURCE DIRECTORY=bak DUMPFILE=full.dmp LOGFILE=full.log COMPRESSION=all
impdp admin/xiaoliu TABLES=C_CONS, DATASOURCE DIRECTORY=bak DUMPFILE=full.dmp LOGFILE=full.log

    COMPRESSION={ALL | DATA_ONLY | METADATA_ONLY | NONE}
        ALL:压缩元数据和数据。
        DATA_ONLY:仅压缩数据。
        METADATA_ONLY:仅压缩元数据。这是默认设置。
        NONE:什么都没有被压缩。
        
    PARALLEL=4      # 并行导入和导出,这里的4一般设置为CPU的核数,可提高效率
    CLUSTER=NO      # 对于小作业,最好指定CLUSTER = NO来约束作业在启动它的实例上运行。
                    # 使用CLUSTER参数可能会影响性能
                    # 因为跨Oracle RAC实例分发导出作业会产生一些额外的开销。

3.按查询条件

expdp admin/xiaoliu DIRECTORY=bak DUMPFILE=full.dmp LOGFILE=full.log COMPRESSION=all TABLES=C_CONS QUERY=WHERE ROWNUM < 1000
impdp admin/xiaoliu DIRECTORY=bak DUMPFILE=full.dmp LOGFILE=full.log

    COMPRESSION={ALL | DATA_ONLY | METADATA_ONLY | NONE}
            ALL:压缩元数据和数据。
            DATA_ONLY:仅压缩数据。
            METADATA_ONLY:仅压缩元数据。这是默认设置。
            NONE:什么都没有被压缩。
            
    PARALLEL=4      # 并行导入和导出,这里的4一般设置为CPU的个数,可提高效率
    CLUSTER=NO      # 对于小作业,最好指定CLUSTER = NO来约束作业在启动它的实例上运行。
                    # 使用CLUSTER参数可能会影响性能
                    # 因为跨Oracle RAC实例分发导出作业会产生一些额外的开销。

附录:EXPDP\IMPDP数据泵方式在RAC环境中使用的说明

在Oracle RAC环境中导出期间使用PARALLEL

在Oracle Real Application Clusters(Oracle RAC)环境中,如果导出操作的PARALLEL = 1,则所有Data Pump进程都驻留在启动作业的实例上。 因此,目录对象可以指向该实例的本地存储。

如果导出操作将PARALLEL设置为大于1的值,则数据泵进程可以驻留在作业启动的实例之外的实例上。 因此,目录对象必须指向可由Oracle RAC的所有实例访问的共享存储。

限制

此参数仅在Oracle Database 11g企业版中有效。

英文:

Using PARALLEL During An Export In An Oracle RAC Environment

In an Oracle Real Application Clusters (Oracle RAC) environment, if an export operation has PARALLEL=1, then all Data Pump processes reside on the instance where the job is started. Therefore, the directory object can point to local storage for that instance.

If the export operation has PARALLEL set to a value greater than 1, then Data Pump processes can reside on instances other than the one where the job was started. Therefore, the directory object must point to shared storage that is accessible by all instances of the Oracle RAC.

Restrictions

This parameter is valid only in the Enterprise Edition of Oracle Database 11g.

上一篇下一篇

猜你喜欢

热点阅读