Oracle导出/导入数据库的三种模式
导出
模式一:全量导出(慎用)
exp 用户名/密码@数据库实例 owner=用户名 file=文件存储路径 log=日志存储路径 full=y
栗子:exp Mark/123456@151.2.*.156:1521/markdb owner=Mark file=d:/export/mark_db.emp log=d:/export/mark_db.log full=y owner=ds_planweb
模式二:导出指定用户(推荐)
exp 用户名/密码@数据库实例 file=文件存储路径 log=日志存储路径 owner=指定用户
栗子:exp Mark/123456@151.2.*.156:1521/markdb file=d:/export/mark_db.emp log=d:/export/mark_db.log owner=Mark
模式三:导出指定表
exp 用户名/密码@数据库实例 owner=用户名 file=文件存储路径 log=日志存储路径 owner=指定用户 tables=(指定表)
栗子:exp Mark/123456@151.2.*.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/123456@151.2.*.156:1521/markdb file=d:/export/mark_db.emp full=y ignore=y
注:ignore:是否忽略创建错误
模式二:导入指定用户(推荐)
imp 用户名/密码@数据库实例 file=文件存储路径 fromuser=资源用户名 touser=目标用户名 ignore=y
栗子:imp Mark/123456@151.2.*.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/123456@151.2.*.156:1521/markdb file=d:/export/mark_db.emp owner=Mark tables=(mark_user)
创建用于接收导入数据库的用户
创建用户
- 通过指令: create user 用户名 identified by 口令[即密码];
- 登录system账号,直接创建用户
删除用户
drop user 用户名 cascade;
注:若用户拥有对象,则不能直接删除,否则将返回一个错误值。指定关键字cascade,可删除用户所有的对象,然后再删除用户。
用户授权
- 授权:grant connect, resource to 用户名;
- 撤销: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,那么则会报以下的错误:(图片来自参考博客)
解决方案:
- 使用DBA账号进行导入
- 将dba权限赋值给需要导入的用户
赋权语句:
grant dba to Mark
参考: