现在的位置: 首页 > 综合 > 正文

pl/sql developer 连接远程oracle

2012年07月04日 ⁄ 综合 ⁄ 共 3768字 ⁄ 字号 评论关闭

本机已安装过客户端的情况

找到%oracle_home%\network\admin\tnsnames.ora(D:\oracle\product\10.2.0\db_2\network\ADMIN)文件,在文件里添加:

201_orcl =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 172.168.8.201)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = cnaps2)
    )
  )

注意:service_name的值

在pl/sql的database里选择201_orcl,然后输入用户名和密码就好了

=====================================================================

oracle不用安装客户端也可以用plsql远程连接


          每次问人家,plsql 可不可以直接远程连接服务器,他们都说要安装客户端,记得以前用过个什么sql deveplore 什么的工具,不用安装客户端的,而且是绿色软件来的,我就想,一定就办法,不用这么麻烦安装客户端的。上网找了找,下面把我的实践详细过程记录下来,希望对大家有帮助,有什么不对的,请大家多多评论,指出来。
           首先,在安装ORACLE服务器的机器上搜索下列文件,
oci.dll
ocijdbc10.dll
ociw32.dll
orannzsbb10.dll
oraocci10.dll
oraociei10.dll   (可能服务器没有,如果没有则pl sql 随便用户名密码可以登陆)
sqlnet.ora
tnsnames.ora
classes12.jar
ojdbc14.jar
放到一个文件夹,如 oraclient
          2、配置tnsnames.ora,如果本机上没有安装oracle,可以从安装了oracle的机上拷贝一个(tnsnames.ora文件在%ORACLE_HOME%\network\admin下)放在上面的目录D:\oraclient下。
oracledata =
(DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.58)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = oracledata)
    )
)

3、添加一个环境变量,名为TNS_ADMIN,值为tnsnames.ora文件所在路径(如:D:\oraclient,特别是重装后或其它操作,忘了TNS_ADMIN变量,plsql登陆就会报无法解析指定的连接标识符),这是为了能够找到上面说的tnsnames.ora。如果本机上安装了ORACLE,并且设置了ORACLE_HOME环境变量,那么会自动在%ORACLE_HOME%/network/admin/位置查找tnsnames.ora文件。

4、设置ORACLE的语言,添加环境变量:
“NLS_LANG = SIMPLIFIED CHINESE_CHINA.ZHS16GBK”,(AMERICAN_AMERICA.US7ASCII 是ASCII编码类型,其它类型可自己到服务器看一下或网上查找一下)
(本步骤暂时要做对,如果编码不对,会产生乱码)

5、下载并安装PL.SQL.Developer配置应用
配置tools->preferences->connection
Oracle Home=D:\oracleclient
OCI library=D:\oracleclient\oci.dll

6、再次打开plsql则会在database中有oracledata 选项输入用户名密码就可以登陆。

===========================================

tnsname.ora中service_name和sid的含义与区别



SID 大该相当与sql server的 instance name. 区别在于sql server 下一个instance 可以有多个database, Oracle 下一个instance对应一个database. (在Oracle RAC下几个instance 可以对应一个database.)


service_names = db_name . db_domain

==================

一个数据库有许多初始化参数,db_name和db_domain其中两个参数。两个连在一起是“一个”完整的数据库服务名。

==================

“一个SID对应一个数据库”是对的,“service_name对应的是整个oracle,包括所有的SID”不是这样的。service_name指的是你数据库对外提供服务的名字,不包括SID。

==================================

SID是操作系统标识!

在分布式数据库系统里,全局数据库名是db_name.domain_name;如果是单数据库我们常常就是只有db_name,也就是和SID相同了。

===================================

先假定你的SID为orcl,全局数据库名为orcl.zhxuef.oracle.com,主机名为zhxf


假如你在服务器端连接SQL时候,你使用服务名为:orcl;

假如你在数据库客服端连接SQL时候,你使用服务名为:orcl_zhxf。

如果不这样,可能你连不上SQL,如SQL * Plus.


可以试一试,你会知道有点区别。


不就是说一个service_name包括几个SID吗?对于这句话,我认为问得有点偏颇,服务名是数据库用来连接使用得标识,而SID是数据库得操作系统标识,不是同一道得和尚。服务名是用于客服连接到例程时候可以使用得一个或多个服务名称。


service_name=Db_name. Db_domain这是默认值,如我上面说,在单一数据库很可能你看到得是SID=db-name=例程名=service_name,因而很容易让你混淆。

====================================

SID 就是Oracle 实例的标识,不同的SID 对应不同的内存缓冲(SGA)和不同的后台进程。


service_name 在有数据库域名时,为全局数据库名

在没有数据库域名时,为数据库名


易混淆术语介绍: 

Db_name:对一个数据库(Oracle database)的唯一标识,该数据库为第一章讲到的Oracle database。这种表示对于单个数据库是足够的,但是随着由多个数据库构成的分布式数据库的普及,这种命令数据库的方法给数据库的管理造成一定的负担,因为各个数据库的名字可能一样,造成管理上的混乱。为了解决这种情况,引入了Db_domain参数,这样在数据库的标识是由Db_name和Db_domain两个参数共同决定的,避免了因为数据库重名而造成管理上的混乱。这类似于互连网上的机器名的管理。我们将Db_name和Db_domain两个参数用’.’连接起来,表示一个数据库,并将该数据库的名称称为Global_name,即它扩展了Db_name。Db_name参数只能由字母、数字、’_’、’#’、’$’组成,而且最多8个字符。 

  

Db_domain:定义一个数据库所在的域,该域的命名同互联网的’域’没有任何关系,只是数据库管理员为了更好的管理分布式数据库而根据实际情况决定的。当然为了管理方便,可以将其等于互联网的域。 

  

Global_name:对一个数据库(Oracle database)的唯一标识,oracle建议用此种方法命令数据库。该值是在创建数据库是决定的,缺省值为Db_name. Db_domain。在以后对参数文件中Db_name与Db_domain参数的任何修改不影响Global_name的值,如果要修改Global_name,只能用ALTER DATABASE RENAME GLOBAL_NAME TO <db_name.db_domain>命令进行修改,然后修改相应参数。 

  

Service_name:该参数是oracle8i新引进的。在8i以前,我们用SID来表示标识数据库的一个实例,但是在Oracle的并行环境中,一个数据库对应多个实例,这样就需要多个网络服务名,设置繁琐。为了方便并行环境中的设置,引进了Service_name参数,该参数对应一个数据库,而不是一个实例,而且该参数有许多其它的好处。该参数的缺省值为Db_name. Db_domain,即等于Global_name。一个数据库可以对应多个Service_name,以便实现更灵活的配置。该参数与SID没有直接关系,即不必Service
name 必须与SID一样。 

  

Net service name:网络服务名,又可以称为数据库别名(database alias)。是客户端程序访问数据库时所需要,屏蔽了客户端如何连接到服务器端的细节,实现了数据库的位置透明的特性。

抱歉!评论已关闭.