oracle exp/imp命令使用parfile实现参数文件调用

本文详细介绍如何使用Oracle的数据泵工具(expdp/impdp)进行高效的数据导出,尤其适用于大量表结构和数据的迁移场景。通过创建并利用参数文件(parfile),可以简化并加速导出过程,避免了在命令行中手动输入大量表名的繁琐工作。

优先使用数据泵(expdp/impdp)方式,更高效,问题少。

 

关于exp/imp工具的使用请参考我的另一篇文章:

https://blog.youkuaiyun.com/IndexMan/article/details/7829748

 

说明:

假如你只想导出某用户下部分表结构和数据,而表有成百上千个,直接在命令行中写肯定费劲。我们可以将具体表名以及其他相关命令都写进一个参数文件中,例如:abc.par

在执行exp时这样写exp parfile=abc.par

 

parfile的最大好处是通过将多条命令封装为一个参数文件实现重复利用。

 

我实际工作中用的par文件

log=/opt/db_backup/ecc_table_data_20191212.log
file=/opt/db_backup/ecc_table_data_20191212.dmp
userid=ecc/ecc123@orcl
buffer=80960
tables=(T1,T2,T3...)
compress=no
consistent=no
grants=no
indexes=no
rows=yes
direct=yes

解释:

tables中指定要导出的表名,大写。

