SQLDeveloper-在没有创建数据库链接权限的数据库之间连接

SQLDeveloper-在没有创建数据库链接权限的数据库之间连接,sql,database,oracle,join,hyperlink,Sql,Database,Oracle,Join,Hyperlink,我正试图弄清楚如何在SQLDeveloper中连接来自两个不同oracle数据库的表,目前我只能单独访问它们。 问题是:我们公司限制了创建数据库链接的权限,因此没有机会通过这种方式实现。(数据库是只读数据库)。 还有其他方法加入数据库吗?它仅用于诊断和数据流观察 任何帮助或提示,不胜感激 亲切问候。据我所知,您确实需要一个数据库链接才能完成您的请求。如果您不能创建它,恐怕您不能这样做,因为数据库之间没有其他方式可以相互查看 如果这是同一数据库中的两个不同用户(模式),您只需授予SELECT和pr

我正试图弄清楚如何在SQLDeveloper中连接来自两个不同oracle数据库的表,目前我只能单独访问它们。 问题是:我们公司限制了创建数据库链接的权限,因此没有机会通过这种方式实现。(数据库是只读数据库)。 还有其他方法加入数据库吗?它仅用于诊断和数据流观察

任何帮助或提示,不胜感激


亲切问候。

据我所知,您确实需要一个数据库链接才能完成您的请求。如果您不能创建它,恐怕您不能这样做,因为数据库之间没有其他方式可以相互查看

如果这是同一数据库中的两个不同用户(模式),您只需授予SELECT和previous


也许您的公司将不得不重新考虑允许您使用数据库链接。或者,至少允许它一次,这样您(或DBA)就可以创建一个链接,然后撤销创建数据库链接(但它将存在,并且您可以使用它)。

据我所知,您确实需要一个数据库链接来执行您的请求。如果您不能创建它,恐怕您不能这样做,因为数据库之间没有其他方式可以相互查看

如果这是同一数据库中的两个不同用户(模式),您只需授予SELECT和previous


也许您的公司将不得不重新考虑允许您使用数据库链接。或者,至少允许它一次,以便您(或DBA)可以创建一个链接,然后撤销创建数据库链接(但它将存在,并且您可以使用它)。

以下是sqldev/sqlcl中的
BRIDGE
命令,这可能会有所帮助。此命令接受3个参数

  • 要创建的新本地表的名称
  • 远程数据库的完整连接详细信息
  • 要在远程端发出的sql
执行时,该工具将通过jdbc连接到远程数据库。发出sql。检索查询的结构以获取元数据以创建指定的本地新表。然后,在本地表迭代远程查询的结果集时,将其批插入本地表

小心!此命令仅创建表。任何索引都需要手动添加

下面是一个完整的示例:

sql jeff/jeff    
SQLcl: Release 18.1 Production on Thu Feb 08 10:40:46 2018

JEFF@xe>tables
**TABLES**   
DEPT     


JEFF@xe>BRIDGE emp as "jdbc:oracle:thin:klrice/klrice@localhost:1521:xe"(select * from emp);

Created table emp and inserted 14 rows

JEFF@xe>tables
**TABLES**   
DEPT     
EMP      


JEFF@xe>select ename,dname
  2  from emp,dept
  3  where emp.deptno = dept.deptno;
ENAME    DNAME        
KING     ACCOUNTING   
BLAKE    SALES        
CLARK    ACCOUNTING   
JONES    RESEARCH     
SCOTT    RESEARCH     
FORD     RESEARCH     
SMITH    RESEARCH     
ALLEN    SALES        
WARD     SALES        
MARTIN   SALES        
TURNER   SALES        
ADAMS    RESEARCH     
JAMES    SALES        
MILLER   ACCOUNTING   


14 rows selected. 

下面是sqldev/sqlcl中的
BRIDGE
命令,它可能会有所帮助。此命令接受3个参数

  • 要创建的新本地表的名称
  • 远程数据库的完整连接详细信息
  • 要在远程端发出的sql
