搜档网
当前位置:搜档网 › Oracle数据库导入导出(备份与恢复)

Oracle数据库导入导出(备份与恢复)

Oracle数据库导入导出(备份与恢复)
Oracle数据库导入导出(备份与恢复)

Oracle数据库导入导出命令(备份与恢复)

Toad 一个很好的oralce数据库操作与管理工具,使用它可以很方便地导入导出数据表,用户以及整个数据库。今天在这里主要讲一下用命令行来操作oracle数据导入和导出:

备份数据

1、获取帮助:

exp help=y

2. 导出一个完整数据库

exp user/pwd@instance file=path full=y

示例:exp system/system@xc file = c:/hehe full =y

imp tax/test@tax file=d:/dbbak.dmp full=y

3 、导出一个或一组指定用户所属的全部表、索引和其他对象

exp system/manager file=seapark log=seapark owner=seapark

exp system/manager file=seapark log=seapark owner=(seapark,amy,amyc,harold)

示例:exp system/system@xc file=c:/hehe owner=uep

4、导出一个或多个指定表

exp system/manager file=tank log=tank tables=(seapark.tank,amy.artist)

示例:exp system/system@xc file=c:/heh tables=(ueppm.ne_table)

恢复数据

1. 获取帮助

imp help=y

2. 导入一个完整数据库

imp system/manager file=bible_db log=dible_db full=y ignore=y

3. 导入一个或一组指定用户所属的全部表、索引和其他对象

imp system/manager file=seapark log=seapark fromuser=seapark

imp system/manager file=seapark log=seapark fromuser=(seapark,amy,amyc,harold)

4. 将一个用户所属的数据导入另一个用户

imp system/manager file=tank log=tank fromuser=seapark touser=seapark_copy

imp system/manager file=tank log=tank fromuser=(seapark,amy) touser=(seapark1, amy1)

5. 导入一个表

imp system/manager file=tank log=tank fromuser=seapark TABLES=(a,b)

************************

****************************

利用Export可将数据从数据库中提取出来,利用Import则可将提取出来的数据送回Oracle 数据库中去。

1. 简单导出数据(Export)和导入数据(Import)

Oracle支持三种类型的输出:

(1)表方式(T方式),将指定表的数据导出。

(2)用户方式(U方式),将指定用户的所有对象及数据导出。

(3)全库方式(Full方式),将数据库中的所有对象导出。

数据导出(Import)的过程是数据导入(Export)的逆过程,它们的数据流向不同。

通过输入EXP 命令和用户名/口令,您可以

在用户/ 口令之后的命令:

实例: EXP SCOTT/TIGER

或者,您也可以通过输入跟有各种参数的EXP 命令来控制“导出”

的运行方式。要指定参数,您可以使用关键字:

格式: EXP KEYWORD=value 或KEYWORD=(value1,value2,...,valueN)

实例: EXP SCOTT/TIGER GRANTS=Y TABLES=(EMP,DEPT,MGR)

或TABLES=(T1: P1,T1: P2),如果T1 是分区表

USERID 必须是命令行中的第一个参数。

关键字说明(默认)关键字说明(默认)

--------------------------------------------------------------------------

USERID 用户名/口令FULL 导出整个文件(N)

BUFFER 数据缓冲区的大小OWNER 所有者用户名列表

FILE 输出文件(EXPDAT.DMP) TABLES 表名列表COMPRESS 导入一个范围(Y) RECORDLENGTH IO 记录的长度GRANTS 导出权限(Y) INCTYPE 增量导出类型

INDEXES 导出索引(Y) RECORD 跟踪增量导出(Y)

ROWS 导出数据行(Y) PARFILE 参数文件名CONSTRAINTS 导出限制(Y) CONSISTENT 交叉表一致性

LOG 屏幕输出的日志文件STATISTICS 分析对象(ESTIMATE) DIRECT 直接路径(N) TRIGGERS 导出触发器(Y)

FEEDBACK 显示每x 行(0) 的进度

FILESIZE 各转储文件的最大尺寸

QUERY 选定导出表子集的子句

下列关键字仅用于可传输的表空间

TRANSPORT_TABLESPACE 导出可传输的表空间元数据(N)

TABLESPACES 将传输的表空间列表

在没有警告的情况下成功终止导出。

IMP jwd/jwd@ps D:\DD\PHARMACY.DMP FULL=Y

此方式导入的数据库带有表结构和数据内容。

********************

********************************

oracle导入导出命令详解(附数据库每天定时备份脚本)收藏

新一篇: 关于oracle中纵向记录横向显示的问题举例说明| 旧一篇: 监控数据库表空间使用情况

一. 导出工具exp

1. 它是操作系统下一个可执行的文件存放目录/ORACLE_HOME/bin

exp导出工具将数据库中数据备份压缩成一个二进制系统文件.可以在不同OS间迁移

它有三种模式:

a. 用户模式:导出用户所有对象以及对象中的数据;

b. 表模式:导出用户所有表或者指定的表;

c. 整个数据库:导出数据库中所有对象。

2. 导出工具exp交互式命令行方式的使用的例子

$exp test/test123@appdb

Enter array fetch buffer size: 4096 > 回车

Export file: expdat.dmp > m.dmp 生成导出的文件名

(1)E(ntire database), (2)U(sers), or (3)T(ables): (2)U > 3

Export table data (yes/no): yes > 回车

Compress extents (yes/no): yes > 回车

Export done in ZHS16GBK character set and ZHS16GBK NCHAR character set

About to export specified tables via Conventional Path ...

Table(T) or Partition(T:P) to be exported: (RETURN to quit) > cmamenu 要导出的表名

. . exporting table CMAMENU 4336 rows exported

Table(T) or Partition(T:P) to be exported: (RETURN to quit) >要导出的表名n

Table(T) or Partition(T:P) to be exported: (RETURN to quit) > 回车

Export terminated successfully without warnings.

3. 导出工具exp非交互式命令行方式的例子

$exp scott/tiger tables=emp,dept file=/directory/scott.dmp grants=y

说明:把scott用户里两个表emp,dept导出到文件/directory/scott.dmp

$exp scott/tiger tables=emp query=\"where job=\'salesman\' and sal\<1600\" file=/directory/scott2.dmp

说明:在exp里面加上导出emp的查询条件job='salesman' and sal<1600

