文档库 最新最全的文档下载
当前位置:文档库 › Oracle exp及imp导出导入工具的使用(全)

Oracle exp及imp导出导入工具的使用(全)

Oracle exp及imp导出导入工具的使用(全)
Oracle exp及imp导出导入工具的使用(全)

ORACLE EXP/IMP的使用详解

1导入/导出是ORACLE幸存的最古老的两个命令行工具

,其实我从来不认为Exp/Imp是一种好的备份方式,正确的说法是Exp/Imp只能是一个好的转储工具,特别是在小型数据库的转储,表空间的迁移,表的抽取,检测逻辑和物理冲突等中有不小的功劳。当然,我们也可以把它作为小型数据库的物理备份后的一个逻辑辅助备份,也是不错的建议。对于越来越大的数据库,特别是TB级数据库和越来越多数据仓库的出现,EXP/IMP越来越力不从心了,这个时候,数据库的备份都转向了RMAN和第三方工具。下面说明一下EXP/IMP的使用。

如何使exp的帮助以不同的字符集显示:set nls_lang=simplified chinese_china.zhs16gbk,通过设置环境变量,可以让exp的帮助以中文显示,如果set nls_lang=American_america.字符集,那么帮助就是英文的了

EXP的所有参数(括号中为参数的默认值):

USERID 用户名/口令如:USERID=duanl/duanl

FULL 导出整个数据库(N)

BUFFER 数据缓冲区的大小

OWNER 所有者用户名列表,你希望导出哪个用户的对象,就用owner=username FILE 输出文件(EXPDAT.DMP)

TABLES 表名列表,指定导出的table名称,如:TABLES=table1,table2

COMPRESS 导入一个extent (Y)

RECORDLENGTH IO 记录的长度

GRANTS 导出权限(Y)

INCTYPE 增量导出类型

INDEXES 导出索引(Y)

RECORD 跟踪增量导出(Y)

ROWS 导出数据行(Y)

PARFILE 参数文件名,如果你exp的参数很多,可以存成参数文件.

CONSTRAINTS 导出约束(Y)

CONSISTENT 交叉表一致性

LOG 屏幕输出的日志文件

STATISTICS 分析对象(ESTIMATE)

DIRECT 直接路径(N)

TRIGGERS 导出触发器(Y)

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

FILESIZE 各转储文件的最大尺寸

QUERY 选定导出表子集的子句

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

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

TABLESPACES 将传输的表空间列表

IMP的所有参数(括号中为参数的默认值):

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 拥有可传输表空间集中数据的用户

关于增量参数的说明:exp/imp的增量并不是真正意义上的增量,所以最好不要使用。使用方法:

Exp parameter_name=value or Exp parameter_name=(value1,value2……)

只要输入参数help=y就可以看到所有帮助.

EXP常用选项

1.FULL,这个用于导出整个数据库,在ROWS=N一起使用时,可以导出整个数据库的结构。例如:

exp userid=test/test file=./db_str.dmp log=./db_str.log full=y rows=n compress=y direct=y

2. OWNER和TABLE,这两个选项用于定义EXP的对象。OWNER定义导出指定用户的对象;TABLE指定EXP的table名称,例如:

exp userid=test/test file=./db_str.dmp log=./db_str.log owner=duanl

exp userid=test/test file=./db_str.dmp log=./db_str.log table=nc_data,fi_arap

3.BUFFER和FEEDBACK,在导出比较多的数据时,我会考虑设置这两个参数。例如:

exp userid=test/test file=yw97_2003.dmp log=yw97_2003_3.log feedback=10000 buffer=100000000 tables=WO4,OK_YT

4.FILE和LOG,这两个参数分别指定备份的DMP名称和LOG名称,包括文件名和目录,例子见上面。

https://www.wendangku.net/doc/9115631554.html,PRESS参数不压缩导出数据的内容。用来控制导出对象的storage语句如何产生。默认值为Y,使用默认值,对象的存储语句的init extent等于当前导出对象的extent的总和。推荐使用COMPRESS=N。

6. FILESIZE该选项在8i中可用。如果导出的dmp文件过大时,最好使用FILESIZE参数,限制文件大小不要超过2G。如:

exp userid=duanl/duanl file=f1,f2,f3,f4,f5 filesize=2G owner=scott

这样将创建f1.dmp, f2.dmp等一系列文件,每个大小都为2G,如果导出的总量小于10G EXP不必创建f5.bmp.

IMP常用选项

1、FROMUSER和TOUSER,使用它们实现将数据从一个SCHEMA中导入到另外一个SCHEMA中。例如:假设我们做exp时导出的为test的对象,现在我们想把对象导入用户:imp userid=test1/test1 file=expdat.dmp fromuser=test1 touser=test1

2、IGNORE、GRANTS和INDEXES,其中IGNORE参数将忽略表的存在,继续导入,这个对于需要调整表的存储参数时很有用,我们可以先根据实际情况用合理的存储参数建好表,然后直接导入数据。而GRANTS和INDEXES则表示是否导入授权和索引,如果想使用新的存储参数重建索引,或者为了加快到入速度,我们可以考虑将INDEXES设为N,而GRANTS一般都是Y。例如:imp userid=test1/test1 file=expdat.dmp fromuser=test1 touser=test1 indexes=N 表空间传输

表空间传输是8i新增加的一种快速在数据库间移动数据的一种办法,是把一个数据库上的格式数据文件附加到另外一个数据库中,而不是把数据导出成Dmp文件,这在有些时候是非常管用的,因为传输表空间移动数据就象复制文件一样快。

关于传输表空间有一些规则,即:

·源数据库和目标数据库必须运行在相同的硬件平台上。

·源数据库与目标数据库必须使用相同的字符集。

·源数据库与目标数据库一定要有相同大小的数据块

·目标数据库不能有与迁移表空间同名的表空间

·SYS的对象不能迁移

·必须传输自包含的对象集

·有一些对象,如物化视图,基于函数的索引等不能被传输

可以用以下的方法来检测一个表空间或一套表空间是否符合传输标准:

exec sys.dbms_tts.transport_set_check(‘tablespace_name’,true);

select * from sys.transport_set_violation;

如果没有行选择,表示该表空间只包含表数据,并且是自包含的。对于有些非自包含的表空间,如数据表空间和索引表空间,可以一起传输。

以下为简要使用步骤,如果想参考详细使用方法,也可以参考ORACLE联机帮助。

1.设置表空间为只读(假定表空间名字为APP_Data 和APP_Index)

alter tablespace app_data read only;

alter tablespace app_index read only;

2.发出EXP命令

SQ L>host exp userid=”””sys/password as sysdba”””

transport_tablespace=y tablespace=(app_data, app_index)

以上需要注意的是

·为了在SQL中执行EXP,USERID必须用三个引号,在UNIX中也必须注意避免“/”的使用

·在816和以后,必须使用sysdba才能操作

·这个命令在SQL中必须放置在一行(这里是因为显示问题放在了两行)

3.拷贝数据文件到另一个地点,即目标数据库

可以是cp(unix)或copy(windows)或通过ftp传输文件(一定要在bin方式)

4.把本地的表空间设置为读写

5.在目标数据库附加该数据文件

imp file=expdat.dmp userid=”””sys/password as sysdba””” transport_tablespace=y “datafile=(c:\temp\app_data,c:\temp\app_index)”

6.设置目标数据库表空间为读写

alter tablespace app_data read write;

alter tablespace app_index read write;

优化EXP/IMP的方法:

当需要exp/imp的数据量比较大时,这个过程需要的时间是比较长的,我们可以用一些方法来优化exp/imp的操作。

exp:使用直接路径direct=y

oracle会避开sql语句处理引擎,直接从数据库文件中读取数据,然后写入导出文件.

