- 论坛徽章:
- 0
|
本帖最后由 linux_kaige 于 2013-07-22 18:46 编辑
要和数据库访问通信,必须要和服务建立连接,监听程序就是负责客户端与服务端建立连接的,基于服务端的程序,所以只需在服务端配置即可,netca。
listen.ora标注配置:- # listener.ora Network Configuration File: D:\oracle\product\10.1.0\db_1\network\admin\listener.ora
- # Generated by Oracle configuration tools.
- SID_LIST_LISTENER =
- (SID_LIST =
- (SID_DESC =
- (GLOBAL_DBANAME = cmb.global)
- (ORACLE_HOME = D:\oracle\product\10.1.0\db_1)
- (SID_NAME = sidcmb)
- )
- )
- LISTENER =
- (DESCRIPTION_LIST =
- (DESCRIPTION =
- (ADDRESS_LIST =
- (ADDRESS = (PROTOCOL = TCP)(HOST = PC2010091014afx)(PORT = 1521))
- )
- )
- )
复制代码 如果要从本地连接远程oracle,那么得在本地配置net服务名。
tnsname.ora配置如下:- # tnsnames.ora Network Configuration File: D:\oracle\product\10.1.0\db_1\network\admin\tnsnames.ora
- # Generated by Oracle configuration tools.
- YANGKAI =
- (DESCRIPTION =
- (ADDRESS = (PROTOCOL = TCP)(HOST = PC2010091014afx)(PORT = 1521))
- (CONNECT_DATA =
- (SERVER = DEDICATED)
- (SERVICE_NAME = yangkai)
- )
- )
- CMB =
- (DESCRIPTION =
- (ADDRESS = (PROTOCOL = TCP)(HOST = PC2010091014afx)(PORT = 1521))
- (CONNECT_DATA =
- (SERVER = DEDICATED)
- (SERVICE_NAME = cmb.global)
- )
- )
- CMBYK =
- (DESCRIPTION =
- (ADDRESS = (PROTOCOL = TCP)(HOST = PC2010091014afx)(PORT = 1521))
- (CONNECT_DATA =
- (SERVER = DEDICATED)
- (SERVICE_NAME = sidcmb)
- )
- )
- #上面的是创建第二个实例之后系统自动生成的,我也没配置netca。
- KAIGE_VM =
- (DESCRIPTION =
- (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.85.128)(PORT = 1521))
- (CONNECT_DATA =
- (SERVER = DEDICATED)
- (SERVICE_NAME = kaige)
- )
- )
复制代码 同一个oracle服务器上,上面是三个实例,YANGKAI,CMB,CMBYK,还有一个远程一个KAIGE_VM。连接的时候,是从本地配置文件tnsname.ora文件中读取的,通过YANGKAI,CMB,CMBYK,KAIGE_VM,解析到ip、port、service_name等信息,进行连接,使用pl/sql时,可以选择数据库名为YANGKAI,CMB,CMBYK,KAIGE_VM的进行连接。
其中CMB和CMBYK是连接的相同的实例,通过listen.ora的配置可以看出,因为global_name和sid_name是一一对应的,除了在集群的模式下(一对多),而且instance_name是不需要手工配置的,它和sid是相同的,而且必须相同。
其中tnsname.ora里面的service_name标准写法是global_name全局数据名,service_name偶尔也可以写sid_name,但是要根据服务器端listen.ora的配置,根据上面的配置,连接PC2010091014afx的时候,使用CMBYK、CMB都是可以的。
同一台oracle上有多个oracle时,在本机上conn /as sysdba登录是不验证用户名密码登录的,所以用户名、密码可以随便输,假设两个实例yk1,yk2,连接的时候可以
sqlplus /nolog;
conn a/b@yk1 as sysdba;
select instance_name from v$instance;
#查看实例名
conn a/b@yk2 as sysdba;
select instance_name from v$instance;
#查看实例名
exit; |
|