oracle 10g 怎样全库导入、导出

oracle 10g 怎样全库导入、导出,第1张

Oracle数据库有三种标准的备份方法,它们分别是导出/导入(EXP/IMP)、热备份和冷备份。导出备件是一种逻辑备份,冷备份和热备份是物理备份。

一、 导出/导入(Export/Import)

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

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

Oracle支持三种方式类型的输出:

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

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

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

数据导入(Import)的过程是数据导出(Export)的逆过程,分别将数据文件导入数据库和将数据库数据导出到数据文件。

2、 增量导出/导入

增量导出是一种常用的数据备份方法,它只能对整个数据库来实施,并且必须作为SYSTEM来导出。在进行此种导出时,系统不要求回答任何问题。导出文件名缺省为exportdmp,如果不希望自己的输出文件定名为exportdmp,必须在命令行中指出要用的文件名。

增量导出包括三种类型:

(1)、“完全”增量导出(Complete)

即备份三个数据库,比如: exp system/manager inctype=complete file=040731dmp

(2)、“增量型”增量导出

备份上一次备份后改变的数据,比如: exp system/manager inctype=incremental file=040731dmp

(3)、“累积型”增量导出

累计型导出方式是导出自上次“完全”导出之后数据库中变化了的信息。比如: exp system/manager inctype=cumulative file=040731dmp

数据库管理员可以排定一个备份日程表,用数据导出的三个不同方式合理高效的完成。

比如数据库的被封任务可以做如下安排:

星期一:完全备份(A)

星期二:增量导出(B)

星期三:增量导出(C)

星期四:增量导出(D)

星期五:累计导出(E)

星期六:增量导出(F)

星期日:增量导出(G)

如果在星期日,数据库遭到意外破坏,数据库管理员可按一下步骤来回复数据库:

第一步:用命令CREATE DATABASE重新生成数据库结构;

第二步:创建一个足够大的附加回滚。

第三步:完全增量导入A: imp system/manager inctype=RESTORE FULL=y FILE=A

第四步:累计增量导入E: imp system/manager inctype=RESTORE FULL=Y FILE=E

第五步:最近增量导入F: imp system/manager inctype=RESTORE FULL=Y FILE=F

二、 冷备份

冷备份发生在数据库已经正常关闭的情况下,当正常关闭时会提供给我们一个完整的数据库。冷备份时将关键性文件拷贝到另外的位置的一种说法。对于备份Oracle信息而言,冷备份时最快和最安全的方法。冷备份的优点是:

1、 是非常快速的备份方法(只需拷文件)

2、 容易归档(简单拷贝即可)

3、 容易恢复到某个时间点上(只需将文件再拷贝回去)

4、 能与归档方法相结合,做数据库“最佳状态”的恢复。

5、 低度维护,高度安全。

但冷备份也有如下不足:

1、 单独使用时,只能提供到“某一时间点上”的恢复。

2、 再实施备份的全过程中,数据库必须要作备份而不能作其他工作。也就是说,在冷备份过程中,数据库必须是关闭状态。

3、 若磁盘空间有限,只能拷贝到磁带等其他外部存储设备上,速度会很慢。

4、 不能按表或按用户恢复。

如果可能的话(主要看效率),应将信息备份到磁盘上,然后启动数据库(使用户可以工作)并将备份的信息拷贝到磁带上(拷贝的同时,数据库也可以工作)。冷备份中必须拷贝的文件包括:

1、 所有数据文件

2、 所有控制文件

3、 所有联机REDO LOG文件

4、 Initora文件(可选)

值得注意的使冷备份必须在数据库关闭的情况下进行,当数据库处于打开状态时,执行数据库文件系统备份是无效的。

下面是作冷备份的完整例子。

(1) 关闭数据库 sqlplus /nolog

sql>;connect /as sysdba

sql>;shutdown normal;

(2) 用拷贝命令备份全部的时间文件、重做日志文件、控制文件、初始化参数文件 sql>;cp ; ;

(3) 重启Oracle数据库 sql>;startup

三、 热备份

热备份是在数据库运行的情况下,采用archivelog mode方式备份数据库的方法。所以,如果你有昨天夜里的一个冷备份而且又有今天的热备份文件,在发生问题时,就可以利用这些资料恢复更多的信息。热备份要求数据库在Archivelog方式下 *** 作,并需要大量的档案空间。一旦数据库运行在archivelog状态下,就可以做备份了。热备份的命令文件由三部分组成:

1 数据文件一个表空间一个表空间的备份。

(1) 设置表空间为备份状态

(2) 备份表空间的数据文件

(3) 回复表空间为正常状态

2 备份归档log文件

(1) 临时停止归档进程

(2) log下那些在archive rede log目标目录中的文件

(3) 重新启动archive进程

(4) 备份归档的redo log文件

3 用alter database bachup controlfile命令来备份控制文件

热备份的优点是:

1 可在表空间或数据库文件级备份,备份的时间短。

2 备份时数据库仍可使用。

3 可达到秒级恢复(恢复到某一时间点上)。

4 可对几乎所有数据库实体做恢复

5 恢复是快速的,在大多数情况下爱数据库仍工作时恢复。

热备份的不足是:

1 不能出错,否则后果严重

2 若热备份不成功,所得结果不可用于时间点的恢复

3 因难于维护,所以要特别仔细小心,不允许“以失败告终”。

Oracle 提供两个工具impexe 和expexe分别用于导入和导出数据。这两个工具位于Oracle_home/bin目录下。

导出数据exp

1 将数据库ATSTestDB完全导出,用户名system 密码123456 导出到c:/exportdmp中

exp system/123456@ATSTestDB file=c:/exportdmp full=y

其中ATSTestDB为数据库名称,system为该数据库里的账户,123456为其密码。

2 将数据库中system用户与sys用户的所有相关资源导出(表,存储过程,方法,视图等等)

exp system/123456@ATSTestDB file= c:/exportdmp owner=(system,sys)

3 将数据库中的表systable1、owbsystable2导出

exp system/123456@ATSTestDB file= c:/exportdmp tables=( systable1, owbsystable2)

注意,需要加上表的schema名称,如果没有加的话默认是导当前connected用户的表,当然你连接上去的账户要对相应的表有权限。

4 将数据库中的表table1中的字段Title以"GangGe"打头的数据导出

exp system/123456@ATSTestDB file= c:/exportdmp tables=(table1) query=/" where Title like 'GangGe%'/"

斜杠 “/” 后面跟冒号是为了转义字符冒号” “ “用的,因为后面是一条条件查询语句。Query参数只能指定一个,如果Query要为多张表,所以同样,tables里面也只能有一张表,或者多张表,然后query里面的条件在这些表上面都可以运行。否则只好多写几条exp语句了。

导出后,或许发现数据比较大,我们可以用一些压缩工具对数据进行二次压缩,例如用winzip, winrar, 7zip等第三方工具。同样,exp支持一个参数用户直接对数据进行压缩:compress = y, 这个参数直接加到命令的后面即可实现导出的同时压缩数据。

1 将数据库TEST完全导出,用户名system 密码manager 导出到D:/daochudmp中

exp system/manager@TEST file=d:/daochudmp full=y

2 将数据库中system用户与sys用户的表导出

exp system/manager@TEST file=d:/daochudmp owner=(system,sys)

3 将数据库中的表inner_notify、notify_staff_relat导出

exp aichannel/aichannel@TESTDB2 file= d:/datanewsmgntdmp tables=(inner_notify,notify_staff_relat)

4 将数据库中的表table1中的字段filed1以"00"打头的数据导出

exp system/manager@TEST file=d:/daochudmp tables=(table1) query=" where filed1 like '00%'"

上面是常用的导出,对于压缩,既用winzip把dmp文件可以很好的压缩。

也可以在上面命令后面 加上 compress=y 来实现。

导入数据imp

我们知道怎么提取数据,那么还原的时候,就需要使用imp命令把导出的数据加载进去。

1 向ATSTestDB里面加载c:/exportdmp数据

imp system/123456@ATSTestDB file=c:/exportdmp

好了,导数据得时候,有可能报错了。为什么?有两种主要的原因:

A 导入的对象(表,视图,方法等)原本不属于当前连接的用户的

B 导入的对象在该数据库的指定用户下已经存在

C 导入的对象的原本用户不再这个数据库里

所有对象全部导入到指定的账户下:

Imp system/123456@ATSTestDB file=c:/exportdmp fromuser=sys touser=system

其中fromuser=sys为dmp文件里的对象的原先的owner, touser=system 为作为导入的对象的新的Owner

忽略/插入数据

Imp system/123456@ATSTestDB file=c:/exportdmp ignore=y

其中ignore=y告诉impexe把数据直接插入到相应对象(并且如果导入的对象里面有其他的对象,如约束,索引等,会在数据插入后被创建)。

2 加载其中的指定表table1,table2

imp system/123456@ATSTestDB file=C:/exportdmp tables=(table1,table2)

3 忽略加载约束

有时候导数据进来的时候,我们不需要把它的约束,比如一些外键约束等都导进来,可以加上参数constraints=N

imp system/123456@ATSTestDB file=C:/exportdmp tables=(table1,table2) constraints=N

4 不加载索引(比如唯一性的索引)

imp system/123456@ATSTestDB file=C:/exportdmp tables=(table1,table2) indexs=N

5 只加载结构,不加载数据

如果只要表的结构等定义(约束,触发器),那么不要里面的数据,可以加上参数rows=N

imp system/123456@ATSTestDB file=C:/exportdmp tables=(table1,table2) rows=N

对于上述 *** 作登陆 *** 作的对象system是管理员,如果不是管理员,而是普通用户,那么这个用户必须有创建删除对象的权利,对象可能包括 表,视图,方法,存储过程等等常见的对象。为什么“可能”包括?这个要看导入导出的时候是否涉及相关类型的对象而定。

1 将D:/daochudmp 中的数据导入 TEST数据库中。

imp system/manager@TEST file=d:/daochudmp

imp aichannel/aichannel@TEST full=y file=d:/datanewsmgntdmp ignore=y

上面可能有点问题,因为有的表已经存在,然后它就报错,对该表就不进行导入。

在后面加上 ignore=y 就可以了。

2 将d:daochudmp中的表table1 导入

imp system/manager@TEST file=d:/daochudmp tables=(table1)

基本上上面的导入导出够用了。不少情况要先是将表彻底删除,然后导入。

注意:

*** 作者要有足够的权限,权限不够它会提示。

数据库时可以连上的。可以用tnsping TEST 来获得数据库TEST能否连上。

关于dmp文件我们用的还是比较多的,dmp文件它是作为oracle导入和导出表使用的文件格式,今天就将dmp文件导出和导入进行学习。

dmp文件导出

dmp文件导出用的比较多的一般是三种,他们分别是:导出整个数据库实例下的所有数据、导出指定用户的所有表、导出指定表。

这里已我的数据库为例,进行介绍,我的Oracle数据库实例为"ORACLE",查看自己数据库实例可以从"任务管理器-->服务"中进行查看,如下图

打开命令行:

1,将数据库ORACLE完全导出,用户名system密码manager 导出到c:\daochudmp中

exp system/manager@ORACLE  file=c:\daochudmp full=y

2,将数据库中RFD用户与,JYZGCX用户的表导出

exp system/manager@ORACLE  file=d:\daochudmpowner=(RFD,JYZGCX)

3,将数据库中的表T_USER、T_ROLE导出

expJYZGCX/JYZGCX@ORACLEfile=  d:\data\newsmgntdmp tables=(T_USER,T_ROLE)

上面的system为用户名,manager为密码,ORACLE为数据库实例名,其实不一定非的用system用户,只要是拥有管理员权限的用户都可以。

dmp文件导入

1,打开“开始”-->输入cmd—> sqlplus /nolog;

2,输入 conn / as sysdba管理员账户登录;

3,需要创建表空间,如果我们知道需要导入的数据库的表空间直接创建就可以,如果不不知道,也没有关系,我们可以用txt打开dmp文件,使用快捷键ctrl+F,查找tablespace,就可以找到这个dmp文件所对应数据库的表空间,然后创建我们找到的表空间就可以;

步,不创建的表空间,创建用户,并分配权限;

5,打开“开始”-->输入cmd(注意:这里是cmd窗口,不是sqlplus窗口!!!),输入以下语句:“imp  kang/123456@localhost/ORACLEfile="C:\daochudmp"full=y ignore=y”

上述语句说明如下:

kang是创建的登录数据库用户名;

123456是登录数据库的密码;

localhost:代表当前数据库的地址是本机,如果是远程导入,替换成对应的ip地址就行

ORACLE:是实例名称)

file:后面的是你当前dmp文件存放的路径

full=y,这个貌似是全部

ignore=y,忽略一些错误

Oracle数据导入导出imp/exp

功能:Oracle数据导入导出imp/exp就相当与oracle数据还原与备份。

大多情况都可以用Oracle数据导入导出完成数据的备份和还原(不会造成数据的丢失)。

Oracle有个好处,虽然你的电脑不是服务器,但是你装了oracle客户端,并建立了连接

(通过Net Configuration Assistant添加正确的服务命名,其实你可以想成是客户端与服务器端 修了条路,然后数据就可以被拉过来了)

这样你可以把数据导出到本地,虽然可能服务器离你很远。

你同样可以把dmp文件从本地导入到远处的数据库服务器中。

利用这个功能你可以构建俩个相同的数据库,一个用来测试,一个用来正式使用。

执行环境:可以在SQLPLUSEXE或者DOS(命令行)中执行,

DOS中可以执行时由于 在oracle 8i 中 安装目录\$ora10g\BIN被设置为全局路径,

该目录下有EXPEXE与IMPEXE文件被用来执行导入导出。

oracle用java编写,我想SQLPLUSEXE、EXPEXE、IMPEXE这俩个文件是被包装后的类文件。

SQLPLUSEXE调用EXPEXE、IMPEXE他们所包裹的类,完成导入导出功能。

下面介绍的是导入导出的实例,向导入导出看实例基本上就可以完成,因为导入导出很简单。

数据导出:

1 将数据库TEST完全导出,用户名system 密码manager 导出到D:\daochudmp中

exp system/manager@TEST file=d:\daochudmp full=y

2 将数据库中system用户与sys用户的表导出

exp system/manager@TEST file=d:\daochudmp owner=(system,sys)

3 将数据库中的表table1 、table2导出

exp system/manager@TEST file=d:\daochudmp tables=(table1,table2)

4 将数据库中的表table1中的字段filed1以"00"打头的数据导出

exp system/manager@TEST file=d:\daochudmp tables=(table1) query=\" where filed1 like '00%'\"

上面是常用的导出,对于压缩我不太在意,用winzip把dmp文件可以很好的压缩。

不过在上面命令后面 加上 compress=y 就可以了

数据的导入

1 将D:\daochudmp 中的数据导入 TEST数据库中。

imp system/manager@TEST file=d:\daochudmp

上面可能有点问题,因为有的表已经存在,然后它就报错,对该表就不进行导入。

在后面加上 ignore=y 就可以了。

2 将d:\daochudmp中的表table1 导入

imp system/manager@TEST file=d:\daochudmp tables=(table1)

基本上上面的导入导出够用了。不少情况我是将表彻底删除,然后导入。

注意:

你要有足够的权限,权限不够它会提示你。

数据库时可以连上的。可以用tnsping TEST 来获得数据库TEST能否连上。

数据导出:

exp hkb/hkb@boss_14 full=y file=c:\orabackup\hkbfulldmp log=c:\orabackup\hkbfulllog;

导出注意事项:导出的是当前用户的的数据,当前用户如果有DBA的权限,则导出所有数据!

同名用户之间的数据导入:

imp hkb/hkb@xe file=c:\orabackup\hkbfulldmp log=c:\orabackup\hkbimplog full=y

不同名之间的数据导入:

imp system/test@xe fromuser=hkb touser=hkb_new file=c:\orabackup\hkbfulldmp

log=c:\orabackup\hkbimplog;

以上就是关于oracle 10g 怎样全库导入、导出全部的内容,包括:oracle 10g 怎样全库导入、导出、oracle 怎样用imp.exe导入导出数据、oracle怎么导入dmp文件等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9317791.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存