(但我个人很少这样用,还是把满足条件的记录生成临时表后,再exp会方便一些)

$exp parfile=username.par file=/directory1/username_1.dmp,/directory1/username_2.dmp filesize=2000M log=/directory2/username_exp.log

参数文件username.par内容

userid=username/userpassword

buffer=8192000

compress=n

grants=y

说明:username.par为导出工具exp用的参数文件,里面具体参数可以根据需要去修改filesize指定生成的二进制备份文件的最大字节数

(可用来解决某些OS下2G物理文件的限制及加快压缩速度和方便刻历史数据光盘等) 4. 命令参数说明

关键字说明(默认)

---------------------------------------------------

USERID 用户名/口令

FULL 导出整个文件(N)

BUFFER 数据缓冲区的大小

OWNER 所有者用户名列表

FILE 输出文件(EXPDAT.DMP)

TABLES 表名列表

COMPRESS 导入一个范围(Y)

RECORDLENGTH IO 记录的长度

GRANTS 导出权限(Y)

INCTYPE 增量导出类型

INDEXES 导出索引(Y)

RECORD 跟踪增量导出(Y)

ROWS 导出数据行(Y)

PARFILE 参数文件名

CONSTRAINTS 导出限制(Y)

CONSISTENT 交叉表一致性

LOG 屏幕输出的日志文件

STATISTICS 分析对象(ESTIMATE)

DIRECT 直接路径(N)

TRIGGERS 导出触发器(Y)

FEEDBACK 显示每x 行(0) 的进度

FILESIZE 各转储文件的最大尺寸

QUERY 选定导出表子集的子句

下列关键字仅用于可传输的表空间

TRANSPORT_TABLESPACE 导出可传输的表空间元数据(N)

TABLESPACES 将传输的表空间列表

二.导入工具imp

1. 它是操作系统下一个可执行的文件存放目录/ORACLE_HOME/bin

imp导入工具将EXP形成的二进制系统文件导入到数据库中.

它有三种模式:

a. 用户模式:导出用户所有对象以及对象中的数据;

b. 表模式:导出用户所有表或者指定的表;

c. 整个数据库:导出数据库中所有对象。

只有拥有IMP_FULL_DATABASE和DBA权限的用户才能做整个数据库导入

imp步骤:

(1) create table (2) insert data (3) create index (4) create triggers,constraints

2.导入工具imp交互式命令行方式的例子

$ imp

Import: Release 8.1.6.0.0 - Production on 星期五12月7 17:01:08 2001

(c) Copyright 1999 Oracle Corporation. All rights reserved.

用户名: test

口令:****

连接到: Oracle8i Enterprise Edition Release 8.1.6.0.0 - 64bit Production

With the Partitioning option

JServer Release 8.1.6.0.0 - Production

导入文件: expdat.dmp> /tmp/m.dmp

输入插入缓冲区大小(最小为8192 ) 30720>

经由常规路径导出由EXPORT:V08.01.06创建的文件

警告: 此对象由TEST 导出, 而不是当前用户

已经完成ZHS16GBK字符集和ZHS16GBK NCHAR 字符集中的导入

只列出导入文件的内容(yes/no):no>

由于对象已存在, 忽略创建错误(yes/no):no> yes

导入权限(yes/no):yes>

导入表数据(yes/no):yes>

导入整个导出文件(yes/no):no> yes

. 正在将TEST的对象导入到SCOTT

. . 正在导入表"CMAMENU" 4336行被导入

成功终止导入,但出现警告。

3.导入工具imp非交互式命令行方式的例子

$ imp system/manager fromuser=jones tables=(accts)

$ imp system/manager fromuser=scott tables=(emp,dept)

$ imp system/manager fromuser=scott touser=joe tables=emp

$ imp scott/tiger file = expdat.dmp full=y

$ imp scott/tiger file = /mnt1/t1.dmp show=n buffer=2048000 ignore=n commit=y grants=y full=y log=/oracle_backup/log/imp_scott.log

$ imp system/manager parfile=params.dat

params.dat 内容

file=dba.dmp show=n ignore=n grants=y fromuser=scott tables=(dept,emp)

4.导入工具imp可能出现的问题

(1) 数据库对象已经存在

一般情况, 导入数据前应该彻底删除目标数据下的表, 序列, 函数/过程,触发器等;

数据库对象已经存在, 按缺省的imp参数, 则会导入失败

如果用了参数ignore=y, 会把exp文件内的数据内容导入

如果表有唯一关键字的约束条件, 不合条件将不被导入

如果表没有唯一关键字的约束条件, 将引起记录重复

(2) 数据库对象有主外键约束

不符合主外键约束时, 数据会导入失败

解决办法: 先导入主表, 再导入依存表

disable目标导入对象的主外键约束, 导入数据后, 再enable它们

(3) 权限不够

如果要把A用户的数据导入B用户下, A用户需要有imp_full_database权限

(4) 导入大表( 大于80M ) 时, 存储分配失败

默认的EXP时, compress = Y, 也就是把所有的数据压缩在一个数据块上.

导入时, 如果不存在连续一个大数据块, 则会导入失败.

导出80M以上的大表时, 记得compress= N, 则不会引起这种错误.

(5) imp和exp使用的字符集不同

如果字符集不同, 导入会失败, 可以改变unix环境变量或者NT注册表里NLS_LANG 相关信息.

导入完成后再改回来.

(6) imp和exp版本不能往上兼容

imp可以成功导入低版本exp生成的文件, 不能导入高版本exp生成的文件

根据情况我们可以用

$ imp username/password@connect_string

说明: connect_string 是在/ORACLE_HOME/network/admin/tnsnames.ora

定义的本地或者远端数据库的名称

5.命令参数说明

关键字说明(默认)

----------------------------------------------

USERID 用户名/口令

FULL 导入整个文件(N)

BUFFER 数据缓冲区大小

FROMUSER 所有人用户名列表

FILE 输入文件(EXPDAT.DMP)

TOUSER 用户名列表

SHOW 只列出文件内容(N)

TABLES 表名列表

IGNORE 忽略创建错误(N)

RECORDLENGTH IO 记录的长度

GRANTS 导入权限(Y)

INCTYPE 增量导入类型

INDEXES 导入索引(Y)

COMMIT 提交数组插入(N)

ROWS 导入数据行(Y)

PARFILE 参数文件名

LOG 屏幕输出的日志文件

CONSTRAINTS 导入限制(Y)

DESTROY 覆盖表空间数据文件(N)

INDEXFILE 将表/索引信息写入指定的文件

SKIP_UNUSABLE_INDEXES 跳过不可用索引的维护(N)

ANALYZE 执行转储文件中的ANALYZE 语句(Y)

FEEDBACK 显示每x 行(0) 的进度

TOID_NOVALIDATE 跳过指定类型id 的校验

FILESIZE 各转储文件的最大尺寸

RECALCULATE_STATISTICS 重新计算统计值(N)

下列关键字仅用于可传输的表空间

TRANSPORT_TABLESPACE 导入可传输的表空间元数据(N)

TABLESPACES 将要传输到数据库的表空间

DATAFILES 将要传输到数据库的数据文件

TTS_OWNERS 拥有可传输表空间集中数据的用户

三. unix下oracle数据库定时备份脚本(按用户备份)

以下命令可以用crontab方式每天夜里2点定时执行,脚本最多分30个文件,每个文件大小最大1G的形式将数据库导出,

如果数据库数据量很大,多于30G,则会导出不成功,此时只需根据数据量大小调整变量num的值即可。该脚本将数据库

导出后用gzip进行压缩,然后保存到系统/data/expfiles,导出之前,会将前一天的备份移到/data/expfiles_bak,

此种备份方式可以保存最近两天的数据备份。

outfile=`date +%Y%m%d_%H%M`

num=30

i=1

files=

if [ ! -d /data/expfiles ]; then

mkdir /data/expfiles

fi

if [ ! -d /data/expfiles_bak ]; then

mkdir /data/expfiles_bak

fi

dfile=`ls -1 /data/expfiles_bak/|awk '{if ( NR < 2 ) {print $1}}'`

prefix=`echo | awk '{print substr("'"${dfile}"'",1,13)}'`

rm -f /data/expfiles_bak/${prefix}*

dfile=`ls -1 /data/expfiles/|awk '{if ( NR < 2 ) {print $1}}'`

prefix=`echo | awk '{print substr("'"${dfile}"'",1,13)}'`

mv /data/expfiles/${prefix}* /data/expfiles_bak

while [ $i -lt $num ]

do

files=$files/data/expfiles/${outfile}_$i.dmp,

i=` expr $i + 1 `

done

files=$files/data/expfiles/${outfile}_$i.dmp

#echo $files

exp userid=user/passwd@acct FILE=$files filesize=1024M grants=N 2>>exp_rpt.log

gzip /data/expfiles/${outfile}*

oracle数据库数据的导入导出

Oracle数据库导入导出命令(备份与恢复) Toad 一个很好的oralce数据库操作与管理工具,使用它可以很方便地导入导出数据表,用户以及整个数据库。今天在这里主要讲一下用命令行来操作oracle数据导入和导出: 备份数据 1、获取帮助: exp help=y 2. 导出一个完整数据库 exp user/pwd@instance file=path full=y 示例:exp system/system@xc file = c:/hehe full =y imp tax/test@tax file=d:/dbbak.dmp full=y 3 、导出一个或一组指定用户所属的全部表、索引和其他对象 exp system/manager file=seapark log=seapark owner=seapark exp system/manager file=seapark log=seapark owner=(seapark,amy,amyc,harold) 示例:exp system/system@xc file=c:/hehe owner=uep 4、导出一个或多个指定表 exp system/manager file=tank log=tank tables=(seapark.tank,amy.artist) 示例:exp system/system@xc file=c:/heh tables=(ueppm.ne_table) 恢复数据 1. 获取帮助 imp help=y 2. 导入一个完整数据库 imp system/manager file=bible_db log=dible_db full=y ignore=y 3. 导入一个或一组指定用户所属的全部表、索引和其他对象 imp system/manager file=seapark log=seapark fromuser=seapark imp system/manager file=seapark log=seapark fromuser=(seapark,amy,amyc,harold) 4. 将一个用户所属的数据导入另一个用户 imp system/manager file=tank log=tank fromuser=seapark touser=seapark_copy imp system/manager file=tank log=tank fromuser=(seapark,amy) touser=(seapark1, amy1) 5. 导入一个表 imp system/manager file=tank log=tank fromuser=seapark TABLES=(a,b) ************************ **************************** 利用Export可将数据从数据库中提取出来,利用Import则可将提取出来的数据送回Oracle 数据库中去。 1. 简单导出数据(Export)和导入数据(Import) Oracle支持三种类型的输出: (1)表方式(T方式),将指定表的数据导出。 (2)用户方式(U方式),将指定用户的所有对象及数据导出。 (3)全库方式(Full方式),将数据库中的所有对象导出。 数据导出(Import)的过程是数据导入(Export)的逆过程,它们的数据流向不同。

Oracle Export/Import数据库备份与恢复的三种方法

Oracle数据库备份与恢复的三种方法 Oracle数据库有三种标准的备份方法,它们分别是导出/导入(EXP/IMP)、热备份和冷备份。导出备件是一种逻辑备份,冷备份和热备份是物理备份。 一、导出/导入(Export/Import) 利用Export可将数据从数据库中提取出来,利用Import则可将提取出来的数据送回到Oracle数据库中去。 1、简单导出数据(Export)和导入数据(Import) Oracle支持三种方式类型的输出: (1)、表方式(T方式),将指定表的数据导出。 (2)、用户方式(U方式),将指定用户的所有对象及数据导出。 (3)、全库方式(Full方式),瘵数据库中的所有对象导出。 数据导入(Import)的过程是数据导出(Export)的逆过程,分别将数据文件导入数据库和将数据库数据导出到数据文件。 2、增量导出/导入 增量导出是一种常用的数据备份方法,它只能对整个数据库来实施,并且必须作为SYSTEM来导出。在进行此种导出时,系统不要求回答任何问题。导出文件名缺省为export.dmp,如果不希望自己的输出文件定名为export.dmp,必须在命令行中指出要用的文件名。 增量导出包括三种类型: (1)、“完全”增量导出(Complete) 即备份三个数据库,比如: exp system/manager inctype=complete file=040731.dmp (2)、“增量型”增量导出 备份上一次备份后改变的数据,比如: exp system/manager inctype=incremental file=040731.dmp

如何写批处理文件自动将数据导入oracle数据库

如何写批处理文件自动将数据导入oracle数据库 Oracle数据库的自动导入与导出,在许多地方有广泛的应用.例如:一个Oracle数据库应用系统开发结束后,如果要将系统安装到客户计算机上,就需要将初始数据导入到用户的Oracle数据库中. 最近项目中也需要实现以上功能,花了点时间搜索实验,整理如下:先把要安装的初始数据文件导出为initial.dmp,然后在客户计算上安装好oracle,接着执行批处理文件impInitialData.bat(与该批处理文件同一目录还有createuser.sql,initial.dmp两个文件)impInitialData.bat中内容如下: @echo off sqlplus system/manager @createuser imp system/manager file=initial.dmp fromuser=initialuser touser=initialuser ignore = y上面的createuser是一个扩展名为sql的文件.与批处理文件放在同一目录下.其内容为: create user initialuser identified by test; grant dba,resource,connect to initialuser; exit;简要解释一下: @echo off 表示其之后的命令不在命令提示符窗口显示出来 sqlplus为oracle的一个工具程序,须先安装oracle后才能使用 system/manager 为oracle的一个默认管理员帐户,如果被锁定或更改密码了就不能用了,可以用其它的帐户/密码来替换; @createuser 表示执行createuser.sql文件 该sql文件中, create user xx identified by yy;表示创建一个密码为yy的用户xx; grant dba,resource,connect to xx;表示授权给用户xx dba,resource,connect 权限imp 为导入数据命令,后面的参数中file表示要导入的数据库文件;fromuser表示原导出的数据库文件的用户名;touser表示要导入的数据库的用户名;ignore表示忽略错误大致的方法就是这样,可以再增添其它命令来执行更复杂的操作.Oracle数据导入导出imp/exp 功能:Oracle数据导入导出imp/exp就相当与oracle数据还原与备份。 大多情况都可以用Oracle数据导入导出完成数据的备份和还原(不会造成数据的丢失)。 Oracle有个好处,虽然你的电脑不是服务器,但是你装了oracle客户端,并建立了连接 (通过net8 assistant中本地-->服务命名添加正确的服务命名 其实你可以想成是客户端与服务器端修了条路,然后数据就可以被拉过来了) 这样你可以把数据导出到本地,虽然可能服务器离你很远。 你同样可以把dmp文件从本地导入到远处的数据库服务器中。 利用这个功能你可以构建俩个相同的数据库,一个用来测试,一个用来正式使用。 执行环境:可以在SQLPLUS.EXE或者DOS(命令行)中执行, DOS中可以执行时由于在oracle 8i 中安装目录\ora81\BIN被设置为全局路径, 该目录下有EXP.EXE与IMP.EXE文件被用来执行导入导出。 oracle用java编写,我想SQLPLUS.EXE、EXP.EXE、IMP.EXE这俩个文件是被包装后的类文件。SQLPLUS.EXE调用EXP.EXE、IMP.EXE他们所包裹的类,完成导入导出功能。 下面介绍的是导入导出的实例,向导入导出看实例基本上就可以完成,因为导入导出很简单。

oracle数据库导入导出命令

Oracle数据导入导出imp/exp 功能:Oracle数据导入导出imp/exp就相当与oracle数据还原与备份。 大多情况都可以用Oracle数据导入导出完成数据的备份和还原(不会造成数据的丢失)。 Oracle有个好处,虽然你的电脑不是服务器,但是你装了oracle客户端,并建立了连接 (通过Net Configuration Assistant添加正确的服务命名,其实你可以想成是客户端与服务器端修了条路,然后数据就可以被拉过来了) 这样你可以把数据导出到本地,虽然可能服务器离你很远。 你同样可以把dmp文件从本地导入到远处的数据库服务器中。 利用这个功能你可以构建俩个相同的数据库,一个用来测试,一个用来正式使用。 执行环境:可以在SQLPLUS.EXE或者DOS(命令行)中执行, DOS中可以执行时由于在oracle 8i 中安装目录\$ora10g\BIN被设置为全局路径, 该目录下有EXP.EXE与IMP.EXE文件被用来执行导入导出。 oracle用java编写,我想SQLPLUS.EXE、EXP.EXE、IMP.EXE这俩个文件是被包装后的类文件。 SQLPLUS.EXE调用EXP.EXE、IMP.EXE他们所包裹的类,完成导入导出功能。 下面介绍的是导入导出的实例,向导入导出看实例基本上就可以完成,因为导入导出很简单。 数据导出: 1 将数据库TEST完全导出,用户名system 密码manager 导出到D:\daochu.dmp 中 exp system/manager@TEST file=d:\daochu.dmp full=y 2 将数据库中system用户与sys用户的表导出 exp system/manager@TEST file=d:\daochu.dmp owner=(system,sys) 3 将数据库中的表table1 、table2导出 exp system/manager@TEST file=d:\daochu.dmp tables=(table1,table2) 4 将数据库中的表table1中的字段filed1以"00"打头的数据导出 exp system/manager@TEST file=d:\daochu.dmp tables=(table1) query=\" where filed1 like '00%'\" 上面是常用的导出,对于压缩我不太在意,用winzip把dmp文件可以很好的压缩。 不过在上面命令后面加上 compress=y 就可以了 数据的导入 1 将D:\daochu.dmp 中的数据导入 TEST数据库中。 imp system/manager@TEST file=d:\daochu.dmp 上面可能有点问题,因为有的表已经存在,然后它就报错,对该表就不进行导入。

Oracle数据库迁移方法

