MyException - 我的异常网
当前位置:我的异常网» SQL » PL/SQL联接Oracle11g

PL/SQL联接Oracle11g

www.myexceptions.net  网友分享于:2013-04-10  浏览:9次
PL/SQL连接Oracle11g

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

2楼lfmilaoshi昨天 21:28
当初开始接触SQL Server时不也一样吗,都是一个由毫不了解到熟悉的过程,刚开始碰到各种各样的问题很正常,找到这个前车之鉴和经历的过程,顿时心静下来。着急说明还是有些浮躁的成分,所以后来索性就塌下心来和它杠上了。静下心来才会发现学习Oracle远比解决一个问题爽的多,对Oracle也有了一个大致的了解。n特别指明:《由毫不了解到熟悉的过程,刚开始碰到各种各样的问题很正常》,这样的说法,还是有待商榷的。n我认为:在学习新的数据库系统之前,应当认真总结已经学习过的SQLSERVER,然后借鉴SQLSERVER,学习ORACLE.
1楼lidaasky昨天 14:47
sqlserver已经总结过,正在发现二者的相同和不同之处

文章评论

软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有