可以在导出日志中观察到: exp-00067: table xxx will be exported in conventional path

如果没有使用直接路径,必须保证buffer参数的值足够大.

有一些参数于direct=y不兼容,无法用直接路径导出可移动的tablespace,或者用query参数导出数据库子集.

当导入导出的数据库运行在不同的os下时,必须保证recordlength参数的值一致.

imp:通过以下几个途径优化

1.避免磁盘排序

将sort_area_size设置为一个较大的值,比如100M

2.避免日志切换等待

增加重做日志组的数量,增大日志文件大小.

3.优化日志缓冲区

比如将log_buffer容量扩大10倍(最大不要超过5M)

4.使用阵列插入与提交

commit = y

注意:阵列方式不能处理包含LOB和LONG类型的表,对于这样的table,如果使用commit = y,每插入一行,就会执行一次提交.

5.使用NOLOGGING方式减小重做日志大小

在导入时指定参数indexes=n,只导入数据而忽略index,在导完数据后在通过脚本创建index,指定NOLOGGING选项

导出/导入与字符集

进行数据的导入导出时,我们要注意关于字符集的问题。在EXP/IMP过程中我们需要注意四个字符集的参数:导出端的客户端字符集,导出端数据库字符集,导入端的客户端字符集,导入端数据库字符集。

我们首先需要查看这四个字符集参数。

查看数据库的字符集的信息:

SQL> select * from nls_database_parameters;

PARAMETER VALUE

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

NLS_LANGUAGE AMERICAN

NLS_TERRITORY AMERICA

NLS_CURRENCY $

NLS_ISO_CURRENCY AMERICA

NLS_NUMERIC_CHARACTERS .,

NLS_CHARACTERSET ZHS16GBK

NLS_CALENDAR GREGORIAN

NLS_DATE_FORMAT DD-MON-RR

NLS_DATE_LANGUAGE AMERICAN

NLS_SORT BINARY

NLS_TIME_FORMAT HH.MI.SSXFF AM

NLS_TIMESTAMP_FORMAT DD-MON-RR HH.MI.SSXFF AM

NLS_TIME_TZ_FORMAT HH.MI.SSXFF AM TZH:TZM

NLS_TIMESTAMP_TZ_FORMAT DD-MON-RR HH.MI.SSXFF AM TZH:TZM

NLS_DUAL_CURRENCY $

NLS_COMP BINARY

NLS_NCHAR_CHARACTERSET ZHS16GBK

NLS_RDBMS_VERSION 8.1.7.4.1

NLS_CHARACTERSET:ZHS16GBK是当前数据库的字符集。

我们再来查看客户端的字符集信息:

客户端字符集的参数NLS_LANG=_< territory >.

language:指定oracle消息使用的语言,日期中日和月的显示。

Territory:指定货币和数字的格式,地区和计算星期及日期的习惯。

Characterset:控制客户端应用程序使用的字符集。通常设置或等于客户端的代码页。或者对于unicode应用设为UTF8。

在windows中,查询和修改NLS_LANG可在注册表中进行:

HKEY_LOCAL_MACHINE\SOFTWARE\Oracle\HOMExx\

xx指存在多个Oracle_HOME时的系统编号。

在unix中:

$ env|grep NLS_LANG

NLS_LANG=simplified chinese_china.ZHS16GBK

修改可用:

$ export NLS_LANG=AMERICAN_AMERICA.UTF8

通常在导出时最好把客户端字符集设置得和数据库端相同。当进行数据导入时,主要有以下两种情况:

(1) 源数据库和目标数据库具有相同的字符集设置。

这时,只需设置导出和导入端的客户端NLS_LANG等于数据库字符集即可。

(2) 源数据库和目标数据库字符集不同。

先将导出端客户端的NLS_LANG设置成和导出端的数据库字符集一致,导出数据,然后

将导入端客户端的NLS_LANG设置成和导出端一致,导入数据,这样转换只发生在数据库端,而且只发生一次。

这种情况下,只有当导入端数据库字符集为导出端数据库字符集的严格超集时,数据才能完全导成功,否则,可能会有数据不一致或乱码出现。

不同版本的EXP/IMP问题

一般来说,从低版本导入到高版本问题不大,麻烦的是将高版本的数据导入到低版本中,在Oracle9i之前,不同版本Oracle之间的EXP/IMP可以通过下面的方法来解决:

1、在高版本数据库上运行底版本的catexp.sql;

2、使用低版本的EXP来导出高版本的数据;

3、使用低版本的IMP将数据库导入到低版本数据库中;

4、在高版本数据库上重新运行高版本的catexp.sql脚本。

但在9i中,上面的方法并不能解决问题。如果直接使用低版本EXP/IMP会出现如下错误:

EXP-00008: orACLE error %lu encountered

orA-00904: invalid column name

这已经是一个公布的BUG,需要等到Oracle10.0才能解决,BUG号为2261722,你可以到METALINK上去查看有关此BUG的详细信息。

BUG归BUG,我们的工作还是要做,在没有Oracle的支持之前,我们就自己解决。在Oracle9i中执行下面的SQL重建exu81rls视图即可。

Create or REPLACE view exu81rls

(objown,objnam,policy,polown,polsch,polfun,stmts,chkopt,enabled,spolicy)

AS select https://www.wendangku.net/doc/9115631554.html,, https://www.wendangku.net/doc/9115631554.html,, r.pname, r.pfschma, r.ppname, r.pfname,

decode(bitand(r.stmt_type,1), 0,'', 'Select,')

|| decode(bitand(r.stmt_type,2), 0,'', 'Insert,')

|| decode(bitand(r.stmt_type,4), 0,'', 'Update,')

|| decode(bitand(r.stmt_type,8), 0,'', 'Delete,'),

r.check_opt, r.enable_flag,

DECODE(BITAND(r.stmt_type, 16), 0, 0, 1)

from user$ u, obj$ o, rls$ r

where https://www.wendangku.net/doc/9115631554.html,er# = o.owner#

and r.obj# = o.obj#

and (uid = 0 or

uid = o.owner# or

exists ( select * from session_roles where role='Select_CATALOG_ROLE')

)

/

grant select on sys.exu81rls to public;

/

可以跨版本的使用EXP/IMP,但必须正确地使用EXP和IMP的版本:

1、总是使用IMP的版本匹配数据库的版本,如:要导入到817中,使用817的IMP工具。

2、总是使用EXP的版本匹配两个数据库中最低的版本,如:从9201往817中导入,则使用817版本的EXP工具。

一. 导出工具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物理文件的限制及加快压缩速度和方便刻历史数据光盘等)

二.导入工具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

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

注意事项:

UNIX: /etc/hosts 要定义本地或者远端数据库服务器的主机名

win98: windows\hosts 和IP地址的对应关系

win2000: winnt\system32\drivers\etc\hosts

exp/imp两个命令可以说是oracle中最常用的命令了。

ORACLE数据库有两类备份方法。第一类为物理备份,该方法实现数据库的完整恢复,但数据库必须运行在归挡模式下(业务数据库在非归挡模式下运行),且需要极大的外部存储设备,例如磁带库;第二类备份方式为逻辑备份,业务数据库采用此种方式,此方法不需要数据库运行在归挡模式下,不但备份简单,而且可以不需要外部存储设备。

数据库逻辑备份方法

ORACLE数据库的逻辑备份分为三种模式:表备份、用户备份和完全备份。

表模式

备份某个用户模式下指定的对象(表)。业务数据库通常采用这种备份方式。

若备份到本地文件,使用如下命令:

exp icdmain/icd rows=y indexes=n compress=n buffer=65536

feedback=100000 volsize=0

file=exp_icdmain_csd_yyyymmdd.dmp log=exp_icdmain_csd_yyyymmdd.log tables=https://www.wendangku.net/doc/9115631554.html,moninformation,icdmain.serviceinfo,icdmain.dealinfo若直接备份到磁带设备,使用如下命令:

exp icdmain/icd rows=y indexes=n compress=n buffer=65536

feedback=100000 volsize=0

file=/dev/rmt0

log=exp_icdmain_csd_yyyymmdd.log tables=https://www.wendangku.net/doc/9115631554.html,moninformation,icdmain.serviceinfo,icdmain.dealinfo注:在磁盘空间允许的情况下,应先备份到本地服务器,然后再拷贝到磁带。出于速度方面的考虑,尽量不要直接备份到磁带设备。

用户模式

备份某个用户模式下的所有对象。业务数据库通常采用这种备份方式。

若备份到本地文件,使用如下命令:

exp icdmain/icd owner=icdmain rows=y indexes=n compress=n buffer=65536

feedback=100000 volsize=0

file=exp_icdmain_yyyymmdd.dmp log=exp_icdmain_yyyymmdd.log若直接备份到磁带设备,使用如下命令:

exp icdmain/icd owner=icdmain rows=y indexes=n compress=n buffer=65536

feedback=100000 volsize=0

file=/dev/rmt0

log=exp_icdmain_yyyymmdd.log注:如果磁盘有空间,建议备份到磁盘,然后再拷贝到磁带。如果数据库数据量较小,可采用这种办法备份。

完全模式

备份完整的数据库。业务数据库不采用这种备份方式。备份命令为:

exp icdmain/icd rows=y indexes=n compress=n buffer=65536

feedback=100000 volsize=0 full=y

file=exp_fulldb_yyyymmdd.dmp(磁带设备则为/dev/rmt0)

log=exp_fulldb_yyyymmdd.log对于数据库备份,建议采用增量备份,即只备份上一次备份以来更改的数据。增量备份

命令:

exp icdmain/icd rows=y indexes=n compress=n buffer=65536

feedback=100000 volsize=0 full=y inctype=incremental

file=exp_fulldb_yyyymmdd.dmp(磁带设备则为/dev/rmt0)

log=exp_fulldb_yyyymmdd.log

注:关于增量备份必须满足下列条件:

1.只对完整数据库备份有效,且第一次需要full=y参数,以后需要inctype=increment al参数。

2. 用户必须有EXP_FULL_DATABASE的系统角色。

3. 话务量较小时方可采用数据库备份。

4. 如果磁盘有空间,建议备份到磁盘,然后再备份到磁带。

业务数据库备份方法及周期

用EXP进行备份前,先在SYS用户下运行CATEXP.SQL文件(如果以前已运行该文件,则不要执行这个脚本)。

没有特殊说明,不允许在客户端执行备份命令。

备份命令参照表模式下的备份命令。

从磁盘文件备份到磁带

如果首先备份到本地磁盘文件,则需要转储到磁带设备上。

1. 若需查看主机上配置的磁带设备,使用如下命令:

lsdev -Cc tape

显示的结果如下例所示:

rmt0 Available 30-58-00-2,0 SCSI 4mm Tape Drive rmt1 Defined30-58-00-0,0 SCSI 4mm Tape Drive标明Available的设备是可用的磁带设备。

2. 若需查看磁带存储的内容,使用如下命令:

tar -tvf /dev/rmt0

显示的结果如下例所示:

-rw-r——r—— 300 400 8089600 Jan 11 14:33:57 2001 exp_icdmain_20010111.dmp如果显示类似如下内容,则表示该磁带存储的备份数据是从数据库直接备份到磁带上,而非从本地

磁盘转储到磁带的备份文件,因此操作系统无法识别。

tar:0511-193 An error occurred while reading from the media. There is an input or output error.

tar:0511-169 A directory checksum error on media;-267331077 not equal to

2

5626. 3. 对于新磁带或无需保留现存数据的磁带,使用如下命令:tar -cvf /dev/rmt0 exp_icdmain_yyyymmdd.dmp注:A. 该命令将无条件覆盖磁带上的现存数据。

B. 文件名不允许包含路径信息,如:/backup/exp_icdmain_yyyymmdd.dmp. 4. 对于需要保留现存数据的磁带,使用如下命令:tar -rvf /dev/rmt0 exp_icdmain_yyyymmdd.dmp注:该命令将文件exp_icdmain_yyyymmdd.dmp追加到磁带的末端,不会覆盖现存的数据。

特别强调:如果备份时是从数据库直接备份到磁带上,则不可再向该磁带上追加复制任何其他文件,否则该备份数据失效。

5. 若需将转储到磁带上的备份文件复制到本地硬盘,使用如下命令:A. 将磁带上的全部文件复制到本地硬盘的当前目录

tar -xvf /dev/rmt0

B. 将磁带上的指定文件复制到本地硬盘的当前目录tar -xvf /dev/rmt0 exp_icdmain_yyyymmdd.dmp

备份时间安排

由于备份时对系统I/O有较大影响,所以,建议在晚上11点以后进行备份工作。

业务数据库Oracle版本的恢复

恢复方案需根据备份方案确定。由于业务数据库采用表备份和用户备份相结合的方案,所以业务数据库的恢复需根据实际情况采用表恢复和用户恢复相结合的方案。

恢复方案

数据库的逻辑恢复分为表恢复、用户恢复、完全恢复三种模式。

表模式

此方式将根据按照表模式备份的数据进行恢复。

A. 恢复备份数据的全部内容若从本地文件恢复,使用如下命令:

imp icdmain/icd fromuser=icdmain touser=icdmain rows=y indexes=n

commit=y buffer=65536 feedback=100000 ignore=n volsize=0

file=exp_icdmain_cs

d_yyyymmdd.dmp log=imp_icdmain_csd_yyyymmdd.log若从磁带设备恢复,使用如下命令:imp icdmain/icd fromuser=icdmain touser=icdmain rows=y indexes=n

commit=y buffer=65536 feedback=100000 ignore=n volsize=0 file=/dev/rmt0

log=imp_icdmain_csd_yyyymmdd.log B. 恢复备份数据中的指定表若从本地文件恢复,使用如下命令:

imp icdmain/icd fromuser=icdmain touser=icdmain rows=y indexes=n

commit=y buffer=65536 feedback=100000 ignore=n volsize=0

file=exp_icdmain_cs

d_yyyymmdd.dmp log=imp_icdmain_csd_yyyymmdd.log tables=commoninformation,serviceinfo若从磁带设备恢复,使用如下命令:

imp icdmain/icd fromuser=icdmain touser=icdmain rows=y indexes=n

commit=y buffer=65536 feedback=100000 ignore=n volsize=0

file=/dev/rmt0

log=imp_icdmain_csd_yyyymmdd.log tables=commoninformation,serviceinfo

用户模式

此方式将根据按照用户模式备份的数据进行恢复。

A. 恢复备份数据的全部内容若从本地文件恢复,使用如下命令:

imp icdmain/icd fromuser=icdmain touser=icdmain rows=y indexes=n

commit=y buffer=65536 feedback=100000 ignore=n volsize=0

file=exp_icdmain_yy

yymmdd.dmp log=imp_icdmain_yyyymmdd.log若从磁带设备恢复,使用如下命令:

imp icdmain/icd fromuser=icdmain touser=icdmain rows=y indexes=n

commit=y buffer=65536 feedback=100000 ignore=n volsize=0 file=/dev/rmt0

log=imp_icdmain_yyyymmdd.log B. 恢复备份数据中的指定表若从本地文件恢复,使用如下命令:

imp icdmain/icd fromuser=icdmain touser=icdmain rows=y indexes=n

commit=y buffer=65536 feedback=100000 ignore=n volsize=0

file=exp_icdmain_yy

yymmdd.dmp log=imp_icdmain_yyyymmdd.log tables=commoninformation,serviceinfo若从磁带设备恢复,使用如下命令:

imp icdmain/icd fromuser=icdmain touser=icdmain rows=y indexes=n

commit=y buffer=65536 feedback=100000 ignore=n volsize=0 file=/dev/rmt0

log=imp_icdmain_yyyymmdd.log tables=commoninformation,serviceinfo

完全模式

如果备份方式为完全模式,采用下列恢复方法:若从本地文件恢复,使用如下命令:imp system/manager rows=y indexes=n commit=y buffer=65536

feedback=100000 ignore=y volsize=0 full=y

file=exp_icdmain_yyyymmdd.dmp log=imp_icdmain_yyyymmdd.log若从磁带设备恢复,使用如下命令:

imp system/manager rows=y indexes=n commit=y buffer=65536

feedback=100000 ignore=y volsize=0 full=y

file=/dev/rmt0

log=imp_icdmain_yyyymmdd.log

参数说明

1. ignore参数Oracle在恢复数据的过程中,当恢复某个表时,该表已经存在,就要根据ignore参数的设置来决定如何操作。

若ignore=y,Oracle不执行CREATE TABLE语句,直接将数据插入到表中,如果插入的记录违背了约束条件,比如主键约束,则出错的记录不会插入,但合法的记录会添加到表中。

若ignore=n,Oracle不执行CREATE TABLE语句,同时也不会将数据插入到表中,而是忽略该表的错误,继续恢复下一个表。

2. indexes参数在恢复数据的过程中,若indexes=n,则表上的索引不会被恢复,但是主键对应的唯一索引将无条件恢复,这是为了保证数据的完整性。

字符集转换

对于单字节字符集(例如US7ASCII),恢复时,数据库自动转

换为该会话的字符集(NLS_LANG参数);对于多字节字符集

(例如ZHS16CGB231280),恢复时,应尽量使字符集相同(避免转换),如果要转换,目标数据库的字符集应是输出数据库字符集的超集。

恢复方法

业务数据库采用表恢复方案。在用IMP进行恢复前,先在SYS用户下运行CATEXP.SQL文件(如果以前已运行该文件,则不要执行这个脚本),然后执行下列命令:IMP ICDMAIN/ICD FILE=文件名LOG=LOG文件名ROWS=Y

COMMIT=Y BUFFER=Y IGNORE=Y TABLES=表名

注:要恢复的表名参照备份的表名

。恢复是在原表基础上累加数据。没有特殊说明,不允许在客户端执行恢复命令将一个数据库的某用户的所有表导到另外数据库的一个用户下面的例子exp userid=system/manager owner=username1 file=expfile.dmp imp userid=system/manager fromuser=username1 touser=username2 ignore=y file=expfile.dmp

将一个数据库的某用户的所有表导到另外数据库的一个用户下面的例子

exp userid=system/manager owner=username1 file=expfile.dmp imp userid=system/manager fromuser=username1 touser=username2 ignore=y file=expfile.dmpORACLE数据库有两类备份方法。第一类为物理备份,该方法实现数据库的完整恢复,但数据库必须运行在归挡模式下(业务数据库在非归挡模式下运行),且需要极大的外部存储设备,例如磁带库;第二类备份方式为逻辑备份,业务数据库采用此种方式,此方法不需要数据库运行在归挡模式下,不但备份简单,而且可以不需要外部存储设备。

数据库逻辑备份方法

ORACLE数据库的逻辑备份分为三种模式:表备份、用户备份和完全备份。

表模式

备份某个用户模式下指定的对象(表)。业务数据库通常采用这种备份方式。

若备份到本地文件,使用如下命令:

exp icdmain/icd rows=y indexes=n compress=n buffer=65536

feedback=100000 volsize=0

file=exp_icdmain_csd_yyyymmdd.dmp log=exp_icdmain_csd_yyyymmdd.log tables=https://www.wendangku.net/doc/9115631554.html,moninformation,icdmain.serviceinfo,icdmain.dealinfo若直接备份到磁带设备,使用如下命令:

exp icdmain/icd rows=y indexes=n compress=n buffer=65536

feedback=100000 volsize=0

file=/dev/rmt0

log=exp_icdmain_csd_yyyymmdd.log tables=https://www.wendangku.net/doc/9115631554.html,moninformation,icdmain.serviceinfo,icdmain.dealinfo注:在磁盘空间允许的情况下,应先备份到本地服务器,然后再拷贝到磁带。出于速度方面的考虑,尽量不要直接备份到磁带设备。

用户模式

备份某个用户模式下的所有对象。业务数据库通常采用这种备份方式。

若备份到本地文件,使用如下命令:

exp icdmain/icd owner=icdmain rows=y indexes=n compress=n buffer=65536

feedback=100000 volsize=0

file=exp_icdmain_yyyymmdd.dmp log=exp_icdmain_yyyymmdd.log若直接备份到磁带设备,使用如下命令:

exp icdmain/icd owner=icdmain rows=y indexes=n compress=n buffer=65536

feedback=100000 volsize=0

file=/dev/rmt0

log=exp_icdmain_yyyymmdd.log注:如果磁盘有空间,建议备份到磁盘,然后再拷贝到磁

带。如果数据库数据量较小,可采用这种办法备份。

完全模式

备份完整的数据库。业务数据库不采用这种备份方式。备份命令为:

exp icdmain/icd rows=y indexes=n compress=n buffer=65536

feedback=100000 volsize=0 full=y

file=exp_fulldb_yyyymmdd.dmp(磁带设备则为/dev/rmt0)

log=exp_fulldb_yyyymmdd.log对于数据库备份,建议采用增量备份,即只备份上一次备份以来更改的数据。增量备份

命令:

exp icdmain/icd rows=y indexes=n compress=n buffer=65536

feedback=100000 volsize=0 full=y inctype=incremental

file=exp_fulldb_yyyymmdd.dmp(磁带设备则为/dev/rmt0)

log=exp_fulldb_yyyymmdd.log

注:关于增量备份必须满足下列条件:

1.只对完整数据库备份有效,且第一次需要full=y参数,以后需要inctype=increment al参数。

2. 用户必须有EXP_FULL_DATABASE的系统角色。

3. 话务量较小时方可采用数据库备份。

4. 如果磁盘有空间,建议备份到磁盘,然后再备份到磁带。

业务数据库备份方法及周期

用EXP进行备份前,先在SYS用户下运行CATEXP.SQL文件(如果以前已运行该文件,则不要执行这个脚本)。

没有特殊说明,不允许在客户端执行备份命令。备份命令参照表模式下的备份命令。

从磁盘文件备份到磁带

如果首先备份到本地磁盘文件,则需要转储到磁带设备上。

1. 若需查看主机上配置的磁带设备,使用如下命令:

lsdev -Cc tape

显示的结果如下例所示:

rmt0 Available 30-58-00-2,0 SCSI 4mm Tape Drive rmt1 Defined30-58-00-0,0 SCSI 4mm Tape Drive标明Available的设备是可用的磁带设备。

2. 若需查看磁带存储的内容,使用如下命令:

tar -tvf /dev/rmt0

显示的结果如下例所示:

-rw-r——r—— 300 400 8089600 Jan 11 14:33:57 2001 exp_icdmain_20010111.dmp如果显示类似如下内容,则表示该磁带存储的备份数据是从数据库直接备份到磁带上,而非从本地磁盘转储到磁带的备份文件,因此操作系统无法识别。

tar:0511-193 An error occurred while reading from the media. There is an input or output error.

tar:0511-169 A directory checksum error on media;-267331077 not equal to

2

5626. 3. 对于新磁带或无需保留现存数据的磁带,使用如下命令:tar -cvf /dev/rmt0 exp_icdmain_yyyymmdd.dmp注:A. 该命令将无条件覆盖磁带上的现存数据。

B. 文件名不允许包含路径信息,如:/backup/exp_icdmain_yyyymmdd.dmp. 4. 对于需要

保留现存数据的磁带,使用如下命令:tar -rvf /dev/rmt0 exp_icdmain_yyyymmdd.dmp注:该命令将文件exp_icdmain_yyyymmdd.dmp追加到磁带的末端,不会覆盖现存的数据。

特别强调:如果备份时是从数据库直接备份到磁带上,则不可再向该磁带上追加复制任何其他文件,否则该备份数据失效。

5. 若需将转储到磁带上的备份文件复制到本地硬盘,使用如下命令:A. 将磁带上的全部文件复制到本地硬盘的当前目录

tar -xvf /dev/rmt0

B. 将磁带上的指定文件复制到本地硬盘的当前目录tar -xvf /dev/rmt0 exp_icdmain_yyyymmdd.dmp

备份时间安排

由于备份时对系统I/O有较大影响,所以,建议在晚上11点以后进行备份工作。

业务数据库Oracle版本的恢复

恢复方案需根据备份方案确定。由于业务数据库采用表备份和用户备份相结合的方案,所以业务数据库的恢复需根据实际情况采用表恢复和用户恢复相结合的方案。

恢复方案

数据库的逻辑恢复分为表恢复、用户恢复、完全恢复三种模式。

表模式

此方式将根据按照表模式备份的数据进行恢复。

A. 恢复备份数据的全部内容若从本地文件恢复,使用如下命令:

imp icdmain/icd fromuser=icdmain touser=icdmain rows=y indexes=n

commit=y buffer=65536 feedback=100000 ignore=n volsize=0

file=exp_icdmain_cs

d_yyyymmdd.dmp log=imp_icdmain_csd_yyyymmdd.log若从磁带设备恢复,使用如下命令:imp icdmain/icd fromuser=icdmain touser=icdmain rows=y indexes=n

commit=y buffer=65536 feedback=100000 ignore=n volsize=0 file=/dev/rmt0

log=imp_icdmain_csd_yyyymmdd.log B. 恢复备份数据中的指定表若从本地文件恢复,使用如下命令:

imp icdmain/icd fromuser=icdmain touser=icdmain rows=y indexes=n

commit=y buffer=65536 feedback=100000 ignore=n volsize=0

file=exp_icdmain_cs

d_yyyymmdd.dmp log=imp_icdmain_csd_yyyymmdd.log tables=commoninformation,serviceinfo若从磁带设备恢复,使用如下命令:

imp icdmain/icd fromuser=icdmain touser=icdmain rows=y indexes=n

commit=y buffer=65536 feedback=100000 ignore=n volsize=0

file=/dev/rmt0

log=imp_icdmain_csd_yyyymmdd.log tables=commoninformation,serviceinfo

用户模式

此方式将根据按照用户模式备份的数据进行恢复。

A. 恢复备份数据的全部内容若从本地文件恢复,使用如下命令:

imp icdmain/icd fromuser=icdmain touser=icdmain rows=y indexes=n

commit=y buffer=65536 feedback=100000 ignore=n volsize=0

file=exp_icdmain_yy

yymmdd.dmp log=imp_icdmain_yyyymmdd.log若从磁带设备恢复,使用如下命令:

imp icdmain/icd fromuser=icdmain touser=icdmain rows=y indexes=n

commit=y buffer=65536 feedback=100000 ignore=n volsize=0 file=/dev/rmt0

log=imp_icdmain_yyyymmdd.log B. 恢复备份数据中的指定表若从本地文件恢复,使用如下命令:

imp icdmain/icd fromuser=icdmain touser=icdmain rows=y indexes=n

commit=y buffer=65536 feedback=100000 ignore=n volsize=0

file=exp_icdmain_yy

yymmdd.dmp log=imp_icdmain_yyyymmdd.log tables=commoninformation,serviceinfo若从磁带设备恢复,使用如下命令:

imp icdmain/icd fromuser=icdmain touser=icdmain rows=y indexes=n

commit=y buffer=65536 feedback=100000 ignore=n volsize=0 file=/dev/rmt0

log=imp_icdmain_yyyymmdd.log tables=commoninformation,serviceinfo

完全模式

如果备份方式为完全模式,采用下列恢复方法:若从本地文件恢复,使用如下命令:imp system/manager rows=y indexes=n commit=y buffer=65536

feedback=100000 ignore=y volsize=0 full=y

file=exp_icdmain_yyyymmdd.dmp log=imp_icdmain_yyyymmdd.log若从磁带设备恢复,使用如下命令:

imp system/manager rows=y indexes=n commit=y buffer=65536

feedback=100000 ignore=y volsize=0 full=y

file=/dev/rmt0

log=imp_icdmain_yyyymmdd.log

参数说明

1. ignore参数Oracle在恢复数据的过程中,当恢复某个表时,该表已经存在,就要根据ignore参数的设置来决定如何操作。

若ignore=y,Oracle不执行CREATE TABLE语句,直接将数据插入到表中,如果插入的记录违背了约束条件,比如主键约束,则出错的记录不会插入,但合法的记录会添加到表中。

若ignore=n,Oracle不执行CREATE TABLE语句,同时也不会将数据插入到表中,而是忽略该表的错误,继续恢复下一个表。

2. indexes参数在恢复数据的过程中,若indexes=n,则表上的索引不会被恢复,但是主键对应的唯一索引将无条件恢复,这是为了保证数据的完整性。

字符集转换

对于单字节字符集(例如US7ASCII),恢复时,数据库自动转

换为该会话的字符集(NLS_LANG参数);对于多字节字符集

(例如ZHS16CGB231280),恢复时,应尽量使字符集相同(避免转换),如果要转换,目标数据库的字符集应是输出数据库字符集的超集。

恢复方法

业务数据库采用表恢复方案。在用IMP进行恢复前,先在SYS用户下运行CATEXP.SQL文件(如果以前已运行该文件,则不要执行这个脚本),然后执行下列命令:IMP ICDMAIN/ICD FILE=文件名LOG=LOG文件名ROWS=Y

COMMIT=Y BUFFER=Y IGNORE=Y TABLES=表名

注:要恢复的表名参照备份的表名

。恢复是在原表基础上累加数据。没有特殊说明,不允许在客户端执行恢复命令

E:\>exp help=y

通过输入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 将传输的表空间列表

E:\>imp help=y

可以通过输入IMP 命令和您的用户名/口令

跟有您的用户名/ 口令的命令:

实例: IMP SCOTT/TIGER

或者, 可以通过输入IMP 命令和各种自变量来控制“导入”按照不同参数。要指定参数,您可以使用关键字:

格式: IMP KEYWORD=value 或KEYWORD=(value1,value2,...,vlaueN)

实例: IMP SCOTT/TIGER IGNORE=Y TABLES=(EMP,DEPT) FULL=N

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

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

关键字说明(默认)

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

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 拥有可传输表空间集中数据的用户

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导入导出的问题

oracle导入导出的问题 朋友在导入11GR2发现了如下的错误日志: MP-00017: 由于 ORACLE 错误 942, 以下语句失败: \TABLE \ADD CONSTRAINT \FOREIGN KEY (\ \ALIDATE\IMP-00003: 遇到 ORACLE 错误 942 ORA-00942: 表或视图不存在 IMP-00017: 由于 ORACLE 错误 942, 以下语句失败: \TABLE \ADD CONSTRAINT \FOREIGN KEY (\ \ALIDATE\IMP-00003: 遇到 ORACLE 错误 942 ORA-00942: 表或视图不存在 IMP-00017: 由于 ORACLE 错误 942, 以下语句失败: \TABLE \ADD CONSTRAINT \FOREIGN KEY (\ \ALIDATE\IMP-00003: 遇到 ORACLE 错误 942 ORA-00942: 表或视图不存在 IMP-00017: 由于 ORACLE 错误 942, 以下语句失败: \KEY (\ \ALIDATE\IMP-00003: 遇到 ORACLE 错误 942 ORA-00942: 表或视图不存在 IMP-00017: 由于 ORACLE 错误 942, 以下语句失败: \TABLE \ADD CONSTRAINT \FOREIGN KEY (\

\ALIDATE\IMP-00003: 遇到 ORACLE 错误 942 ORA-00942: 表或视图不存在。 发现以上问题开始以为是对象不对的问题或者是表删除的问题,但经过在网上查找发现不是上述问题是11GR2数据库版本的问题:11GR2中有个新特性,当表无数据时,不分配segment,以节省空间,可是在用EXPORT导出时,空表也不能导出,这就导致迁移时候丢失了一些表,存储过程也失效了。 本以为EXP能有相应的控制开关,可以切换是否导出空表,看了下帮助,没有太大的改变。有些奇怪,难道11GR2不更新EXP 的功能。 解决方法: 一、insert一行,再rollback就产生segment了。 该方法是在在空表中插入数据,再删除,则产生segment。导出时则可导出空表。 二、设置deferred_segment_creation参数该参数值默认是TRUE,当改为FALSE时,无论是空表还是非空表,都分配segment。修改语句: alter system set deferred_segment_creation=false scope=both; 需注意的是:该值设置后对以前导入的空表不产生作用,仍不能导出,只能对后面新增的表产生作用。如需导出之前的空表,只能用第一种方法。

oracle表的导入导出-命令

数据导出: 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 来实现。 数据的导入 1 将D:daochu.dmp 中的数据导入 TEST数据库中。 imp system/manager@TEST file=d:daochu.dmp imp aichannel/aichannel@HUST full=y file=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能否连上。 附录一: 给用户增加导入数据权限的操作 第一,启动sql*puls 第二,以system/manager登陆 第三,create user 用户名 IDENTIFIED BY 密码(如果已经创建过用户,这步可以省略)第四,GRANT CREATE USER,DROP USER,ALTER USER ,CREATE ANY VIEW , DROP ANY VIEW,EXP_FULL_DATABASE,IMP_FULL_DATABASE, DBA,CONNECT,RESOURCE,CREATE SESSION TO 用户名字 第五, 运行-cmd-进入dmp文件所在的目录, imp userid=system/manager full=y file=*.dmp

oracle表的导入导出-命令

oracle表的导入导出-命令.txt12思念是一首诗,让你在普通的日子里读出韵律来;思念是一阵雨,让你在枯燥的日子里湿润起来;思念是一片阳光,让你的阴郁的日子里明朗起来。数据导出: 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 来实现。 数据的导入 1 将D:daochu.dmp 中的数据导入TEST数据库中。 imp system/manager@TEST file=d:daochu.dmp

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 数据泵导出和导入 精品

Oracle10g数据导入导出 简介 Oracle 10g引入了DATA PUMP提供的是一种基于服务器的数据提取和恢复的实用程序,DATA PUMP在体系结构和功能上与传统的EXPORT和IMPORT实用程序相比有了显著的提升。DATA PUMP允许您停止和重启作业,查看运行的作业的状态,及对导入和导出的数据做限制。 注意:数据泵文件与传统的EXP/IMP数据转储文件是不兼容的。 以下是DATA PUMP的几个优点介绍: 1.数据泵(Data Pump)的所有工作都有数据库实例来完成,数据库可以并行来处理这些工作,不仅可以通过建立多个数据泵工作进程来读/写正在被导出/导入的数据,也可以建立并行I/O服务器以更快地读取或插入数据,从而,单进程瓶颈被彻底解决。 2.通过数据泵,以前通过EXP/IMP主要基于Client/Server的逻辑备份方式转换为服务器端的快速备份,数据泵主要工作在服务器端,可以通过并行方式快速装入或卸载数据,而且可以在运行过程中调整并行的程度,以加快或减少资源消耗。 3.数据泵通过新的API来建立和管理,这些新的工作主要由DBMS_DATAPUMP来完成。新的导入/导出工具完全成为了一个客户端应用,通过IMPDP/EXPDP执行的命令实际上都是在调用Server端的API在执行操作,所以一旦一个任务被调度或执行,客户端就可以退出连接,任务会在server 端继续执行,随后通过客户端实用程序从任何地方检查任务的状态和进行修改创建DIRECTORY DATA PUMP要求为将要创建和读取的数据文件及日志文件创建目录,这个参数是用来定义一个目录,前面已经提到数据泵主要在Server端工作,导出文件需要写出到Server端本地目录,这个DIRECTORY就是对应的Server 端的目录。将要访问数据泵文件的用户必须要拥有该目录的读/写权限。 注意:在开始操作之前要验证外部目录是否存在,并且下达create directory 命令的用户需要拥有create any directory的系统权限。 下面给出一个创建名为TEST_EXPDP的目录并授予hs_user,hs_his用户访问此目录读/写权限。

oracle命令行大全

SQL*PLUS命令的使用大全 Oracle的sql*plus是与oracle进行交互的客户端工具。在sql*plus中,可以运行sql*plus命令与sql*plus 语句。 我们通常所说的DML、DDL、DCL语句都是sql*plus语句,它们执行完后,都可以保存在一个被称为sql buffer的内存区域中,并且只能保存一条最近执行的sql语句,我们可以对保存在sql buffer中的sql 语句进行修改,然后再次执行,sql*plus一般都与数据库打交道。 除了sql*plus语句,在sql*plus中执行的其它语句我们称之为sql*plus命令。它们执行完后,不保存在sql buffer的内存区域中,它们一般用来对输出的结果进行格式化显示,以便于制作报表。 下面就介绍一下一些常用的sql*plus命令: 1. 执行一个SQL脚本文件 SQL>start file_name SQL>@ file_name 我们可以将多条sql语句保存在一个文本文件中,这样当要执行这个文件中的所有的sql语句时,用上面的任一命令即可,这类似于dos中的批处理。 2. 对当前的输入进行编辑 SQL>edit 3. 重新运行上一次运行的sql语句 SQL>/ 4. 将显示的内容输出到指定文件 SQL> SPOOL file_name 在屏幕上的所有内容都包含在该文件中,包括你输入的sql语句。 5. 关闭spool输出 SQL> SPOOL OFF 只有关闭spool输出,才会在输出文件中看到输出的内容。 6.显示一个表的结构 SQL> desc table_name 7. COL命令: 主要格式化列的显示形式。 该命令有许多选项,具体如下: COL[UMN] [{ column|expr} [ option ...]] Option选项可以是如下的子句: ALI[AS] alias CLE[AR] FOLD_A[FTER] FOLD_B[EFORE] FOR[MA T] format

Oracle常用命令(详细介绍导入、导出全部方法)

(经典)感觉很有用. Oracle 创建删除用户、角色、表空间、导入导出、备份命令总结导入导出实用程序用于实施数据库的逻辑备份和恢复 导出实用将数据库中的对象定义和数据备份到一个操作系统二进制文件中 导入使用程序读取二进制导出文件并将对象和数据载入数据库中 导出额导入实用程序的特点有: 1.可以按时间保存表结构和数据 2.允许导出指定的表,并重新导入到新的数据库中 3.可以吧数据库迁移到另外一台异构服务器上 4.在两个不同版本的Oracle数据库之间传输数据 5.在联机状态下进行备份和恢复 6.可以重新组织表的存储结构,减少链接及磁盘碎片 调用导入导出的三种方法: 在命令执行程序的参数和参数值 已交互的方式提示用户逐个输入参数的值 允许用户将运行参数和参数值存储在参数文件中,以便重复使用参数 导入导出数据库对象的四种模式:完全数据库、表、用户、表空间 导入导出整个数据库的所有对象 导入导出一个或多个指定的表或表空间 导入导出一个用户模式中的所有对象 导入导出一个或多个指定的表空间中的所有对象 导出使用程序有以下常用的命令参数 参数说明 USERID 确定执行导出实用程序的用户名和口令 BUFFER 确定导出数据时所使用的缓冲区大小,其大小用字节表示 FILE 指定导出的二进制文件名称,默认的扩展名是.dmp FULL 指定是否以全部数据库方式导出,只有授权用户才可使用此参数OWNER 要导出的数据库用户列表 HELP 指定是否显示帮助消息和参数说明 ROWS 确定是否要导出表中的数据 TABLES 按表方式导出时,指定需导出的表和分区的名称

PARFILE 指定传递给导出实用程序的参数文件名 TABLESPACES 按表空间方式导出时,指定要导出的表空间名 导出实用程序 按用户方式导出数据 exp gmd/gmd@oracle file=d:/1.dmp owner=gmd 按表方式导出数据 exp gmd/gmd@oracle tables=(GRP_PROVINCE,GRP_CITY,GRP_AREA) file=d:/2.dmp 按表空间方式导出数据 exp system/oracle@oracle tablespaces=(gmd) file=d:/3.dmp 使用参数文件导出数据 exp system/oracle@oracle parfile='d:\parameters.txt' 导入使用程序有以下常用的命令参数 参数说明 USERID 指定执行导入的用户名和密码 BUFFER 指定用来读取数据的缓冲区大小,以字节为单位 COMMIT 指定是否在每个数组(其大小由BUFFER参数设置)插入后进行提交 FILE 指定要导入的二进制文件名 FROMUSER 指定要从导出转储文件中导入的用户模式 TOUSER 指定要将对象导入的用户名。FROMUSER与TOUSER可以不同 FULL 指定是否要导入整个导出转储文件 TABLES 指定要导入的表的列表 ROWS 指定是否要导入表中的行 PARFILE 指定传递给导入实用程序的参数文件名,此文件可以包含这里列出的所有参数IGNORE 导入时是否忽略遇到的错误,默认为N TABLESPACES 按表空间方式导入,列出要导入的表空间名 导入实用程序 按整个文件导入数据库 imp gmd/gmd@oracle file=d:1.dmp ignore=y full=y 按halibut用户的表导入到fantasy用户 imp gmd/gmd@oracle file=2.dmp fromuser=halibut touser=fantasy tables=(t_user,role) 使用参数文件导入数据 imp system/oracle@oracle parfile='d:\paramenters.txt'

Oracle 数据库 常用命令

SPOOL将屏幕所有的输出输出到指定文件 -- spool 文件路径名; spool g:\mysql.sql; --业务操作 --结束输出 spool off; 执行一个SQL脚本文件 我们可以将多条sql语句保存在一个文本文件中,这样当要执行这个文件中的所有的sql语句时,用上面的任一命令即可,这类似于dos中的批处理。 --start file_name -- @ file_name start g:\mysql.sql; @ g:\mysql.sql; 对当前的输入进行编辑 edit ed 重新运行上一次运行的sql语句 / 显示一个表的结构 desc table_name ; 清屏 clear screen; 退出 exit; 置当前session是否对修改的数据进行自动提交 --SET AUTO[COMMIT] {ON|OFF|IMM[EDIATE]| n} set autocommit on; 在用start命令执行一个sql脚本时,是否显示脚本中正在执行的SQL语句 -- SET ECHO {ON|OFF}; set echo on; 是否显示当前sql语句查询或修改的行数 --SET FEED[BACK] {6|n|ON|OFF}

-- 默认只有结果大于6行时才显示结果的行数。如果set feedback 1 ,则不管查询到多少行都返回。当为off 时,一律不显示查询的行数 set feedback 1; 是否显示列标题 --当set heading off 时,在每页的上面不显示列标题,而是以空白行代替 --SET HEA[DING] {ON|OFF} set heading on; 设置一行可以容纳的字符数 -- 如果一行的输出内容大于设置的一行可容纳的字符数,则折行显示 --SET LIN[ESIZE] {80|n} set linesize 100; 设置页与页之间的分隔 -- SET NEWP[AGE] {1|n|NONE} --当set newpage 0 时,会在每页的开头有一个小的黑方框。 --当set newpage n 时,会在页和页之间隔着n个空行。 --当set newpage none 时,会在页和页之间没有任何间隔 set newpage 1; 设置一页有多少行数 --如果设为0,则所有的输出内容为一页并且不显示列标题 --SET PAGES[IZE] {24|n} set pagesize 20; 是否显示用DBMS_OUTPUT.PUT_LINE包进行输出的信息。 --SET SERVEROUT[PUT] {ON|OFF} set serveroutput on; 是否在屏幕上显示输出的内容,主要用与SPOOL结合使用。 --在用spool命令将一个大表中的内容输出到一个文件中时,将内容输出在屏幕上会耗费大量的时间,--设置set termspool off后,则输出的内容只会保存在输出文件中,不会显示在屏幕上,极大的提高了spool的速度 --SET TERM[OUT] {ON|OFF} set termout off; 在dos里连接oracle数据库 CONNECT user_name/passwd@l_jiayou

oracle按用户导入导出数据

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 ------------------------------ ------------------------------ TEST1 XSL TEST1 CMIS ◆4.查看表空间对应的数据文件,以便在B上创建大小合适的数据文件。 SQL> select file_name,tablespace_name from dba_data_files where tablespace_name in ('CMIS','XSL'); FILE_NAME BYTES TABLESPACE ------------------------------------------------------------ ---------- ---------- D:ORACLEPRODUCT10.2.0ORADATACMISDBCMIS 8728346624 CMIS D:ORACLEPRODUCT10.2.0ORADATACMISDBCMIS01.ORA 8204058624 CMIS D:ORACLEPRODUCT10.2.0ORADATACMISDBCMIS02.ORA 4194304000 CMIS D:ORACLEPRODUCT10.2.0ORADATACMISDBCMIS03.ORA 4194304000 CMIS D:ORACLEPRODUCT10.2.0ORADATACMISDBCMIS04.ORA 4194304000 CMIS D:ORACLEPRODUCT10.2.0ORADATACMISDBCMIS05.ORA 4194304000 CMIS

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、连接Oracle数据库 SQL> conn / as sysdba 已连接。 2、创建一个操作目录 SQL> create directory dump_dir as 'e:\dump'; 注意同时需要使用操作系统命令在硬盘上创建这个物理目录。 目录已创建。 3、使用以下命令创建一个导出文件目录 hr用户操作dump_dir目录的权限, SQL>grant read,write on directory my_dir to scott; 授权成功。 4、使用命令expdp导出数据(可以按照用户模式导出、按照表、按照表空间导出和全库导出) C:\>expdp scott/tiger directory=dump_dir dumpfile=20090517scotttab.dmp tables=dept,emp s= Export: Release 10.2.0.1.0 - Production on 星期三, 18 6月, 2008 15:49:00 Copyright (c) 2003, 2005, Oracle. All rights reserved. 连接到: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production With the Partitioning, OLAP and Data Mining options 启动"SCOTT"."SYS_EXPORT_TABLE_01": scott/******** directory=dump_dir dumpfile=20080601.dmp table dept,emp 正在使用BLOCKS 方法进行估计... 处理对象类型TABLE_EXPORT/TABLE/TABLE_DA TA 使用BLOCKS 方法的总估计: 128 KB 处理对象类型TABLE_EXPORT/TABLE/TABLE 处理对象类型TABLE_EXPORT/TABLE/INDEX/INDEX 处理对象类型TABLE_EXPORT/TABLE/CONSTRAINT/CONSTRAINT 处理对象类型TABLE_EXPORT/TABLE/CONSTRAINT/REF_CONSTRAINT . . 导出了"SCOTT"."DEPT" 5.656 KB 4 行

加注释的oracle命令大全

ORACLE的启动和关闭 1、在单机环境下 要想启动或关闭ORACLE系统必须首先切换到ORACLE用户,如下su - oracle a、启动ORACLE系统 oracle>svrmgrl SVRMGR>connect internal SVRMGR>startup SVRMGR>quit b、关闭ORACLE系统 oracle>svrmgrl SVRMGR>connect internal SVRMGR>shutdown SVRMGR>quit 启动oracle9i数据库命令: $ sqlplus /nolog SQL*Plus: Release 9.2.0.1.0 - Production on Fri Oct 31 13:53:53 2003 Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved. SQL> connect / as sysdba Connected to an idle instance. SQL> startup^C SQL> startup ORACLE instance started. 2、在双机环境下 要想启动或关闭ORACLE系统必须首先切换到root用户,如下 su -root a、启动ORACLE系统 hareg -y oracle b、关闭ORACLE系统 hareg -n oracle Oracle数据库有哪几种启动方式

说明: 有以下几种启动方式: 1、startup nomount 非安装启动,这种方式启动下可执行:重建控制文件、重建数据库 读取init.ora文件,启动instance,即启动SGA和后台进程,这种启动只需要init.ora文件。 2、startup mount dbname 安装启动,这种方式启动下可执行: 数据库日志归档、 数据库介质恢复、 使数据文件联机或脱机, 重新定位数据文件、重做日志文件。 执行“nomount”,然后打开控制文件,确认数据文件和联机日志文件的位置, 但此时不对数据文件和日志文件进行校验检查。 3、startup open dbname 先执行“nomount”,然后执行“mount”,再打开包括Redo log文件在内的所有数据库文件,这种方式下可访问数据库中的数据。 4、startup,等于以下三个命令 startup nomount alter database mount alter database open 5、startup restrict 约束方式启动 这种方式能够启动数据库,但只允许具有一定特权的用户访问 非特权用户访问时,会出现以下提示: ERROR: ORA-01035: ORACLE 只允许具有RESTRICTED SESSION 权限的用户使用 6、startup force 强制启动方式 当不能关闭数据库时,可以用startup force来完成数据库的关闭 先关闭数据库,再执行正常启动数据库命令

oracle EXP导入导出表

C:\Documents and Settings\Administrator>exp Export: Release 10.1.0.2.0 - Production on 星期一10月11 21:22:09 2010 Copyright (c) 1982, 2004, Oracle. All rights reserved. 用户名: scott 口令:tiger 连接到: Oracle Database 10g Enterprise Edition Release 10.1.0.2.0 - Production With the Partitioning, OLAP and Data Mining options 输入数组提取缓冲区大小: 4096 > 导出文件: EXPDA T.DMP > e:\dump\dept.dmp (2)U(用户), 或(3)T(表): (2)U > t 导出表数据(yes/no): yes > yes 压缩区(yes/no): yes > yes 已导出ZHS16GBK 字符集和AL16UTF16 NCHAR 字符集 即将导出指定的表通过常规路径... 要导出的表(T) 或分区(T: P): (按RETURN 退出) > dept . . 正在导出表DEPT导出了 4 行 要导出的表(T) 或分区(T: P): (按RETURN 退出) > emp . . 正在导出表EMP导出了14 行 要导出的表(T) 或分区(T: P): (按RETURN 退出) > 导出成功终止, 但出现警告。 C:\Documents and Settings\Administrator>

oracle导入【导出】BMP

导入ORACLE数据库 1.使用Net Configuration Assistant配置服务名 团队开发只需要安装一个ORACLE数据库服务器即可,每一个人只需要配置客户端,方式有两种:一种是Net Configuration Assistant,另一种是Net Manager,Net Configuration Assistant基于向导,方便。 步骤:oracle配置与移除工具——>Net Configuration Assistant——> 本地Net服务名配置——》添加——>服务名——>TPC——>主机名 见下图: 选择“本地Net服务名配置”点击下一步

选择“添加” “服务名”是数据库实例名(SID)

选择“TCP” 键入主机名,选择默认端口或者其他端口号

不进行测试 “网络服务名”在保证客户端不重复的情况下可以和服务器实例名同名,点击下一步,直到完成配置。 建好的服务名在Net Manager显示如下,此处服务命名存在和服务实例名不一致情况。

服务命名或者通过查看配置文件tnsnames.ora: 参考网址:https://www.wendangku.net/doc/9115631554.html,/fengyedqg/article/details/6200223 https://www.wendangku.net/doc/9115631554.html,/s/blog_4d711da701000kap.html 2.创建用户和表空间,配置权限 可以选择sqldeveloper或者PL SQL Developer来实现新建用户和表空间,也可以通过图形界面工具或者SQL语句来实现,此处我们已PL SQL Developer做为讲解。 步骤:Pl sql developer用具有DBA权限的“sys/密码”登陆,其他用户下创建用户,表空间可以用已建好表空间,临时表空间可以用temp,勾选角色权限,但是特定库要对应

oracle命令大全

SQL*PLUS命令的使用大全[zt] Oracle的sql*plus是与oracle进行交互的客户端工具。在sql*plus中,可以运行sql*plus命令与sql*plus语句。 我们通常所说的DML、DDL、DCL语句都是sql*plus语句,它们执行完后,都可以保存在一个被称为sql buffer的内存区域中,并且只能保存一条最近执行的sql语句,我们可以对保存在sql buffer中的sql 语句进行修改,然后再次执行,sql*plus一般都与数据库打交道。 除了sql*plus语句,在sql*plus中执行的其它语句我们称之为sql*plus命令。它们执行完后,不保存在sql buffer的内存区域中,它们一般用来对输出的结果进行格式化显示,以便于制作报表。 下面就介绍一下一些常用的sql*plus命令: 1. 执行一个SQL脚本文件 SQL>start file_name SQL>@ file_name 我们可以将多条sql语句保存在一个文本文件中,这样当要执行这个文件中的所有的sql语句时,用上面的任一命令即可,这类似于dos中的批处理。 2. 对当前的输入进行编辑 SQL>edit 3. 重新运行上一次运行的sql语句 SQL>/ 4. 将显示的内容输出到指定文件 SQL> SPOOL file_name 在屏幕上的所有内容都包含在该文件中,包括你输入的sql语句。 5. 关闭spool输出 SQL> SPOOL OFF 只有关闭spool输出,才会在输出文件中看到输出的内容。 6.显示一个表的结构 SQL> desc table_name 7. COL命令: 主要格式化列的显示形式。 该命令有许多选项,具体如下: COL[UMN] [{ column|expr} [ option ...]] Option选项可以是如下的子句: ALI[AS] alias CLE[AR] FOLD_A[FTER] FOLD_B[EFORE]

如何写批处理文件自动将数据导入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他们所包裹的类,完成导入导出功能。 下面介绍的是导入导出的实例,向导入导出看实例基本上就可以完成,因为导入导出很简单。

相关文档
相关文档 最新文档