Oracle数据库备份与还原命令
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 将数据库中的表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 上面可能有点问题,因为有的表已经存在,然后它就报错,对该表就不进行导入。 在后面加上 ignore=y 就可以了。
rows=n在exp中就是表示只导出表结构,而不导出数据,其中rows为行的意思,n为no的意思。
exp详解:
1. 获取帮助
exp help=y
2. 导出一个完整数据库
exp system/manager file=bible_db log=dible_db full=y
3. 导出数据库定义而不导出数据
exp system/manager file=bible_db log=dible_db full=y rows=n
4. 导出一个或一组指定用户所属的全部表、索引和其他对象
exp system/manager file=seapark log=seapark owner=seapark
exp system/manager file=seapark log=seapark owner=(seapark,amy,amyc,harold)
注意:在导出用户时,尽管已经得到了这个用户的所有对象,但是还是不能得到这些对象引用的任何同义词。解决方法是用以下的SQL*Plus命令创建一个脚本文件,运行这个脚本文件可以获得一个重建seapark所属对象的全部公共同义词的可执行脚本,然后在目标数据库上运行该脚本就可重建同义词了。
SET LINESIZE 132
SET PAGESIZE 0
SET TRIMSPOOL ON
SPOOL c:\seapark.syn
SELECT 'Create public synonym '||synonym_name||' for'||table_owner||'.'||table_name||';'
FROM dba_synonyms
WHERE table_owner = 'SEAPARK' AND owner = 'PUBLIC';
SPOOL OFF
5. 导出一个或多个指定表
exp seapark/seapark file=tank log=tank tables=tank
exp system/manager file=tank log=tank tables=seapark.tank
exp system/manager file=tank log=tank tables=(seapark.tank,amy.artist)
6. 估计导出文件的大小
全部表总字节数:
SELECT sum(bytes)
FROM dba_segments
WHERE segment_type = 'TABLE';
seapark用户所属表的总字节数:
SELECT sum(bytes)
FROM dba_segments
WHERE owner = 'SEAPARK'
AND segment_type = 'TABLE';
seapark用户下的aquatic_animal表的字节数:
SELECT sum(bytes)
FROM dba_segments
WHERE owner = 'SEAPARK'
AND segment_type = 'TABLE'
AND segment_name = 'AQUATIC_ANIMAL';
7. 导出表数据的子集(oracle8i以上)
NT系统:
exp system/manager query='Where salad_type='FRUIT'' tables=amy.salad_type
file=fruit log=fruit
UNIX系统:
exp system/manager query=\"Where salad_type=\'FRUIT\'\" tables=amy.salad_type file=fruit log=fruit
8. 用多个文件分割一个导出文件
exp system/manager file=(paycheck_1,paycheck_2,paycheck_3,paycheck_4) log=paycheck, filesize=1G tables=hr.paycheck
9. 使用参数文件
exp system/manager parfile=bible_tables.par bible_tables.par参数文件:
#Export the sample tables used for the Oracle8i Database Administrator's Bible.
file=bible_tables
log=bible_tables
tables=(
amy.artist
amy.books
seapark.checkup
seapark.items
)
10. 增量导出
“完全”增量导出(complete),即备份整个数据库
exp system/manager inctype=complete file=990702.dmp
“增量型”增量导出(incremental),即备份上一次备份后改变的数据
exp system/manager inctype=incremental file=990702.dmp
“累计型”增量导出(cumulative),即备份上一次“完全”导出之后改变的数据
exp system/manager inctype=cumulative file=990702.dmp
imp nx_xds/embed@szs file='d:\nx_xds.dmp' log='d:\nx_xds.log' fromuser=nx_xds touser=nx_xds ignore=y
exp命令有个query参数
exp username/password@sid file=D:\test.dmp tables=(tablename) query=\"where cidno='1234679' and cname='张三'\"
问题记录
message 100 not found; no message file for product=rdbms, facility=imp: release 11.2.0.1.0 - production on tue oct 29 09:49:48 2013
copyright (c) 1982, 2009, orac
invalid format of import utility name
verify that oracle_home is properly set
import terminated unsuccessfully
imp-00000: message 0 not found; no message file for product=rdbms, facility=imp
上网查了一下,有人出现该问题的原因是:
oracle安装路径\rdbms\mesg下面的文件expus.msb,expzhs.msb,impus.msb,impzhs.msb没有导致,安装问题,
从别的地方拷贝文件后,问题解决。
我这里的原因是oracle_home 问题。
我的电脑--》环境变量--》里面的oracle_home 正常情况下应该是 d:\app\administrator\product\11.2.0\dbhome_1
而现在是安装oracle客户端简洁版的路径。
问题原因应该是我先安装的oracle服务器,后安装的客户端,该变量被修改了。
修改成d:\app\administrator\product\11.2.0\dbhome_1,问题解决。
来源:oschina
链接:https://my.oschina.net/u/4370408/blog/3637038