转载自:http://blog.csdn.net/tianlesoftware/archive/2009/10/23/4718366.aspx
1. 逻辑备用数据库的优点
逻辑备用数据库提供了健壮、有效的灾难恢复和高可用性解决方案。当主数据库因不可预见的故障出现失败时,逻辑备用数据库可以立即转换为主数据库,从而减少了主数据库的停机时间。
逻辑备用数据库提供了高级别的数据保护措施。通过使用Data Guard 的最大保护模式,主数据库事务变化会同步传送到逻辑备用数据库。这样,当主数据库因不可预见的故障出现失败时,可以确保不会丢失数据。
除了可以满足灾难恢复需求之外,逻辑备用数据库还可以用于其他商业目的。逻辑备用数据库可以拥有自身的数据库方案,并且数据库用户可以在这些方案上执行DDL 或DML 操作。
降低主数据为听工作负载。与主数据库一样,逻辑备用数据为可以一直处于OPEN 状态。如果主数据库负载量很大,那么可以将数据统计、数据报表和执行查询等操作转移到逻辑备用数据库来完成,从而节省主数据库的CPU 和I/O 开销。
2. 逻辑备用数据库支持的数据类型和表存储属性。
字符串类型:CHAR、VARCHAR2、VARCHAR、NCHAR、NVARCHAR2 和 LONG。
数字类型:NUMBER、BINARY_FLOAT、BINARY_DOUBLE。
日期时间类型:DATE、TIMESTAMP、TIMESTAMP WITH TIME ZONE、TIMESTAMP WITH LOCAL ZONE、INTERVAL YEAR TO MONTH、INTERVAL DAY TO SECOND。
二进制类型:RAW、LONG RAW。
大对象类型:CLOB、BLOB、NCLOB。
3. 逻辑备用数据库不支持的数据类型。
BFILE
ROWID、UROWID
用户自定义类型(CREATE TYPE)、REF 对象类型、VARRAY、嵌套表、XMLTYPE。
4. 逻辑备用数据库跳过的SQL 语句。
CREATE/ALTER DATABASE
CREATE/ALTER/DROP MATERIALIZED VIEW
CREATE/ALTER/DROP MATERIALIZED VIEW LOG
CREATE/DROP DATABASE LINK
CREATE PFILE FROM SPFILE 和 CREATE SPFEIL FROM PFILE
CREATE SCHEMA AUTHORIZATION
ALTER SYSTEM、ALTER SESSION
CREATE CONTROL FILE
EXPLAIN
LOCK TABLE
SET CONSTRAINTS
SET ROLE
SET TRANSACTION
5. 确定逻辑备用数据库所支持的数据库方案。
SQL> select username from dba_users where username not in (select owner from dba_logstdby_skip);
USERNAME
------------------------------
SCOTT
HR
TSMSYS
6. 确定逻辑备用数据库不支持的对象。
SQL> select * from dba_logstdby_unsupported;
未选定行
7. 确保表行可以被唯一标识。
SQL> select * from dba_logstdby_not_unique;
OWNER TABLE_NAME B
------- ---------- -
TSMSYS SRS$ Y
SCOTT BONUS N
SCOTT SALGRADE N
8. 逻辑备份具体操作
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. 如果磁盘有空间,建议备份到磁盘,然后再备份到磁带。业务数据库备份方法及周期用EXP进行备份前,先在SYS用户下运行CATEXP.SQL文件(如果以前已运行该文件,则不要执行这个脚本)。
没有特殊说明,不允许在客户端执行备份命令。备份命令参照表模式下的备份命令。
从磁盘文件备份到磁带,如果首先备份到本地磁盘文件,则需要转储到磁带设备上。
1. 若需查看主机上配置的磁带设备,使用如下命令:
lsdev -Cc tape
显示的结果如下例所示:
rmt0 Available 30-58-00-2,0 SCSI 4mm Tape Drive
rmt1 Defined 30-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 25626.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版本的恢复
恢复方案需根据备份方案确定。由于业务数据库采用表备份和用户备份相结合的方案,所以业务数据库的恢复需根据实际情况采用表恢复和用户恢复相结合的方案。
二.恢复方案
数据库的逻辑恢复分为表恢复、用户恢复、完全恢复三种模式。
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_csd_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.logB. 恢复备份数据中的指定表
若从本地文件恢复,使用如下命令:
imp icdmain/icd fromuser=icdmain touser=icdmain rows=y indexes=n
commit=y buffer=65536 feedback=100000 ignore=n volsize=0
file=exp_icdmain_csd_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,serviceinfo2.用户模式
此方式将根据按照用户模式备份的数据进行恢复。
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.logB. 恢复备份数据中的指定表
若从本地文件恢复,使用如下命令:
imp icdmain/icd fromuser=icdmain touser=icdmain rows=y indexes=n
commit=y buffer=65536 feedback=100000 ignore=n volsize=0
file=exp_icdmain_yyyymmdd.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,serviceinfo3.完全模式
如果备份方式为完全模式,采用下列恢复方法:
若从本地文件恢复,使用如下命令:
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=表名注:要恢复的表名参照备份的表名
恢复是在原表基础上累加数据
没有特殊说明,不允许在客户端执行恢复命令
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生成的文件
实践代码:
oracle创建表空间,创建用户
//创建临时表空间
create temporary tablespace test_temp
tempfile ‘/u01/app/oracle/oradata/orcl/test_temp01.Dbf'
size 32m
autoextend on
next 32m maxsize 2048m
extent management local;
//创建数据表空间
create tablespace test_data
logging
datafile '/u01/app/oracle/oradata/orcl/test_data01.dbf'
size 32m
autoextend on
next 32m maxsize 2048m
extent management local;
//创建用户并指定表空间
create user username identified by password
default tablespace test_data
temporary tablespace test_temp;
//给用户授予权限
grant connect,resource to username;
先创建一个用户和表空间,用户名david,密码david.在这个表空间下创建一个表:tianle。随便插入些数据。代码如下:
SQL> create tablespace test_data
3 datafile '/u01/app/oracle/oradata/orcl/test_data01.dbf'
4 size 5m;
Tablespace created.
SQL> create user david identified by david default tablespace test_data;
SQL> grant connect,resource to david;
SQL> conn david/david
SQL> create table tianle(id number,
2 content varchar2(100));
SQL> set wrap off
SQL> column id format a20;
SQL> column content format a50;
表模式备份:
[oracle@roy orcl]$ exp david/david rows=y indexes=n compress=n buffer=65536 file=exp_tianle_090101.dmp log=exp_tianle_090101.log tables=(tianle);
用户模式备份:
[oracle@roy orcl]$ exp david/david owner=david rows=y indexes=n compress=n buffer=65536 file=exp_david__090101.dmp log=exp_david_090101.log;
完全模式备份:
[oracle@roy orcl]$ exp david/david rows=y indexes=n compress=n buffer=65536 full=y file=exp_fulldatabase_090101.dmp log=exp_fulldatabase_090101.log;
表模式恢复:
[oracle@roy orcl]$ imp david/david fromuser=david touser=david rows=y indexes=n commit=y buffer=65536 file=exp_tianle_090101.dmp log=imp_tianle_090101.log tables=(tianle);
用户模式恢复:
[oracle@roy orcl]$ imp david/david fromuser=david touser=david rows=y indexes=n commit=y buffer=65536 file=exp_tianle_090101.dmp log=exp_tianle_090101.log;
全库模式恢复:
[oracle@roy orcl]$ imp david/david rows=y indexes=n commit=y full=y ignore=y buffer=65536 file=/tmp/exp_fulldatabase_090101.dmp log=/tmp/imp.log;
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/tianlesoftware/archive/2009/10/23/4718366.aspx
1. 逻辑备用数据库的优点
逻辑备用数据库提供了健壮、有效的灾难恢复和高可用性解决方案。当主数据库因不可预见的故障出现失败时,逻辑备用数据库可以立即转换为主数据库,从而减少了主数据库的停机时间。
逻辑备用数据库提供了高级别的数据保护措施。通过使用Data Guard 的最大保护模式,主数据库事务变化会同步传送到逻辑备用数据库。这样,当主数据库因不可预见的故障出现失败时,可以确保不会丢失数据。
除了可以满足灾难恢复需求之外,逻辑备用数据库还可以用于其他商业目的。逻辑备用数据库可以拥有自身的数据库方案,并且数据库用户可以在这些方案上执行DDL 或DML 操作。
降低主数据为听工作负载。与主数据库一样,逻辑备用数据为可以一直处于OPEN 状态。如果主数据库负载量很大,那么可以将数据统计、数据报表和执行查询等操作转移到逻辑备用数据库来完成,从而节省主数据库的CPU 和I/O 开销。
2. 逻辑备用数据库支持的数据类型和表存储属性。
字符串类型:CHAR、VARCHAR2、VARCHAR、NCHAR、NVARCHAR2 和 LONG。
数字类型:NUMBER、BINARY_FLOAT、BINARY_DOUBLE。
日期时间类型:DATE、TIMESTAMP、TIMESTAMP WITH TIME ZONE、TIMESTAMP WITH LOCAL ZONE、INTERVAL YEAR TO MONTH、INTERVAL DAY TO SECOND。
二进制类型:RAW、LONG RAW。
大对象类型:CLOB、BLOB、NCLOB。
3. 逻辑备用数据库不支持的数据类型。
BFILE
ROWID、UROWID
用户自定义类型(CREATE TYPE)、REF 对象类型、VARRAY、嵌套表、XMLTYPE。
4. 逻辑备用数据库跳过的SQL 语句。
CREATE/ALTER DATABASE
CREATE/ALTER/DROP MATERIALIZED VIEW
CREATE/ALTER/DROP MATERIALIZED VIEW LOG
CREATE/DROP DATABASE LINK
CREATE PFILE FROM SPFILE 和 CREATE SPFEIL FROM PFILE
CREATE SCHEMA AUTHORIZATION
ALTER SYSTEM、ALTER SESSION
CREATE CONTROL FILE
EXPLAIN
LOCK TABLE
SET CONSTRAINTS
SET ROLE
SET TRANSACTION
5. 确定逻辑备用数据库所支持的数据库方案。
SQL> select username from dba_users where username not in (select owner from dba_logstdby_skip);
USERNAME
------------------------------
SCOTT
HR
TSMSYS
6. 确定逻辑备用数据库不支持的对象。
SQL> select * from dba_logstdby_unsupported;
未选定行
7. 确保表行可以被唯一标识。
SQL> select * from dba_logstdby_not_unique;
OWNER TABLE_NAME B
------- ---------- -
TSMSYS SRS$ Y
SCOTT BONUS N
SCOTT SALGRADE N
8. 逻辑备份具体操作
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. 如果磁盘有空间,建议备份到磁盘,然后再备份到磁带。业务数据库备份方法及周期用EXP进行备份前,先在SYS用户下运行CATEXP.SQL文件(如果以前已运行该文件,则不要执行这个脚本)。
没有特殊说明,不允许在客户端执行备份命令。备份命令参照表模式下的备份命令。
从磁盘文件备份到磁带,如果首先备份到本地磁盘文件,则需要转储到磁带设备上。
1. 若需查看主机上配置的磁带设备,使用如下命令:
lsdev -Cc tape
显示的结果如下例所示:
rmt0 Available 30-58-00-2,0 SCSI 4mm Tape Drive
rmt1 Defined 30-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 25626.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版本的恢复
恢复方案需根据备份方案确定。由于业务数据库采用表备份和用户备份相结合的方案,所以业务数据库的恢复需根据实际情况采用表恢复和用户恢复相结合的方案。
二.恢复方案
数据库的逻辑恢复分为表恢复、用户恢复、完全恢复三种模式。
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_csd_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.logB. 恢复备份数据中的指定表
若从本地文件恢复,使用如下命令:
imp icdmain/icd fromuser=icdmain touser=icdmain rows=y indexes=n
commit=y buffer=65536 feedback=100000 ignore=n volsize=0
file=exp_icdmain_csd_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,serviceinfo2.用户模式
此方式将根据按照用户模式备份的数据进行恢复。
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.logB. 恢复备份数据中的指定表
若从本地文件恢复,使用如下命令:
imp icdmain/icd fromuser=icdmain touser=icdmain rows=y indexes=n
commit=y buffer=65536 feedback=100000 ignore=n volsize=0
file=exp_icdmain_yyyymmdd.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,serviceinfo3.完全模式
如果备份方式为完全模式,采用下列恢复方法:
若从本地文件恢复,使用如下命令:
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=表名注:要恢复的表名参照备份的表名
恢复是在原表基础上累加数据
没有特殊说明,不允许在客户端执行恢复命令
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生成的文件
实践代码:
oracle创建表空间,创建用户
//创建临时表空间
create temporary tablespace test_temp
tempfile ‘/u01/app/oracle/oradata/orcl/test_temp01.Dbf'
size 32m
autoextend on
next 32m maxsize 2048m
extent management local;
//创建数据表空间
create tablespace test_data
logging
datafile '/u01/app/oracle/oradata/orcl/test_data01.dbf'
size 32m
autoextend on
next 32m maxsize 2048m
extent management local;
//创建用户并指定表空间
create user username identified by password
default tablespace test_data
temporary tablespace test_temp;
//给用户授予权限
grant connect,resource to username;
先创建一个用户和表空间,用户名david,密码david.在这个表空间下创建一个表:tianle。随便插入些数据。代码如下:
SQL> create tablespace test_data
3 datafile '/u01/app/oracle/oradata/orcl/test_data01.dbf'
4 size 5m;
Tablespace created.
SQL> create user david identified by david default tablespace test_data;
SQL> grant connect,resource to david;
SQL> conn david/david
SQL> create table tianle(id number,
2 content varchar2(100));
SQL> set wrap off
SQL> column id format a20;
SQL> column content format a50;
表模式备份:
[oracle@roy orcl]$ exp david/david rows=y indexes=n compress=n buffer=65536 file=exp_tianle_090101.dmp log=exp_tianle_090101.log tables=(tianle);
用户模式备份:
[oracle@roy orcl]$ exp david/david owner=david rows=y indexes=n compress=n buffer=65536 file=exp_david__090101.dmp log=exp_david_090101.log;
完全模式备份:
[oracle@roy orcl]$ exp david/david rows=y indexes=n compress=n buffer=65536 full=y file=exp_fulldatabase_090101.dmp log=exp_fulldatabase_090101.log;
表模式恢复:
[oracle@roy orcl]$ imp david/david fromuser=david touser=david rows=y indexes=n commit=y buffer=65536 file=exp_tianle_090101.dmp log=imp_tianle_090101.log tables=(tianle);
用户模式恢复:
[oracle@roy orcl]$ imp david/david fromuser=david touser=david rows=y indexes=n commit=y buffer=65536 file=exp_tianle_090101.dmp log=exp_tianle_090101.log;
全库模式恢复:
[oracle@roy orcl]$ imp david/david rows=y indexes=n commit=y full=y ignore=y buffer=65536 file=/tmp/exp_fulldatabase_090101.dmp log=/tmp/imp.log;
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/tianlesoftware/archive/2009/10/23/4718366.aspx
发表评论
-
Fundamentals of Database Systems By Elmasri & Navathe(6 Edition)
2012-03-20 17:18 1429如果想学习好数据库,不管是oracle,还是db2,还 ... -
深入Log Buffer
2012-03-13 13:44 1073转载连接:http://space.itpub.net ... -
创建oracle表空间
2010-10-17 00:20 2170一、创建临时表空间 下面的语句是错误的:如果创建临时表空间 需 ... -
oracle的本地管理表空间(LMT)
2010-10-17 00:19 3057转载:作者:alix_an@sohu.com 在oracl ... -
oracle优化器RBO和CBO
2010-10-15 22:48 1859这段时间,别oracle折磨 ... -
oracle报错--把我给整屁啦
2010-10-15 00:06 1153这两天让oracle给整 ... -
Connection refused(DESCRIPTION=(TMP=)(VSNNUM=169869568)(ERR=12519)(ERROR_STACK=(
2010-10-14 11:38 9661转载自:http://wuhaoshun.iteye.com/ ... -
安装完了Oracle数据库,给scott账户解锁方法
2010-10-14 00:47 1283转载自:http://wangjunwj.iteye.com/ ...
相关推荐
Oracle数据库逻辑增量备份是数据库管理中的重要组成部分,它允许管理员以高效的方式备份和恢复数据,尤其是在数据频繁更新的环境中。本文将深入探讨Oracle数据库中使用exp/imp工具进行逻辑增量备份的方法及其恢复...
逻辑备份方法不需要数据库运行在归档模式下,不但备份简单,而且可以不需要外部存储设备。 逻辑备份方法有三种模式:表备份、用户备份和完全备份。表备份模式备份某个用户模式下指定的对象(表)。用户备份模式备份...
通过对 Oracle 表空间创建命令的分析以及对 exp/imp2 导入导出工具的介绍,我们可以看到,在 Oracle 数据库管理中,合理配置表空间属性和灵活运用备份恢复工具对于保障数据的安全性和可靠性至关重要。希望本文能帮助...
Oracle数据库备份命令ExpImp.pdf Oracle数据库备份命令ExpImp.pdf是一份详细介绍Oracle数据库备份命令的文档。该文档主要介绍了Oracle数据库的两种备份方法:物理备份和逻辑备份。 物理备份是指数据库的完整恢复,...
"学习Oracle数据库备份命令ExpImp.pdf" Oracle数据库备份是数据库管理中非常重要的一部分,备份可以防止数据丢失和恢复数据库。Oracle数据库提供了两种备份方法:物理备份和逻辑备份。 物理备份是指将整个数据库的...
导入/导出是ORACLE幸存的最古老的两个命令行工具,其实我从来不认为Exp/Imp是一种好的备份方式,正确的说法是Exp/Imp只能是一个好的转储工具,特别是在小型数据库的转储,表空间的迁移,表的抽取,检测逻辑和物理...
EXP/IMP 是 Oracle 提供的逻辑备份工具,可以备份数据库中的逻辑结构,例如表、视图、索引等。 使用 EXP/IMP 逻辑备份 使用 EXP/IMP 逻辑备份时,可以使用以下命令: EXPDumpFile=dumpfile.dmp LOG=logfile.log ...
在Linux环境下,远程定时备份Oracle数据库是一项至关重要的任务,它能确保数据的安全性和业务的连续性。Oracle数据库作为企业级的数据库管理系统,其备份与恢复策略必须严谨且可靠。以下将详细阐述如何在没有安装...
### Oracle数据库逻辑备份的实现 #### 一、逻辑备份概述 逻辑备份是Oracle数据库中一种重要的备份手段,它主要用于创建数据库对象的逻辑副本,并将这些副本存储在一个或多个二进制转储文件中。与传统的物理备份...
- **导出/导入(EXP/IMP)**:这是一种逻辑备份的方式,主要通过Oracle提供的工具EXP和IMP来完成。它支持数据和元数据的备份,并且可以根据需要选择性地进行备份或恢复。 - **热备份(Hot Backup)**:这是一种物理...
Oracle 逻辑备份是一种重要的数据保护策略,主要依赖于Oracle Export(exp)和Import(imp)工具来实现。这些工具允许数据库管理员将数据及其结构从一个数据库导出到一个二进制文件,然后在需要时将它们导入到另一个...
本文将介绍Oracle数据库备份到OSS存储的方法,并详细介绍了Oracle数据库的三种标准备份方法:导出/导入(EXP/IMP)、热备份和冷备份。 一、 导出/导入(Export/Import) 导出备份是一种逻辑备份,适用于数据库...
Oracle提供了多种备份方式,包括Recovery Manager (RMAN)、逻辑备份(EXP/IMP)、操作系统级别的拷贝以及使用第三方工具如Veritas。 RMAN是Oracle专为数据库备份和恢复设计的工具,支持全库或部分数据库的备份,如...
Oracle 提供了 Exp/Imp工具进行逻辑备份。Exp命令可以将数据库中的对象和数据导出到二进制文件中,而 Imp命令则可以将这些文件导入到数据库中。逻辑备份的优点是灵活性高,可以选择导出特定的表、用户或整个数据库。...
首先,要理解Oracle数据库逻辑备份中的Export工具。Export工具可以将数据库中的数据导出到一个二进制文件中,这个文件被称为DMP文件。在内容部分提到了一些Export的关键参数,例如: - user:指定连接数据库使用的...
逻辑备份不需要数据库运行在归档模式下,它通过导出(Exp)和导入(Imp)工具来备份和恢复数据。逻辑备份主要有三种模式:表备份、用户备份和完全备份。 1. 表备份:只备份特定用户模式下的指定表,命令示例如下: ...
根据备份时数据库是否处于运行状态,Oracle数据库备份大致可以分为三种类型:逻辑备份(导出/导入)、热备份和冷备份。 ##### 1. 导出/导入 (EXP/IMP) 导出/导入是一种逻辑备份方式,主要通过Oracle提供的工具EXP...
在SQL*Plus中,可以通过导出(EXP)和导入(IMP)命令对数据库进行逻辑备份。这是最基础的备份方式,适合小型数据库或用于数据迁移。Oracle_exp_imp.txt文件可能包含了使用这些命令的示例脚本。 1. EXP(导出): ...
Oracle数据库的备份是确保数据安全的关键操作,其中exp和imp命令是进行逻辑备份的主要工具。逻辑备份相较于物理备份,不需要数据库运行在归档模式下,也不需要大量的外部存储设备,如磁带库,因此在很多业务环境中更...