因为导入导出要用到Oracle的目录,所以先获得目录
select *
from dba_directories;
select *
from dba_directories;
5、获得用户授权的目录清单
文本 隐藏/显示
select d.directory_name dir_name,
d.directory_path dir_path,
p.privilege,
p.grantee,
p.grantor
from dba_tab_privs p, dba_directories d
where p.table_name = d.directory_name
-- SYSTEM 是用户名 --
-- 如果查LBS,则下面改成 p.grantee = 'LBS'
and p.grantee = 'SYSTEM'
order by d.directory_name, p.privilege
select d.directory_name dir_name,
d.directory_path dir_path,
p.privilege,
p.grantee,
p.grantor
from dba_tab_privs p, dba_directories d
where p.table_name = d.directory_name
-- SYSTEM 是用户名 --
-- 如果查LBS,则下面改成 p.grantee = 'LBS'
and p.grantee = 'SYSTEM'
order by d.directory_name, p.privilege
用LBS用户查询,发现LBS用户没有目录权限
如下图(没有目录权限,需要开通):
6、给用户授权目录
文本 隐藏/显示
-- 我们要导出的空间的用户为:LBS--
-- 给用户目录权限BACKUP_PATH --
grant read,write on directory BACKUP_PATH to LBS;
-- 我们要导出的空间的用户为:LBS--
-- 给用户目录权限BACKUP_PATH --
grant read,write on directory BACKUP_PATH to LBS;
附,如果没有指定目录,可以先创建目录:
创建目录的参考脚本:
文本 隐藏/显示
-- 如 --
-- 这样把目录d:\dump\dir设置成dump_dir代表的directory --
create or replace directory dump_dir as 'D:\dump\dir'
-- 如 --
-- 这样把目录d:\dump\dir设置成dump_dir代表的directory --
create or replace directory dump_dir as 'D:\dump\dir'
删除目录的参考脚本:
文本 隐藏/显示
-- 删除目录的参考脚本 --
-- dump_dir 是目录名 --
drop directory dump_dir
-- 删除目录的参考脚本 --
-- dump_dir 是目录名 --
drop directory dump_dir
7、用expdp导出数据
相关信息:
用户:LBS
密码:xxxx
TNS连接:bim (在Oracle的TNS配置)
schemas:指定LBS用户,用LBS用户导出
dumpfile:备份文件名,这里用LbsV20180402Bak.dmp
DIRECTORY:导出目录(Oracle目录名BACKUP_PATH),对应服务器的/u01/app/admin/TEST/dpdump
文本 隐藏/显示
-- 对(车辆管理的)库进行导出,用expdp --
-- expdp [账号]/[密码]@[数据库] schemas=[用户] dumpfile=[输出文件名.dmp结尾] DIRECTORY=[输出目录]
-- 在cmd下面(非账号登录下面) --
expdp LBS/xxxx@bim schemas=LBS dumpfile=LbsV20180402Bak.dmp DIRECTORY=BACKUP_PATH
-- 对(车辆管理的)库进行导出,用expdp --
-- expdp [账号]/[密码]@[数据库] schemas=[用户] dumpfile=[输出文件名.dmp结尾] DIRECTORY=[输出目录]
-- 在cmd下面(非账号登录下面) --
expdp LBS/xxxx@bim schemas=LBS dumpfile=LbsV20180402Bak.dmp DIRECTORY=BACKUP_PATH
8、用impdp导入数据
相关信息:
用户:LBS_TEST
密码:xxtest
TNS连接:bim (在Oracle的TNS配置)
schemas:指定LBS用户,用LBS用户导出
dumpfile:备份文件名,这里用LbsV20180402Bak.dmp
DIRECTORY:导出目录(Oracle目录名BACKUP_PATH),对应服务器的/u01/app/admin/TEST/dpdump
文本 隐藏/显示
-- 导入用户名:lbs_test --
-- 导入用户密码:xxtest --
-- 数据库所在的TNS:bim --
-- 要导入的文件的所在的Oracle目录:BACKUP_PATH --
-- 文件名:LbsV20180402Bak.dmp --
-- 导出时候的表空间:TBS_LBS --
-- 导出时候的表账号:LBS --
impdp lbs_test/xxtest@bim DIRECTORY=BACKUP_PATH DUMPFILE=LbsV20180402Bak.dmp TABLESPACES=TBS_LBS REMAP_SCHEMA=LBS:lbs_test remap_tablespace=TBS_LBS:TBS_LBS_TEST logfile=lbs.log
-- 导入用户名:lbs_test --
-- 导入用户密码:xxtest --
-- 数据库所在的TNS:bim --
-- 要导入的文件的所在的Oracle目录:BACKUP_PATH --
-- 文件名:LbsV20180402Bak.dmp --
-- 导出时候的表空间:TBS_LBS --
-- 导出时候的表账号:LBS --
impdp lbs_test/xxtest@bim DIRECTORY=BACKUP_PATH DUMPFILE=LbsV20180402Bak.dmp TABLESPACES=TBS_LBS REMAP_SCHEMA=LBS:lbs_test remap_tablespace=TBS_LBS:TBS_LBS_TEST logfile=lbs.log
另外,用 sqlfile 属性可以实现不真实导入,而是输出导入的sql脚本语句(先备存脚本如下文字)
impdp mlveh_dev/xxx@xxx DIRECTORY=BACKUP_PATH DUMPFILE=VEHICLE_AUTO_BACKUP.dmp schemas=vehicle_test REMAP_SCHEMA=vehicle_test:mlveh_dev sqlfile=sec_expdp.sql