oracle使用小记:dblink、网闸及未设置密码

来源:互联网 发布:测井曲线解释软件 编辑:程序博客网 时间:2024/05/16 05:24

一、dblink
在本地数据库中连接远程数据库,可以在本地数据库建立一个DbLink,然后凭此来对远程数据库进行访问。

1、建立一个dblink

--建立一个名为“dblink1”的dblinkCREATE PUBLIC database link dblink1CONNECT TO user IDENTIFIED BY passwordUSING '(DESCRIPTION =    (ADDRESS_LIST =        (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.213)(PORT = 1521))    )    (CONNECT_DATA =        (SERVICE_NAME = pdb1)    ))'; 

通常创建这种数据库连接应该加上public选项,方便本地数据库中,不同用户一起使用。

2、访问远程数据库

select * from table1@dblink1;--注意dblink放在@后面

二、网闸
客户部署了一个网闸,将内网和外网(互联网)隔开。由于我们有个程序要访问互联网上资料,所以部署在外网的一台机器上,他们称为前置机。前置机本身有个数据库,内网访问该数据库,就是通过上面说的,在内网数据库上建立一个DbLink指向外网数据库。好处是对原来部署好的程序而言,并没有感觉多了一个数据库,还是继续访问一个数据库。

不过我有个疑问,为何通过网闸,还能进行数据库层面的访问?我昨天读到的资料,网闸实际上为物理隔离,同一时刻只有对内网和外网其中一方进行连接,并没有同时连接两方的。网闸两边,只能通过“摆渡”的形式,来进行数据交换,也就是只能进行文件级别的访问,为何数据库还可以?要么是降低了安全标准,网闸支持协议级别的互连,已经沦为防火墙一般;要么是我读到的资料是老旧的,现在的网闸已经改进了工作方式,支持数据库的连接了。(大概是用到了映射?)

不过,通过网闸方式,LOB等字段并不支持。我想到的解决方案是:
在前置机数据库,新建一个表空间,并建立一个与含有LOB字段的表同名的视图,将LOB字段处理后映射为VARCHAR类型,在网闸另一侧的内网,改为访问这个视图。这样,对于使用ORM的的程序来说,并不需要怎么改,只需在表名前加个表空间名字即可。

三、sys默认密码
上面说的前置机数据库,由同事部署,他安装过程中,并未设置sys\system的密码。那么,sys和system的密码就是它们自己本身,即分别为sys和system。

我们用的数据库为oracle 12c。

原创粉丝点击