备份数据和恢复数据的方式整体分为三种
* 使用oracle exp和imp命令
看如下的代码
* 使用oracle exp和imp命令,使用向导的方法
* 如果导出或导入当前用户下的表,用普通用户登陆此时只有两个选项只有用户和表
* 如果导出或导入整个数据库,则必须是管理员的身份登陆,此时有三个选项 整个数据库、用户和表
* 使用pl/sql developer工具(第三方的工具)
第一种情况:备份*.dmp文件
A 也是使用exp和imp命令
B 再pl/sql developer 使用oracle的导入和导出
工具/导入表或导出表
第二种情况:备份insert语句的形式
A 工具/导入表或导出表
B 选择sql插入
******************************************************************************************************************
第一种方式使用oracle exp和imp命令方式恢复和备份数据
如何查看exp和imp命令的帮助文档
命令行下> exp -help
命令行下> imp -help
显示这连个命令的相关帮助文档
oracle导入和导出分为三种方式:
1)表方式,将指定表的数据导出/导入。
导出:
导出一张或几张表:语法格式如下:
$exp user/pwd@服务命名 file=/dir/xxx.dmp log=xxx.log tables=table1,table2
例如:
$exp scott/tiger@itcastClient file=D:/emple.dmp log=D:/log.log tables=employees,departments
导出某张表的部分数据
$exp user/pwd@服务命名 file=/dir/xxx.dmp log=xxx.log tables=table1 query=\"where col1=’…’and col2 <… \";
例如:
$exp scott/tiger@itcastClient file=D:/emple.dmp log=D:/log.log tables=departments query=\"where department_name='办公室'\";
$exp scott/tiger@itcastClient file=D:/emple.dmp log=D:/log.log tables=departments query=\"where department_id=20 or department_id=30\";
导入:
导入一张或几张表
$imp user/pwd@服务命名 file=/dir/xxx.dmp log=xxx.log tables=table1,table2 fromuser=dbuser touser=dbuser2 commit=y ignore=y
例如:
$imp scott/tiger@itcastClient file=D:/emple.dmp log=D:/log.log tables=departments fromuser=scott touser=scott commit=y ignore=y
$imp scott/tiger@itcastClient file=D:/emple.dmp log=D:/log.log tables=employees,departments commit=y ignore=y;
2) 用户方式,将指定用户的所有对象及数据导出/导入。
导出:
$exp user/pwd@服务命名 file=/dir/xxx.dmp log=xxx.log owner=(xx, yy)
例如:
$exp scott/tiger@itcastClient file=D:/a.dmp log=D:/log.log owner=scott
只导出数据对象,不导出数据 (rows=n )
$ exp user/pwd@服务命名 file=/dir/xxx.dmp log=xxx.log owner=user rows=n
例如:
$exp scott/tiger@itcastClient file=D:/a.dmp log=D:/log.log owner=(scott,scott) rows=n
导入:
$imp user/pwd@服务命名 file=/dir/xxx.dmp log=xxx.log fromuser=dbuser touser=dbuser2 commit=y ignore=y
例如
$imp scott/tiger@itcastClient file=D:/a.dmp log=D:/log.log fromuser=scott touser=scott commit=y ignore=y;
3) 全库方式,将数据库中的所有对象导出/导入导出:必须是管理员登陆
$exp user/pwd@服务命名 file=/dir/xxx.dmp log=xxx.log full=y;
例如:
$exp system/itcast@itcastClient file=D:/a.dmp log=D:/log.log full=y;
导入:
$imp user/pwd@服务命名 file=/dir/xxx.dmp log=xxx.log fromuser=dbuser touser=dbuser2
例如:
$imp system/itcast file=D:/a.dmp log=D:/log.log fromuser=system touser=system;
*************************************************************************************************************
导出sql语句的语法
采用的是一种连接字符串的方法
select 'insert into departments(department_id,department_name,manager_id,location_id)
values('|| department_id || ','''||department_name||''','||manager_id||','|| location_id|| ')'
from departments
解析:先连接成如下的形式:
* select 'insert into departments(department_id,department_name,manager_id,location_id)
values(' ||department_id||','||department_name||','||manager_id||','||location_id||')' from departments
*再在是字符数据的地方加上两个单引号
****************************************************************************************************************
*************************************************************************************************************
exp附录:
键字 说明(默认) 关键字 说明(默认)
--------------------------------------------------------------------------
USERID 用户名/口令 FULL 导出整个文件 (N)
BUFFER 数据缓冲区大小 OWNER 所有者用户名列表
FILE 输出文件 (EXPDAT.DMP) TABLES 表名称列表
COMPRESS 导入到一个区 (Y) RECORDLENGTH IO 记录的长度
GRANTS 导出权限 (Y) INCTYPE 增量导出类型
INDEXES 导出索引 (Y) RECORD 跟踪增量导出 (Y)
DIRECT 直接路径 (N) TRIGGERS 导出触发器 (Y)
LOG 屏幕输出的日志文件 STATISTICS 分析对象 (ESTIMATE)
ROWS 导出数据行 (Y) PARFILE 参数文件名
CONSISTENT 交叉表的一致性 (N) CONSTRAINTS 导出的约束条件 (Y)
OBJECT_CONSISTENT 只在对象导出期间设置为读的事务处理 (N)
FEEDBACK 每 x 行的显示进度 (0)
FILESIZE 每个转储文件的最大大小
FLASHBACK_SCN 用于将会话快照设置回以前状态的 SCN
FLASHBACK_TIME 用于获取最接近指定时间的 SCN 的时间
QUERY 用于导出表的子集的 select 子句
RESUMABLE 遇到与空格相关的错误时挂起 (N)
RESUMABLE_NAME 用于标识可恢复语句的文本字符串
RESUMABLE_TIMEOUT RESUMABLE 的等待时间
TTS_FULL_CHECK 对 TTS 执行完整的或部分相关性检查
TABLESPACES 要导出的表空间列表
TRANSPORT_TABLESPACE 导出可传输的表空间元数据 (N)
TEMPLATE 调用 iAS 模式导出的模板名
imp附录:
关键字 说明 (默认值) 关键字 说明 (默认值)
--------------------------------------------------------------------------
USERID 用户名/口令 FULL 导入整个文件 (N)
BUFFER 数据缓冲区大小 FROMUSER 所有者用户名列表
FILE 输入文件 (EXPDAT.DMP) TOUSER 用户名列表
SHOW 只列出文件内容 (N) TABLES 表名列表
IGNORE 忽略创建错误 (N) RECORDLENGTH IO 记录的长度
GRANTS 导入权限 (Y) INCTYPE 增量导入类型
INDEXES 导入索引 (Y) COMMIT 提交数组插入 (N)
ROWS 导入数据行 (Y) PARFILE 参数文件名
LOG 屏幕输出的日志文件 CONSTRAINTS 导入限制 (Y)
DESTROY 覆盖表空间数据文件 (N)
INDEXFILE 将表/索引信息写入指定的文件
SKIP_UNUSABLE_INDEXES 跳过不可用索引的维护 (N)
FEEDBACK 每 x 行显示进度 (0)
TOID_NOVALIDATE 跳过指定类型 ID 的验证
FILESIZE 每个转储文件的最大大小
STATISTICS 始终导入预计算的统计信息
RESUMABLE 在遇到有关空间的错误时挂起 (N)
RESUMABLE_NAME 用来标识可恢复语句的文本字符串
RESUMABLE_TIMEOUT RESUMABLE 的等待时间
COMPILE 编译过程, 程序包和函数 (Y)
STREAMS_CONFIGURATION 导入流的一般元数据 (Y)
STREAMS_INSTANTIATION 导入流实例化元数据 (N)