Oracle学习笔记-备份与恢复

这篇博客详细介绍了Oracle数据库的备份与恢复操作,包括全库模块、用户模块和表模式的导出与导入,以及exp和imp工具的使用方法和参数设置。同时,还讨论了常见的导入问题,如对象已存在、主外键约束和权限不足等,并提到了sqlload的相关信息。
摘要由CSDN通过智能技术生成

导入/导出对象

  • 全库模块
    可以导出除sys用户拥有的所有数据库对象,包括:表空间的定义、配置文件、用户定义、角色、系统权限授权、角色授权、默认角色、resource costs、会滚段的定义、数据库链接、虚列、所有目录别名、所有外部函数库、所有对象类型、所有簇定义;对于每个表,还可导出表使用的对象类型定义、表定义、表数据、嵌套表数据、表索引、表约束、表授权、分析表、列和表注释、审核信息、所有引用的完整性约束、所有同义词、所有视图、所有存储过程、包、函数、所有触发器、分析簇、快照、job、all refresh groups and children

  • 用户模块
    对象类型、数据库链路、序列、簇定义,对于每个表,还可导出表使用的对象类型定义、表定义、表数据、嵌套表数据、表索引、表约束、表授权、分析表、列和表注释、审核信息、属于当前用户的表所引用的完整性约束、同义词、视图、存储过程、包、函数、触发器、分析簇、快照、job、refresh groups

  • 表模式
    可导出表使用的对象类型定义、表定义、表数据、嵌套表数据、表索引、表约束、表授权、分析表、列和表注释、审核信息、表引用的完整性约束、触发器,还可导出其他用户拥有的触发器、其他用户用户的索引

  • 导入时的顺序
    字符集->表定义->表数据->表索引->完整性约束、触发器、bitmap索引->视图、函数、过程->包

  • 全库导入时包含的系统对象
    配置文件profile、公共数据库链接、同义词、角色、会滚段的定义、system audit option、系统权限、表空间定义、tablespace quotas、用户定义、目录别名


exp/imp

exp

模式

  • 全库模式:exp 用户名/密码@网络服务名 full=y file=路径\文件名.dmp log=路径\文件名.log
  • 用户模式:exp 用户名/密码@网络服务名 owner=(用户1,用户2,用户3,…) file=路径\文件名.dmp log=路径\文件名.log
  • 表模式:exp 用户名/密码@网络服务名 tables=(表名1,表名2,表名3,…)file=路径\文件名.dmp log=路径\文件名.log
  • 表空间:exp 用户名/密码@网络服务名 tablespaces=(表空间1,表空间2,表空间3,…) file=路径\文件名.dmp log=路径\文件名.log

参数

  • USERID 用户名/密码
  • FULL 是否全库导入 (Y 或 N),默认为 N
  • BUFFER 数据缓冲的大小
  • OWNER 导出的用户列表
  • FILE 导出文件,是dmp文件
  • TABLES 要导出的表名列表
  • COMPRESS 是否压缩(Y 或 N), 默认为Y
  • RECORDLENGTH 输入输出记录的长度,默认为operating system-dependent
  • GRANTS 导出权限 (Y 或 N),默认为Y
  • INCTYPE 导出的类型是否为递增(Y 或 N),默认为 N
  • INDEXES 导出索引 (Y 或 N) ,默认为Y
  • RECORD 是否在系统SYS.INCEXP, SYS.INCFIL中记录一个递增或累计的导出(Y 或 N) , 默认为Y
  • ROWS 导出行数据 (Y 或 N) ,默认为 Y
  • PARFILE 参数文件名
  • CONSTRAINTS 是否导出约束,(Y 或 N) ,默认为 Y
  • CONSISTENT 在执行导出操作时是否加事务(Y 或 N),默认为 N
  • LOG 输出的日志文件
  • STATISTICS 在导出时执行ANALYZE语句 (Y 或 N) 默认为 Y
  • DIRECT direct path (N)
  • FEEDBACK 在导出时每个几行显示进度,默认为0

