之前学数据库,用的一直是SQL Server,前几天刚装上Oracle数据库,习惯了SQL Server易操作和美观,在见识到oracle强大的跨平台、稳定性等等等优点之前,先给了一个ugly外观的印象,这倒没什么,重要的是和PL/SQL配合各种出问题。
问题
Oracle
路径问题。以前安装其他软件也碰到过这个提示,但仅仅是提示,不会像Oracle这样,路径不合法拒绝安装的,所以在Oracle路径安装问题上,不能有空格、括号、汉字。
密码问题。多于6位,必须有大小写字母,不符合这个规定也不能继续。
PL/SQL
路径问题。PL/SQL的安装同样有路径命名限制,不要有空格和括号,常使用的D:\Program Files (x86)就省省吧。
无法连接。这次碰到的主要问题就是PL/SQL找到不到数据库,如下图:

中文乱码。这是个第二个硬骨头,导入脚本显示无问题:

查出来的数据却是乱码:

解决方案
问题说完了,咱来说说解决方案。
环境变量
我的Oracel安装根目录为D:\Oracle11。
- ORACLE_HOME=D:\Oracle11\product\11.2.0\dbhome_1
- TNS_ADMIN=D:\Oracle11\product\11.2.0\dbhome_1\NETWORK\ADMIN
- PATH下添加;%ORACLE_HOME%\BIN;
- ORACLE_SID,这个根据自己的实例配,默认是orcl。
配置文件
出现PL/SQL无法连接到数据库时,搜索出来最多的结果就是修改D:\Oracle11\product\11.2.0\dbhome_1\NETWORK\ADMIN下的listener.ora和tnsnames.ora。
我的数据库实例名是drpDB,两个配置文件分别如下。
listener.ora:
# listener.ora Network Configuration File: D:\Oracle11\product\11.2.0\dbhome_1\NETWORK\ADMIN\listener.ora
# Generated by Oracle configuration tools.
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = LIDA)(PORT = 1521))
)
)
ADR_BASE_LISTENER = D:\Oracle11
tnsnames.ora:
# tnsnames.ora Network Configuration File: D:\Oracle11\product\11.2.0\dbhome_1\NETWORK\ADMIN\tnsnames.ora
# Generated by Oracle configuration tools.
DRPDB =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = LIDA)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = drpDB)
)
)
配置PL/SQL
不使用账号密码登录PL/SQL,配置Tools--Preferences---Oracle---Connection:
新建实例
如果上面还是不能解决连接问题,经过这几天我的总结就是:新建实例。我的连接问题都是在围绕Listener转,基本上不是服务启不起来就是找不到Listener,我的最后解决方法是就是新建实例。
使用Oracle自带的DataBase Configuration Assistant,过程是起个用户名和密码,其它一直下一步,就不多说了:
然后使用Net Configuration Assistant添加监听和服务,基本上也是一直下一步,切记最后“文件”---“保存配置”:
中文乱码
这个问题使用PL/SQL导入的数据会出现乱码,最开始怀疑的是脚本有问题,但
是用Oracel自带的SQL Plus则不会出现问题:
所以问题应该是出现在了PL/SQL的字符集上,如何改变这个问题正在尝试中,有解决方案后会更新到此。
收获
开始出现这些问题时确实有些着急,但是想想,当初开始接触SQL Server时不也一样吗,都是一个由毫不了解到熟悉的过程,刚开始碰到各种各样的问题很正常,找到这个前车之鉴和经历的过程,顿时心静下来。着急说明还是有些浮躁的成分,所以后来索性就塌下心来和它杠上了。静下心来才会发现学习Oracle远比解决一个问题爽的多,对Oracle也有了一个大致的了解。
另外想提一点,希望大家尽量少转载文章,这对于搜索问题非常无益:搜索一个问题出现的都是相同的答案,这个答案还不一定正确。
更多博客,其访问《项目总结》。