Oracle 数据库迁移 1. 背景: 据项目实施人员反映,部署系统的过程中,有一个最大的问题,那就是平台数据库的迁移。经常会遇到表空间导出导入失败,或是导入过程中数据表丢失或是数据表虽然能导入,但表字段丢失等现象。针对这种情况,我仔细分析了一下:主要原因出在目前的exp/imp 这种数据导入导出工具存在比较大的缺陷,这种缺陷将在后面提到。相比目前这种方式,我这里提供一种比较方便稳定的数据库迁移方案。以下提到的方案,我也多次尝试验证了,并且还很实 在。 2. 数据库迁移方案: 实用环境:Oracle10g 或是以上版本。 原理:利用Oracle10g 提供的数据泵,快速加载以及卸载数据。优点:导入导出数据库快速比较快,且完整,性能稳定。缺点:这种方式只能在装有Oracle 服务器端的软件的机器上应用。完整方案: 这里模拟二个场景: 场景1:实现不同库下不同用户之间表空间的迁移。 假设通过Oracle 数据泵, A 用户UserA 将表空间TA 提取到 A.dmp,而后B用户UserB将A.dmp装载到表空间TB。 第一步:首先在源库(A) 上建一个目录,这个目录用于转储导入导出过程中的数据文件及日志文件。 create directory dumpdir as 'E:\dump'; 注:dumpdir为目录名,它是数据库中的目录对象名, “cdump':为对应的磁盘物理路径。 第二步:给用户授予目录的读写权限。(因为要写日志,这一步是必须的) grant read, write on directory dumpdir to UserA;

第三步:导岀用户UserA下的所有对象: expdp UserA/Password@orcl schemas=UserA dumpfile=expa.dmp DIRECTORY= dumpdir 注: 1、orcl为配置的用于从客户端连接Oracle的连接名。 2、dumpfile 中不能再包含路径 以上三步为数据导岀过程,下面几步为数据导入过程。 第四步:在目标库(B)上创建一表空间(TB)(如果不存),已存则直接到下一步。 CREATE TABLESPACE TB LOGGING DATAFILE 'F:\oracle\product\1020\oradata\orclDB\sde.dbf' SIZE 32M AUTOEXTEND ON NEXT 32M MAXSIZE 2048M EXTENT MANAGEMENT LOCAL; 以上是我本机测试代码 第五步:在目标库上创建用户UserB CREATE USER UserB IDENTIFIED BY "sagis" DEFAULT TABLESPACE TB; GRANT DBA TO UserB; 第六步:在目标库(B)上,创建一个目录对象,如果A、B位于同一个Oracle服务器上,则可以不创建,可以用第一步创建的dumpdir 对象。如果A、B位于不同Oracle服务器,则 需另外创建。 create directory dumpdir as 'c:\dump'; 以不同服务器上Oracle迁移为例,则此时要将第三步创建的expa.dmp 数据文件拷到B服务 器的c:\dump 目录下。 第七步:给用户授予目录对象的读写权限,同第二步。 grant read, write on directory dumpdir to UserB; 第八步:导入数据到B库上用户UserB的表空间TB下 impdp UserB/sagis@sgs directory=dumpdir dumpfile=expa.dmp remap_schema=UserA:UserB remap_tablespace=TA:TB,TC:TD

[原创]Oracle数据导入导出(另exp和expdp对比)

本文包含exp/imp,expdp/impdp的使用说明和常用参数详解 另外包括一个有趣的测试 一、Oracle数据库EXP\IMP\EXPDP\IMPDP使用说明1.Exp数据导出 1.1.exp关键字说明 关键字说明(默认值) ------------------------------ USERID 用户名/口令 BUFFER 数据缓冲区大小 FILE 输出文件(EXPDAT.DMP) COMPRESS 导入到一个区(Y) GRANTS 导出权限(Y) INDEXES 导出索引(Y) DIRECT 直接路径(N) --直接导出速度较快 LOG 屏幕输出的日志文件 ROWS 导出数据行(Y) CONSISTENT 交叉表的一致性(N) FULL 导出整个文件(N) OWNER 所有者用户名列表 TABLES 表名列表 RECORDLENGTH IO记录的长度 INCTYPE 增量导出类型 RECORD 跟踪增量导出(Y) TRIGGERS 导出触发器(Y) STATISTICS 分析对象(ESTIMATE) PARFILE 参数文件名 CONSTRAINTS 导出的约束条件(Y) OBJECT_CONSISTENT 只在对象导出期间设置为只读的事务处理(N) FEEDBACK 每x 行显示进度(0) FILESIZE 每个转储文件的最大大小 FLASHBACK_SCN 用于将会话快照设置回以前状态的SCN FLASHBACK_TIME 用于获取最接近指定时间的SCN 的时间 QUERY 用于导出表的子集的select 子句 RESUMABLE 遇到与空格相关的错误时挂起(N) RESUMABLE_NAME 用于标识可恢复语句的文本字符串 RESUMABLE_TIMEOUT RESUMABLE 的等待时间 TTS_FULL_CHECK 对TTS 执行完整或部分相关性检查 TABLESPACES 要导出的表空间列表

Oracle数据库备份还原操作流程

1数据库备份和恢复 1.1数据库备份 数据库备份有两种方法:一、使用数据库备份向导;二、输入数据库备份命令。 方法一:向导备份 1. 点击“开始-运行”,输入cmd,在命令行中输入“exp”,回车,如图: 图 1-1向导备份 2. 输入要导出数据库方案的用户名和密码: 图 1-2输入用户名和密码 3. 依次输入缓冲区大小、导出文件存放路径、选择导出方式(导出完整数据库、按用 户导出、按表导出)、是否导出权限、是否导出表数据、是否压缩,一般情况下“是 否导出权限”改成“no”,其余使用默认即可。 4. 最后输入导出数据库方案所属用户名,回车,如图:

图 1-3输入导出数据库方案用户名 5. 再次回车,完成导出。 方法二:命令备份 根据数据库的具体情况,可以将方法一的第2、3步中需要的信息在第1步“exp”命令后进行描述。 例如:在本机上导出10.1.1.240服务器上用户ptac的数据库,点击“开始-运行”,输入cmd,命令行中输入: exp ptac/ptac@jqdemo_l0.1.1.240 file=d:\ptac.dmp full=n grants=n 回车,完成备份。 ●exp:oracle数据库导出指令; ●ptac/ptac:用户名/密码; ●jqdemo_l0.1.1.240:数据库服务名 ●file=d:\ptac.dmp:导出文件保存路径及名称; ●full=n:是否导出整个文件,n表示选择no; ●grants=n:是否导出权限,n表示选择no。 ●statistics=NONE:是否忽略字符集 输入exp help=y,可获得过更多关于数据库备份命令的信息。 1.2数据库恢复 如果是初次恢复数据库方案,需要先添加相应的表空间和用户,详见“4.数据库的配置”。 如果是要覆盖已有数据库方案,恢复之前要删除原方案,详见“7.1删除方案”。 数据库恢复有两种方法: 一、使用数据库恢复向导; 二、输入数据库恢复命令。