imp

模式

  • 全库模式:imp 用户名/密码@网络服务名 full=y file=路径\文件名.dmp log=路径\ds110.log
  • 用户模式:imp 用户名/密码@网络服务名 file=路径\文件名.dmp fromuser=导出的用户名 touser=导入的用户名 log=路径\ds110.log
  • 表模式:imp 用户名/密码@网络服务名 tables=(表名1,表名2,表名3,…)file=路径\文件名.dmp fromuser=导出的用户名 touser=导入的用户名 log=路径\ds110.log
  • 表空间:imp 用户名/密码@网络服务名 tablespaces=(表空间1,表空间2,表空间3,…) file=路径\文件名.dmp fromuser=导出的用户名 touser=导入的用户名 log=路径\ds110.log

参数

  • USERID 用户名/密码
  • FULL 是否全库导入 (Y 或 N),默认为 N
  • BUFFER 数据缓冲的大小
  • FROMUSER 导出的用户列表,即导入文件是从哪个用户导出的
  • TOUSER 导入的用户列表,即要到哪个用户中
  • FILE 导入文件,是dmp文件
  • SHOW 只列出文件内容 (Y 或 N) ,默认为 N
  • TABLES 要导入的表名列表
  • IGNORE 在导入过程中是否忽略错误 , 默认为 N
  • RECORDLENGTH 记录的长度,默认为operating system-dependent
  • GRANTS 导入权限 (Y 或 N),默认为Y
  • INCTYPE 导入的类型是否为递增(Y 或 N),默认为 N
  • INDEXES 导入索引 (Y 或 N) ,默认为Y
  • COMMIT 在导入过程中,是否导入一行数据,提交一行 (Y 或 N)默认为N,即在每个表导入后,进行提交
  • ROWS 导入行数据 (Y 或 N) ,默认为 Y
  • PARFILE 参数文件名
  • LOG 输出的日志文件
  • DESTROY 是否覆盖表空间上的数据文件 (Y 或 N) 默认为N
  • INDEXFILE 将表或索引信息写到指定的文件中
  • CHARSET 导出文件的字符集,默认为 NLS_LANG
  • ANALYZE 在导入时执行ANALYZE语句 (Y 或 N) 默认为 Y
  • FEEDBACK 在导入时每个几行显示进度,默认为0

常见问题

  • 导入时数据库对象已经存在
    一般情况, 导入数据前应该彻底删除目标数据下的表, 序列, 函数/过程,触发器等,数据库对象已经存在, 按缺省的imp参数, 则会导入失败;如果用了参数ignore=y, 会把exp文件内的数据内容导入
  • 如果表有唯一关键字的约束条件, 不合条件将不被导入,如果表没有唯一关键字的约束条件, 将引起记录重复
  • 导入时数据库对象有主外键约束
    这发生在将几个包含表的DMP文件分别导入数据库时,不符合主外键约束, 数据便会导入失败,解决办法: 先导入主表, 再导入依存表,isable目标导入对象的主外键约束, 导入数据后, 再enable它们
  • 导入权限不够
    如果要把A用户的数据导入B用户下, 做导入操作的用户需要有imp_full_database权限
  • 导入大表( 大于80M ) 时, 存储分配失败
    默认的EXP时, compress = Y, 也就是把所有的数据压缩在一个数据块上,导入时, 如果不存在连续一个大数据块, 则会导入失败,导出80M以上的大表时, 记得compress= N, 则不会引起这种错误.
  • imp和exp使用的字符集不同
    如果字符集不同, 导入会失败, 可以改变unix环境变量或者NT注册表里NLS_LANG相关信息,导入完成后再改回来.
    imp和exp版本不能往上兼容:imp可以成功导入低版本exp生成的文件, 不能导入高版本exp生成的文件
    从一个账户导出,另一个账户导入:使用fromuser和touser

sqlload

sqlldr 所有命令及用法,这篇文章描述的很详细


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值