由于把oracle 11g全部装在机器上,导致机器太卡,于是卸载oracle装上客户端,果然效果明显。
首先要去官网上下载oracle 11客户端,(我用的是64位系统)地址:
http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html
下载:instantclient-basic-win-x86-64-***;核心包
instantclient-sqlplus-windows.x64- **;sqlplus包
instantclient-jdbc-win32-11.1.0.7.0.zip 包含JDBC Driver的包
将其全部解压到 D:\Program Files\instantclient_11_2目录下。
在D:\Program Files\instantclient_11_2中新建 NETWORK\ADMIN\文件夹。
在ADMIN下面建 tnsnames.ora文件。
自定义DatabaseName=
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 服务器IP地址)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = 服务器SID)
)
)
打开pl /SQL-->Toos-->Preferences-->Oracle-->Connection中有ORACLE_HOME和OCI两个选项框,如下:
在ORACLE_HOME中写入连接驱动;
OCI中写入oci.dll文件。
这一步我做了下尝试,好像不配也是没有问题的。关键是环境变量的配置,
属性值一定要对,千万不要用分号结尾。
添加环境变量:
TNS_ADMIN: D:\ProgramFiles\instantclient_11_2\NETWORK\ADMIN;(nsnames.ora文件所在位置)
NLS_LANG : SIMPLIFIEDCHINESE_CHINA.ZHS16GBK;
LANG : zh_CN.GBK (解决中文乱码)
ORACLE_HOME : D:\ProgramFiles\instantclient_11_2;(户端文件夹所有位置)
在环境变量PATH中加入 D:\ProgramFiles\instantclient_11_2; (sqlplus所在位置)
测试:开始+R-->cmd-->sqlplus "user/passwd@TNS_NAME"
OK!!
PS:如果出现ORA-12705:无法访问NLS数据文件,或者指定的环境无效错误,把环境变量中NLS_LANG的变量删除掉!
如果直接去掉很可能会导致中文乱码的问题。
TNS_NAME是在tnsnames.ora文件配置的TNS名称,如ORCL_188。而不是数据库的实例名称或监听名称。
注意:这里sqlplus后面的信息一定要用双引号包起来,不然会出现如下异常:
安装过程中问题汇总:
一、出现ORA-12705:无法访问NLS数据文件,或者指定的环境无效错误
产生原因:
1.可能是由于以前安装过Oracle,没有卸载完全,注册表中还有残留文件。
Windows平台下,一般的输入cmd运行regedit进入注册表,进入HKEY_LOCAL_MACHINE --> SOFTWARE --> Wow6432Node --> Oracle --> HEY_DevSuiteHome1,在右边列表中找到NLS_LANG,如果要设置为英文语言,即设置为:AMERICAN_AMERICA.ZHS16GBK ,也可以设置成中文字符集:SIMPLIFIED CHINESE_CHINA.ZHS16GBK。
如果没有安装其他Oracle程序,可以直接将整个Oracle注册表文件删除。
2.在环境变量中设置NLS_LANG出错。由于这里的NLS_LANG的值是一个单一属性值,而不是多个路径,
所以一定 不能再末尾加上分号,不然会一直报错。
二、在PL/SQL developer的登录界面上配置的TNS一直不能显示出来
1.首先检查在环境变量中是否配置了TNS_ADMIN。在对应路径下是否正确创建了tnsnames.ora文件。
实例:
ORCL_188=(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = ip地址)(PORT = 1521)))(CONNECT_DATA = (SID = orcl)))
ORCL_100=(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = ip地址)(PORT = 1521)))(CONNECT_DATA = (SERVICE_NAME = orcl)))
这里的CONNECT_DATA中配置SID 和SERVICE_NAME 都可以。
2.检查是否在环境变量的Path中指定了sqlplus的路径
在环境变量PATH中加入 D:\Program Files\instantclient_11_2 (sqlplus所在位置)
注意:环境变量中,配置在最后的属性值不要在属性值最后加“;”分号结尾。
如:
TNS_ADMIN的属性值末尾以分号结尾,打开PL/SQL发现,读取不到对应的TNS配置文件信息。
三、登录的时候一直出现TNS:无监听程序。
1.检查TNS配置的端口是否正确。
我出错的原因就是端口的末位数错了。
四、监听程序无法识别对应的请求服务
这个就提示的比较明显了,TNS中配置的服务实例SERVICE_NAME不存在。
一般对应的是数据库的实例名称,如:orcl
打开pl/sql developer出现NLS_LANG和字符集(Character set)问题
公司最近培训pl/sql,我安装完毕后打开,遇到如图问题。
PS:我的操作系统是英文的。
这是因为系统没有设置NLS_LANG系统变量。有两种方式查看。
1. 查看电脑属性。
2. 命令行查看。
PS:这里我已经设置过了,所以仅仅是作个示意。
如果遇到如下图中的问题,说明客户端字符集与Oracle数据库的字符集不同。
查看数据库的字符集的方法:
对方的pl/sql语句是:
-
Select * from V$NLS_PARAMETERS where PARAMETER='NLS_CHARACTERSET';
-
Select USERENV('LANGUAGE') from DUAL;
将NLS_LANG的值改为所查到的SIMPLIFIED CHINESE_CHINA.UTF8即可。
PS:我们简介一下字符集的含义。以SIMPLIFIED CHINESE_CHINA.UTF8为例。
- SIMPLIFIED CHINESE为语言(简体中文);
- CHINA为国家(中国);
- UTF8为字符编码;