qhdtc5 2015-12-14 13:40:16 5362次浏览 0条回复 1 1 0

今天尝试了一下连接oracle数据库,在配置过程中出现很多错误,从“未知的驱动”、“找不到监听器”到“目前不知道服务的连接描述符请求”,通过使用各种技能(百度、谷歌和stackoverflow)最终成功连接上了oracle,这其中的安装配置过程比sqlserver要复杂,现在记录安装与除错过程备查,也给需要连接oracle的网友提供一些思路。

第一步,需要打开php的oci扩展

在5.6版的ext文件夹中,只有php_oci8_12c.dll文件,所以我们需要修改php.ini文件中的内容:

;注释掉下面两句
;extension=php_oci8.dll      ; Use with Oracle 10gR2 Instant Client
;extension=php_oci8_11g.dll  ; Use with Oracle 11gR2 Instant Client

;添加这一句
extension=php_oci8_12c.dll

第二步,下载客户端工具instantclient

链接:http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html

官网的instantclient下载链接不知为什么提示错误的url,我是从CSDN网友提供的资源中下载的,请自行搜索。 需注意的是其中有64位和32位版,请下载相应的版本,然后解压到任意一个文件夹,例如d:\instantclient,解压完毕后拷贝文件夹下的所有文件到系统文件夹中,32位对应c:\windows\system32, 64位对应c:\windows\sysWOW64

第三步,添加环境变量

首先在你解压后的文件夹中,新建network/admin文件夹备用,然后添加两个环境变量: ORACLE_HOME d:\instanctclient TNS_ADMIN d:\instanctclient\network\admin

第四步,创建tnsnames.ora文件

在d:\instanctclient\network\admin文件夹中,新建tnsnames.ora文件,然后添加下面的内容:

ORCL =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 主机名或IP)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = 服务名)
    )
  )

其中的服务名很重要,如果写错就会出现TNS:listener does not currently know of service requested in connect descriptor错误,应该是你的oracle服务器的服务名,具体的意义我也不知道,我是从服务器的oracle所在文件夹下的product\10.2.0\db_1\network\ADMIN\tnsnames.ora文件中得到的。

第五步,测试是否可以正确的连接oracle。

经过以上配置后,为了确保能正确加载一些文件和配置,请重启电脑。

通过PHP的PDO来测试

// ORCL就是我们在tnsnames.ora中的名字
$pdo = new PDO("oci:dbname=ORCL", "user", "password");

下面是我在yii2.0中的配置

'db' => [
            'class' => 'yii\db\Connection',
            'dsn' => 'oci:dbname=ORCL',
            'username' => 'user',
            'password' => 'pwd',
            'charset' => 'utf8',
        ],

以上就是我配置oracle中的过程,希望能帮助到大家,谢谢。

觉得很赞
    没有找到数据。
您需要登录后才可以回复。登录 | 立即注册