记得以前在实习的时候使用过PowerDesigner连接过本机Oracle数据库,但是是在本机安装了Oracle服务器,所以附带的一些连接oracle的ODBC驱动以及环境变量等的配置当时都很简单。所以自然而然在用PowerDesigner的反向工程,并导出其数据模型的时候也没出什么大问题,很容易就配置好了。
但是这次没有装oracle服务器端,而是仅仅装了oracle客户端,然后访问远程Unix服务器上的oracle数据库,碰到了很多问题。下面将这些问题分享,希望能帮助碰到类似问题的朋友以供参考。
1.安装是Oracle 10.2客户端。
2.完了就准备配置连接oracle的ODBC数据源。
Start→Programs→Oracle-OraDb10g_home1→Configuration and Migration Tools→Microsoft ODBC Administrator,选择 系统dsn 选项卡,添加 Oracle in OraClient10g_home1。
Data Source Name: OCS 数据源名称,可以随便取
TNS Service Name: ocs TNS服务名,这个是根据我之前装(Oracle9i精简客户端时候配置的tnsnames.ora C:/Oracle/ora90/network/ADMIN/)
UserID:ods30 远程数据库登陆名
然后Test Connection输入密码后,出现了 unable to connect sqlstate=s1000 错误
ORA-12705:Cannot access NLS data files or invalied environments specified
以及
无法加载oracle in oradb10g_home2 odbc驱动程序的安装例程,因为存在系统错误代码998
(环境变量PATH上添加 :E:/oracle/product/10.2.0/client_1/;)
在网上搜到了 Windows XP Oracle and ODBC Configuration文章,分析是因为以前安装过Oracle9i精简客户端,现在安装的Oracle 10.2客户端,在配置ODBC的时候,不能依照C:/Oracle/ora90/network/ADMIN/tnsnames.ora来,而是要copy 配置文件tnsnames.ora在Oracle 10.2的安装目录下E:/oracle/product/10.2.0/client_1。
并且要修改注册表信息:(参考链接:http://topic.csdn.net/u/20081106/13/df67a576-03eb-4aad-9e2a-d6e837e00d75.html)
如果是Windows平台,注册表里 /HKEY_LOCAL_MACHINE/SOFTWARE/ORACLE 查找键 NLS_LANG,这个键由Oracle标准客户端安装创建, 值是 NA 。这个导致了 ORA-12705错误。解决方法就是修改NA为SIMPLIFIED CHINESE_CHINA.ZHS16GBK。
然后再Test Connection, 出现Connection successful! OK,ODBC数据源配置成功。
3.ODBC配置完,然后就是打开PD工具,配置相应数据库连接,并反向生成相应的数据模型了。
打开PowerDesigner,Database->configure connections,若上面配置成功,则会在ODBC Machine Data Sources选项卡中出现相应的数据源。
连接数据库,Database->connect ,选择ODBC machine data source,选择刚配置的OCS(Oracle in OraClient 10g_home1) ,保证数据库登陆名和密码正确。应该就可以正常连接了。
接下来就是从数据库中导出数据库表反向生成相应的数据模型了:Database->Reverse Engineer Database ,选择Using a data source:OCS(Oracle in OraClient 10g_home1) 就可以生成数据库中对应的数据模型了。
若出现unable to list users错误,则可能是因为在新建物理数据模型是没有选择正确的DBMS,解决办法是
Database->Change Current DBMS->Oracle Version 10g(我这里连接的远程数据库版本是 Oracle 10g,这里根据自己连接到数据库类型和版本选择相应的ok了)