elephant-wp

oracle11g服务器配置(web服务器win server 2008 64bit ;oracle服务器win server 2008 64bit;开发环境win7 32bit环境)

服务器环境和开发环境:

Oracle数据库服务器:win server2008 64bit;  Oracle 11g服务器端(11.2.0.1.0 )

Web服务器:win server2008 64bit;IIS7.0 ;安装.net framework4.0;oracle client 11g 32bit

开发环境:oracle 11g服务器端;  win7 32bit操作系统

附图:Web服务器安装软件的路径和安装程序说明。

                       

 

代码开发完成后,发布到web服务器过程中遇到的问题及解决方案:

问题

安装完.NET Farmwork 4.0,Oracle11g客户端后,使用System.Data.OracleClient访问Oracle数据库时收到如下信息

System.Data.OracleClient requires Oracle client software version 8.1.7 or greater.

大意就是Oracle客户端至少需要8.1.7或更高版本(才能正常运行)。

                       

原因:

Oracle Client在安装到Windows的NTFS分区下时的安全认证设置不正确,引起本机的Authenticated Users用户无法看到ORACLE_HOME目录下的内容; 这导致在ASP.NET以Authenticated Users权限使用System.Data.OracleClient连接Oracle数据库时报出以上错误。

解决方案:

要解决以上问题,只要给Authenticated Users 组加上访问Oracle Home目录的权限即可

以Administrator权限登录Windows.

启动Window 资源浏览器找到ORACLE_HOME目录,如C:\Oracle\ora92

右键弹出菜单,选择该目录共享与安全(Win2000下要点击属性)

点击 “安全” 页签

在组和用户名称列表中点击“Authenticated Users” 项.

在该用户的权限列表中,将“读取和运行”的选择框置为不选中状态

再次点击“读取和运行”的选择框,将其设置为选中状态

点击“高级”按钮并在权限项目中确定“Authenticated Users” 是否拥有“读取并运行”权限并应用于“该文件夹,及子文件夹和文件”. 如果不是,双击这样,并确保权限可以“应用于” “该文件夹,及子文件夹和文件”. 该项非常重要你一定要核查.

点击“确定” 按钮

重启动, 以使得所有的修改生效.

附图:为Administrator组添加NETWORK SERVICE权限

 

 

 

 

 

 

问题:

 

打包环境win7 64bit,web服务器安装64bit oracle client,依然报出以下错误。

 

解决方案:

通过下面6步操作解决

一、IIS环境配置

二、设置远程Oracle数据库服务器

三、在web服务器安装Oracle client

四、配置web服务器端Oracle Net Services

五、配置环境变量

六、修改注册表

 

 

一、IIS环境配置:

图8-1:IIS根目录视图用红圈标识的3个需要配置的选项。

 

图8-2:第一个需要配置的选项“ISAPI和CGI”把限制项全部改为“允许”。

 

图8-3:第二个需要配置的选项“目录浏览”改为“启用”。

 

图8-4:第三个需要配置的选项 “身份验证”的状态项改为“启用”

 

图8-5:给发布的网站目录添加权限:1.选中发布网站名称。2.单击编辑权限,弹出属性对话框,在“安全”选项卡中点击 “编辑”à“添加”à“高级”à“立即查找”3.选择“IIS_IUSES”后单击“添加”。4.勾选“完全控制”选项。

 

图8-6:更改显示的首页面“默认文档”

 

图8-7:添加要显示的首页面名称,并通过右侧的菜单移动列表的第一位置。

 

图8-8:配置应用程序池:1.双击“应用程序池”。2.选择发布网站的应用程序池。3.单击“设置应用程序池设置”选择项进行修改“.NET Framwork版本”为“v4.0”“启用32位应用程序”设置为“ture”“托管管道模式”更改为“Classic”。

 

 

二、设置远程Oracle数据库服务器:

    添加数据库实例并开启监听

 

 

三、在web服务器安装Oracle client:

  1. 找到安装文件后选中,右键以“管理员身份运行”。
  2. 选择“管理员”类型安装,如图8-2所示。
  3. 安装目录选择“是”,如图8-4所示。

图8-1:

 

图8-2:

 

图8-3:

 

图8-4:

 

图8-5:

图8-6:

 

图8-7:

 

图8-8:

 

四、配置web服务器端Oracle Net Services:

1.开始à运行àcmdànetca。

