PL/SQL连接Oracle11g

来源:互联网 发布:搞笑爱情电影 知乎 编辑:程序博客网 时间:2024/05/17 08:14

    之前学数据库,用的一直是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也有了一个大致的了解。    
    另外想提一点,希望大家尽量少转载文章,这对于搜索问题非常无益:搜索一个问题出现的都是相同的答案,这个答案还不一定正确。

    更多博客,其访问《项目总结》。

原创粉丝点击