NLS_LANG SIMPLIFIED CHINESE_CHINA.ZHS16GBK
打开NETCA,配置两个监听器。
LISENTER,默认监听器,一路next,就配置完毕, 监听端口1521。
配置LISENTER2,注意监听端口改为1522,其它和LISENTER一致。
这个时候,LISENTER已经可以使用了。
但是LISENTER2还是不行,因为Oracle只会为第一个默认的监听注册服务。
在$ORACLE_HOME/NETWORK/ADMIN,编辑lisenter.ora文件,如下:
红色字体为需要增加的内容
SID_LIST_LISTENER2 =
(SID_LIST =
(SID_DESC =
(SID_NAME = WWJ)
(ORACLE_HOME = d:\oracle\product\10.2.0\db_1)
(GLOBAL_DBNAME = WWJ)
)
)
LISTENER2 =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = valen)(PORT = 1522))
)
)
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = d:\oracle\product\10.2.0\db_1)
(PROGRAM = extproc)
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = valen)(PORT = 1521))
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
)
)
需要解释的是,SID_LIST_<lisenter name> 这里的<lisenter name>要和LISTENER名称一致。
SID_DESC则注册要提供服务的数据库实例名。这样LISTENER2 才能够提供服务。
否则会报TNS-错误。
测试过程,配置local tns name如下:
1522 =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1522))
)
(CONNECT_DATA =
(SERVICE_NAME = wwj)
)
)
1521 =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = wwj)
)
)
local =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1522))
)
(CONNECT_DATA =
(SERVICE_NAME = wwj)
)
)
1522和1521分别对应两个监听器,local稍后再解释:
测试:
SQL> conn@1521
已连接。
SQL> conn@1522
已连接。
OK,再看local,
(ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1522))
这里的意思是,该命名对应了两个监听端口,如果一个Crash,会立刻切换到另外一个。
并且如果多个连接,会随机的分配监听。
测试
SQL> conn @local
已连接。
STOP LISENTER,再次连接,这个时候,连接比第一次慢了1秒钟左右
SQL> conn @local
已连接。
成功,这时连接上了LISTENER2
关于Oracle网络服务的资料,在OCP教材的第四章Oracle Net Services有很清晰的说明。
Oracle 版本:11g
运行环境: window XP
远程连接 需要两台电脑,一个是远程服务器端 ;一个是本机客户端。并且要保证在两台电脑上同时安装了Oracle 11g
先假设,你的电脑作为本机客户端,你同事的电脑作为远程服务器端。
具体配置如下:
1 设置远程服务器端的Oracle,即你同事电脑上的Oracle,需要设置 2 个地方:
(1)设置"Database Configuration Assistant",在进行第6步:连接模式 时选择:“共享服务器模式” 。
并且下面的 “共享服务器” 选择 3 以上。然后点击“确定”或“是” 。
(2)服务器端还要设置 net manager:监听程序 | LISTENER | 添加地址,主机填 客户端 电脑的ip,端口是:1521;
(3)设置完成之后,停止服务,然后启动服务。
2 设置本机客户端,即你电脑上的Oracle
(1)设置 "Net Configuration Assistant"
"Net Configuration Assistant" 工具 -> "本地NET服务名配置" -> "添加" -> 选择ORACLE数据库或服务-> 输入服务名(远程服务器端的Oracle的全局数据库名) -> TCP -> 主机名中输入服务端IP地址,端口输入服务端监听程序所监听的端口 -> 是,进行测试 -> 首次测试可能会失败,因为默认的用户名口令不一定和服务端的匹配,点击 更改登录 输入服务端的用户名和口令,确定后如出现"测试成功",说明连接成功
(2)设置完成之后,停止服务,然后启动服务。
(3)按 winkey + R ,弹出“运行”对话框 , 运行cmd ,进入dos界面,输入 sqlplus /nolog 回车。
(4)输入 conn scott/234@//192.168.1.106:1521/orcdb
或者: conn scott/234@192.168.1.106:1521/orcdb
就可以连接到服务器端的Oracle了。
( 注: scott/234 是服务器端的Oracle的用户 ,192.168.1.106 是服务器端的ip ,orcdb 是服务器端的Oracle的全局数据库名 )。
-------------- 至此配置完成! -------------
1、增加一个listener:终端运行: $ORACLE_HOME/bin/netca (必须在图形界面环境下),按照提示增加一个listener。
2、增加listener支持的服务:终端运行: $ORACLE_HOME/bin/netmgr (图形界面下),在: Oracle Net Configuration -> Local -> Listeners -> xxxx (你刚才增加的那个listener),从中选择“Database services”,增加你要服务的database。其中, 注意Global Database Name就是你的对外的服务名字。 然后保存并退出。
3、重启你的listener:终端运行:
$ORACLE_HOME/bin/lsnrctl stop
$ORACLE_HOME/bin/lsnrctl start
最后提示:
Service "XXXX" has 1 instance(s).
The command completed successfully.
好了,到现在服务端的listener配置按成了。
客户端:
1、配置一个“Local Service Name Configuration”:终端运行: $ORACLE_HOME/bin/netca ,选择: Local Service Name Configuration ,按照提示操作。其中, Service Name写和服务器端配置的时候添的那个“Global Database Name”; Host name写服务器IP (如果是在局域网内,也可些服务器名字);最后给这个本地服务起一个名字(例如叫:LSN)。然后保存并退出。
2、通过sqlplus连接到服务器上的数据库:
格式: sqlplus 用户名/密码@本地服务的名字
例子: sqlplus user/password@LSN
到oracle官方下载:
http://www.oracle.com/technology/global/cn/software/tech/oci/instantclient/htdocs/winsoft.html (中文)
http://www.oracle.com/technology/software/tech/oci/instantclient/htdocs/winsoft.html下载下列几个压宿文件
http://www.oracle.com/technetwork/cn/topics/winsoft-095945-zhs.html
oracleDBinstantclient-basic-win32-11.1.0.7.0.zip 这是最核心的包
instantclient-jdbc-win32-11.1.0.7.0.zip 包含JDBC Driver的包
instantclient-sqlplus-win32-11.1.0.7.0.zip 最简单的SQLPLUS包
我把文件解压到了d盘,d:\oracleclient11g下面
最后的文件结构应该如下:
2,配置tnsnames.ora,如果本机上没有安装oracle,可以从安装了oracle的机上拷贝一个(tnsnames.ora文件在% ORACLE_HOME%\network\admin下)放在上面的目录d:\oracleclient11g下。
oracledata =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.112)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = orcl)
)
)
3,添加一个环境变量,名为TNS_ADMIN,值为tnsnames.ora文件所在路径(如:d:\oracleclient11g),这是为了能够 找到上面说的tnsnames.ora。如果本机上安装了ORACLE,并且设置了ORACLE_HOME环境变量,那么会自动 在%ORACLE_HOME%/network/admin/位置查找tnsnames.ora文件。
4,设置ORACLE的语言,添加注册表项:“NLS_LANG=SIMPLIFIED CHINESE_CHINA.ZHS16GBK”,位于 HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE。如果本机没有安装ORACLE,在H_L_M\SOFTWARE\下是没 有"ORACLE"这一项的,需要手动创建,然后再在ORACLE项下创建键NLS_LANG,键值为:SIMPLIFIED CHINESE_CHINA.ZHS16GBK
5,下载并安装PL.SQL.Developer配置应用
配置tools->preferences->connection
找到等号左侧参数填写等号右侧对应的内容
Oracle Home=D:\oracleclient11g
OCI library=D:\oracleclient11g\oci.dll
6,再次打开plsql则会在database中有oracledata 选项输入用户名密码就可以登陆。