2.按附图选项进行操作。

图17-1:

 

图17-2:选择“本地网络服务名配置”后,单击下一步。

 

图17-3:选择“添加”后,单击下一步。

 

图17-4:“服务名”填写“要访问的远程数据库实例名称”后,单击下一步。

图17-5:选择“TCP”后,单击下一步。

 

图17-6: “主机名”填写“远程服务器的ip地址”,默认端口1521,单击下一步。

 

图17-7:选择“是,进行测试”选项后,单击下一步。

图17-8:提示连接测试不成功,是因为默认用户名是system;单击“更改登录”。

 

图17-9:单击“更改登录”后的对话界面。

 

图17-10:填写要访问的远程数据库实例的用户名和密码,单击 “确定”。

 

图17-11:确认连接测试成功,出现下图界面后单击下一步。

 

图17-12:填写程序通过Oracle客户端访问远程数据库的服务名(程序连接字符串使用),单击下一步。

 

图17-13:选择“否”,单击下一步。

 

图17-14:单击下一步。

图17-15:单击完成,配置完毕。

 

图17-16:配置完毕后dos窗口会出现以下提示,connect 用户名/密码@如图17-12设置的服务名称

 

图17-17:select * from employee;查询数据库表返回结果

 

五、配置环境变量:

计算机à属性à高级系统设置à环境变量(如附图所示,把下5项依次进行添加设置)

  1. LD_LIBRARY_PATH=C:\Oracle\OracleInstantClient_11_2
  2. ORACLE_HOME=C:\Oracle\OracleInstantClient_11_2
  3. PATH=%PATH%;C:\Oracle\OracleInstantClient_11_2
  4. SQLPATH=C:\Oracle\OracleInstantClient_11_2
  5. TNS_ADMIN=C:\Oracle\OracleInstantClient_11_2\network\admin

附图:

 

六、修改注册表

问题:

程序放上去后,发现无法连接到Oracle数据库,提示需要更多信息(录入数据服务器名,数据库名,用户名和密码),当时怀疑是TNS的问题,检查已经安装好64(or32)位Oracle客户端的tnsnames.ora,没有问题,ASP.NET程序中通过OracleConnect访问数据库也没有问题。检查32位的连接对象无法通过64位的Oracle client 访问64位的Oracle 11g,需要安装32位的客户端,安装32位客户端后,32位Oracle 客户端的Net Configuration Assistant一直不打不开,Enterprise Manager Console可以打开但一连接就出现 "ORA-06413:连接未打开"这个错误。

原因:

经过搜集解决方案:文中提及Oracle的一个BUG,因为Oracle的Net Service在解析连接的时候存在一个Bug,无法解析路径中包括的圆括号。而在64位系统上32位的ProgramFilesDir (x86)和CommonFilesDir (x86) 都默认会被安装到C:/Program Files (x86)这个目录下。不知道如何修改默认的安装路径(安装程序会把一些文件自动安装到C:/Program Files (x86)这个目录下)

解决方案:

修改注册表,开始regedit命令打开注册表,共修改两处。

  1. HKEY_LOCAL_MACHINE>>Microsoft>>Windows>>CurrentVersion

 

  1. HKEY_LOCAL_MACHINE>>Wow6432Node>> Windows>>CurrentVersion

 

 

其他:

程序中Oracle连接字符串的测试及应用:

经测试下列连接字符串,最终选用:

Data Source =(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=10.5.86.58)(PORT=1521))) (CONNECT_DATA=(SERVICE_NAME=SinopecMHMS)));User Id=mhms; Password=123;Unicode=True

 

 

Oracle XE   标准连接

Oracle XE(或者"Oracle Database 10g Express Edition")是一个简单免费发布的版本。

以下是语法格式:

Driver=(Oracle in XEClient);dbq=111.21.31.99:1521/XE;Uid=myUsername;Pwd=myPassword;

ODBC新版本连接方式

以下是语法格式:

Driver={Microsoft ODBC for Oracle};Server=myServerAddress;Uid=myUsername;Pwd=myPassword;

老版本连接方式

以下是语法格式:

Driver={Microsoft ODBC Driver for Oracle};ConnectString=OracleServer.world;Uid=myUsername;Pwd=myPassword;

OLE DB, OleDbConnection (.NET)

标准安全连接  此连接方式使用来自微软的Provider。