oracle导入导出数据

1.如何将oracle数据导出到文本文件(.txt): 通常我们在不同的表间进行数据复制或迁移会用到以下几种方式: 1)用pl/sql developer导出insert脚本,批量执行 2)建立数据库间的DBLINK,用create table A as select * from A@dblink; 或insert into A select * from A@dblink 3)利用exp,expdp 再imp,impdp 实现 4)Sql Loader(sqlldr)导入数据 第一种方式:insert 时数据库会记录重作日志,产生大量的redo,通常需要在建表是不记录日志文件,不产生redo 来提高insert into 的性能: create table brian_t(id number(10), name varchar2(50), career varchar2(50), locate varchar2(100) )nologging; Insert /* +append */ into brian_t values (111,’brian’,’IT’,’dalian’); 2.Oracle Sql Loader的用法: Sql Loader导入的数据文件可以是CSV 文件或者以其他分割符分隔的,数据文件的导出方式: 1)用PL/SQL Developer 或者Toad 导出 2)用SQL *Plus 的spool 格式化产出 3)UTL_FILE 包生成 4)用DCBA的工具ociuldr转储数据到数据文件中 5)oracle erp里利用FORM的text_io导出数据到txt文件 (一)用SQL *Plus 的spool 格式化产出 a)建立导出数据的SQL conn ODS/ODS@syyb165 set echo off set term off set linesize 1000 set pagesize 0 set feedback off set heading off set trimspool on spool E:\ab01.txt select https://www.sodocs.net/doc/c018235346.html,pany_id || '|' || a.insur_kind || '|' || to_char(a.insur_date, 'yyyy-mm-dd hh24:mi:ss') || '|' || a.insur_status || '|'||to_char(https://www.sodocs.net/doc/c018235346.html,pany_first_insur_date,'yyyy-mm-dd hh24:mi:ss')||'|'|| a.proportion_type ||'|'||a.via_person||'|'||to_char(a.via_date,'yyyy-mm-dd hh24:mi:ss') from ods_unit_insur_t a; spool off / b)用SQL Loader导入数据文件 建立控制文件exp_data.ctl如下: LOAD DATA INFILE 'E:\ab02.txt' replace INTO TABLE scott.AB02

oracle不同版本间数据的导入导出

Oracle的imp/exp组件是我们常用的工具,它的一个操作原则就是向下兼容。 下面是据此总结的几个使用规则和相关测试: 规则1:低版本的exp/imp可以连接到高版本(或同版本)的数据库服务器,但高版本的exp/imp不能连接到低版本的数据库服务器 --1.1 使用9i客户端通过imp连接到10g数据库 C:\Documents and Settings\yuechaotian>exp userid=hdtest/test@s67 tables=(ab01) rows=n file=d:\x.dmp Export: Release 9.2.0.1.0 - Production on 星期三 2月 20 10:09:55 2008 Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved. 连接到: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production With the Partitioning, OLAP and Data Mining options 已导出 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集 注: 将不会导出表数据(行) 即将导出指定的表通过常规路径 ... . . 正在导出表 AB01 在没有警告的情况下成功终止导出。 --1.2 使用10g客户端通过imp连接9i数据库:连接失败(而不是导出失败)C:\Documents and Settings\yuechaotian>exp userid=hbjb_kf_hd/test@s46 owner=hdtest file=d:\x.dmp Export: Release 10.2.0.1.0 - Production on 星期三 2月 20 09:57:22 2008 Copyright (c) 1982, 2005, Oracle. All rights reserved. EXP-00056: 遇到 ORACLE 错误 6550 ORA-06550: 第 1 行, 第 41 列: PLS-00302: 必须说明 'SET_NO_OUTLINES' 组件 ORA-06550: 第 1 行, 第 15 列: PL/SQL: Statement ignored EXP-00000: 导出终止失败 规则2:高版本exp出的dmp文件,低版本无法imp(无法识别dmp文件) --2.1 使用10g客户端exp出10g的数据 C:\Documents and Settings\yuechaotian>exp userid=test/test@orcl owner=test file=d:\10g.dmp

oracle导入导出dmp文件(详细步骤)

Oracle 10g 导入dmp文件 Oracle数据导入dmp文件可以是“某个用户下的数据库”,也可以是“某张表”,这里以导入数据库为例说明: <方法1:使用客户端Enterprise Manager Console> 1.用SYS用户名,以DBA的身份在ie中登入到数据库(ORACLE客户端Enterprise Manager Console) 2.在方案->用户与权限->用户 新建用户 同时给该用户授予“角色”: CONNECT,DBA,EXP_FULL_DATABASE,IMP_FULL_DATABASE,RESOURCE 授予系统权限: ALTER USER,COMMENT ANY TABLE,CREATE ANY VIEW,CREATESESSION, CREATE USER,DELETE ANY TABLE,DROP ANY VIEW,DROP USER, UNLIMITED TABLESPACE 3.在命令行下执行: 4.imp pg/pg@pgfs110 imp 用户名/口令回车 填写导入文件路径:EXPDAT.DMP>c:\a.dmp 输入插入缓冲区大小:默认不填回车 只列出导入文件的内容:回车 忽略创建错误:yes 导入权限:yes 导入表数据:yes 导入整个导出文件:yes 等待…… 成功终止导入,但出现警告。 例如:

5.打开PLSQL Developer,用新建的用户名和口令,以normal身份登录 6.在tables中可以查看导入到表 7.到此结束(这个问题折腾了我两天啊) <方法2: 使用pl/sql> 导出: exp username/password@服务名file=文件路径及文件名 例:我的数据库pcms的用户名和密码都是mmis,服务名为pcms 我要导出到D盘下的pcms.dmp文件,可以这样写: exp mmis/mmis@pcms file=d:\pcms.dmp 如下图所示:

Oracle数据库导入导出

Oracle数据库文件资料收集: 一、Oracle数据导入导出imp/exp命令10g以上expdp/impdp命令详细 A) 数据导出: 1 将数据库TEST完全导出,用户名system 密码manager 导出到D:daochu.dmp中 exp system/manager@TEST file=d:daochu.dmp full=y 2 将数据库中system用户与sys用户的表导出 exp system/manager@TEST file=d:daochu.dmp owner=(system,sys) 3 将数据库中的表inner_notify、notify_staff_relat导出 exp aichannel/aichannel@TESTDB2 file= d:datanewsmgnt.dmp tables=(inner_notify,notify_staff_relat) 4 将数据库中的表table1中的字段filed1以"00"打头的数据导出 exp system/manager@TEST file=d:daochu.dmp tables=(table1) query=" where filed1 like '00%'" 上面是常用的导出,对于压缩,既用winzip把dmp文件可以很好的压缩。 也可以在上面命令后面加上compress=y 来实现。 B) 数据的导入 1 将D:daochu.dmp 中的数据导入TEST数据库中。 imp system/manager@TEST file=d:daochu.dmp imp aichannel/aichannel@HUST full=y file=d:datanewsmgnt.dmp ignore=y 上面可能有点问题,因为有的表已经存在,然后它就报错,对该表就不进行导入。 在后面加上ignore=y 就可以了。 2 将d:daochu.dmp中的表table1 导入 imp system/manager@TEST file=d:daochu.dmp tables=(table1) *注:要先是将表彻底删除,然后导入。 操作者要有足够的权限,权限不够它会提示。 数据库时可以连上的。可以用tnsping TEST 来获得数据库TEST能否连上 当然,上面的方法在导出数据时可能会导出很大的包,那是因为你的用户可能在授权的时候授予了DBA的权限,所以可以采用下面方法来进行数据库备份: 二、数据库备份 建议系统过渡后,每周进行一次备份。或者在数据表发生重大改变前,对要改变的数据表进行备份。 执行以下步骤,进行备份。 在命令行里,敲入“cmd”,回车,进入命令行窗口。 在窗口中,输入: exp mas/123456@mas 系统提示:输入数组提取缓冲区大小: 4096 > 可以直接回车; 系统提示:导出文件: EXPDAT.DMP> 此处输入导出文件的位置,其路径必须存在,Oracle在这里不会自动建立路径,但可以建立文件名。备份文件以dmp作为后缀。 输入内容如:e:\work\mas_db_090925v1.dmp 回车 系统提示:(1)E(完整的数据库),(2)U(用户) 或(3)T(表): (2)U > u 此处可以输入u,也可以直接回车,因为系统此时默认的是U 系统提示:导出权限(yes/no):yes>回车 系统提示:导出表数据(yes/no):yes>回车 系统提示:压缩区(yes/no):yes>回车

(完整版)Oracle数据库备份和恢复操作手册

1 ORACLE数据库数据备份和恢复操作手册 1.1.ORACLE参数设置 进入CMD操作界面,使用sqlplus连接数据库, 图例 1 数据库连接操作 连接语法:sqlplus system/Oracle2013@orcl 参数说明备注sqlplus 语法命令 system 数据库管理员用户名 Oracle2013 system用户密码 orcl 数据库连接标示符数据库安装目录的tnsnames.ora文件中可以找到 Oracle11G目录: C:\app\Administrator\product\11.2.0\dbhome _1\NETWORK\ADMIN

图例 2 成功连接数据库 环境变量设置(在Sqlplus中执行) create or replace directory as ‘c:\tmpdir’; 参数说明备注 dir_name 路径名称 c:\tmpdir 文件路径也可以是另外的随意目录,用单引号括起来。

图例 3 环境变量设置

1.2. 数据备份 备份脚本:expdp system/Oracle2013@orcl directory=file_path dumpfile=ARADMIN.dat logfile=ARADMIN.log schemas=ARADMIN 参数说明备注expdp 语法命令 system 数据库管理员用户名 Oracle2013 system用户密码 orcl 数据库连接标示符数据库安装目录的tnsnames.ora文件中可以找到 Oracle11G目录: C:\app\Administrator\product\11.2.0\dbhome _1\NETWORK\ADMIN directory 文件目录名称导出数据库文件的存放目录dumpfile 数据库文件名称导出数据库文件的文件名logfile 数据库日志文件名称导出数据库的日志文件名称schemas 数据库用户 图例 4 数据库备份操作 成功导出。

oracle数据表导入导出例子

oracle数据表导入导出例子 November 21st, 2009 by ahuoo Leave a reply ? ————用户级————————————————————————————————————– 1.把(用户)数据库导出到C:\db_backup.dmp exp 用户名/密码file=C:\db_backup.dmp 2.通过文件xxxx.dmp 把数据库导入 imp 用户名/密码fromuser=原始用户touser=现在的用户file=xxxx.dmp ignore=y 注: 1、fromuser为所导出数据的owner。 2、exp时owner与tables不能同时使用,相互冲突。 3、imp时可以同时指定fromuser 和tables参数。 3.将数据库中system用户与sys用户的表导出 exp 用户名/密码@数据库file=d:\daochu.dmp owner=(system,sys) :前提该用户的权限比system,sys大. ————表级—————————————————————————————————————- 4.将某特定表导出 exp 用户名/密码@数据库file=d:\daochu.dmp tables=(system,sys) 5 将d:\daochu.dmp中的表table1 导入 imp user/pass@database file=d:\daoru.dmp tables=(table1) ————数据级————————————————————————————————————— 6.将数据库中的表table1中的字段filed1以”00″打头的数据导出 expo user/pass@database file=d:\daochu.dmp tables=(table1) query=\” where filed1 like ”00%”\” exp参数: 关键字说明(默认) ———————————————- userid 用户名/口令 full 导出整个文件 (n) buffer 数据缓冲区的大小 owner 所有者用户名列表

ORACLE数据备份与数据恢复方案

O R A C L E数据备份与数 据恢复方案 This manuscript was revised by the office on December 10, 2020.

摘要 结合金华电信IT系统目前正在实施的备份与恢复策略,重点介绍电信业务计算机管理系统(简称97系统)和营销支撑系统的ORALCE数据库备份和恢复方案。 Oracle数据库有三种标准的备份方法,它们分别是导出/导入 (EXP/IMP)、热备份和冷备份。要实现简单导出数据(Export)和导入数据(Import),增量导出/导入的按设定日期自动备份,可考虑,将该部分功能开发成可执行程序,然后结合操作系统整合的任务计划,实现特定时间符合备份规划的备份应用程序的运行,实现数据库的本级备份,结合ftp简单开发,实现多服务器的数据更新同步,实现数据备份的异地自动备份。 关键字:数据库远程异地集中备份 目录

