用户Scott可以在本地数据库上查询远程数据库的emp表,我们可以在我们的本地数据库上建立一个别名(Synonym) emp,然后我们就可以直接通过select from emp来查询远程数据库上的emp表,而无需通过select from emp@hqacmecom的方式来查询。
这个远程的数据库可以是任何Oracle支持的远程数据库:Oracle ,DB2, SQL Server, Taradata, MySQL…等等。 后面我还会介绍相关如何连接到非Oracle产品的数据库。
好了,知道了Database Link是什么,干什么用,Database Link的本质等,接下来我们介绍Database Link有哪几种连接方式的Link:
Link类型
说明
Connected user link
看这个类型的名称就可以判断出,用的是当前连接的用户的帐户及其密码来访问远程数据库的。所以这个类型就要求需要在远程数据库上有一个和本地帐户一样的username和password
Fixed user link
这个类型是说使用指定的帐户和密码来访问远程数据库。所以只需指定的帐户能够有权限访问远程数据库就可以。
Current user link
需要用户连接到本地数据库的时候是全局用户的身份连接的。这样这个全局用户就可以使用指定帐户的上下文,而无需存储密码信息到link中。
上面是用来告诉Database Link,我们用用什么身份连接。
Database Link有以下类型:
类型
说明
Private
来类型的Database Lin只能由这个Database Link的Owner才能使用它。
Public
在这个数据库里的所有用户均可使用该Database Link
Global
网络中的数据库中的用户均可使用该database link 因为当Oracle 使用目录服务器的时候,它会在该目录下的所有数据库里都创建这个 global database link,并且统一控制。因此所有在目录下的数据库里的用户均可使用。
好了,让我们看看应该如何创建一个Database Link:
语法:create [type] database link
语句
说明
访问方式类型
连接类型
Create database link dblinkName using ‘NSName’;
创建一个database link ,通过使用网络服务名称创建。其中Database Link的名称为dbLinkName 网络服务的名称为NSName
Connected user link
Private
Create public database link dblinkName connect to CURRENT_USER using ‘NSName’;
创建一个database link ,通过使用网络服务名称创建。其中Database Link的名称为dbLinkName 网络服务的名称为NSName
Current user link
public
Create database link dblinkName dblinkName connect to username identified by password using ‘NSName’;
创建一个database link ,通过使用网络服务名称创建。其中Database Link的名称为dbLinkName 网络服务的名称为NSName 通过用户帐户username及其密码password来访问远程数据库。
Fixed user link
private
上面的地NSName的创建方式是需要在Oracle_home/Network/admin/tnsnamesora里面配置。超出了本文的范围,我暂不做介绍。
如果不清楚如何配置NSName,那么我们可以按照以下方式写:
Create database link dblinkName dblinkName connect to username identified by password using ‘NSNName=
(
Address_List=
(
(Adress=(protocol=TCP)(host=RemoteServerName)(port=1521))
)
(Connect_Data=(services_Name))
)’
其中protocol 是使用得访问协议;RemoteServerName是远程数据库的服务器名称或者IP, port是远程服务器里Oracle监视的端口(可以使另一个Oracle 数据库或者 Oracle Gateway,关于Oracle Gateway会在后续讲解)。 Services_Name是远程服务器提供的服务名称。 例如:远程服务器RemoteA,安装了Oracle Database ,它的监听端口是1521, 并且数据库服务的名称是orcl 则以上的语句改写如下:
Create database link dblinkName dblinkName connect to username identified by password using ‘NSNName=
(
Address_List=
(
(Adress=(protocol=TCP)(host=RemoteA)(port=1521))
)
(Connect_Data=(orcl))
)’
好了,以上简单的介绍了如何Oracle Database Link的类型和访问方式类型,及如何创建database link
那么创建完,使用如下: (在访问权限满足的条件下)
Select from remoteTableName@dblinkName;
其中remoteTableName是要访问的远程数据库里的表的名称,dblinkName既是先前我们创建的数据库连接。 这样每次访问表,写起来都有点麻烦;而且对于普通用户,这样的接口可能我们并不提供,换句话说,我们可能只让用户知道这里有什么表或者视图就可以了。这个时候我们可以使用别名(synonym)来简化/隐藏接口,语法如下
CREATE [PUBLIC] synonym_name
FOR [schema]object_name[@database_link_name];
Synonym支持一下的对象:
•Tables
•Types
•Views
•Materialized views
•Sequences
•Procedures
•Functions
•Packages
这里不做过多的讲解,我们为先前我们创造的database link来创建一个synonym,代码如下:
Create public tableName for remoteTableName@dblinkName;
创建完成后,我们就可以这样访问远程数据库里的表:
Select from tableName;
上述语句等价于 Select from remoteTableName@dblinkName;
Eclipse到处jar包
第一:普通类导出jar包,我说的普通类就是指此类包含main方法,并且没有用到别的jar包。
1在eclipse中选择你要导出的类或者package,右击,选择Export子选项;
2在d出的对话框中,选择Java文件---选择JAR file,单击next;
3在JAR file后面的文本框中选择你要生成的jar包的位置以及名字,注意在Export generated class files and resources和Export Java source files and resources前面打上勾,单击next;
4单击两次next按钮,到达JAR Manifest Specification。注意在最底下的Main class后面的文本框中选择你的jar包的入口类。单击Finish,完成。
你可以在dos环境下,进入你的jar所在的目录,运行 java -jar 名字jar,检测运行是否正确。
运行cmd->进入jar目录->java–jar文件名jar
第二、你所要导出的类里边用到了别的jar包。比如说你写的类连接了数据库,用到数据库驱动包oracljar。
1先把你要导出的类按照上面的步骤导出形成jar包,比如叫testjar
2新建一个文件夹main,比如在D盘根目录下;
3把testjar和oracljar拷贝到main文件下,右击testjar,解压到当前文件夹。把META-INF\MANIFESTMF剪切到另外一个地方(比如是桌面!);
4右击oracljar,解压到当前文件夹。
5在dos环境下,进入到D盘的main文件夹下,执行 jar cvfm newjar meta-inf/manifestmf ,不要忘了最后面的点。
6用压缩工具打开你新生成的newjar,用你放在桌面的META-INF\MANIFESTMF覆盖newjar原有。
你可以在dos环境下,进入你的jar所在的目录,运行 java -jar 名字jar,检测运行是否正确。
以上就是关于如何创建database linkes全部的内容,包括:如何创建database linkes、如何把ES-analysis分词器打成jar包导入至Eclipse,小白初学,求大神给个详细打包过程!、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)