执行时,该工具将通过jdbc连接到远程数据库。发出sql。检索查询的结构以获取元数据以创建指定的本地新表。然后,在本地表迭代远程查询的结果集时,将其批插入本地表

小心!此命令仅创建表。任何索引都需要手动添加

下面是一个完整的示例:

sql jeff/jeff    
SQLcl: Release 18.1 Production on Thu Feb 08 10:40:46 2018

JEFF@xe>tables
**TABLES**   
DEPT     


JEFF@xe>BRIDGE emp as "jdbc:oracle:thin:klrice/klrice@localhost:1521:xe"(select * from emp);

Created table emp and inserted 14 rows

JEFF@xe>tables
**TABLES**   
DEPT     
EMP      


JEFF@xe>select ename,dname
  2  from emp,dept
  3  where emp.deptno = dept.deptno;
ENAME    DNAME        
KING     ACCOUNTING   
BLAKE    SALES        
CLARK    ACCOUNTING   
JONES    RESEARCH     
SCOTT    RESEARCH     
FORD     RESEARCH     
SMITH    RESEARCH     
ALLEN    SALES        
WARD     SALES        
MARTIN   SALES        
TURNER   SALES        
ADAMS    RESEARCH     
JAMES    SALES        
MILLER   ACCOUNTING   


14 rows selected. 

您可以使用ColdFusion和查询查询。我可以推荐我的一个答案:不完全是db链接,但sqldev/sqlcl中的BRIDGE命令可以到达远程db并从远程创建本地表。我可以给你们举个例子,如果这听起来可行的话。@KrisRice当然可以,谢谢!举个例子会很有帮助!另一种方法是创建本地数据库并从那里链接数据库,但桥接方法听起来也很有希望;-)您可以使用ColdFusion和查询查询。我可以推荐我的一个答案:不完全是db链接,但sqldev/sqlcl中的BRIDGE命令可以到达远程db并从远程创建本地表。我可以给你们举个例子,如果这听起来可行的话。@KrisRice当然可以,谢谢!举个例子会很有帮助!另一种方法是创建本地数据库并从那里链接数据库,但桥接方法听起来也很有希望;-)谢谢你的回答!但还有一个小问题:当我创建并托管一个新的本地oracle数据库并建立一个从那里到远程数据库的数据库链接时,这能起作用吗?还是两端都需要数据库链接权限才能起作用?@Robama,是的,建立一个本地数据库(可以是XE),并从那里定义两个到目标数据库的数据库链接。您将使用与SQL Developer中相同的凭据。然后,您可以通过DB-link连接来自这两个源的表(假设它们不太大,无法传输到客户端);这会起作用,但想想安全性。如果公司不允许DB链接,那可能是有原因的。我不想因为你找到了解决办法而被解雇。谢谢你的回答@Littlefoot:我们使用完全封闭的测试环境,从其生产系统中克隆数据库,只填充虚拟数据条目。管理是可以的,只是因为我们做了基于end2end的测试,我们可能不会改变数据库结构本身。但任何形式的只读访问都可以。干杯。谢谢你的回答!但还有一个小问题:当我创建并托管一个新的本地oracle数据库并建立一个从那里到远程数据库的数据库链接时,这能起作用吗?还是两端都需要数据库链接权限才能起作用?@Robama,是的,建立一个本地数据库(可以是XE),并从那里定义两个到目标数据库的数据库链接。您将使用与SQL Developer中相同的凭据。然后,您可以通过DB-link连接来自这两个源的表(假设它们不太大,无法传输到客户端);这会起作用,但想想安全性。如果公司不允许DB链接,那可能是有原因的。我不想因为你找到了解决办法而被解雇。谢谢你的回答@Littlefoot:我们使用完全封闭的测试环境,从pr中克隆db