在oracle数据库中,如果数据需要导出为DMP格式,使用PLSQL是无法完成的,需要通过数据库服务器进行导出。
操作方式如下:
1、登录数据库服务器
2、切换数据库用户
3、执行需要导出的表数据的命令
以表APPLSYS.FND_ID_FLEX_SEGMENTS为例
exp gl/gl file=/data03/bakdmp/test.dmp log=/data03/bakdmp/test.log tables=APPLSYS.FND_ID_FLEX_SEGMENTS
命令解释:
exp:导出(导入命令为imp)
gl/gl:用户名和秘密
file=/data03/bakdmp/test.dmp:导出的文件名和路径
log=/data03/bakdmp/test.log:导出的日志名称和路径
tables=APPLSYS.FND_ID_FLEX_SEGMENTS:需要导出的表的数据
执行后提示:EXP-00009: no privilege to export APPLSYS’s table FND_ID_FLEX_SEGMENTS(没有导出表的权限)
原因是用户没有导出数据库数据的权限角色:EXP_FULL_DATABASE;
所以,首先对该用户赋予EXP_FULL_DATABASE角色:
alter user 此处填用户名 default role EXP_FULL_DATABASE;
该用户赋予EXP_FULL_DATABASE角色后查询如下:
赋予EXP_FULL_DATABASE角色后再数据库导出DMP格式文件依然报错,提示没有权限,原因是因为导出角色权限EXP_FULL_DATABASE默认值是NO。
解决办法如下:
执行一下命令:
alter user 此处填用户名 default role all;
命令解读:给该用户已有的所有角色权限默认启用。
执行后查询如下:
4、再次执行导出命令