??xml version="1.0" encoding="utf-8" standalone="yes"?> 通过本教E,(zhn)将了解C么是Mondiran,及如何将mondrian支持d到?zhn)的Java Web目中?/p> 在阅L教程之前Q?zhn)可能需要掌握以下概念:(x) OLAP(联机分析处理On-Line Analytical Processing)Q?zhn)可以通过阅读ROLAP的概?pptx来了解OLAP MDX多维表达式,(zhn)可以通过阅读MDX的基本语法及概念.pptx来了解MDX Mondrian是一个开源项目。一个用Java写成的OLAP引擎。它用MDX语言实现查询Q从关系数据?RDBMS)中读取数据。然后经qJava API以多l的方式对结果进行展C?/p> Mondrian的用方式同JDBC驱动cM。可以非常方便的与现有的Web目集成 Mondrian OLAP pȝ由四个层l成; 从最l用户到数据中心, 序? 表现层决定了最l用户将在他们的昄器上看到什? 及他们如何同pȝ产生交互?/p> 有许多方法可以用来向用户昄多维数据? ?pivot ?(一U交互式的表), pie, line 和图?bar charts)。它们可以用Swing ?JSP来实现?/p> 表现层以多维"文法(grammar)(l、度量、单?”的Ş式发出查询,然后OLAP服务器返回结果?/p> 1.1.1.1 Jpivot表现?br /> JPivot 是Mondrian的表现层TagLibQ一直保持着良好的开发进度? (zhn)可以通过讉Kjpivot的官方网?a target="_blank" >http://jpivot.sourceforge.net/以获得更多的帮助及支?/p> jpivot使用XML/ XSLT渲染OLAP报表: JPivot 使用 WCF (Web Component Framework) Q基于XML/XSLT来渲染Web UIlg。这使它昑־十分另类。不q,OLAP报表q种非常复杂但又有规律可循的东西Q最适合使用XSLT来渲染?br /> jpivot完全ZJSP+TagLibQ?br /> JPivot另外一个可能Z惯的地方是它完全Ztaglib而不是大家熟(zhn)的MVC模式?/p> 但它可以很方便的多l数据展C给最l用P如下表格Q?br /> jpivot其实是一个自定义jsp的标{ֺ。它ZXML/XSLT配置来生成相应的html。所q的是,我们q不需要了解太多关于这斚w的内容,我们只要掌握相应jsp标签的用即可?/p> 在本教程的实例中Q我们将?x)对一些常用到的jpivot标签q行讲解?/p> (zhn)还可以通过汉化WEB-INF/jpivot下的xml文g来完成对jpivot的汉化工?/p> l度层用来解析、验证和执行MDX查询要求?/p> 一个MDX查询要通过几个阶段来完成:(x)首先是计坐标uQaxesQ,再者计坐标uaxes 中cell的倹{?/p> Z提高效率Q维度层把要求查询的单元成批发送到集合层,查询转换器接受操作现有查询的hQ而不是对每个h都徏立一个MDX 声明?br /> 集合层负责维护和创徏集合~存Q一个集合是在内存中~存一l单元| q些单元值由一l维的值来定?/p> l度层对q些单元发出查询hQ如果所查询的单元g在缓存中Q则集合理?aggregation manager)?x)向存储层发出查询请?br /> 存储层是一个关pd数据?RDBMS)。它负责创徏集合的单元数据,和提供维表的成员?br /> Mondrian 为客L(fng)提供一个用于查询的API 因ؓ(f)到目前ؓ(f)?q没有一个通用的用于OLAP查询的API,因此Mondrian提供了它U有的API. 管如此,一个常使用JDBC的h同样发现它很熟(zhn)?不同之处仅在于它使用的是MDX查询语言,而非SQL 下面的java片段展示了如何连接到Mondrian,然后执行一个查?最后打印结? 与JDBCcM,一个Connection由DriverManager创徏,Query 对象cM于JDBC 的Statement,它通过传递一个MDX语句来创?Result对象cM于JDBC的ResultSet,只不q它里面保存的是多维数据 (zhn)可以通过查看Mondrian帮助文档里的javadoc来获取更多关于Mondrian API的资?br /> 通过上面的介l,(zhn)应该对mondrian的体pL一个基本的了解?/p> 下面我们通过一个简单的例子来加深?zhn)的理解?br /> 现在让我们用一个简单的例子来说明将Mondrian支持d到?zhn)java web的具体步骤?br /> 本测试需要的环境Q?br /> 操作pȝQWindows 2000; (zhn)可以在http://tomcat.apache.org/上下载到tomcat的最新版本及帮助Q?br /> (zhn)可以在http://www.myeclipseide.com/上下载到myeclipse的最新版本及相应的eclipse开发^台版?br /> ?a target="_blank" >http://sourceforge.net/projects/mondrian/下蝲Mondrian的最新版?目前版本?.0Q大U有50MQ大??br /> 启动eclipse?/p> 在eclipse中新创徏一个web目Q名为Tezz。注意需要加入JSTL支持?/p> 具体步骤如下Q?/p> 下载的压羃包进行解压。完成后Q进入文件夹可以看到如下目录l构。双击进入lib文g夏V?br /> Lib文gҎ(gu)如下内容Q注意到q里的mondrian.war文g是一个可直接布v的项目,我们需要将它解压,然后从中取出我们所需要的文g?其扩展名改成zipQ然后直接右键解? q入解压后的文g夹,选中jpivot、wcf二个文g夹及busy.jsp、error.jsp、testpage.jsp三个文gQ我们需要将q些资源复制到我们测试项目的WebRoot文g夹中。按ctrl+C键复制?br /> 注:(x)jpivot、wcfq两个文件夹包含mondrian使用的图像和css文g。Busy.jsp昄{待面、error.jsp昄出错面、testpage.jspq文件的用处在后面介绍?/p> 切换到eclipse界面Q在我们的Tezz目的WebRoot文g夹处叛_鼠标Q在弹出的菜单中选择Paste(_脓(chung))卛_ _脓(chung)完成后的目l构如下 注意Q因为我们还未将所有资料复制到目中,因此eclipse?x)显C错误图?br /> 最后进入WEB-INF文g?在上面步骤中解压的项目文件mondrian.war?Q选中jpivot、lib、wcfq三个文件夹Q同样需要复制它们到试目的WEB-INF文g夹中?br /> Jpivot、wcfq两个文件夹包含jpivot和wcf用于生成用户界面的配|文?*.xml?.xsl)及标{文?*.tld)的定义。Lib文g夹包含的是mondrian所要用的java包?br /> 切换到eclipse界面Q在我们的Tezz目的WebRoot文g夹处叛_鼠标Q在弹出的菜单中选择Paste(_脓(chung)) xMondrian的支持添加完毕,下面我们配|web.xmlQ让我们的项目能够用到mondrian的功能?br /> 用eclipse打开我们在上面解压的布v目的WEB-INF/web.xml文g qo?filter) 复制如下所C的xml代码到我们测试项目Tezz的web.xml文g中?/p> 作用Q这个过滤器在访?testpage.jsp前被调用。它被设计成jpivot的前端控制器Q用于判断ƈ用L(fng)h发送到某个面?/p> 注:(x)在实际项目中可以使用(zhn)自己定义的servlet或用其他技术来替代它以提供更多的功?br /> Provider=mondrian;Jdbc=jdbc:jtds:sqlserver://localhost/Tezz;user=sa;password=123456;Catalog=/WEB-INF/queries/tezz.xml;JdbcDrivers=net.sourceforge.jtds.jdbc.Driver; 如果(zhn)需要用到该功能Q则需要将其copy到?zhn)目的web.xml文g中?/p> 最后添加以下标{ֺ到我们的web.xml目中即?/p> 接下来我们将要创建本例子所要用到的表格及数据?/p> 本例使用的表l构如下所C:(x) Sale是事实表Q它有两个维Q客?customer)l和׃个表l成的?Product)l?/p> 表格的创建很单,(zhn)只需要将下面的sql语句导入数据库即?/p> 一个模式定义了一个多l数据库. 它包含一个逻辑模型(logical model)、一l数据立?consisting of cubes)、层?hierarchies)、和成员(members), q映到物理模型(关系数据?上?/p> 单的_配置一个模式就是配|一个关pL据结构到多维数据l构的映?/p> 注:(x)关于mondrian的模式及模式的配|,(zhn)可以通过阅读mondrian的基本模?pptx来了解。这里我们只对其q行了简单介l?/p> 模式文g的创建很单。首先在WEB-INF下新Z个queries的文件夹Q然后在该文件夹下创Z个名为tezz.xml的文件。再按下面的步骤xml元素d入即可?/p> d产品l?因ؓ(f)产品l由两个表连接而成Q因此比客户l复杂些)Q?br /> d度量(共有三个度量:数量、^均单价和总销售额)Q?br /> 最后生成的tezz.xml文g内容如下Q?br /> 在模式文件定义完成之后,我们可以根据它来编写相应MDX查询语句了?/p> 本例所用的MDX语句如下Q?br /> 现在我们创Z个jsp文gQ该jsp使用jpivot的mondrianQuery标签来完成查询?/p> 该文件最后将被testpage.jsp使用?/p> ?WEB-INF/queries文g夹下面创Z名ؓ(f)tezz的jsp文g。该jsp包含如下内容Q?br /> x我们已经全部配置完成Q文件结构如下:(x) 布v目Q启动TomcatQ在览器上输入http://localhost:8080/Tezz/testpage.jsp?query=tezz卛_看到如下l果: ?testpage.jsp?query=tezzQ这里的tezz卛_我们创徏的用于查询jsp文g名称 testpage.jsp文g用于发出查询及将l果转换成html格式。它使用一ljsp标签来完成这些复杂的工作?/p> 在本教程的最后一章里Q我们对testpage.jsp的流E及用到的主要标{进行简单介l?/p> <jp:table id="table01" query="#{query01}"/> jp:tableҎ(gu)query01中保存的l果Q领域数据)准备昄OLAP表格所需的数据(昄数据Q?br /> <wcf:render ref="table01" xslUri="/WEB-INF/jpivot/table/mdxtable.xsl"/> Ҏ(gu)table01的结果,使用mdxtable.xsl中的配置Q渲染出OLAP表格?br /> 同样Q其他jp标签Q如<jp:chart id=“chart01“ ---/>{标{և备待渲染的数据,再由相应?lt;wcf:render ref=“chart01” ---/>标签它们渲染成html格式?/p> q样Q用户将在浏览器上看到最l的l果?/p> xQ一个完整的mondrian查询l束?/p>
1. Mondrian是什么?
1.1 Mondrian的体pȝ?Architecture)
1.1.1 表现?the presentation layer)
1.1.2 l度?the dimensional layer)
1.1.3 集合?the star layer)
1.1.4 存储?the storage layer)
l构囑֦?
1.1.1 表现?the presentation layer)
1.1.2 l度?the dimensional layer)
1.1.3 集合?the star layer)
1.1.4 存储?the storage layer)
1.2 API
2. 一个简单的Mondrian例子
2.1 准备开发工具及环境
Web服务器:(x)tomcat6.0Q?br /> 关系数据库:(x)sql server 2000Q?br /> 开发工P(x)eclipse + myeclipse;
JDBC驱动Qjtds-1.2.2;2.2 准备Mondrian资源Q?/h2>
2.3 创徏目
2.3.1 打开新徏web目对话?/h3>
一个新目Tezz的文件结构如?
2.4 d必须的文?/h2>
2.5 配置web.xml
2.6 准备试用表
2.6.1 使用以下sql语句创徏?/h3>
2.6.2 使用以下sql语句导入数据
2.7 建立模式(schema)文g
2.7.1 创徏模式文gQ?/h3>
2.7.2 配置模式文gQ?/h3>
2.7.2.1 d数据立方Sales:
2.7.2.2 d数据立方Sales的维:
2.8 ~写MDX查询语句
2.9 创徏查询文g
2.10 布v目
3. testpage.jsp的流E?/h1>
3.1 wcf:include标签Q?/h2>
3.2 jp:table标签Q?/h2>
3.3 其他jp、wcf标签
IBM MQ 6.0中设|两个队列,Q远E队列、通道之类都不讄Q?/p>
队列理器是XIR_QM_1502
队列名称是ESBREQ
IP地址?0.23.117.134Q远E的一台电(sh)脑,跟我的电(sh)脑不在一个局域网内)
端口1414
CCSID 1208
MQ配置可以参考这个,有配?a >http://wenku.baidu.com/view/06d108d0360cba1aa811daa3.html
E序如下Q发送线E两个,接收U程一个。接收完毕后q束?/p>
q行l果如下Q?/p> q入U程Sender2
q入U程Sender
Sender2 Connecting to queue manager: XIR_QM_1502
Sender Connecting to queue manager: XIR_QM_1502
Sender2 Accessing queue: ESBREQ
Sender2 Sending a message...
Sender Accessing queue: ESBREQ
Sender Sending a message...
Sender2 putting the message... 1
Sender putting the message... 1
Sender2 putting the message... 2
Sender putting the message... 2
Sender2 putting the message... 3
Sender putting the message... 3
Sender2 putting the message... 4
Sender putting the message... 4
Sender2 Done!
==========
Sender Done!
==========
q入U程Receiver
Receiver Connecting to queue manager: XIR_QM_1502
Receiver Accessing queue: ESBREQ
... Receiver getting the message back again
ID: MSGID Num: 1 Type: 1 Flag: 0
The message is: Salemetsizbe Yerasel 1
ID: MSGID Num: 1 Type: 1 Flag: 0
The message is: Salemetsizbe Yerasel 1
ID: MSGID Num: 1 Type: 1 Flag: 0
The message is: Salemetsizbe Yerasel 2
ID: MSGID Num: 1 Type: 1 Flag: 0
The message is: Salemetsizbe Yerasel 2
ID: MSGID Num: 1 Type: 1 Flag: 0
The message is: Salemetsizbe Yerasel 3
ID: MSGID Num: 1 Type: 1 Flag: 0
The message is: Salemetsizbe Yerasel 3
ID: MSGID Num: 1 Type: 1 Flag: 0
The message is: Salemetsizbe Yerasel 4
ID: MSGID Num: 1 Type: 1 Flag: 0
The message is: Salemetsizbe Yerasel 4
Receiver Closing the queue
Receiver Disconnecting from the Queue Manager
Receiver Done!
PDO_MYSQL以下操作都在Linux pȝ下操?/p>
1、下?文g 或?q入 在PHP源码包中q入ext/pdo_mysql
http://pecl.php.net/get/PDO_MYSQL-1.0.2.tgz
2、解压文?br /> tar zxvf PDO_MYSQL-1.0.2.tgz
3、配|和~译文g
#cd PDO_MYSQL-1.0.2
#/usr/local/php5/bin/phpize
#./configure –with-php-config=/usr/local/php5/bin/php-config –with-pdo-mysql=/usr/local/mysql
#make
#make install
注:(x) 我的PHP安装?Q?/usr/local/php5/ mysql 安装?Q?/usr/local/mysql ~译的时候注意你自己的安装目录在哪里
3、安装到PHP配置?/p>
把这个记住,然后打开 php.ini文gQ?br /> q添加一?/p>
extension=pdo_mysql.so
q将上面~译产生的so复制?php.ini文g中extension_dir指定的目录中
重新启动Q?br />
说明Q?/strong>
操作pȝQCentOS 5.x 64?/span>
已安装php版本Qphp-5.4.4
已安装php路径Q?usr/local/php
实现目的Q?/strong>
在不影响|站讉K的情况下Q重新编译phpQ增加对mcrypt扩展的支?/span>
具体操作Q?/strong>
一、下载Y件包
1、下载phpQ?span style="color: #0000ff;">版本要与pȝ安装的一?/span>Q?/p>
http://museum.php.net/php5/php-5.4.4.tar.gz
2、下载libmcryptQ?span style="color: #0000ff;">安装mcrypt需要此软g?/span>Q?/p>
http://nchc.dl.sourceforge.net/project/mcrypt/Libmcrypt/2.5.8/libmcrypt-2.5.8.tar.gz
3、下载mhashQ?span style="color: #0000ff;">安装mcrypt需要此软g?/span>Q?/p>
https://acelnmp.googlecode.com/files/mhash-0.9.9.9.tar.gz
4、下载mcrypt
https://lcmp.googlecode.com/files/mcrypt-2.6.8.tar.gz
以上软g包下载之后,上传?usr/local/src目录
二、安装Y件包
1、安装libmcrypt
cd /usr/local/src #q入软g包存攄?/span>
tar zxvf libmcrypt-2.5.8.tar.gz #解压
cd libmcrypt-2.5.8 #q入安装目录
./configure #配置
make #~译
make install #安装
2、安装mhash
cd /usr/local/src
tar zxvf mhash-0.9.9.9.tar.gz
cd mhash-0.9.9.9
./configure
make
make install
3、安装mcrypt
cd /usr/local/src
tar zxvf mcrypt-2.6.8.tar.gz
cd mcrypt-2.6.8
ln -s /usr/local/bin/libmcrypt_config /usr/bin/libmcrypt_config #d软连?/span>
export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH #d环境变量
./configure
make
make install
三、重新编译php
1、查看系l之前安装的php~译参数
pȝq维 www.osyunwei.com 温馨提醒Qqihang01原创内容 版权所?转蝲h明出处及原文链接
/usr/local/php/bin/php -i |grep configure #查看php~译参数Q记录下~译参数Q后面会(x)用到
2、安装php
cd /usr/local/src
tar zxvf php-5.4.4.tar.gz
cd php-5.4.4
'./configure' '--prefix=/usr/local/php' '--enable-mbstring=all' '--with-config-file-path=/usr/local/php/etc' '--with-zlib' '--with-mysql=/usr/local/mysql-5.1.38/' '--with-gd' '--with-mysqli=/usr/local/mysql-5.1.38/bin/mysql_config' '--with-jpeg-dir=/usr' '--with-png-dir=/usr' '--enable-fpm' '--enable-soap' '--with-freetype-dir=/usr/lib64' '--with-iconv=/usr/local' '--with-curl' '--with-mcrypt'
#在之前的~译参数后面增加'--with-mcrypt' 回R
make #~译
make install #安装
/usr/local/src/php-5.4.4/sapi/fpm/init.d.php-fpm reload #重新加蝲php-fpm
四、测试mcrypt扩展是否已安装成?/span>
在网站目录下新徏一?span style="color: #ff0000;">info.php试面Q写上下面代码,保存
<?php
phpinfo();
?>
在浏览器中打开info.php ?x)看到如下的信?/p>
说明mcrypt扩展已经安装成功
xQLinux下php安装mcrypt扩展完成?/strong>
Ø W一步配|YUM仓库
1?nbsp;挂蝲光盘
mount /dev/cdrom /media
2?nbsp;复制光盘里头的rpm包到rpm包源目录
cp –rf /media/Packages /mnt Q也可以直接通过桌面COPYQ?/span>
Q这里可以取消挂在了 umount /dev/cdromQ顺便删除media目录 rm –rf /mediaQ?/span>
3?nbsp;q入你自己创建的YUM仓库Qƈ安装createrepo工具
cd /mnt/Packages
rpm –ivh createrepo-0.4.11-3.e15.noarch.rpm(可以在桌面手动双d?
4?nbsp;重徏仓库信息配置文g
createrepo /mnt Q这个配|文件在 /mnt/repodata/下)
5?nbsp;创徏YUM配置文g
cd /etc/yum.repos.d/
touch yumredhat.repo
vim yumredhat.repo
d如下信息Q?/span>
[rhel6]
name=Red Hat Enterprise Linux6
baseurl=file:///mnt
enabled=1
gpgcheck=0
gpgfile=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
6、测?/span>
yum list
yum clear all
Ø W二步Oracle安装前系l参数的配置以及包的安装
Q安装Oracle必须关闭掉防火墙以及selinuxQ?/span>
service iptables stop
vim /etc/selinux/config
SELINUX=disabled
========================
惛_法把下面2个文件传q?nbsp;Linux 操作pȝ里面?/span>
linux_11gR2_database_1of2.zip
linux_11gR2_database_2of2.zip
要借助一个Y?nbsp;FileZilla_3.3.3_win32-setup.exe
上传完毕后, 使用 unzip 命o解压刚才上传?个文Ӟ 命o格式如下Q?/span>
unzip 文g?/span>
======================================
查相关的开发工具和一些包
查命令格式如下:(x)
rpm -qa | grep 名字
binutils-2.17.50.0.6
compat-libstdc++-33-3.2.3
elfutils-libelf-0.125
elfutils-libelf-devel-0.125
#elfutils-libelf-devel-static-0.125 (RedHat Linux6.0中无此包QCentOS中有)
gcc-4.1.2
gcc-c++-4.1.2
glibc-2.5-24
glibc-common-2.5
glibc-devel-2.5
glibc-headers-2.5
kernel-headers-2.6.18
ksh-20060214
libaio-0.3.106
libaio-devel-0.3.106
libgcc-4.1.2
libgomp-4.1.2
libstdc++-4.1.2
libstdc++-devel-4.1.2
make-3.81
numactl-devel-0.9.8.i386
sysstat-7.0.2
unixODBC-2.2.11
unixODBC-devel-2.2.11
======================================
利用配置好的YUM仓库安装?/span>
yum install (包名).rpm
创徏用户以及修改配置参数
groupadd oinstall
groupadd dba
mkdir -p /u01/oracle //路径可修改,看实际的生环节
d一个oracle用户Q?nbsp;根目录是 /u01/oracleQ?nbsp;ȝl是 oinstall 副的l是dba
useradd -g oinstall -G dba -d /u01/oracle oracle
cp /etc/skel/.bash_profile /u01/oracle
cp /etc/skel/.bashrc /u01/oracle
cp /etc/skel/.bash_logout /u01/oracle
为oracle用户讄密码 123456 /111111
passwd oracle
/]#ls -l
/]#chown -R oracle:oinstall u01
/]#ls -l
?nbsp;nobody 是否存在 Q?nbsp; id nobody
~省存在的。如果不存在 # /usr/sbin/useradd -g nobody
========================================
vi /etc/sysctl.conf
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 2097152
kernel.shmmax = 536870912
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048586
-------------
vi /etc/security/limits.conf
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
------------
vi /etc/pam.d/login
session required pam_limits.so
=================================================
讄oracle 用户环境变量
su - oracle
pwd
ls -la
---------------
vi .bash_profile
ORACLE_BASE=/u01
ORACLE_HOME=$ORACLE_BASE/oracle
ORACLE_SID=ORCLTEST
PATH=$ORACLE_HOME/bin:$PATH:$HOME/bin
export ORACLE_BASE ORACLE_HOME ORACLE_SID PATH
===================================
mv database /u01/
cd /u01
ls -l
chown -R oracle:oinstall database/
===========
Ø W三步正式开始安?Oracle.11g.r2(囑Ş界面安装)
使用oracle账号 登陆囑Ş界面 q行安装
q行l端 Terminal
cd /u01/database
./runInstaller
q行./runInstaller?/span>INS-06101?/span>IP address of localhost could not be determined
Are you sure you want to continue?
q里需要指定一个IP与localhost
Vi /etc/hosts
#127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
10.110.12.132 ORCLDEV ORCLDEV.ELLINGTON
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
q行./runInstaller出现中文汉字为方?/span>
在运行runinstaller之前Q?/span>
export LANG=C
export LC_ALL=C
Installation Optiong
install database software only
Grid Options
Single instance database installation
Product Languages
English
Database Edition
Enterprise Edition (3.95)
Installation Location
Oracle Base: /u01
Software Loacation: /u01/oracle
提示Q?nbsp;yes
Create Inventory
mkdir /oraInventory
chown -R oracle:oinstall oraInventory
Operating System Groups
Next
Prerequis ite Checks
Ignore All
Summary
Finish
Install Product
安装完毕Q?nbsp;提示执行 2个脚?/span>
//root用户执行
/oraInventory/orainstRoot.sh
/u01/oracle/root.sh
直接按回车, ~省值就可以
Finish
The installation of Oracle Database was successful
====================================
上面只是安装了YӞ 数据库没有创建, q有配置 监听?nbsp;Listener
netca
一直默认下一?nbsp;Q?nbsp;呵呵Q?nbsp;最?nbsp;Finish
ps -ef 可以查看Listener是否配置成功
-----------
dbca
一?nbsp;Next, Global Database Name ?nbsp;SID 都是输入 wilson
选择 User the Same.....All Accounts
密码: 123456
选择 Sample Schemas
Memory 内存分配Q默认就可以?/span>
Character Sets 选择 中文GBK Use Unicode(AL32UTF8)
然后一?nbsp;Next Q?nbsp;到最?nbsp;Finish
弹出一?nbsp;Confirmation , 点击 OK 可以了Q?nbsp;然后自动q行安装
安装到目?nbsp;/u01/oradata/wilson
/u01/{等。。?nbsp;?x)发现多了很多文件?/span>
[oracle@localhost ~]$ sqlplus /nolog
//中文字符昄Q号解决Ҏ(gu)
~辑q运?bash_profile
export NLS_LANG=AMERICAN_AMERICA.UTF8
Q如果是GBK
export NLS_LANG=american_america.ZHS16GBKQ?/span>
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
注销后生?/span>
q样再重新进入sqlplus
已经不会(x)是ؕ码?/span>
SQL*Plus: Release 11.2.0.1.0 Production on Fri Jun 25 15:05:54 2010
Copyright (c) 1982, 2009, Oracle. All rights reserved.
SQL> conn / as sysdba
Connected to an idle instance.
出现错误
SQL> startup
查看当前用户的表?/span>
SQL> select table_name from user_tables;
SQL> create table testUser( id integer,name char(10));
Table created.
SQL> insert into testUser values(0,'Jack');
1 row created.
SQL> commit;
Commit complete.
SQL> select * from testUser;
ID NAME
---------- ----------
0 Jack
关闭数据?/span>
SQL> shutdown immediate
SQL> quit
最q几天完成了BiasDAC的程序编写。调试的q程q算比较利Q除了几个有点bt的小问题。其中一个困C我两三天的时_今天上午l于其解决?/p>
׃BiasDAC是用RS232 Serial Port通信的,延用之前的程序,使用了Delphi的SPComm控g。在之前的用中QSPComm控g一直工作正常,使用的是一般的stringq行消息的传递?/p>
而BiasDAC׃通信协议的限Ӟ消息的发送用的是hex方式Q会(x)用到?x00?xFF所有的q些字符。在调试中发玎ͼ发?x11?x13之后QSPComm的工作就?x)不正常?/p>
首先?x11发送之后,q回?x11消息?x)被忽略Q其?x13发送之后,只能q回很有限的消息Q而且gSerial Port此关闭Q如果再发送消息,׃(x)造成Serial Port失去响应Q只能通过重新启动计算机才能恢复?/p>
后来上网上查询,原来不能正常处理0x11?x13的问题早存在,原因是SPCommI间中两个属性的存在?/p>
OutX_XonXOffFlow/InX_XonXoffFlowQ这个属性是指进行发?接收时的软g握手标志Q两个握手信号之间的数据被认为是通讯数据Q收到握手信号后Q通讯׃止了?/p>
FOutx_XonXoffFlow := True;
FInx_XonXoffFlow := True;
默认的初始化中,q两个属性是默认开启的?
XOffChar/XOnCharQ这是指握手的字节,默认的初始中Q有
FXonChar := chr($11);
FXoffChar := chr($13);
xQ真相大白?x11Q?x13被占用ؓ(f)通讯握手信号Q自然不?x)得到正的处理?
问题扑ֈ了,解决也很Ҏ(gu)。只需要在Comm的初始化中,自己定义
Comm.Inx_XonXoffFlow:=False;
Comm.Outx_XonXoffFlow:=False;
关闭软g握手功能卛_。在一般通讯中,g已经具备了握手功能,所以也不会(x)影响到正常的Comm通讯?/p>
增加q接MSSQL-SERVER的输?br />if ($dataSrc == 'TX_USERS') {
if($act=="count")
$query = "select count(*) from OA_Employee_View where 1=1";
else
$query = "select top 10 $dataField from OA_Employee_View where 1=1";
if(strstr($dataQuery,"1,"))
{
$array1 = explode(",",$dataQuery);
$array2 = explode(",",$dataField);
$array3 = explode(",",$dataFieldName);
foreach($array1 as $k => $v)
{
if($v==1)
{
$name = $array2[$k];
$value = $$name;
if($value!="")
$query .= " and $name like '%$value%'";
}
}
}
$txconn=mssql_connect($MSSQL_TX_SERVER,$MSSQL_TX_USER,$MSSQL_TX_PASS);
mssql_select_db($MSSQL_TX_DB,$txconn);
if($act=="count")
{
$cursor = mssql_query($query);
if($ROW=mssql_fetch_array($cursor))
$COUNT=$ROW[0];
echo $COUNT;
exit;
}
$cursor = mssql_query($query);
$COUNT=0;
$dataField_arr = explode(",",$dataField);
$dataFieldName_arr = explode(",",$dataFieldName);
while($ROW=mssql_fetch_array($cursor))
{
$COUNT++;
if($COUNT%2==1)
$TableLine="TableLine1";
else
$TableLine="TableLine2";
foreach($dataField_arr as $k=> $v)
{
if($v=="") continue;
if($COUNT==1)
{
if($k==0)
$thead.='<table class="TableList" align="center" width="90%"><tr class="TableHeader">';
$thead.='<td nowrap align="center">'.$dataFieldName_arr[$k].'</td>';
}
if($k==0)
$tbody.='<tr class="'.$TableLine.'">';
$tbody.='<td nowrap align="center">'.$ROW[$v].'</td>';
}
if($COUNT==1) $thead.='<td nowrap align="center">操作</td></tr>';
$tbody.='<td nowrap align="center"> <a href="#" class="orgAdd" onclick="addData(this)">d</a></td></tr>';
}
$tbody.="</table>";
echo $thead.$tbody;