毕设总总Oracle

突然意识到需要把近期遇到的一切技术情况记载下来。

今天是继昨天之后,又非常恶心的一天。今天的主要任务是在redhat+Oracle+apache+php的环境下搭建好自己的演示系统。

首先一个上午的时间几乎都花在了样例数据库的建立上,建立样例数据库是一件非常非常及其恶心万恶的事情,不停地编写各种各样的需求样例。

几个问题需要自己注意。

1.在redhat5下通常会自身装好一个apache,但是我自己又安装了apache,当师兄重启服务器是,系统默认又启动了自带apache,而我已经配置好的apache并没有被启动,所以需要卸载其再带的apache,然后再重新启动我安装的apache。

2.数据库字符集问题,Oracle默认的字符集通常是WE8ISO8859P1,这是一个英文字符集,但是我存储的是中文数据,解决的方法又两个,一是重新创建数据库,二是利用如下方法:

(1)、ssh登录,切换到oracle用户

切换用户命令:su -oracle

之后用sqlplus登录oracle,命令:

:sqlplus /nolog

:connect /as sysdba

这样就登录了。

(2)、更改字符集

首先 sqlplus登录后,关闭oracle数据库

1.shutdown immediate ;    
2.startup mount ;    
3.alter  system enable restricted session ;     
4.alter  system  set  JOB_QUEUE_PROCESSES=0;     
5.alter  system  set  AQ_TM_PROCESSES=0;     
6.alter   database   open  ;     
7. alter database character set INTERNAL_USE ZHS16CGB231280;     
8.shutdown immediate ;    
9.startup ;    

通过上面的方法,就可以有效解决数据库的字符集问题,数据库采用ZHS16CGB231280进行字符存储。ZHS16CGB231280也就是平时我们所说的GB2312字符集。此时,我用sql developer客户端来访问数据库是正常的。

3、当一切都顺利是,我发现我上传的网页显示不正常,php读取的数据库中文数据全部显示为问号,但是在我本机搭建的服务器却可以正常显示。

服务器:英文redhat+修改过字符集的英文oracle10g+apache

本机服务器:中文windowsXP+中文oracle11g+apache。

    首先,我分析,我的网页中的中文字符(非数据库数据)显示正常,所以可以确定这个问题跟英文linux无关,所以我就吧问题分析点放在oracle上,网上有很多类似的问题,都是在讲字符集的问题,但是没有个真正的解决方案。所以根据一些字符集的相关文章我了解了,服务器字符集和客户端字符集的区别。我的sql developer可以正常访问数据库的中文数据,说明服务器字符集没有问题。但是我的网页php访问数据库中文数据却出现问题,所以问题一定出在php连接数据库上。功夫不负有心人,我终于找到一个繁体中文的网页,里面讲到,连接的时候要声明php连接oracle的字符集。

我原来的连接方法:$conn = oci_connect('scuter', 'scuter', 'localhost/orcl');

修改后的连接方法:$conn = oci_connect('scuter', 'scuter', 'localhost/orcl',"ZHS16CGB231280");

此时一切正常。问题的原因我估计是因为我修改过字符集的ORACLE虽说可以存取中文数据,但是却在php连接时需要指定字符集。而我本机的中文oracle11g由于创建数据库时,我就设计了中文,所以可以不指定字符集而连接。

原文地址:https://www.cnblogs.com/sworddance/p/2013923.html