php连接oracle百发百中问题解决秘籍

 最近要使用php连接oracle,被折腾死了。最后终于全部搞定,现将探索过程和解决方法公布出来。

 

1.首先安装oracle 的客户端,instantclient10_1

将其中的dll文件拷贝放入c:/oracle(自己随便取得)

c:/oracle放入环境变量PATH,一定要重新启动apache

php里配置库,打开选项

extension=php_oci8.dll

 

秘方:如果提示oracle扩展没加载上,直接把oracledll文件copyapachebin目录下就可以。

2.配置oracle

a.建立帐号

 CREATE USER "DONG"  PROFILE "DEFAULT"

    IDENTIFIED BY "dong" DEFAULT TABLESPACE "USERS"

    ACCOUNT UNLOCK;

b.赋予权限

 GRANT "CONNECT",SELECT,resource  TO "DONG"

c.建立表空间

CREATE TABLESPACE "dong"

LOGGING

DATAFILE '/usr/oracle/10.2/dbs/dong.ora' SIZE 5M EXTENT

MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT  AUTO;

 

 

 

d.表空间和用户关联

ALTER USER "DONG"  DEFAULT TABLESPACE "dong";

 

e.建立一个表测试

create table DONG.test (test varchar(20));

 

3.得到连接的数据库id

select instance_name from v$instance ;

 

4.程序如下:

$ora_db_host = '192.168.123.223';

$ora_db_port = 1521;

$ora_db_name = 'DONG';

$ora_db_user = 'DONG';

$ora_db_pswd = 'dong';

$ora_db_sid = 'orcl';//3 的方法得到的

 

$db = "(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST = $ora_db_host)(PORT = $ora_db_port))

(CONNECT_DATA = (SID = $ora_db_sid)))";

 

 

$ora_conn = oci_connect($ora_db_user , $ora_db_pswd, $db);

 

秘方1:如果提示ORA-12541: TNS:no listener ,则到oracle服务端找到listener.ora,添加入自己的数据源定义

:

(SID_DESC =

    (GLOBAL_DBNAME = dong)

    (ORACLE_HOME = /usr/oracle/10.2)

    (SID_NAME = orcl)

 

  )

然后命令行下执行

lsnrctl

进入命令行后,

LSNRCTL>   stop;

LSNRCTL>   start;

如果还没搞定,listener.ora里还有个地方很关键:

(ADDRESS = (PROTOCOL = TCP)(HOST = xxxx)(PORT = 1521))

通常HOST都写为localhost,如果你要从外连过来,死都连接不成,想想为啥,

从外部连过来只要将HOST 换为对应地址就可以了,然后重新

lsnrctl

进入命令行后,

LSNRCTL>   stop;

LSNRCTL>   start;

 

 

秘方2:如果提示ORA-01045:user xxx lacks CREATE SESSION privilege;logon denied.就是2grant没到位

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值