用户名:  密码:  验证码: 验证码  注册  找回
RSS
无双网
 2019年03月19日 星期二  您现在位于: 首页 → 技术文栏 → Linux版VMware vCenter对Postg...

Linux版VMware vCenter对PostgreSQL的支持研究

2011年06月25日  无双网  出处:
当VMware公司发布了vCenter服务器的Linux技术预览版本时,此次发布指出,它支持的只有甲骨文公司的Oracle数据库。我决定尝试对数据库架构进行修改,看我是否能使得PostgreSQL数据库与Linux版的vCenter 共同工作(第一部分中,我们讨论Linux 版的vCenter对MySQL技术的研究/20101129233436260.asp)。在这里,我们讨论关于Linux版本的VMware vCenter服务器,对支持PostgreSQL数据库的研究。

PostgreSQL是一个有效的,但不被支持的数据库

在我这个阶段的研究开始之前,我从一个全新的Linux 版vCenter程序开始。由于该设备在CentOS 5上运行 ,我去了CentOS 5网站并下载了以下的RPMS包:postgresql –odbc -08.01.0200 - 3.1.i386.rpm。之后把它们上传到了在Linux上的VMware vCenter VM,我安装它们是使用的下列命令:rpm -ivh postgresql-odbc-08.01.0200-3.1.i386.rpm postgresql-8.1.11-1.el5_1.1.i386.rpm

我也下载了Oracle开放式数据库连接( ODBC )和基本instantclient ZIP文件并上传到系统,这些都是在vCenter上的Linux安装Oracle所需要的。重新启动Linux版本的vCenter。在重新启动Linux的vCenter 过程中,将要求你配置Oracle的ODBC封装,我已经开始做了,甚至我还附加了一个PostgreSQL服务器。在进入数据库名称,主机名称,用户名和密码后,要注意的是设置将会失败,并询问我是否想继续下去。无论失败与否我都会继续,因为这一进程有助于建立必要的文件,我们将修改如下。

现在我们必须修改创建的ODBC文件。首先,我们需要添加PostgreSQL的连接信息到/ etc / odbcinst.ini文件。添加以下行:

[pgsql]
Description = PSQL ODBC for PostgreSQL 8.3.02
Driver = /usr/lib/psqlodbc.so
Setup =
FileUsage = 1
CPTimeout =
CPReuse =
UsageCount = 2

然后我改变了/ etc / odbc.ini文件中的DSN,因为现有的VMware vCenter条目是VMware vCenter Oracle,并增加以下几行。请务必包括你的IP地址的数据库,参数名称为IPofDatabaseServer ,你数据库的用户名—参数名称为PostgreSQLUserName,你的数据库密码—参数名称为password,把你的数据库名称用VC代替。

[VMware VirtualCenter]
Description = PostgreSQL
Driver = pgsql
DSN = VMware VirtualCenter
Trace = No
Database = VC
ServerName = IPofDatabaseServer
Username = PostgreSQLUserName
Password = Password
Port = 5432
Protocol = 6.4
ReadOnly = No
RowVersioning = No
ShowOidColumn = No
FakeOidInded = No
ConnSettings = No
UpdatableCursors = No

有以下命令进行安装:

odbcinst -i -d -f /etc/odbcinst.ini
odbcinst -i -s -l -f /etc/odbc.ini

在数据库服务器上创建一个名为VC的表,新增用户VC到这个数据库,然后使用下列命令测试连接情况。

odbcinst -s –q
isql -v "VMware VirtualCenter"

现在,这一工作,我们准备建立数据库。这个时候,我们是以Oracle自定义的表开始的,因为PostgreSQL的表与此表最相似。以文件/usr/lib/vmware-vpx/VCDB_oracle.sql开始。我随后创建了一个VCDB_postgresql.sql文件。

转换如下。但是,正如在第一部分的MySQL转换中讨论的那样,这些变化将迫使vCenter只支持UTF - 8的字符串。

* NVARCHAR2转换为VARCHAR
* VARCHAR2转换为VARCHAR
* NCLOB转换为TEXT
* NUMBER转换为NUMERIC(注意不要改变TO_NUMBER将TO_NUMERIC)
我们还需要SQL语句作一些修改,如下:

* 删除所有提及“组织索引” ,因为它不存在于postgresql之中 。
* NVL转换为COALESCE,但你需要确定这两个函数的类型是相同的。这两个值需要从1转换至'1.' 。
* TO_NUMBER采取了第二个参数的'9999999999999999 '
* insert into vpx_device select 1,null from dual; to insert into vpx_device VALUES(1,null); ;
* select vpx_device_seq.nextval from dual; to select nexval('VPX_DEVICE_SEQ');

使用以下的命令,搭建PostgreSQL数据库服务器的新架构。注意:你可以使用你的PostgreSQL服务器的IP地址代替IPOfDatabaseServer 参数,用你的PostgreSQL用户名代替PostgreSQLUserName参数 ,并且这个命令将要求输入密码。

pgsql -p -h IPOfDatabaseServer -u PostgreSQLUserName < VCDB_postgresql.sql

重新启动LinuxvCenter,日志文件中显示了unixODBC错误, vCenter无法连接到该数据库。因此,我改变了/ etc / odbcinst.ini文件,使用PostgreSQL中ODBC驱动程序附带的unixODBC等。

[pgsql]
Description = PSQL ODBC for PostgreSQL 8.3
Driver = /usr/lib/libodbcpsql.so
Setup = /usr/lib/libodbcpsqlS.so
FileUsage = 1
CPTimeout =
CPReuse =
UsageCount = 3

用以下命令安装:

odbcinst -i -d -f /etc/odbcinst.ini
odbcinst -i -s -l -f /etc/odbc.ini

在数据库服务器上创建一个名为Vc的表,添加用户VC到这个数据库,然后使用下列命令测试连接。

odbcinst -s –q
isql -v "VMware VirtualCenter"

然后我重新启动Linux上的vCenter和连接的同时, vCenter与它发现的数据库不兼容。我们碰到下面的错误信息。

[ 2009年3月1日13:09:31.384 '应用' 1767104错误] [ VpxdVdb ]初始化init tableDef失败:在表VPX_VERSION中栏VER_ID中不存在 。数据库的版本可能不兼容。

我认为这是有关PostgreSQL的编码方式是所有声明为小写,但将表和字段名修改为大写的结果依然是无法找到表。只将版本名称修改为大写也不起作用。因此,其他一些问题正发生在vCenter服务器的代码,它阻止了正常工作。我使用以下命令确实确认当前栏和数据库是存在的,这显示字段确实是存在的。



此外,当我们将字段' ver_id '修改成大写,同样我们又得到类似如下所示的结果和以前相同的错误。



研究结果

那么这个研究告诉我们?MySQL和PostgreSQL可以处理数据库的新建,以及存储过程的端口,但你被限制在所有字符串变量都以UTF - 8字符格式存储(这将影响到亚洲的vCenter用户) 。但是,如果一些变化为UTF - 16的基本表结构的(多字节的Unicode )字符可以被MySQL支持。目前,虽然Linux版的vCente的不兼容MySQL ;它将竭尽全力不让其使用。 PostgreSQL没有被完全否认,但它作为一个数据库不会与vCenter很好的工作是由于其他错误。显然,仍有一些工作要做,但其中一些艰难的部分已经完成,如:找到了合适的数据库版本,以及如何将ODBC安装到数据库,模式和视图端口。
 (本文已被浏览 454 次)
 发布人:[标签:发布人]
 → 推荐给我的好友
上篇文章:VC中无法添加host
下篇文章:如何让Linux版VMware vCent...
发表评论
  → 评论内容 (点击查看)   共0条评论,每页显示5条评论   浏览所有评论
(没有相关评论)
  → 发表我的评论 (点击发表)
热门文章
 保存webbrowser中的HTML内...
 全部DLL下载
 用VB6.0设计简易赛车游戏
 MSFlexGrid使用技巧一例
 游戏对照表
 添加红月装备的详细教程 (包括装备 武...
 Win2003+Discuz!5.5+II...
 用vb6的ActiveX控件实现异步下...
 PC经典RPG《仙剑奇侠传Ⅰ》for PP...
 利用压缩网页来提升网站浏览速度
最新文章
 [ODBC SQL Server Driv...
 评论:115网盘的何去何从
 我科学家实现百公里量级自由空间量子隐形...
 中国智能手机出货量占全球27%居世界之...
 Gartner:2012 第二季度西欧 P...
 [多图]华山论剑:当今在世的智商最高的...
 三星获出租车服务系统专利 可快速查看驾...
 [多图]15项可能延续到2030年的科...
 分析称苹果三星专利大战输赢已成定论
 Google终获云操作系统专利
 网站留言· 友情链接·与我在线·网站地图联系我们·管理·TOP 
 陕ICP备09004157号  
 Copyright © 2012 Asp126.com Inc. All Rights Reserved.Processed in 0.016s, 8 queries, 35 Cache,0 Online