一、前言 目前,数据已成为信息系统的基础核心和重要资源,同时也是各单位的宝贵财富,数据的丢失将导致直接经济损失和用户数据的丢失,严重影响对社会提供正常的服务。另一方面,随着信息技术的迅猛发展和广泛应用,业务数据还将会随业务的开展而快速增加。但由于系统故障,数据库有时可能遭到破坏,这时如何尽快恢复数据就成为当务之急。如做了备份,恢复数据就显得很容易。由此可见,做好数据库的备份至关重要。因此,建立一个满足当前和将来的数据备份需求的备份系统是必不可少的。传统的数据备份方式主要采用主机内置或外置的磁带机对数据进行冷备份,这种方式在数据量不大、操作系统种类单一、服务器数量有限的情况下,不失为一种既经济又简明的备份手段。但随着计算机规模的扩大,数据量几何级的增长以及分布式网络环境的兴起,将越来越多的业务分布在不同的机器、不同的操作平台上,这种单机的人工冷备份方式越来越不适应当今分布式网络环境。 因此迫切需要建立一个集中的、自动在线的企业级备份系统。备份的内容应当包括基于业务的业务数据,又包括IT系统中重要的日志文件、参数文件、配置文件、控制文件等。本文以ORACLE数据库为例,结合金华电信的几个相关业务系统目前正在实施的备份方案,介绍ORACLE数据库的备份与恢复。 二、金华电信ORACLE数据库的备份与恢复方案 由于金华电信IT系统以前只采用逻辑备份方式进行数据库备份,速度较慢并且数据存储管理都很分散,甚至出现备份数据不完整的现象。为了提高备份数据的效率,提供可靠的数据备份,完善备份系统,保证备份数据的完整性,降低数据备份对网络和服务器的影响,对每个IT系统的备份数据进行集中管理,我们对备份工作进行了改进,将逻辑备份与物理备份相结合,在远程建立了一个异地集中、自动在线的备份系统即网络存储管理系统。(这里用到的物理备份指热备份)其具备的主要功能如下:(1)集中式管理 :网络存储备份管理系统对整个网络的数据进行管理。利用集中式管理工具的帮助,系统管理员可对全网的备份策略进行统一管理,备份服务器可以监控所有机器的备份作业,也可以修改备份策略,并可即时浏览所有目录。所有数据可以备份到同备份服

数据库的导入导出

数据库的导入导出 1、导出数据库: 步骤一:使用Putty联入相应的源数据库所在服务器,用Oracle用户名登入 命令:su – oracle 到了路径 /home/oracle 步骤二:建文件夹用于存放导出数据 命令:mkdir 文件夹名(用Oracle用户建才行) 步骤三:进入数据库软件 命令:sqlplus 步骤四:输入用户名、密码 该用户名密码是相应数据库的用户名、密码。 步骤五:导出数据 命令:exp user/pass@tnsname owner=user file=/ …/filename.dmp (在本机) tnsname:表示通过Oracle工具在本机建立的连接数据库服务器 的连接名。 exp user/pass owner=user file=/…/filename.dmp 输入用户名、密码 设定缓存大小 导出用户的所有内容 问题:在用文明单位数据库做试验时,好像存储过程和触发器没有导出成功,当修改了视图SYS.EXUB1lBPU后,导出没有问题。 2、新建表空间、用户等(如果已有最好是将其删除重建) 步骤一:在oracle中database administration下的DBA Studio 在其中建表空间、临时表空间 在其中建用户(与导出中的用户名要一致) 步骤二:设定角色 步骤三:将导出文件上传或下载到目标服务器 3、导入数据库 步骤一:使用Putty联入相应的源数据库所在服务器,用Oracle用户名登入 命令:su – oracle 到了路径 /home/oracle 步骤二:进入到目标目录

步骤三:导入数据 命令:imp user/pass 输入要导入的文件名 输入源用户名 也可以在windows环境下导入、导出 步骤一:建立连接导入、导出服务器的连接,用Oracle的客户端建即可。 步骤二:命令cmd进入命令窗口 步骤三:进入要导出文件存放的目录 cd 目录名 步骤四:导出文件命令: exp user/pass@tnsname owner=user file=./文件名.dmp {源数据库用户名、密码} 步骤五:通过oracle工具在目标服务器中新建表空间、用户,设定权限步骤六:在命令窗口中输入导入命令: imp user/pass@tnsname {目标数据库用户名、密码} 输入要导入的文件名 输入源用户名 上传文件: 登录进入源服务器 进入要上传文件的目录命令:cd 目录名 传输命令:sftp 目标ip地址 输入服务器密码 指定目标路径 cd 目录名 传输文件 put 文件名 下载文件: 进入到目标服务器 进入到要下载的目录命令 cd 目录名 传输命令 sftp 源ip地址 输入服务器密码 指定数据源路径 取得数据 get 文件名

Oracle数据库exp imp按用户导出导入实例

Oracle数据库exp imp按用户导出导入实例 按用户导出再导入实例,任务要求如下: ◆1.从一台windows服务器 A 上导出 Test1 这个用户的所有对象,然后导入到linux服务器 B 上的 Test2用户。(已知Test1密码为Test1passwd 或者用system用户导出也行) ◆2.B机器上Test2用户不存在,或Test2用户已经存在两种情况(用户存在相对比较复杂) ---------如果Test2用户已经存在(数据没用,可以删除),级联删除用户及所有对象(有可能遇到有人正在连接,删除不掉的情况方法参照下文),重新创建账号并赋权。 ◆3.赋予适当的权限 操作步骤: ◆1.从 A 上导出数据文件到指定目录(目录名称自己定义,只要自己能找到就行,和用户名没有关系) sqlplus /nolog

conn / as sysdba exp Test1/Test1passwd owner=Test1 file=D:\files\Test1.dmp ◆2.在A机器上查看用户默认表空间,以便导入时创建一样的表空间 SQL> select username,default_tablespace from dba_users where username ='TEST1'; USERNAME DEFAULT_TABLESPACE ------------------------------ ------------------------------ TEST1 CMIS ◆3.查看用户使用的表空间 SQL> select DISTINCT owner ,tablespace_name from dba_extents where owner like 'TEST1'; OWNER TABLESPACE_NAME ------------------------------ ------------------------------

相关主题