oracle 常用语句 --逻辑备份 --导出ORACLE参数 参数 说明 USERID 确定执行导出实用程序的用户名和口令 BUFFER 确定导出数据时所使用的缓冲区大小,其大小用字节表示 FILE 指定导出的二进制文件名称,默认的扩展名是.dmp FULL 指定是否以全部数据库方式导出,只有授权用户才可使用参数 OWNER 要导出的数据库用户列表 HELP 指定是否显示帮助消息和参数说明 ROWS 确定是否要导出表中的数据 TABLES 按表方式导出时,指定需导出的表和分区的名称 PARFILE 指定传递给导出实用程序的参数文件名 TABLESPACES 按表空间方式导出时,指定要导出的表空间名 --导出 --全库导出 exp system/accp@accp --在后面的参数中选择E --按用户方式导出 exp system/accp@newer file=d:\exp.dmp owner=scott,system --按表方式导出 exp scott/tiger@accp tables=(emp, dept) file=scott_back_tab --按表分区方式导出 exp scott/tiger@accp tables=(emp:p3) file=scott_back_tab --按表空间方式导出 exp system/aptech@accp tablespaces=(users) file=tbs_users --按参数文件方式导出,将要导出的命令写在文本文件exp system/aptech parfile='C:\parameters.txt' --导入ORACLE参数 参数 说明 USERID 指定执行导入的用户名和密码 BUFFER 指定用来读取数据的缓冲区大小,以字节为单位 COMMIT 指定是否在每个数组(其大小由BUFFER参数设置)插入后进行提交 FILE 指定要导入的二进制文件名 FROMUSER 指定要从导出转储文件中导入的用户模式 TOUSER 指定要将对象导入的用户名。FROMUSER与TOUSER可以不同 FULL 指定是否要导入整个导出转储文件 TABLES 指定要导入的表的列表 ROWS 指定是否要导入表中的行 PARFILE 指定传递给导入实用程序的参数文件名,此文件可以包含这里列出的所有参数 IGNORE 导入时是否忽略遇到的错误,默认为N TABLESPACES 按表空间方式导入,列出要导入的表空间名 --导入 --整个文件导入 imp accp/accp@accp file=d:\item_back.dmp ignore=y full=y --特定用户的表导入到指定的用户下面 imp system/aptech@accp file=d:\item_back.dmp fromuser=scott touser=martin tables=(emp,dept) --参数文件方式导入,将要导入的命令文本写在文件imp system/oracle parfile='C:\parameters.txt' --物理备份 冷备份 1. connect sys/sys@newer as sysdba 2. shutdown immediate 3. 复制 oracle目录中的oradata\oradb的子目录中的所有文件 到备份的目录中 冷恢复 1.将数据文件还原回所在位置 ,然后启动数据库 2.starup 进行热备份必须处于“归档日志模式下” 1.启动sqlplus ,并以sysdba方式链接到数据库系统,输入下列命令看看是否处于归档模式 SQL> archive log list 数据库日志模式 非存档模式 自动存档 禁用 存档终点 d:\oracle\ora92\RDBMS 最早的概要日志序列 1 当前日志序列 3 2. 启动归档日志模式 SQL> shutdown immediate 数据库已经关闭。 已经卸载数据库。 ORACLE 例程已经关闭。 SQL> startup mount ORACLE 例程已经启动。 Total System Global Area 143727516 bytes Fixed Size 453532 bytes Variable Size 109051904 bytes Database Buffers 33554432 bytes Redo Buffers 667648 bytes 数据库装载完毕。 SQL> alter database archivelog; 数据库已更改。 SQL> archive log list 数据库日志模式 存档模式 自动存档 禁用 存档终点 d:\oracle\ora92\RDBMS 最早的概要日志序列 1 下一个存档日志序列 3 当前日志序列 3 3.关闭存档模式, alter data base noarchivelog --查看归档日志方式,在SQL_PLUS中,不能在PL/SQL中 conn sys/accp@accp as sysdba; archive log list; --查看归档日志信息 SELECT DEST_ID,DEST_NAME,STATUS,DESTINATION FROM V$ARCHIVE_DEST WHERE STATUS='VALID'; --查看归档日志的日志 SELECT DEST_ID,NAME,ARCHIVED FROM V$ARCHIVED_LOG; --在命令行中操作数据库 --登录 sqlplus sys/accp@newer as sysdba --关闭数据库 shutdown immediate --启动数据库 startup restrict startup mount --修改归档日志模式 alter database archivelog ARCHIVELOG模式的优点: ·有可能进行完全恢复。由于对数据库所做的全部改动就保存在日志文件中,如果因为包括介质失效在内的某种失效而导致数据库文件丢失的话,可以利用物理备份和归档日志完全恢复数据库,不会丢失任何数据。所有已经提交的事务都可以查到。 ·有可能进行联机备份。允许用户在进行数据备份的同时使用数据库。 ·表空间可以立即脱机。 ·如果一个分布式数据库系统的所有节点都运行在ARCHIVELOG模式下,可以进行分布式恢复。 ·提供更多的恢复选择。 ·通过使用一个备用数据库,能够提供最大限度的灾难保护手段。 ARCHIVELOG模式的缺点: ·保存归档日志文件需要更多的磁盘空间。 ·DBA需要更多的时间来管理数据库。 NOARCHIVELOG模式的特点: ·由于数据文件的丢失,如果需要恢复,只能恢复到最后一个完全脱机数据库备份。在最后一个完全脱机备份后的数据改动都将丢失。因此,需要进行非常频繁的脱机备份。 ·必须进行完整的数据库备份,不能仅备份部分数据库。 ·不能进行联机备份,脱机备份过程中不能使用数据库。 ·表空间不能立即脱机。 ·DBA的管理的工作减少 采用Oracle ArchiveLog模式和非ArchiveLog模式对备份恢复的影响 备份的目的在于,当系统或数据库出现问题时,能够快速将数据库进行恢复。对于Oracle数据库,一般有两种备份方式:“物理备份”和“逻辑备份”。“物理备份”指的是以copy数据文件方式进行备份;“逻辑备份”指的是用export等方式将数据从数据库中抽取出来。物理备份又可以分为冷备份和热备份。以下是各种备份的说明及前提条件。 - Cold Backup(冷备份) 主要指在关闭数据库的状态下进行的数据库完全备份,备份内容包括所有数据文件、控制文件、联机日志文件、ini文件。 - Hot Backup(热备份) 指在数据库处于运行状态下,对数据文件和控制文件进行备份,要使用热备份必须将数据库运行在(Archive Log)归档方式下。 - Export(逻辑备份)这是最简单的备份方法,可按数据库中某个表、某个用户或整个数据库来导出,并且支持全部、累计、增量三种方式。使用这种方法,数据库必须处于打开状态,而且如果数据库不是在restrict状态将不能保证导出数据的一致性。 “物理备份”方式以相当于copy数据文件的方式进行备份,恢复时可以快速以相当于copy的方式将备份的数据copy回来,所以备份速度特别是恢复速度非常快。 如果不采用Archive Log模式运行Oracle数据库,只有两种可用的备份方法:冷备份或export逻辑备份。根据关键业务服务器的特点,停下数据库进行冷备份是根本不可能的,因此如果不采用Archive Log,只能进行逻辑备份。 如果仅采用“逻辑备份”方式,恢复时会有以下两个主要问题: 1. 无法恢复到最近时间点的数据。只能恢复到上一次export时的数据状态,当天的数据将丢失。Archive Log模式下的物理备份可以用数据文件备份及Archive Log备份,将数据库恢复到数据库失败前的时间点,不会丢失数据。 2. 完成恢复可能需要很长时间。恢复只能用import方法进行,所以需要的时间包括: a. create database及所有的tablespace: 以每2分钟初始化一个2G的数据文件来计算,建立一个400G的Oracle数据库需要约6.7个小时。 b. import。时间较难确定,但保守估计应在10个小时以上(如果import过程中出现问题,恢复时间将延长) 3. 恢复时步骤较多,易出现人为故障。 由于 这些原因,一般备份/恢复时都把export/import的方式做为辅助备份/恢复方式,对一些重要的表进行二级保护。这种备份方式也称为“逻辑备份”方式,当某些重要的表被意外删除时可进行逻辑import恢复。 而对于整个数据库的日常备份/恢复,需要采用“物理备份”方式,即以相当于copy数据文件的方式进行备份,恢复时可以快速以相当于copy的方式将备份的数据copy回来。一般物理备份/恢复都采用Oracle RMAN工具来进行。 下面是“逻辑备份”与“物理备份”在数据库故障时的恢复比较: 1. Oracle逻辑错误造成无法启动 逻辑恢复: 重新create database及各tablespace,import。可恢复到上次export的数据 物理恢复: 将所有datafile copy回来,并利用archivelog将数据库recover到故障前的状态 2. 某一个datafile故障或丢失 逻辑恢复: 重新create database及各tablespace,import。可恢复到上次export的数据 物理恢复: 将该datafile copy回来 3. 某一个tablespace故障 逻辑恢复: 重新create database及各tablespace,import。可恢复到上次export的数据 物理恢复: 将该tablespace copy回来 4. 意外drop table 逻辑恢复: Import 该table 物理恢复: 将备份恢复到另一服务器上,export该table,在原数据库中import 5. 意外drop user 逻辑恢复: Import 该user 物理恢复: 将备份恢复到另一服务器上,export该user,在原数据库中import 6. 意外drop tablespace 逻辑恢复: 情况较复杂,恢复易造成数据库表之间的参照完整性被破坏。在此不做分析 物理恢复: 情况较复杂,恢复易造成数据库表之间的参照完整性被破坏。在此不做分析 在进行数据库的恢复时,一定要了解Oracle数据库的原理,分析故障的原因,然后针对故障的情况进行相应的恢复。例如以下情况: - Oracle程序文件损坏? - control file损坏? - Online redo log损坏? - datafile损坏? - archive log损坏? - table或其中数据被意外删除? 不同情况下需要采用的恢复手段都是不尽相同的,需根据损坏的情况进行相应的恢复步骤。
<think>好的,用户让我介绍一下“imp parfile”,首先我需要明确这个术语指的是什么。Imp可能是指Oracle数据库中的导入工具imp,而parfile可能是参数文件的缩写。所以用户可能是在询问如何使用imp工具的参数文件。 首先,我需要回忆一下Oracleimp工具的基本用法。imp用于将数据导入到Oracle数据库中,通常需要指定用户名、密码、要导入的文件参数。当参数较多时,使用parfile可以方便地将这些参数写在一个文件里,避免在命令行中重复输入。 接下来,我需要确认parfile的具体格式和常用参数。比如,parfile通常是一个文本文件,每行一个参数,例如file=expdat.dmp,log=import.log等等。还需要说明用户如何调用parfile,比如imp username/password parfile=参数文件名。 然后,我需要考虑用户可能的背景。如果用户是数据库管理员或开发人员,他们可能已经对imp有一定的了解,但需要更高效的方法来处理复杂的导入任务。或者用户可能是新手,需要从基础开始解释。因此,解释时需要兼顾不同层次的理解,既给出基本结构,也举例说明,并提到常见参数的作用。 另外,用户的问题可能存在拼写错误,比如“parfile”是否正确,或者是否有其他工具也叫imp,但根据常见的Oracle工具,应该是正确的。需要确认这一点,避免误解。 最后,总结parfile的优势,比如便于管理、避免敏感信息泄露在命令行历史中,以及如何实际应用。确保回答清晰、步骤明确,并提供一个示例,让用户能够直观地理解如何创建和使用parfile。</think>`imp parfile` 是 Oracle 数据库中用于数据导入工具 **`imp`**(Import Utility)的参数文件(Parameter File)。它允许用户将导入操作所需的参数预先写入一个文件,避免在命令行中逐一手动输入,尤其在处理复杂或重复任务时非常高效。 --- ### **1. 基本概念** - **`imp` 工具**:用于将 Oracle 数据库导出文件(`.dmp` 文件)中的数据导入到数据库中。 - **`parfile`**:一个文本文件,其中包含 `imp` 命令所需的各种参数和配置选项。通过 `parfile` 可以简化命令行的输入,并提高可维护性。 --- ### **2. Parfile 文件的结构** Parfile 是一个纯文本文件,每行指定一个参数及其值,格式如下: ```plaintext userid=username/password file=export_data.dmp tables=employees,departments ignore=y log=import.log ``` 常用参数说明: - **`userid`**: 数据库用户名和密码(可选,若直接在命令行输入则更安全)。 - **`file`**: 要导入的 `.dmp` 文件路径。 - **`tables`**: 指定要导入的表(逗号分隔)。 - **`ignore=y`**: 忽略创建错误(如表已存在)。 - **`log`**: 导入过程的日志文件路径。 - **`full=y`**: 导入整个导出文件(全库导入)。 - **`fromuser`/`touser`**: 跨用户导入时指定源用户和目标用户。 --- ### **3. 如何使用 Parfile** 在命令行中通过 `parfile` 参数调用文件: ```bash imp parfile=my_import_params.txt ``` 或结合用户名/密码: ```bash imp system/oracle parfile=my_import_params.txt ``` --- ### **4. Parfile 的优势** 1. **简化复杂命令**:避免在命令行中输入大量参数。 2. **安全性**:敏感信息(如密码)可不直接暴露在命令行历史中。 3. **可复用性**:同一参数文件可用于重复操作(如定期导入)。 4. **易维护性**:集中管理参数,便于修改和版本控制。 --- ### **5. 示例场景** **需求**:将 `hr_export.dmp` 文件中的 `employees` 和 `departments` 表导入到用户 `hr` 的数据库中,并生成日志文件。 **Parfile 内容** (`import_hr.txt`): ```plaintext userid=hr/hr_password file=/backup/hr_export.dmp tables=employees,departments ignore=y log=/logs/hr_import.log ``` **执行命令**: ```bash imp parfile=import_hr.txt ``` --- ### **6. 注意事项** - Oracle 的 `imp` 工具适用于旧版本数据库(通常与 `exp` 导出工具配套使用)。新版本推荐使用 **`impdp`**(Data Pump Import),功能更强大且支持更多参数。 - 若使用 `impdp`,参数文件需通过 `directory` 指定目录对象,语法类似但略有不同。 如果需要进一步了解 `impdp` 或更具体的参数配置,可以随时补充提问!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值