Oracle导出/导入数据库的三种模式

导出

  模式一:全量导出(慎用)

    exp 用户名/密码@数据库实例 owner=用户名 file=文件存储路径 log=日志存储路径 full=y

    栗子:exp Mark/[email protected].*.156:1521/markdb owner=Mark file=d:/export/mark_db.emp log=d:/export/mark_db.log full=y owner=ds_planweb

  模式二:导出指定用户(推荐)

    exp 用户名/密码@数据库实例 owner=用户名 file=文件存储路径 log=日志存储路径 owner=指定用户

    栗子:exp Mark/[email protected].*.156:1521/markdb owner=Mark file=d:/export/mark_db.emp log=d:/export/mark_db.log owner=Mark

  模式三:导出指定表

    exp 用户名/密码@数据库实例 owner=用户名 file=文件存储路径 log=日志存储路径 owner=指定用户 tables=(指定表)

    栗子:exp Mark/[email protected].*.156:1521/markdb owner=Mark file=d:/export/mark_db.emp log=d:/export/mark_db.log owner=Mark tables=(mark_user)

导入

  模式一:全量导入(慎用)

    imp 用户名/密码@数据库实例 file=文件存储路径 full=y ignore=y

    栗子:imp Mark/[email protected].*.156:1521/markdb file=d:/export/mark_db.emp full=y ignore=y

    注:ignore:是否忽略创建错误

  模式二:导入指定用户(推荐)

    imp 用户名/密码@数据库实例 file=文件存储路径 fromuser=资源用户名 touser=目标用户名 ignore=y

    栗子:imp Mark/[email protected].*.156:1521/markdb file=d:/export/mark_db.emp fromuser=Mark touser=Mark_target ignore=y

    注:这样用户SONIC的所有对象被导入到文件中。必须指定FROMUSER、TOUSER参数,这样才能导入数据。

  模式三:导入指定表

    imp 用户名/密码@数据库实例 file=文件存储路径 owner=指定用户 tables=(指定表)

    栗子:imp Mark/[email protected].*.156:1521/markdb file=d:/export/mark_db.emp owner=Mark tables=(mark_user)

 创建用于接收导入数据库的用户

  创建用户

  1. 通过指令: create user 用户名 identified by 口令[即密码];
  2. 登录system账号,直接创建用户

  删除用户

    drop user 用户名 cascade;

    注:若用户拥有对象,则不能直接删除,否则将返回一个错误值。指定关键字cascade,可删除用户所有的对象,然后再删除用户。

  用户授权

  1. 授权:grant connect, resource to 用户名;
  2. 撤销:revoke connect, resource from 用户名;

  注:oracle为兼容以前版本,提供三种标准角色(role):connect/resource和dba.

  经过以上操作,该用户则可以作为imp指令 touser的值来接收导入数据库了。

——————----过渡线-----——————

以上用户没有操作表的权限,赋权脚本如下:

GRANT CREATE ANY TABLE TO DS_PORTAL_SH_DEV_GZW;
GRANT SELECT ANY TABLE TO DS_PORTAL_SH_DEV_GZW;
GRANT COMMENT ANY TABLE TO DS_PORTAL_SH_DEV_GZW;
GRANT LOCK ANY TABLE TO DS_PORTAL_SH_DEV_GZW;
GRANT SELECT ANY DICTIONARY TO DS_PORTAL_SH_DEV_GZW;

注:如果dmp文件由dba用户导出,而导入的用户不是dba,那么则会报以下的错误:(图片来自参考博客)

解决方案:

  1. 使用DBA账号进行导入
  2. 将dba权限赋值给需要导入的用户

赋权语句:

  grant dba to Mark

参考:

Oracle 导出、导入某用户所有数据(包括表、视图、存储过程...)

导出

  模式一:全量导出(慎用)

    exp 用户名/密码@数据库实例 owner=用户名 file=文件存储路径 log=日志存储路径 full=y

    栗子:exp Mark/[email protected].*.156:1521/markdb owner=Mark file=d:/export/mark_db.emp log=d:/export/mark_db.log full=y owner=ds_planweb

  模式二:导出指定用户(推荐)

    exp 用户名/密码@数据库实例 owner=用户名 file=文件存储路径 log=日志存储路径 owner=指定用户

    栗子:exp Mark/[email protected].*.156:1521/markdb owner=Mark file=d:/export/mark_db.emp log=d:/export/mark_db.log owner=Mark

  模式三:导出指定表

    exp 用户名/密码@数据库实例 owner=用户名 file=文件存储路径 log=日志存储路径 owner=指定用户 tables=(指定表)

    栗子:exp Mark/[email protected].*.156:1521/markdb owner=Mark file=d:/export/mark_db.emp log=d:/export/mark_db.log owner=Mark tables=(mark_user)

导入

  模式一:全量导入(慎用)

    imp 用户名/密码@数据库实例 file=文件存储路径 full=y ignore=y

    栗子:imp Mark/[email protected].*.156:1521/markdb file=d:/export/mark_db.emp full=y ignore=y

    注:ignore:是否忽略创建错误

  模式二:导入指定用户(推荐)

    imp 用户名/密码@数据库实例 file=文件存储路径 fromuser=资源用户名 touser=目标用户名 ignore=y

    栗子:imp Mark/[email protected].*.156:1521/markdb file=d:/export/mark_db.emp fromuser=Mark touser=Mark_target ignore=y

    注:这样用户SONIC的所有对象被导入到文件中。必须指定FROMUSER、TOUSER参数,这样才能导入数据。

  模式三:导入指定表

    imp 用户名/密码@数据库实例 file=文件存储路径 owner=指定用户 tables=(指定表)

    栗子:imp Mark/[email protected].*.156:1521/markdb file=d:/export/mark_db.emp owner=Mark tables=(mark_user)

 创建用于接收导入数据库的用户

  创建用户

  1. 通过指令: create user 用户名 identified by 口令[即密码];
  2. 登录system账号,直接创建用户

  删除用户

    drop user 用户名 cascade;

    注:若用户拥有对象,则不能直接删除,否则将返回一个错误值。指定关键字cascade,可删除用户所有的对象,然后再删除用户。

  用户授权

  1. 授权:grant connect, resource to 用户名;
  2. 撤销:revoke connect, resource from 用户名;

  注:oracle为兼容以前版本,提供三种标准角色(role):connect/resource和dba.

  经过以上操作,该用户则可以作为imp指令 touser的值来接收导入数据库了。

——————----过渡线-----——————

以上用户没有操作表的权限,赋权脚本如下:

GRANT CREATE ANY TABLE TO DS_PORTAL_SH_DEV_GZW;
GRANT SELECT ANY TABLE TO DS_PORTAL_SH_DEV_GZW;
GRANT COMMENT ANY TABLE TO DS_PORTAL_SH_DEV_GZW;
GRANT LOCK ANY TABLE TO DS_PORTAL_SH_DEV_GZW;
GRANT SELECT ANY DICTIONARY TO DS_PORTAL_SH_DEV_GZW;

注:如果dmp文件由dba用户导出,而导入的用户不是dba,那么则会报以下的错误:(图片来自参考博客)

解决方案:

  1. 使用DBA账号进行导入
  2. 将dba权限赋值给需要导入的用户

赋权语句:

  grant dba to Mark

参考:

Oracle 导出、导入某用户所有数据(包括表、视图、存储过程...)

猜你喜欢

转载自www.cnblogs.com/lcword/p/11775639.html