平常经常需要对ORACLE数据库进行迁移或备份,这里总结一下ORACLE数据库导入和导出的命令。
LINUX进入oracle账号 su oracle
(1)“完全”增量导出(complete),即备份整个数据库
2.数据库导入命令imp
LINUX进入oracle账号 su oracle
windows则进入CMD
1.1.导出一个完整数据库
C:\Users\Administrator>exp test/test@orcl buffer=64000 file=D:\\data\\test.dmp log=D:/data/test.log owner=TEST Export: Release 11.2.0.1.0 - Production on 星期一 1月 29 22:57:15 2018 Copyright (c) 1982,2009,Oracle and/or its affiliates. All rights reserved. 连接到: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Produc tion With the Partitioning,OLAP,Data Mining and Real Application Testing options 已导出 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集 服务器使用 AL32UTF8 字符集 (可能的字符集转换) 即将导出指定的用户... . 正在导出 pre-schema 过程对象和操作 . 正在导出用户 TEST 的外部函数库名 . 导出 PUBLIC 类型同义词 . 正在导出专用类型同义词 . 正在导出用户 TEST 的对象类型定义 即将导出 TEST 的对象... . 正在导出数据库链接 . 正在导出序号 . 正在导出簇定义 . 即将导出 TEST 的表通过常规路径... . . 正在导出表 USER导出了 4 行 . . 正在导出表 USER2导出了 4 行 . 正在导出同义词 . 正在导出视图 . 正在导出存储过程 . 正在导出运算符 . 正在导出引用完整性约束条件 . 正在导出触发器 . 正在导出索引类型 . 正在导出位图,功能性索引和可扩展索引 . 正在导出后期表活动 . 正在导出实体化视图 . 正在导出快照日志 . 正在导出作业队列 . 正在导出刷新组和子组 . 正在导出维 . 正在导出 post-schema 过程对象和操作 . 正在导出统计信息 成功终止导出,没有出现警告。1.2. 导出数据库定义而不导出数据
C:\Users\Administrator>exp test/test@orcl buffer=64000 file=D:\\data\\test.dmp log=D:/data/test.log owner=TEST rows=n Export: Release 11.2.0.1.0 - Production on 星期一 1月 29 23:58:37 2018 Copyright (c) 1982,Oracle and/or its affiliates. All rights reserved. 连接到: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Produc tion With the Partitioning,Data Mining and Real Application Testing options 已导出 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集 服务器使用 AL32UTF8 字符集 (可能的字符集转换) 注: 将不导出表数据 (行) 即将导出指定的用户... . 正在导出 pre-schema 过程对象和操作 . 正在导出用户 TEST 的外部函数库名 . 导出 PUBLIC 类型同义词 . 正在导出专用类型同义词 . 正在导出用户 TEST 的对象类型定义 即将导出 TEST 的对象... . 正在导出数据库链接 . 正在导出序号 . 正在导出簇定义 . 即将导出 TEST 的表通过常规路径... . . 正在导出表 USER . . 正在导出表 USER2 . 正在导出同义词 . 正在导出视图 . 正在导出存储过程 . 正在导出运算符 . 正在导出引用完整性约束条件 . 正在导出触发器 . 正在导出索引类型 . 正在导出位图,没有出现警告。1.3. 导出一个或一组指定用户所属的全部表、索引和其他对象
C:\Users\Administrator>exp test/test@orcl buffer=64000 file=D:\\data\\test.dmp log=D:/data/test.log owner=(TEST,TEST2) rows=n1.4 导出一个或多个指定表
C:\Users\Administrator>exp test/test@orcl buffer=64000 file=D:\\data\\test.dmp log=D:/data/test.log tables=user C:\Users\Administrator>exp test/test@orcl buffer=64000 file=D:\\data\\test.dmp log=D:/data/test.log tables=(user,user2)1.5 估计导出文件的大小
全部表总字节数: SELECT sum(bytes) FROM dba_segments WHERE segment_type = 'TABLE'; TEST用户所属表的总字节数: SELECT sum(bytes) FROM dba_segments WHERE owner = 'TEST' AND segment_type = 'TABLE';1.6 通过查询语句导出子表
C:\Users\Administrator>exp test/test@orcl buffer=64000 file=D:\\data\\test.dmp log=D:/data/test.log query='where user_id="1" and username="11"' tables=userUNIX系统:
[oracle@DB~]$exp test/test@orcl buffer=64000 file=D:\\data\\test.dmp log=D:/data/test.log query=\'where user_id=\"1\" and username=\"11\"\' tables=user1.7. 增量导出
(1)“完全”增量导出(complete),即备份整个数据库
exp system/manager inctype=complete file=test.dmp(2) “增量型”增量导出(incremental),即备份上一次备份后改变的数据
exp system/manager inctype=incremental file=test.dmp(3) “累计型”增量导出(cumulative),即备份上一次“完全”导出之后改变的数据
exp system/manager inctype=cumulative file=test.dmp
2.数据库导入命令imp
2.1导入一个完整数据库
imp test/test@orcl file=D:\\data\\test.dmp log=D:/data/imp.log full=y ignore=y2.2. 导入一个或一组指定用户所属的全部表、索引和其他对象
imp test/test@orcl file=D:\\data\\test.dmp log=D:/data/imp.log full=y ignore=y fromuser=user1 imp test/test@orcl file=D:\\data\\test.dmp log=D:/data/imp.log full=y ignore=y fromuser=(user1,user2,user3,user4)2.3 将一个用户所属的数据导入另一个用户
imp test/test@orcl file=D:\\data\\test.dmp log=D:/data/imp.log full=y ignore=y fromuser=user1 touser=user2 imp test/test@orcl file=D:\\data\\test.dmp log=D:/data/imp.log full=y ignore=y fromuser=(user1,user2) touser=(user3,user4)2.4 导入一个或多个表
imp test/test@orcl file=D:\\data\\test.dmp log=D:/data/imp.log ignore=y fromuser=test TABLES=user imp test/test@orcl file=D:\\data\\test.dmp log=D:/data/imp.log ignore=y fromuser=test TABLES=(user,user2)