您的位置:首页 > 数据库 > Oracle

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

2013-03-13 11:44 260 查看
原文地址:http://blog.163.com/licanli2082@126/blog/static/35748686201142461746594/

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

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

[align=center]==example==[/align]

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

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 将数据库整体导出,包括表结构等
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: