标签归档:oracle

OCA证书

很惊奇会先下来OCA的证书,突然收到ORACLE发来的一封邮件,说让我下载OCA证书。但我的目标是OCP,所以目前还不清楚这张证书是否需要申请他们发送过来,我彩打了一下,跟真的证书差不多,然后再这里保存个备份吧
文件名:oca证书.pdf, 访问地址:http://www.kuaipan.cn/file/id_27168653149473662.htm

Use of undefined constant OCI_COMMIT_ON_SUCCESS – assumed ‘OCI_COMMIT_ON_SUCCESS’

安装完wampServer,然后勾选了oci8.dll,codeigniter还是不能启动,报错Use of undefined constant OCI_COMMIT_ON_SUCCESS – assumed ‘OCI_COMMIT_ON_SUCCESS’,如下图

image

使用oci_connect方法的时候会报找不到这个方法的错误

image

在默认环境变量里面能找到如下dll

image

有如下解决方法(三选一)

  1. 下载并Oracle客户端,Oracle会自动在path里面加入D:\app\niehonglei\product\11.2.0\client_1\bin;
  2. 下载instantclient,然后在path里面把instantclient路径加进去;
  3. 下载instantclient,将其中的dll拷贝到C:\Windows\System32目录里面;

coreseek安装小结

1、按官方的标准安装,我的系统是CentOS(64位),默认安装了Python 2.6.6,如果没有安装还需要先安装Python 2.6.6,版本不要错;官方安装地址:http://www.coreseek.cn/products-install/install_on_bsd_linux/ 安装时注意在./config的时候加上对python的支持,因为我们要使用的是Oracle数据源

clipboard

相关代码:

$ cd csft-3.2.14
$ ./configure –prefix=/usr/local/coreseek  –without-unixodbc –with-mmseg –with-mmseg-includes=/usr/local/mmseg3/include/mmseg/ –with-mmseg-libs=/usr/local/mmseg3/lib/ –with-python
$ make && make install

2、安装cx_Oracle:下载cx_Oracle-5.1.2-11g-py26-1.x86_64.rpm

执行安装包
rpm -ivh cx_Oracle-5.1.2-11g-py26-1.x86_64.rpm

3、下载安装instantclient-basic-linux.x64-11.2.0.3.0.zip,我下载的是zip包,当然我认为也可以下载rpm包,而且不需要自己配置会更合适一些

4、打开~下的.bash_profile,添加下面两句(如果下载的rpm包,则不需要做如下操作

增加以下两行代码
LD_LIBRARY_PATH=/root/instantclient_11_2;
export LD_LIBRARY_PATH

5、在python下测试import cx_Oracle,如没有报错,则说明python连接oracle已经没有错误了

6、配置csft的config文件/root/coreseek-3.2.14/testpack/etc/csft_demo_python_pyoracle.conf

文件如下:
python
{
path = /root/coreseek-3.2.14/testpack/etc/pysource
path = /root/coreseek-3.2.14/testpack/etc/pysource/csft_demo_pyoracle
}
#源定义
source python_oracle
{
type = python
name = csft_demo_pyoracle.MainSource
}
#index定义
index python_oracle
{
source            = python_oracle
path            = /root/coreseek-3.2.14/testpack/var/data/python_oracle
docinfo            = extern
mlock            = 0
morphology        = none
min_word_len        = 1
html_strip                = 0
#中文分词配置,详情请查看:
http://www.coreseek.cn/products-install/coreseek_mmseg/
    charset_dictpath = /usr/local/mmseg3/etc/
charset_type        = zh_cn.utf-8
}
#全局index定义
indexer
{
mem_limit            = 128M
}
#searchd服务定义
searchd
{
listen                  =   9312
read_timeout        = 5
max_children        = 30
max_matches            = 1000
seamless_rotate        = 0
preopen_indexes        = 0
unlink_old            = 1
pid_file = /root/coreseek-3.2.14/testpack/var/log/searchd_python_oracle.pid
log = /root/coreseek-3.2.14/testpack/var/log/searchd_python_oracle.log
query_log = /root/coreseek-3.2.14/testpack/var/log/query_python_oracle.log
}

7、设置/root/coreseek-3.2.14/testpack/etc/pysource/csft_demo_pyoracle/__init__.py,

文件内容如下
# -*- coding:utf-8 -*-

from os import path
import os
os.environ[‘NLS_LANG’] = ‘SIMPLIFIED CHINESE_CHINA.UTF8’
import sys
import cx_Oracle

class MainSource(object):
def __init__(self, conf):
self.conf =  conf
self.idx = 0
self.data = []
self.conn = None
self.cur = None

    def GetScheme(self):  #获取结构,docid、文本、整数
return [
(‘id’ , {‘docid’:True, } ),
(‘title’, { ‘type’:’text’} ),
(‘abstract’, { ‘type’:’text’} ),
(‘search_type’, {‘type’:’integer’} ),
]
def GetFieldOrder(self): #字段的优先顺序
return [(‘title’, ‘abstract’)]

def Connected(self):   #如果是数据库,则在此处做数据库连接
if self.conn==None:
self.conn = cx_Oracle.connect(‘yzjs/a123456@10.166.166.222/genome’)
self.cur = self.conn.cursor()
sql = ‘SELECT t.id as id, t.title, t.abstract, t.search_type as search_type from V_SPHINX_INDEX t where t.title is not null and t.abstract is not null’
self.cur.execute(sql)
for rows in self.cur:
item = []
item.append(rows[0])
item.append(rows[1])
item.append(rows[2].read())
item.append(rows[3])
self.data.append(item)
pass

    def NextDocument(self):   #取得每一个文档记录的调用
if self.idx < len(self.data):
item = self.data[self.idx]
self.docid = self.id = item[0] #’docid’:True
self.title = item[1]#.decode(“GBK”).encode(“UTF-8”)
self.abstract = item[2]#.decode(“GBK”).encode(“UTF-8”)
self.search_type = item[3]
self.idx += 1
return True
else:
return False

if __name__ == “__main__”:    #直接访问演示部分
conf = {}
source = MainSource(conf)
source.Connected()
while source.NextDocument():
print “id=%d, subject=%s” % (source.id, source.abstract)#.decode(“UTF-8”))
pass
#eof

8、然后根据下面三段脚本,可以方便索引,启动,热索引数据

索引
/usr/local/coreseek/bin/indexer -c /root/coreseek-3.2.14/testpack/etc/csft_demo_python_pyoracle.conf –all
启动
/usr/local/coreseek/bin/searchd -c /root/coreseek-3.2.14/testpack/etc/csft_demo_python_pyoracle.conf
停止
/usr/local/coreseek/bin/searchd -c /root/coreseek-3.2.14/testpack/etc/csft_demo_python_pyoracle.conf –stop
重编译
/usr/local/coreseek/bin/indexer -c  /root/coreseek-3.2.14/testpack/etc/csft_demo_python_pyoracle.conf –all –rotate

 

9、引入sphinxapi.php,写如下代码测试

$cl = new SphinxClient ();
$cl -> SetServer ( ‘192.168.42.148’, 9312);
$cl -> SetConnectTimeout ( 3 );
$cl -> SetArrayResult ( true );
$cl -> SetMatchMode ( SPH_MATCH_ANY);
$data[‘res’] = $res = $cl -> Query ( $keyword, ‘*’ );

CodeIgniter初始化需要调整的文件

使用CI开发时,需要对原来的框架配置文件做少量调整,以便我们使用。由于开发时间过长,现在只能从svn调整的记录里面来找到这些东西,可能有些地方一时记不起来为什么要调整了,记录下来下次初始化时好用

1、autoload.php,加载我们需要的选项,共有两个需要调整的地方

image

2、config.php两个地方,上面用来固定路径,后面用来加密

image

image

 

3、database.php,根据自己的数据库配置情况来调整

image

ORACLE配置示例:

// oracle
$db['default']['hostname'] = '(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST =host.name.or.ip)(PORT = 1521))(CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = service.name)))';
$db['default']['username'] = 'username';
$db['default']['password'] = '111111';
$db['default']['database'] = '';
$db['default']['dbdriver'] = 'oci8';
$db['default']['dbprefix'] = '';
$db['default']['pconnect'] = TRUE;
$db['default']['db_debug'] = TRUE;
$db['default']['cache_on'] = FALSE;
$db['default']['cachedir'] = '';
$db['default']['char_set'] = 'utf8';
$db['default']['dbcollat'] = 'utf8_general_ci';
$db['default']['swap_pre'] = '';
$db['default']['autoinit'] = TRUE;
$db['default']['stricton'] = FALSE;

4、routes.php将默认的首页进行调整(可选,一般不建议调整成index)

image

另外,如果是配置oracle数据库,请将system\database\drivers\oci8\oci8_result.php文件修改一下,不然会报警告

image

5、子目录配置htaccess方案

<IfModule mod_rewrite.c>
    RewriteEngine on RewriteBase /sppt/ RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ ./index.php/$1 [L]
</IfModule>

6、在每个controller前加上这段代码

function __construct(){
    parent::__construct();
}

7、开启apache的rewrite模块

#LoadModule rewrite_module modules/mod_rewrite.so

Oracle学习

 

oracle university接触oracle已经好长时间了,始终没有系统的学习过,只局限于在工作中写一些开发代码,建一些存储过程而已。这次有机会去Oracle University培训还得益于有一们同事的离职,不然怕也到不了我。学习的过程是紧张而有序的,整个过程正好适当,这个适当的含义是它既不太容易,容易到自己一看就会,不屑于去学习;也不太难,难到完全听不懂;恰到好处的一个点会更容易激发人的积极性。12月5号到16号,共去了两周。分为两个老师上课,第一个叫童廉进,第二个叫唐涛;两个各有特点,童是一个比较老实的人,他会想把所有知道的东西都告诉你,然后下课让你认认真真的做QUIZ,实验也会安排你去做。但他却不太善于把握时间,总是该下课的时候才讲了一半,一看时间来不及了,只好压缩我们的实验时间,其实他也是太想把知道的内容灌输给我们了,但结果是我们在一堂课下来能够吸收的更少罢了;而唐是另外的一种人,他总是把教材上的东西一提而过,取代的是自己新手实践;实践完毕后直接告诉你,教材上就是刚才他所实践的东西。进度飞快,每堂课基本上不超过半小时。这样的好处是,我们有更多自由的时间吸收他上课讲的那些精华的东西,也有时间休息一下我们的大脑来接收下一堂课要学的内容;些触发器罢了;在万达的时候,每隔一段时间就会有数据库培训的相关内容,但时间毕竟太短——少的时候半天,多的时候才一天。

从课程上来说,oracle的使用并不复杂,但为什么课程却设置了这么多奇奇怪怪的东西呢?第一门课是理论知道,这一部分还是有必要的,可以供你了解oracle的内部结构,第二门课主要讲述了一些高级应用,但在我看来,高级应用主要是讲数据的备份与恢复,无论从哪个层面上的备份(表空间,或者数据库),最主要的目的是怎么样使你的数据库高效安全的运行,如何处理大批量的数据;他给我们讲的一个经典是,背景:一个数据库有全库备份,然后把控制文件,日志文件,数据文件等都删掉了,怎么样从那个全库备份中恢复过来;可能你会想,这个很容易啊,你已经做了全库备份了,怎么会不能恢复过来呢?但问题是如果你知道oracle有时间点限制怕你就不再这么乐观了;数据库的恢复分为完全恢复和不完全恢复,这种情况下,就只能进行不完全恢复。但不完全恢复也有一个一致点的概念,就是日志文件头跟数据文件头跟控制文件头要一致,数据库才会启动,这三样缺一不可,这样的话,即使你把原来的全库备份拿过来了,也不一定能够找到这样一个一致点进行恢复,而不能恢复造成的结果很可能就是整个数据库不能再启动了。这个是他说的最麻烦的一个事例,但后面想一想也没那么的复杂,即使整个数据库都启不来了,我还可以把备份文件导出到一个新建的数据库中,这样也可以恢复到一个时间点;

这次的学习还第一次让我接触到了RMAN,让我意识到,英文上课是多么痛苦的一件事情。但上课的时光也是很开心的,可以接触到不一样的人,不一样的环境,思考更多不一样的事情。比如我们见到的一个台湾人,就跟我们讲了一些台湾与大陆生活习惯上的差别,在我们紧张学习中增添了乐趣【完】