如何配置cx_Oracle通过tns连接timesten

发布时间 2023-06-08 14:05:21作者: slnngk

环境:

OS:Centos 7

DB:18.1.4

Python:3.6

 

1.安装oracle瘦客户端
rpm -ivh oracle-instantclient12.2-basic-12.2.0.1.0-1.x86_64.rpm

安装路径为:/usr/lib/oracle/12.2/client64,将该目录权限授权给到instanceadmin账号
[root@localhost ~]# chown -R instanceadmin:timesten /usr/lib/oracle

 

2.安装timesten软件
查考timesten安装连接
https://www.cnblogs.com/hxlasky/p/17451264.html
我们这里只安装软件和创建实例,但不需要启动实例

 

3.编辑环境变量

[instanceadmin@localhost ~]$ more .bash_profile
# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi

# User specific environment and startup programs
export TIMESTEN_HOME=/opt/tt18.1.4.34.0/hxl
export ORACLE_HOME=/usr/lib/oracle/12.2/client64
export PATH=$ORACLE_HOME/bin:$TIMESTEN_HOME/bin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/opt/tt18.1.4.34.0/lib:$LD_LIBRARY_PATH
TNS_ADMIN=/opt/tt18.1.4.34.0/network/admin

export PATH

 

4.创建tnsnames.ora文件
su - instanceadmin
mkdir -p /usr/lib/oracle/12.2/client64/admin

cd /usr/lib/oracle/12.2/client64/admin
vi tnsnames.ora
加入如下条目:
tt_tns=(DESCRIPTION =(CONNECT_DATA =(SERVICE_NAME = ttdbCS)(SERVER = timesten_client)))

或者是从timesten安装目录的如下目录拷贝一个tnsnames.ora过来进行修改
/opt/tt18.1.4.34.0/network/admin

 

5.timesten配置文件

[instanceadmin@localhost conf]$ more sys.odbc.ini 
[ODBC Data Sources]
ttdb=TimesTen 18.1 Driver
ttdbCS=TimesTen 18.1 Client Driver

[ttdb]
Driver=/opt/tt18.1.4.34.0/hxl/install/lib/libtten.so
DataStore=/ttdb_data/ttdb
PermSize=512
TempSize=128
LogBufMB=256
LogFileSize=256
LogDir=/ttdb_log
DatabaseCharacterSet=ZHS16GBK
ConnectionCharacterSet=ZHS16GBK
OracleNetServiceName=ttorcl


[ttdbCS] 
TTC_SERVER=ttdb_CS
TTC_SERVER_DSN=ttdb

 

[instanceadmin@localhost conf]$ more sys.ttconnect.ini 
# Copyright (c) 1999, 2015, Oracle and/or its affiliates. All rights reserved.

###############################################################
# This is a sample sys.ttconnect.ini file that is used for the
# TimesTen Client. It contains entries for each server.
###############################################################

[ttdb_CS]
Description=TimesTen Server
Network_Address=192.168.1.101
TCP_Port=6625

 

6.python程序

#!/usr/bin/env python
#coding=utf-8
import os, json, urllib, datetime, shutil,random,uuid
from random import choice
import pymysql
import traceback
import time

import cx_Oracle
import pyodbc

def connect_timesten_db():
    connection = cx_Oracle.connect("hxl", "oracle", "tt_tns",encoding="UTF-8")
    cursor = connection.cursor()
    cursor.execute("insert into tb_test values (42,42)")
    connection.commit()
    connection.close()


if __name__ == '__main__':
    print("开始时间:"+time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time())))
    ##l_flag = insert_data_for_doris()
    l_flag=connect_timesten_db()
    print("结束时间:"+time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time())))