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:
- 找到安装文件后选中,右键以“管理员身份运行”。
- 选择“管理员”类型安装,如图8-2所示。
- 安装目录选择“是”,如图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项依次进行添加设置)
- LD_LIBRARY_PATH=C:\Oracle\OracleInstantClient_11_2
- ORACLE_HOME=C:\Oracle\OracleInstantClient_11_2
- PATH=%PATH%;C:\Oracle\OracleInstantClient_11_2
- SQLPATH=C:\Oracle\OracleInstantClient_11_2
- 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命令打开注册表,共修改两处。
- HKEY_LOCAL_MACHINE>>Microsoft>>Windows>>CurrentVersion
- 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; |
代理验证
|
以下是语法格式:
|
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,看的人觉得有遗漏请提出宝贵意见