以下是语法格式:

Provider=msdaora;Data   Source=MyOracleDB;User   Id=myUsername;Password=myPassword;

信任连接

以下是语法格式:

Provider=msdaora;Data   Source=MyOracleDB;Persist   Security Info=False;Integrated   Security=Yes;

标准安全连接   此连接方式使用来自Oracle的Provider。

以下是语法格式:

Provider=OraOLEDB.Oracle;Data   Source=MyOracleDB;User   Id=myUsername;Password=myPassword;

信任连接

以下是语法格式:

Provider=OraOLEDB.Oracle;Data   Source=MyOracleDB;OSAuthent=1;

TNS-less 连接字符串

以下是语法格式:

Provider=OraOLEDB.Oracle;Data   Source=(DESCRIPTION=(CID=GTU_APP)(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=myHost)(PORT=myPort)))(CONNECT_DATA=(SID=MyOracleSID)(SERVER=DEDICATED)));User Id=myUsername;Password=myPassword;

Oracle.DataAccess.Client.OracleConnection

标准连接

以下是语法格式:

Data Source=TORCL;User Id=myUsername;Password=myPassword;

带integrated security的连接

以下是语法格式:

Data Source=TORCL;Integrated   Security=SSPI;

带 ODP.NET 不带 tnsnames.ora的连接

以下是语法格式:

Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=MyHost)(PORT=MyPort)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=MyOracleSID)));User Id=myUsername;Password=myPassword;

OracleConnection, Oracle Data Provider, ODP.NET, System.Data.OracleClient.OracleConnection

标准连接

以下是语法格式:

Data Source=MyOracleDB;Integrated Security=yes

仅在Oracle8i release 3 或更高版本   指明用户密与密码的连接

以下是语法格式:

Data Source=MyOracleDB;User   Id=myUsername;Password=myPassword;Integrated Security=no;

This one works only with Oracle 8i release 3 or later  省略tnsnames.ora

这是另一种连接方式不依赖你的DNS.You create a connection string based on the format used in the tnsnames.ora file without the need to actually have one of these files on the client pc.

以下是语法格式:

SERVER=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=MyHost)(PORT=MyPort))(CONNECT_DATA=(SERVICE_NAME=MyOracleSID)));uid=myUsername;pwd=myPassword;

Some reported problems with the one above and Visual Studio. Use the next one if you\'ve encountered problems.

以下是语法格式:

Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=MyHost)(PORT=MyPort))(CONNECT_DATA=(SERVICE_NAME=MyOracleSID)));User Id=myUsername;Password=myPassword;

使用连接池

连接池服务如果找不到一个完全匹配连接字符串的连接,他将会创建一个。如果能找到该连接,将会重新使用。

以下是语法格式:

Data Source=myOracleDB;User   Id=myUsername;Password=myPassword;Min Pool Size=10;Connection Lifetime=120;Connection Timeout=60;Incr Pool Size=5;Decr Pool Size=2;

Windows验证

以下是语法格式:

Data Source=myOracleDB;User   Id=/;

特权连接   使用SYSOPER的特权

以下是语法格式:

Data Source=myOracleDB;User   Id=SYS;Password=SYS;DBA Privilege=SYSOPER;

利用密码终止函数

当第一次打开连接时,当打开链接后,一个密码过期错误被抛出,捕获这个错误并执行OpenWithNewPassword命令行设置新密码。

以下是语法格式:

Data Source=myOracleDB;User   Id=myUsername;Password=myPassword;
 
  oConn.OpenWithNewPassword(sTheNewPassword);

代理验证

以下是语法格式:

         
   

Data Source=myOracleDB;User     Id=myUsername;Password=myPassword;Proxy User Id=pUserId;Proxy Password=pPassword;

   

Core Labs OraDirect (.NET) 标准连接

以下是语法格式:

User ID=myUsername;Password=myPassword;Host=ora;Pooling=true;Min Pool Size=0;Max Pool Size=100;Connection Lifetime=0;

Data Shape

以下是语法格式:

Provider=MSDataShape.1;Persist   Security Info=False;Data   Provider=MSDAORA;Data   Source=orac;User Id=myUsername;Password=myPassword;

可惜不能发图片,等能发了再上传。QQ:526237572 第一次用oracle,看的人觉得有遗漏请提出宝贵意见

分类:

技术点:

相关文章: