设为首页 收藏本站
查看: 1000|回复: 0

[经验分享] Oracle数据库备份(exp/imp命令)

[复制链接]

尚未签到

发表于 2016-7-27 01:32:34 | 显示全部楼层 |阅读模式
---------------------------------------------------------------------------------------
Oracle数据库备份
---------------------------------------------------------------------------------------
  ORACLE数据库的逻辑备份分为三种模式:表备份、用户备份和完全备份。

1.表模式
备份某个用户模式下指定的对象(表)。业务数据库通常采用这种备份方式。
若备份到本地文件,使用如下命令:
    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=icdmain.commoninformation,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=icdmain.commoninformation,icdmain.serviceinfo,icdmain.dealinfo

注:在磁盘空间允许的情况下,应先备份到本地服务器,然后再拷贝到磁带。出于速度方面的考虑,尽量不要直接备份到磁带设备。

2.用户模式
备份某个用户模式下的所有对象。业务数据库通常采用这种备份方式。
若备份到本地文件,使用如下命令:
    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

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

3.完全模式
备份完整的数据库。业务数据库不采用这种备份方式。备份命令为:
    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=incremental参数。
2. 用户必须有EXP_FULL_DATABASE的系统角色。
3. 话务量较小时方可采用数据库备份。
4. 如果磁盘有空间,建议备份到磁盘,然后再备份到磁带。

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

1.表模式
此方式将根据按照表模式备份的数据进行恢复。
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


2.用户模式
此方式将根据按照用户模式备份的数据进行恢复。
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


3.完全模式
如果备份方式为完全模式,采用下列恢复方法:
若从本地文件恢复,使用如下命令:
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


==================================================================
Oracle EXP/IMP 参数详解

---------------------------------------------------------------------------------------
EXP导出选项
---------------------------------------------------------------------------------------
  USERID
运行导出命令的帐号的用户名/口令

BUFFEER
用来取数据行的缓冲区的大小

FILE
导出转储文件的名字

COMPRESS
导出是否应该压缩有碎片的段成一个范围,这将会影响STORAGE子句

GRANTS
导出时否要导出数据库对象上的授权

INDEXES
是否要导出表上的索引

ROWS
是否应导出行。如它为‘N’,那么在导出文件中仅生成数据库对象的DDL

CONSSTRAINTS
是否导出表旧的约定条件

FULL
如设为‘Y’,那么将执行一个整个数据库导出操作

OWNER
要导出的一系列数据库帐号,然后执行这些帐号的USER导出操作

TABLES
要导出的一系列表;执行这些表的TABLE导出操作

RECORDLENGTH
转储导出文件日志的长度(以字节为单位),通常都使用缺省,除非要在两个不同操作系统中传递导出文件

INCTYPE
正在执行的导出操作的类型(有效值有COMPLETE(缺省值),CUMULATIVE和IVCREMENTAL)

RECORD
在增量导出类型中的一个标记,标明是否将日志存储到数据字典中日志导出的表中

PARFILE
要传递给导出的参数文件的名字。这个文件将包含所有参数的入口项

ANALYZE
标明是否将移对象的统计信息写入导出转储文件中

CONSISTENT
标明是否保留所有导出对象的读取一致复制

LOG
导出日志将要写入的文件的名字

MLS
标明是否要导出MLS 标号

MLS_LABEL
规定了MLS标号的格式

---------------------------------------------------------------------------------------
IMP导入选项
---------------------------------------------------------------------------------------
  USERID
运行导入命令的帐号的用户名/口令

BUFFEER
用来取数据行的缓冲区的大小

FILE
导入转储文件的名字

SHOW
规定文件内容是否被显示,而不是被执行

EGNORE
标明在执行‘CREATE’命令时,是否忽略遇到的错误。如果正在导入的对象已经存在时,应使用这个参数

FULL
如设为‘Y’,那么将执行一个整个数据库导入操作

FROMUSER
在FULL=N的情况下,才有参数。它是一系列的数据库帐号,其对象应从导出转储文件中读取

TOUSER
一系列数据库帐号,导出转储文件扣的对象将要导入这些帐号

GRANTS
导入时否要导入数据库对象上的授权

INDEXES
是否要导入表上的索引

ROWS
是否应导入行。如它为‘N’,那么在导入文件中执行数据库对象的DDL

TABLES
要导入的一系列表

RECORDLENGTH
转储导入文件日志的长度(以字节为单位),通常都使用缺省,除非要在两个不同操作系统中传递导入文件

INCTYPE
正在执行的导入操作的类型(有效值有COMPLETE(缺省值),CUMULATIVE和IVCREMENTAL)

PARFILE
要传递给导入的参数文件的名字。这个文件将包含所有参数的入口项

ANALYZE
标明是否将移对象的统计信息写入导入转储文件中

LOG
导入日志将要写入的文件的名字

MLS
标明是否要导入MLS 标号

INDEXFILE
不执行导入动作,只生成建索引的文本

==example==
  将一个数据库的某用户的所有表导到另外数据库的一个用户下面的例子  
exp userid=system/manager owner=username1 file=expfile.dmp
imp userid=system/manager fromuser=username1 touser=username2 ignore=y file=expfile.dmp

=============================================================================
在导入导出前要先测试下对应的数据库是否是通的:tnsping test来测试,同样test是服务名
所有命令可在cmd下执行



用exp/imp远程操作数据库

对ORACLE数据库进行远程操作,假设数据库在192.168.1.110上,具体方法如下:
一、在客户端创建和服务端对应的服务名
方法1:
修改tnsnames.ora文件
加入远程服务器的命名:

Sql代码
TEST_ORCL =  
(DESCRIPTION =  
(ADDRESS_LIST =  
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.110)(PORT = 1521))  
)  
(CONNECT_DATA =  
(SERVICE_NAME = orcl)  
)  
)

方法2:
在oracle客户端,打开net manager。
创建一个服务命名TEST_ORCL,主机IP为:192.168.1.110,服务名orcl,端口1521


二、测试远程服务器是否畅通

进入到cmd后,执行命令:tnsping TEST_ORCL

三、远程操作数据库
导出:

Sql代码
1:exp username/password@TEST_ORCL file=bak_filepath
2:exp username/password@TEST_ORCL full=y file=bak_filepath
username 用户名,password 密码,TEST_ORCL 客服端服务名,bak_filepath 备份文件存放的路径

导入:

Sql代码
1:imp username/password@TEST_ORCL file=bak_filepath full=y
2:imp username/password@TEST_ORCL/database_name file=bak_filepath full=y
3:imp username/password@TEST_ORCL file=bak_filepath fromuser=fromadmin touser=toadmin

username 用户名,password 密码,TEST_ORCL 客服端服务名,bak_filepath 备份文件存放的路径
fromadmin 备份数据的用户名,toadmin 还原数据库的用户名。database_name 还原到那个数据库上

full=y 将数据库整体导出,包括表结构等。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-249786-1-1.html 上篇帖子: ORACLE 执行计划分析——基础知识 下篇帖子: Oracle 面试题库—PL/SQL
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表