oracle数据库expdp远程数据库备份到本地的问题

问题描述

oracle数据库expdp远程数据库备份到本地的问题
我们有3个数据库环境(都是11g版本),分别是开发环境D1,测试环境D2和生产环境D3其中D1D2是由我管理维护,D3没有直接的访问权限,我们是通过把D3环境的表的select权限赋给user1用户来进行访问的,现在需要不定期的把D3上的表结构和数据同步到D1和D3上供开发人员和测试人员模拟生产环境使用。
我把我的处理过程描述一下(以D3同步到D1为例):
1. 在D1上创建目录并授权给D1用户user_d1
greate directory dump_d1 as '/datafile';
grant readwrite on directory dump_d1 to user_d1;
2. 在D1上创建D1到D3的dblink
create database link db_d3 connect to user1 identified by user1pw using 'conn_str';
ps:conn_str是生产环境的连接信息,已确认这个dblink是可用的
3. 使用expdp导出远程数据库对象到本地
expdp user_dev/userdevpw@dev_D1 directory=dump_d1 dumpfile=temp.dmp network_link=db_d3 schemas=proc_user tables=t_org_list
ps: proc_user是生产环境上的schema1. 在D1上创建目录并授权给D1用户user_d1
greate directory dump_d1 as '/datafile';
grant readwrite on directory dump_d1 to user_d1;
2. 在D1上创建D1到D3的dblink
create database link db_d3 connect to user1 identified by user1pw using 'conn_str';
ps:conn_str是生产环境的连接信息,已确认这个dblink是可用的
3. 使用expdp导出远程数据库对象到本地
expdp user_dev/userdevpw@dev_D1 directory=dump_d1 dumpfile=temp.dmp network_link=db_d3 schemas=proc_user tables=t_org_list
ps: proc_user是生产环境上的schema
结果报:
t_org_list对象找不到

在D1上执行
select * from proc_user. t_org_list@db_d3;
结果是有显示的,证明dblink是通的
我怀疑是不是生产开给我们的用户user1权限不足导致了无法读取proc_user下的对象?

为了验证我的想法,我按照上面的步骤,在D1和D2间进行测试(由于没有proc_user的权限,只能选择开发环境和测试环境上模拟)具体步骤如下:
1. 目录:用上面已创建的dump_d1
2. 在D1上创建D1到D2的dblink
create database link db_d2 connect to user_uat identified by useruatpw using 'conn_str';
ps:conn_str是D2环境的连接信息,已确认这个dblink是可用的
3. 使用expdp导出远程数据库对象到本地
expdp user_dev/userdevpw@dev_D1 directory=dump_d1 dumpfile=temp.dmp network_link=db_d2 schemas=user_uat tables=t_org_list
ps: proc_user是D2环境上的schema
结果操作成功。
由此可见,如果远程源数据库中两个用户A,B,且A是拥有对象完全权限,B只拥有A中的对象的select权限,那么对B建立DBLINK试图expdp用户A的对象的操作是无法成功的,只有对A建立DBLINK才能expdp操作导出A中的对象。

由于我刚接触expdp操作,请各位高手指点一下,上述结论是否成立,在现有条件下(我只有生产用户B的权限)要实现通过用户B导出用户A中的对象是否可行?

时间: 2024-12-03 11:33:04

oracle数据库expdp远程数据库备份到本地的问题的相关文章

linux oracle rac expdp导出数据库,在节点1执行导出但是数据文件保存在了节点2上

问题描述 linux oracle rac expdp导出数据库,在节点1执行导出但是数据文件保存在了节点2上 linux oracle rac expdp导出数据库,在节点1(机器1)执行导出,数据文件保存在了节点2(机器2)上,怎么指定导出到哪个节点(哪台机器)的目录下?或者让两个节点的目录下都有导出的数据文件.

rman如何连接本地数据库和远程数据库

rman 连接: 连接到本地数据库: 1.首先指定ORACLE_SID : --如果数据库只有一个实例,那么就不需要进行指定了,rman默认连接到唯一的实例上: >set ORACLE_SID=ORCL 2.然后rman target usr/pwd nocatalog:--这样默认就是连接的指定的数据库服务名称,关于catalog是什么意思,我还不知道: >rman target usr/pwd nocatalog: 3.也可以不指定用户名和密码 rman target /:--这种方式以什

轻松了解统一数据库和远程数据库的概念

MobiLink 和 SQL Remote 都可在一个统一数据库和一组远程数据库之间提供数据复制. 统一数据库包含要复制的所有数据.远程数据库是统一数据库的副本,它可以与统一数据库位于相同的站点,也可以位于物理上的远程站点. 下图显示一个小型系统的示意图: 某小型系统的示意图 远程用户 复制系统包括许多远程数据库.每个远程数据库包含统一数据库中的部分信息.每个远程数据库在物理上都是单独的数据库,通常位于不同的计算机上.所有远程数据库都必须与统一数据库保持一致. 可以将整个复制系统视为一个分散的数

请教C#程序免安装Oracle客户端访问远程数据库的方法

问题描述 程序需要访问远程Oracle数据库,数据库版本是11g,请问可以不安装Oracle客户端访问数据库吗?百度了一下,有人说可以下载对应版本的Oracleinstantclient,然后把里面的DLL文件复制到执行文件目录下就可以了.但是我操作了一下,程序会报错:"Oracle.DataAccess.Client.OracleConnection"的类型初始值设定项引发异常请问具体应该怎么操作才可以在不安装Oracle客户端的情况下远程访问数据库?谢谢! 解决方案 解决方案二:1

DB2数据库与Oracle数据库之间远程复制

一.背景 DB2 联合数据库是分布式数据库管理的特殊形式.在联合数据库系统中,可以通过一个 SQL 命令来发出对多个数据源的命令请求.DB2 与非 DB2 数据库之间进行复制之前,首先需要保证非 DB2 数据源可以被 DB2 ESE Version 8 federated database访问.对于DB2 Replication Version 8 所需的联合数据库功能可以在现有发布的 DB2 ESE Version 8 和 DB2 Connect Enterprise Edition Vers

关于SQL Server 2005 的自动远程数据库备份

原文:(原创)关于SQL Server 2005 的自动远程数据库备份 由于项目需要,需要对目标服务器上的数据库每天进行备份并转移,查阅网上的一些帮助,结合自己的实际需要,写了这篇文章,希望对有同样需求的朋友有所帮助.目标服务器:192.168.1.197,备份服务器:192.168.0.194 1.在备份服务器上新建一个文件夹(我的是C:\DbBackupTest),首先要确定对备份服务器要有足够的权限(权限设置如下图所示),最好是"Administrators"组账户.其次 到备份

Oracle datapump expdp/impdp 导入导出数据库时hang住

   最近在导出schema级别的数据时被hang住,不得不停止当前的导出作业,如果你有类似的问题,请继续往下看.  1.问题描述    导出整个schema时数据库被hang住,如下所示    符号">"是由SecureCRT设定的每300秒发送一次    oracle@Dev-DB-04:~> expdp goex_admin/xxx directory=db_dump_dir dumpfile=gobo2.dmp logfile=gobo2.log schemas=g

关于c#中使用IP连接本地和远程数据库的问题!!!!!!

问题描述 C#中通过IP地址,数据库名,以及账号,密码连接本地和远程数据库.求基本代码!!!!!!!!先谢谢大家!!!!!!!! 解决方案 解决方案二:本文通过Web.config配置.调用方法等介绍了C#连接数据库的方法.VS2005连接ACCESS,SQLSERVER,ORACLE数据库测试通过.下面我们开始介绍c#连接数据库:首先我们新建立一个项目,填加一个类,专门用做数据库连接用.这里我们给这个类起名叫DataBase.cs,下面是这个类的内容.1.usingSystem;2.using

使用instantclient_11_2 和PL/SQL Developer工具包连接oracle 11g远程数据库(转)

1,先到Oracle网站下载Instant Client : http://www.oracle.com/technology/global/cn/software/tech/oci/instantclient/index.html 根据你的操作系统选择不同的Instant Client版本 下载回是一个压缩文件,解压之后的文件夹叫:D:/instantclient_11_2.放在你喜欢的目录即可.例如:D:/instantclient_11_2 2.在D:/instantclient_11_2