安装和配置
安装
plsql的安装比较简单,根据系统,安装64位或32位的plsql,一路next即可。
配置(Instant client)
0、安装前注意。
instant client和plsql的版本要对应,64位plsql对应64位的instant client。
否则,报错Initialization error 不能初始化 oci.dl。
1.下载,解压Instant Client压缩包,找到配置文件。
2.在trsnames.ora文件中添加如下代码:
SERVICE_NAME =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.131)(PORT = 1521))
)
(CONNECT_DATA =
(SID = orcl)
(SERVER = DEDICATED)
)
)
注意填写自己的服务名称、地址和端口号。
3.打开plsql,取消登录,选择:“Tools”--“Preferences”-- “Connection”中的Oracle Home处填写oci.dll文件夹的地址,在OCI library中填写oci.dll文件的地址,然后“Apply”--“OK”,重启plsql即可。
这里第一个填的是oci.dll所在文件夹,第二个填的是oci.dll的位置。根据instant client的解压情况,可能不一样,根据情况填写即可。也有目录如下
4.配置环境变量TNS_ADMIN
如果不配置,在plsql中登录会出现如下错误:
5.配置环境变量NLS_LANG
变量名:NLS_LANG
变量值:AMERICAN_AMERICA.AL32UTF8
如果不配置会出现以下问题:
1.部分查询语句查不到数据
2.进入plsql之后会提示字符不一致。
plsql连接数据库的3种方式
本地pc机上的plsql连接本地Oracle库和其他远程环境的Oracle database库,都必须通过本地pc机上的client配置连接,client连接有三种配置方式:
方式一:只需要在本地安装oracle client的tnsnames.ora文件中,添加TNS(连接串)即可;
tnsnames.ora文件所在的目录,这个要看自己的Oracle安装目录,每个人的安装目录可能不一样,本人的安装目录在F盘,所以在下列目录下:
F:\Oracle\product\11.2.0\dbhome_1\NETWORK\ADMIN
在这个文件中,添加TNS信息之后,点击保存即可;
TEST=
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))
(CONNECT_DATA =
(SERVICE_NAME = testlg)
(SERVER = DEDICTED)
)
)
然后打开plsql登录界面,数据库下拉选中,可以找到刚配置的TNS服务名称,对应关系如下图:
方式二:通过oracle client图形界面来配置数据库连接(推荐):
Net Manager图形配置工具对Oracle客户端进行配置,该配置工具实际上是修改Oracle client的tnsnames.ora文件,推荐使用这种图形界面方式。
选择服务名称,点击新增:
这个网络服务名是自己给数据库连接起的一个名字,就是plsql下拉选中显示的名称,可以自己定义;
一般连接的协议都是tcp,如果没有特殊情况,都选择这个协议:
这个主机名一般都是主机ip,如果是本地库,就写本地ip,如果是远程库,就写远程ip:
服务名是远程数据库名称,当然,这个也可以配置本地数据:
最后关闭时,会提示是否保存,一定要保持之后,才能写入到tnsnames.ora文件中生效:
查看tnsnames.ora文件如下,然后打开plsql登录,下拉可以看到对应的名称,和直接修改tnsnames.ora是一样的效果:
方式三:通过instant client来配置数据库连接:
Instantclient是oracle连接的一个客户端之一,通常只是登录使用,功能比较简单,相比oracle client而言,功能要简单的多,体积小,轻量级;
具体使用如下:
1.下载对应版本的Instantclient(注意32位和64位),有免安装版的,网上都很多教程;
2.然后打开plsql不登录,打开界面,然后配置Instantclient客户端路径:
配置连接,将instantclient配置进去,例如我的instantclient的位置如下:
Oracle主目录名:F:\Oracle\instantclientx32\instantclient_12_2
OCI库:F:\Oracle\instantclientx32\instantclient_12_2\oci.dll
此处配置好之后,提示下次登录生效,然后关闭plsql;
3.配置TNS连接:
找到instantclient客户端的TNS配置文件,然后将数据库的TNS连接串配置进去:
例如我的TNS配置文件位置:
然后将TNS配置到这个文件中:
配置好之后,保存就可以了;
4.打开plsql登录:
plsql登录界面登录:
这里要注意的是,这个数据库指的是刚配置中的自定义连接名,而且要手动输入,下拉选中没有配置的选项,但是不影响连接;(oracle client客户端可以看到配置的选项;)
5.此外,也可以直接在数据库行输入IP地址,端口号,数据库名。用户名、密码进行登录.
上述的三种方式配置实际上是两种,前两种是oracle client的不同配置方式,第三种是instant client的配置,这三种配置可以是本地库,也可以是远程库,配置好之后,在plsql登录的时候可以根据需要来选择;
问题及报错
解决plsql中文乱码问题(查询显示问号???)
问题描述:
1、打开 plsql,执行 sql 语句,中文显示乱码:
---查询表中记录
select * from person;
解决办法:
1)查看服务器端编码
输入 sql 语句:
select userenv('language') from dual -- 查看数据库字符集
我实际查到的结果为:AMERICAN_AMERICA.ZHS16GBK
2)执行 sql 语句 :
select * from V$NLS_PARAMETERS -- 查看本地字符集
查看第一行中PARAMETER项中为NLS_LANGUAGE 对应的VALUE项中是否和第一步得到的值一样。如果不是,需要设置环境变量,否则PLSQL客户端使用的编码和服务器端编码不一致,插入中文时就会出现乱码.
我实际查到的为AMERICAN
3)设置环境变量
计算机->属性->高级系统设置->环境变量->新建
设置变量名:NLS_LANG,变量值:第1步查到的值,(这里的变量值需要与数据库服务器相同)
我的是 AMERICAN_AMERICA.ZHS16GBK
4)重新打开 plsql,执行 sql 语句,问题解决
过程中遇到的问题:
注:当完成以上4个步骤时,查询原来的记录还是问号????,只有新插入的记录才会正常显示。不知道这个怎么解决?
PL/SQL报错:A query with LOB's requires OCI8 mode, but OCI7 mode is used
在用pl/sql对客户的数据进行查询时,pl/sql给我报了如下的错误 :
我使用的pl/sql的版本号为:9.0.0.1601.
解决办法:
1.换个更高版本的pl/sql
2.更改pl/sql的配置
a) tools --> Preferences
b) 将 Oracle --> Connection 里面的 Force OCI7 mode on OCI8 不要勾选
c) 保存后重启pl/sql。
注:什么叫做OCI?
ORACLE调用接口(Oracle Call Interface简称OCI)提供了一组可对ORACLE数据库进行存取的接口子例程(函数),通过在第三代程序设计语言(如C语言)中进行调用可达到存取ORACLE数据库的目的。
连接oracle报错,TNS :could not resolve the connect identifier specified
今天老师给了一个数据库,我想先看看,然后又不想破坏我现在的数据库数据(因为表名相同)所以就再新建了一个数据库,本来想着很简单就可以解决了,没想到用plsql连接时报了could not resolve the connect identifier specified的错误
解决
1先检查Oracle服务有没有开启
2检查%ORACLE_HOME%\product\10.2.0\db_1\NETWORK\ADMIN里的tnsnames.ora文件是否包含了你的数据库,注意这里需要检查你的新建数据库写法是否正确。
3用sqlplus连一下,如果可以连上,那么就很有可能是你的plsql的tnsnames.ora文件错误啦,找到你的plsql的目录,我的是E:\app\Ruby\product\instantclient_10_2,然后把tnsnames.ora替换为%ORACLE_HOME%\product\10.2.0\db_1\NETWORK\ADMIN目录下的tnsnames.ora文件,重启plsql就成功了!
解决本机127的端口1521通,其他ip不通
1. 问题
我的环境是oracle11gr2,本地用plsql还是toad连接都没有任何问题,而用别的机器远程连接就提示 无监听程序等错误。
2. 原因
oracle安装路径 --- 例如: F:\app\Administrator\product\11.2.0\dbhome_1\NETWORK\ADMIN 下面的 listener.ora 和 tnsnames.ora 这两个文件 打开看一下
数据库时,本地可以连,而远程连接不了!
3. 解决办法
将上面两个文件中 高亮的localhost全部替换成本机的计算机名。 然后重新启动oralce服务 和监听就可以了。