当前的SAS系统提供了许多数据库管理的功能,包括数据库视图和一套扩展的ANSI SQL语言。SAS包括了几个用来获取关系型数据库的过程。我们将探讨如何基于SAS系统平台来实现网络工作站与远程Oracle服务器的连接。
虽然这里讨论的是如何使用SAS/Access和SAS/SQL来连接Oracle数据库的,但原理同样适用于DB2、Sybase、Informix、ODBC、OLE DB、SQL Server以及Teradata等客户端/服务器系统。SAS/Access是基于客户端/服务器系统而开发的,这就需要独立的数据库引擎来为本地应用提供数据服务。转载,仅供参考。
如何配置才能使客户端连到数据库:\x0d\\x0d\要使一个客户端机器能连接oracle数据库,需要在客户端机器上安装oracle的客户端软件,唯一的例外就是java连接数据库的时候,可以用 \x0d\jdbc \x0d\thin模式,不用装oracle的客户端软件。加入你在机器上装了oracle数据库,就不需要在单独在该机器上安装oracle客户端了,因为装 \x0d\oracle数据库的时候会自动安装oracle客户端。\x0d\ 用过sql \x0d\server数据库然后又用oracle的新手可能会有这样的疑问:问什么我用sql server的时候不用装sql \x0d\server的客户端呢?原因很简单,sql server也是microsoft的,它在 *** 作系统中集成了sql \x0d\server客户端,如果microsoft与oracle有协议,将oracle客户端也集成到 *** 作系统中,那我们也就不用在客户端机器装oracle\x0d\ 客户端软机就可访问数据库了,不过,这好像是不可能实现的事情。\x0d\ 也有的人会问:为什么在sql \x0d\server中没有侦听端口一说,而在oracle中要配置侦听端口?其实sql \x0d\server中也有侦听端口,只不过microsoft将侦听端口固定为1433,不允许你随便改动,这样给你一个错觉感觉sql \x0d\server中没有侦听端口,咳,microsoft把太多的东西都封装到黑盒子里,方便使用的同时也带来的需要副作用。而oracle中的侦听端口直接\x0d\ 在配置文件中,允许随便改动,只不过无论怎样改动,要与oracle服务器端设置的侦听端口一致。\x0d\好,言归正传,我们如何做才能使客户端机器连接到oracle数据库呢?\x0d\A. 安装相关软件\x0d\B. 进行适当的配置\x0d\\x0d\A.在适当的位置安装适当的软件:\x0d\在客户端机器:\x0d\1.在客户端机器上安装ORACLE的Oracle Net通讯软件,它包含在oracle的客户端软件中。\x0d\2.正确配置了sqlnetora文件:\x0d\NAMESDIRECTORY_PATH = (TNSNAMES, )\x0d\NAMESDEFAULT_DOMAIN=DB_DOMAIN\x0d\一般情况下我们不用NAMESDEFAULT_DOMAIN参数。如果想不用该参数用#注释掉或将该参数删除即可,对于NAMESDIRECTORY_PATH参数采用缺省值即可,对于NAMESDEFAULT_DOMAIN参数有时需要注释掉,在下面有详细解释。\x0d\3.正确配置了tnsnameora文件\x0d\\x0d\在服务器端机器:\x0d\1.保证listener已经启动\x0d\2.保证数据库已经启动。\x0d\如果数据库没有启动,用:\x0d\Oracle 9i:\x0d\dos>sqlplus “/ as sysdba”\x0d\sqlplus> startup\x0d\Oracle 8i:\x0d\dos>svrmgrl\x0d\svrmgrl>connect internal\x0d\svrmgrl>startup\x0d\命令启动数据库\x0d\如果listener没有启动,用:\x0d\lsnrctl start [listener name]\x0d\lsnrctl status [listener name]\x0d\命令启动listener\x0d\B.进行适当的配置\x0d\如何正确配置tnsnameora文件:\x0d\\x0d\可\x0d\ 以在客户端机器上使用oracle Net Configuration Assistant或oracle Net \x0d\Manager图形配置工具对客户端进行配置,该配置工具实际上修改tnsnamesora文件。所以我们可以直接修改tnsnamesora文件,\x0d\ 下面以直接修改tnsnamesora文件为例:\x0d\该文件的位置为: \network\admin\tnsnamesora (for windows)\x0d\/network/admin/tnsnamesora (for unix)\x0d\此处,假设服务器名为testserver,服务名为orcltestservercom,使用的侦听端口为1521,则tnsnamsora文件中的一个test网络服务名(数据库别名)为:\x0d\test =\x0d\(DESCRIPTION=\x0d\(ADDRESS_LIST=\x0d\(ADDRESS=(PROTOCOL=TCP)(HOST=testserver)(PORT=1521))\x0d\)\x0d\(CONNECT_DATA=(SERVICE_NAME=orcltestservercom)\x0d\)\x0d\)\x0d\此处的笑脸为)。\x0d\ 红色的内容为需要根据实际情况修改的内容,现解释如下:\x0d\ PROTOCOL:客户端与服务器端通讯的协议,一般为TCP,该内容一般不用改。\x0d\\x0d\HOST:数据库侦听所在的机器的机器名或IP地址,数据库侦听一般与数据库在同一个机器上,所以当我说数据库侦听所在的机器一般也是指数据库所在的机 \x0d\ \x0d\器。在UNIX或WINDOWS下,可以通过在数据库侦听所在的机器的命令提示符下使用hostname命令得到机器名,或通过ipconfig(for\x0d\ WINDOWS) or ifconfig(for \x0d\UNIX)命令得到IP地址。需要注意的是,不管用机器名或IP地址,在客户端一定要用ping命令ping通数据库侦听所在的机器的机器名,否则需要在\x0d\ hosts文件中加入数据库侦听所在的机器的机器名的解析。\x0d\\x0d\PORT:数据库侦听正在侦听的端口,可以察看服务器端的listenerora文件或在数据库侦听所在的机器的命令提示符下通过lnsrctl status [listener name]命令察看。此处Port的值一定要与数据库侦听正在侦听的端口一样。\x0d\ SERVICE_NAME:在服务器端,用system用户登陆后,sqlplus> show parameter service_name命令察看。\x0d\ 如何利用配置的网络服务名连接到数据库:\x0d\ 用sqlplus程序通过test网络服务名进行测试,如sqlplus system/manager@test。\x0d\ 如果不能连接到数据库,则在tnsnameora文件中的test网络服务名(net \x0d\service)后面加上sqlnetora文件中NAMESDEFAULT_DOMAIN参数的值,此处我的参数值为 \x0d\testservercom,将其加到网络服务名后面,修改后的tnsnameora中关于该网络服务名的内容为:\x0d\\x0d\ 什么情况下会引起oracle自动设置NAMESDEFAULT_DOMAIN参数?\x0d\ \x0d\ 出现这种情况的典型环境为windows的客户端的‘我得电脑à属性à计算机名à更改à其它à此计算机的主DNS后缀’中设置了‘primary \x0d\ dns \x0d\suffix’,因为在这种情况下安装客户端时,会在sqlnetora文件中自动设置NAMESDEFAULT_DOMAIN参数,或许当把计算机\x0d\ 加入域中安装oracle客户端时也会出现这种情况,有条件的话大家可以试一下。\x0d\\x0d\我在设置oracle的客户端时一般手工修改tnsnamesora文件,但是还有许多人喜欢用图形工具配置,该图形工具最终还是修改tnsnamesora文件,但是它有时会引起其它的问题:\x0d\\x0d\在用oracle的图形配置软件'net assistant'或‘Net Configuration \x0d\Assistant’配置网络服务名时,假如已经设置了‘primary dns \x0d\suffix’,但是在图形配置软件中写的网络服务名的名字中没有‘primary dns \x0d\suffix’,如只是写了test,则图形配置软件会自动在后面加上‘primary dns \x0d\suffix’,使之变为testtestservercom,并存在tnsnamesora中,而不管你的sqlnetora文件中是否有 \x0d\NAMESDEFAULT_DOMAIN参数。此时,用图形工具进行测试连接是通过的,但是假如此时sqlnetora文件中没有 \x0d\NAMESDEFAULT_DOMAIN参数,则你在使用网络服务名时应该使用在tnsnamesora中的 \x0d\testtestservercom,而不是你在图形配置软件中键入的test。解决的办法为:\x0d\可以在sqlnetora文件中设置NAMESDEFAULT_DOMAIN= testservercom,这时你可以用test或testtestservercom连接数据库\x0d\在sqlnetora文件中不设置NAMESDEFAULT_DOMAIN参数,在tnsnamesora文件中将testtestservercom中的testservercom去掉,这时你可以用test连接数据库。\x0d\\x0d\关于为什们在网络服务名后面加db_domain参数,需要了解sqlplus连接数据库的原理,我在后面解决12154常见故障中给出了详细的说明。\x0d\\x0d\如果上面的招数还不奏效的话,只好用一下乾坤大挪移了。\x0d\将客户端的网络服务名部分\x0d\testtestservercom =\x0d\(DESCRIPTION=\x0d\(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=testserver)(PORT=1521))\x0d\)\x0d\(CONNECT_DATA=(SERVICE_NAME=orcltestservercom)\x0d\)\x0d\)\x0d\此处的笑脸为)。\x0d\拷贝到服务器的tnsnamesora文件中。然后再服务器端用sqlplus system/manager@testtestservercom连接到数据库。\x0d\ 如果能连接成功,说明你的客户端与服务器端的网络有问题。\x0d\ 如果连接不成功,用前面的部分检查网络服务名部分部分是否正确,如果确信网络服务名部分正确而且所有的客户端都连不上数据库则可能为系统TCP/IP或Oracle系统有问题,建议重新安装数据库。\x0d\该错误表示用于连接的网络服务名在tnsnamesora文件中不存在,如上面的tnsnamesora中的网络服务名只有test,假如用户在连接时用sqlplus system/manager@test1则就会给出TNS-12154错误。\x0d\要注意的是,有时即使在tnsnamesora文件中有相应的网络服务名,可是用该网络服务名连接时还会出错,出现这种情况的典型配置如下(在客户端的机器上):\x0d\sqlnetora文件:\x0d\NAMESDIRECTORY_PATH = (TNSNAMES, )\x0d\NAMESDEFAULT_DOMAIN = servercom\x0d\tnsnamesora文件:\x0d\test =\x0d\(DESCRIPTION=\x0d\(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=testserver)(PORT=1521))\x0d\)\x0d\(CONNECT_DATA=(SERVICE_NAME=orcltestservercom)\x0d\)\x0d\)\x0d\此处的笑脸为)。\x0d\sqlplus运行基本机理:\x0d\ 在用户输入sqlplus system/manager@test后,sqlplus程序会自动到sqlnetora文件中找NAMESDEFAULT_DOMAIN参数,假 如该参数存在,则将该参数中的值取出,加到网络服务名的后面, \x0d\\x0d\即此例中你的输入由sqlplus system/manager@test自动变为sqlplus system/manager@testservercom\x0d\ \x0d\,然后再到tnsnamesora文件中找testservercom网络服务名,这当然找不到了,因为该文件中只有test网络服务名,所以报 \x0d\ 错。解决的办法就是将sqlnetora文件中的NAMESDEFAULT_DOMAIN参数注释掉即可,如 \x0d\#NAMESDEFAULT_DOMAIN = \x0d\servercom。假如NAMESDEFAULT_DOMAIN参数不存在,则sqlplus程序会直接到tnsnamesora文件中找 \x0d\test网络服务名,然后取出其中的host,port,tcp,service_name,利用这些信息将连接请求发送到正确的数据库服务器上。\x0d\ 另外原则上tnsnamesora中的配置不区分大小写,但是我的确遇到区分大小写的情况,所以最好将使用的网络服务与tnsnamesora中配置的完全一样。\x0d\ORA-12514: TNS:listener could not resolve SERVICE_NAME given in connect Descriptor\x0d\该错误表示能在tnsnamesora中找到网络服务名,但是在tnsnamesora中指定的SERVICE_NAME与服务器端的SERVICE_NAME不一致。解决的办法是修改tnsnamesora中的SERVICE_NAME。\x0d\\x0d\ 易混淆术语介绍:\x0d\ \x0d\ Db_name:对一个数据库(Oracle database)的唯一标识,该数据库为第一章讲到的Oracle \x0d\database。这种表示对于单个数据库是足够的,但是随着由多个数据库构成的分布式数据库的普及,这种命令数据库的方法给数据库的管理造成一定的负 \x0d\ 担,因为各个数据库的名字可能一样,造成管理上的混乱。为了解决这种情况,引入了Db_domain参数,这样在数据库的标识是由Db_name和 \x0d\Db_domain两个参数共同决定的,避免了因为数据库重名而造成管理上的混乱。这类似于互连网上的机器名的管理。我们将Db_name和 \x0d\Db_domain两个参数用’’连接起来,表示一个数据库,并将该数据库的名称称为Global_name,即它扩展了Db_name。 \x0d\Db_name参数只能由字母、数字、’_’、’#’、’$’组成,而且最多8个字符。\x0d\\x0d\ Db_domain:定义一个数据库所在的域,该域的命名同互联网的’域’没有任何关系,只是数据库管理员为了更好的管理分布式数据库而根据实际情况决定的。当然为了管理方便,可以将其等于互联网的域。\x0d\\x0d\Global_name:对一个数据库(Oracle \x0d\database)的唯一标识,oracle建议用此种方法命令数据库。该值是在创建数据库是决定的,缺省值为Db_name \x0d\Db_domain。在以后对参数文件中Db_name与Db_domain参数的任何修改不影响Global_name的值,如果要修改 \x0d\Global_name,只能用ALTER DATABASE RENAME GLOBAL_NAME TO \x0d\命令进行修改,然后修改相应参数。\x0d\\x0d\Service_name:该参数是oracle8i新引进的。在8i以前,我们用SID来表示标识数据库的一个实例,但是在Oracle的并行环境中,\x0d\ \x0d\一个数据库对应多个实例,这样就需要多个网络服务名,设置繁琐。为了方便并行环境中的设置,引进了Service_name参数,该参数对应一个数据库,\x0d\ 而不是一个实例,而且该参数有许多其它的好处。该参数的缺省值为Db_name \x0d\Db_domain,即等于Global_name。一个数据库可以对应多个Service_name,以便实现更灵活的配置。该参数与SID没有直接关\x0d\ 系,即不必Service name 必须与SID一样。\x0d\Net service name:网络服务名,又可以称为数据库别名(database alias)。是客户端程序访问数据库时所需要,屏蔽了客户端如何连接到服务器端的细节,实现了数据库的位置透明的特性。
Oracle上周末表示该公司正在收购GoldenGate Sofare 以便在其产品中加入新的高可用性和数据整合功能
对于Oracle来说 此次并购使得该公司可以提供业务关键型应用程序的连续访问 同时还有高性能的数据整合 GoldenGate针对实时数据整合的事务型数据管理平台——移动 复制和同步——以及高可用性企业应用程序使得管理人员可以在迁移和升级的过程中也可以轻松地维持应用程序的运行
GoldenGate同时还提供实时数据仓库和变化数据获取 实时报告和事务型数据整合 使企业解决方案和企业智能及服务导向型架构整合在一起——Oracle所从事的关键应用程序领域
这笔交易的条件尚未公布 通过此次收购 Oracle还可以为使用竞争对手系统的客户提供这些服务 包括使用微软SQL Server IBM DB Sybase ASE和Teradata的用户
Oracle Fusion中间件产品开发高级副总裁在一份声明中表示 为了全天候无间断地在全球范围内提高运营表现 用户有必要进行数据整合以支持实时功能和高可用性功能 通过GoldenGate的加入 Oracle希望帮助我们的客户通过实时信息提升商业智能和业务连续性 从而获得更好的业绩表现
过去十多年来 Oracle与GoldenGate一直是合作伙伴
GoldenGate首席执行官Ali Kutay在一份声明中表示 现在我们共同的愿景可以帮助客户在更加及时和准确的信息的基础上做出更好的决策
Oracle表示此次收购尚待惯例的完成条件 预计将于今年底完成
lishixinzhi/Article/program/Oracle/201311/18937
借助 年Oracle Open World的机会 Oracle公司(Oracle)发布了一系列的新品 包括协同软件以及众多其他的面向保险和医疗行业的应用软件 不过和另一项重大新闻事件相比 这些新发布的软件实在是算不了什么 这一重大新闻事件就是 Oracle公司第一次发布了自己在云计算(Cloud Computing)方面的战略 通过与亚马逊公司()的合作 用户在亚马逊公司 d性计算云服务(Elastic Compute Cloud service 下称EC ) 的虚拟机上运行Oracle公司 g和 g的数据仓库和融合中间件(Fusion Middleware) 由于Oracle公司也提供基于Linux的版本 所以这些软件可以被整合成一个完整的解决方案 从而置入EC 中
现在还很难说有多少用户会转向Oracle公司的云计算 但是他们至少多了一种选择——可以订购它的一些网格计算(Grid Copmuting) 云计算是网格的另一个代名词 Oracle公司负责数据库服务器技术的资深副总裁安迪;门德尔松(Andy Mendelsohn)说
可以说转向云计算是Oracle公司的一项重大战略转变 用户可以申请新的云服务来取代现有的Oracle软件许可证 这标志着Oracle公司正在用一种便捷的方式去尝试云计算可能带来的商业价值
CIO 战略
Oracle公司确实是一家非常善于发现增长点的公司 就其刚刚发布的第一财季的财报来看 这家公司的收入增长了 % 达到了 亿美元 营业毛利率达到了 % 在过去的 年中 Oracle公司收购了 家公司 公司规模扩大了一倍 员工人数达到了 人 可提供的产品多达 个左右 Oracle公司现在的策略是通过提供大量整合的解决方案来降低用户系统的复杂性 这样一来 就可以把用户更牢固地掌握在手中 在 月下旬于旧金山举办的第十二届Oracle Open World大会上 Oracle公司总裁查尔斯菲利普斯(Charles Phillips)做了主题演讲 他说 如何解决这些复杂的问题 最好的办法就是整合 这真是一语中的
这一思路与Oracle公司提出的 CIO 战略一脉相承 所谓 CIO 战略其实是Oracle公司内部的产品战略 简单地说就是对公司现有 种产品进行整合 最终向用户交付的产品必须是完全的 整合的 开放的(Complete/Integrated/Open) 整合和融合有利于降低用户应用的复杂度 从而降低用户的业务风险和IT成本 这有利于身处经济衰退中的企业用户降低成本 Oracle公司亚太区高级副总裁欧阳保国(Steve Au yeung)表示 我们的产品都是预先集成的 同时也是开放的 易于整合的 这能帮助用户省钱
整合真的能打动用户吗?太平洋气电公司(Pacific Gas &Electric)是一家思爱普软件系统公司(SAP)的客户 这家公司选择了Oracle公司的门户产品和融合中间件产品 负责太平洋气电公司网络战略的首席架构师比利格兰(Billy Glenn)希望 Oracle公司门户产品和中间件的整合能够帮助自己让系统更简化
不过 Oracle公司必须在 年之前完成旗下软件的融合 否则那些JD Edwards PeopleSoft和Siebel Systems的用户们将会对Oracle公司的融合战略失去信心 早先Oracle公司收购了这些软件供应商
合作 购并 重建
在 年Oracle Open World 上 Oracle公司首席执行官(CEO)拉里艾里森(Larry Ellison)在主题演讲中用浓墨重彩推出了Oracle公司有史以来第一款 硬件产品 ——Exadata Storage Server 这款产品面向迅猛增长的数据库市场 剑锋直指Teradata公司和Netezza公司
这是与惠普公司(HP)合作的一个产品 从外观上看 这就是一个机架 里面同时运行着数据库系统和存储系统 而在机架上 除了HP的Logo之外 还多了一个oracle的鲜红色的Logo 简单说 这是一个数据仓库的解决方案 惠普负责硬件部分 Oracle负责软件部分 据介绍 该款产品的独特之处在于 把数据仓库服务器和存储服务器设计在同一个机柜里 这样可以大幅提升数据库的访问响应速度
在今年年初 经过拉锯式的谈判 Oracle公司以 亿美金收购了毕益辉信息系统公司(BEA) 从此BEA经营多年的产品 渠道和客户都被Oracle公司悉数收入囊中 年 Oracle Open World大会上 一款新产品的发布标志着Oracle公司对原属于BEA产品的整合已经渐入佳境 在大会的第一天 Oracle公司总裁查尔斯菲利普斯(Charles Philips)在主题演讲中发布了企业系统软件Beehive Beehive的原型是BEA公司的一款网络服务增强工具 Oracle公司将这一工具进行开发 结合Oracle公司现有的数据库 中间件以及应用软件 将Beehive开发为一款企业协作平台 Beehive面向的是协同市场 显然 它将面临微软公司(Microsoft)的强大竞争压力 后者在协同软件市场已经耕耘多年 不过Oracle公司认为Beehive有着自身的优势 这些优势体现在 完全的 开放平台的 整合的 安全的 尽管这听起来有些像产品说明书里面的措辞 但是这确实也算是抓住了微软公司Exchange Sever和SharePoint Server的一些弱点了 这个协同软件可以运行在Windows/Linux和Unix平台上 而且能支持第三方应用 CEO菲利普斯概括道
负责Oracle产品开发的执行副总裁查克卢兹瓦特(Chuck Rozwat) 介绍 Beehive可以说穷尽了所有协同软件的功能 你可以用它来聊天 发邮件 发语音邮件 协同工作表 进行其他协同 卢兹瓦特认为 与竞争对手相比 Beehive的过人之处在于 别家的协同软件都是基于各自的数据库和安全机制 用户识别和认证只能用自己的机制 Beehive则不同 它把这些功能整合在一起 也就是说 如果用户采用了Beehive 可以预见的是 所有协同应用的用户识别和安全策略将被放在同一台服务器上进行集中管理
菲利普斯和卢兹瓦特都毫不讳言 Beehive的竞争对手是微软公司的Exchange Sever和SharePoint Server
你如果连微软的Exchange都能玩得转的话 转而使用Beehive将易如反掌 卢兹瓦特现身说法 Oracle公司以前使用数百台SharePoint服务器 内部部署Beehive后 我们只用了很少的服务器
BEA公司的业务流程管理套件也被Oracle公司整合进了Oracle业务流程管理套件中 并作为其融合中间件的一部分 Oracle公司整合了现有的软件 最终形成一个完整的套件 这个套件包括一个业务规则的引擎 这个引擎可以保证用户的所有流程按照公司的规定去运行 这样做的目的是让用户尽可能朝着自动化或者部分自动化的方向设计自己的业务流程
云 计划
不过Oracle公司的兴趣已经不限于数据库和中间件了 与亚马逊公司在EC 上的合作表明了它在云计算上的信心 目前 Oracle公司已经准备好了数据库备份产品和安全备份产品 可以向亚马逊公司S 存储服务器上传输加密过的数据 一家大型客户已经向我们定制了发送备份数据的服务 客户的备份数据将发往一家云计算供应商(非亚马逊公司)的 云 门德尔松说
Oracle公司正在与英特尔公司(Intel)保持紧密合作 以保证OacleVM 虚拟机管理程序与英特尔芯片中最新虚拟化功能保持同步 英特尔公司正在芯片组中内建虚拟化的安全模块 并与Oracle公司紧密合作 以确保基于Xen开源管理程序的OracleVM从中受益 如果数据安全问题得以妥善解决的话 可以打消用户对使用云计算的顾虑 这将大大 云计算的发展
Oracle公司正在努力通过简单的方式让那些许可证用户来免费试用基于云计算的应用
lishixinzhi/Article/program/Oracle/201311/18568
; java数据库连接(jdbc)api是一系列能够让java编程人员访问数据库的接口,各个开发商的接口并不完全相同。在使用多年的oracle公司的jdbc后,我积累了许多技巧,这些技巧能够使我们更好地发挥系统的性能和实现更多的功能。
1、在客户端软件开发中使用thin驱动程序
在开发java软件方面,oracle的数据库提供了四种类型的驱动程序,二种用于应用软件、applets、servlets等客户端软件,另外二种用于数据库中的java存储过程等服务器端软件。在客户机端软件的开发中,我们可以选择oci驱动程序或thin驱动程序。oci驱动程序利用java本地化接口(jni),通过oracle客户端软件与数据库进行通讯。thin驱动程序是纯java驱动程序,它直接与数据库进行通讯。为了获得最高的性能,oracle建议在客户端软件的开发中使用oci驱动程序,这似乎是正确的。但我建议使用thin驱动程序,因为通过多次测试发现,在通常情况下,thin驱动程序的性能都超过了oci驱动程序。
2、关闭自动提交功能,提高系统性能
在第一次建立与数据库的连接时,在缺省情况下,连接是在自动提交模式下的。为了获得更好的性能,可以通过调用带布尔值false参数的connection类的setautocommit()方法关闭自动提交功能,如下所示:
connsetautocommit(false);
值得注意的是,一旦关闭了自动提交功能,我们就需要通过调用connection类的commit()和rollback()方法来人工的方式对事务进行管理。
3、在动态sql或有时间限制的命令中使用statement对象
在执行sql命令时,我们有二种选择:可以使用preparedstatement对象,也可以使用statement对象。无论多少次地使用同一个sql命令,preparedstatement都只对它解析和编译一次。当使用statement对象时,每次执行一个sql命令时,都会对它进行解析和编译。这可能会使你认为,使用preparedstatement对象比使用statement对象的速度更快。然而,我进行的测试表明,在客户端软件中,情况并非如此。因此,在有时间限制的sql *** 作中,除非成批地处理sql命令,我们应当考虑使用statement对象。
此外,使用statement对象也使得编写动态sql命令更加简单,因为我们可以将字符串连接在一起,建立一个有效的sql命令。因此,我认为,statement对象可以使动态sql命令的创建和执行变得更加简单。
4、利用helper函数对动态sql命令进行格式化
在创建使用statement对象执行的动态sql命令时,我们需要处理一些格式化方面的问题。例如,如果我们想创建一个将名字o'reilly插入表中的sql命令,则必须使用二个相连的“''”号替换o'reilly中的“'”号。完成这些工作的最好的方法是创建一个完成替换 *** 作的helper方法,然后在连接字符串心服用公式表达一个sql命令时,使用创建的helper方法。与此类似的是,我们可以让helper方法接受一个date型的值,然后让它输出基于oracle的to_date()函数的字符串表达式。
5、利用preparedstatement对象提高数据库的总体效率
在使用preparedstatement对象执行sql命令时,命令被数据库进行解析和编译,然后被放到命令缓冲区。然后,每当执行同一个preparedstatement对象时,它就会被再解析一次,但不会被再次编译。在缓冲区中可以发现预编译的命令,并且可以重新使用。在有大量用户的企业级应用软件中,经常会重复执行相同的sql命令,使用preparedstatement对象带来的编译次数的减少能够提高数据库的总体性能。如果不是在客户端创建、预备、执行preparedstatement任务需要的时间长于statement任务,我会建议在除动态sql命令之外的所有情况下使用preparedstatement对象。
6、在成批处理重复的插入或更新 *** 作中使用preparedstatement对象
如果成批地处理插入和更新 *** 作,就能够显著地减少它们所需要的时间。oracle提供的statement和 callablestatement并不真正地支持批处理,只有preparedstatement对象才真正地支持批处理。我们可以使用addbatch()和executebatch()方法选择标准的jdbc批处理,或者通过利用preparedstatement对象的setexecutebatch()方法和标准的executeupdate()方法选择速度更快的oracle专有的方法。要使用oracle专有的批处理机制,可以以如下所示的方式调用setexecutebatch():
preparedstatement pstmt3d null;try {((oraclepreparedstatement)pstmt)setexecutebatch(30);pstmtexecuteupdate();}
调用setexecutebatch()时指定的值是一个上限,当达到该值时,就会自动地引发sql命令执行,标准的executeupdate()方法就会被作为批处理送到数据库中。我们可以通过调用preparedstatement类的sendbatch()方法随时传输批处理任务。
7、使用oracle locator方法插入、更新大对象(lob)
oracle的preparedstatement类不完全支持blob和clob等大对象的处理,尤其是thin驱动程序不支持利用preparedstatement对象的setobject()和setbinarystream()方法设置blob的值,也不支持利用setcharacterstream()方法设置clob的值。只有locator本身中的方法才能够从数据库中获取lob类型的值。可以使用preparedstatement对象插入或更新lob,但需要使用locator才能获取lob的值。由于存在这二个问题,因此,我建议使用locator的方法来插入、更新或获取lob的值。
8、使用sql92语法调用存储过程
在调用存储过程时,我们可以使用sql92或oracle pl/sql,由于使用oracle pl/sql并没有什么实际的好处,而且会给以后维护你的应用程序的开发人员带来麻烦,因此,我建议在调用存储过程时使用sql92。
9、使用object sql将对象模式转移到数据库中
既然可以将oracle的数据库作为一种面向对象的数据库来使用,就可以考虑将应用程序中的面向对象模式转到数据库中。目前的方法是创建java bean作为伪装的数据库对象,将它们的属性映射到关系表中,然后在这些bean中添加方法。尽管这样作在java中没有什么问题,但由于 *** 作都是在数据库之外进行的,因此其他访问数据库的应用软件无法利用对象模式。如果利用oracle的面向对象的技术,可以通过创建一个新的数据库对象类型在数据库中模仿其数据和 *** 作,然后使用jpublisher等工具生成自己的java bean类。如果使用这种方式,不但java应用程序可以使用应用软件的对象模式,其他需要共享你的应用中的数据和 *** 作的应用软件也可以使用应用软件中的对象模式。
10、利用sql完成数据库内的 *** 作
我要向大家介绍的最重要的经验是充分利用sql的面向集合的方法来解决数据库处理需求,而不是使用java等过程化的编程语言。
如果编程人员要在一个表中查找许多行,结果中的每个行都会查找其他表中的数据,最后,编程人员创建了独立的update命令来成批地更新第一个表中的数据。与此类似的任务可以通过在set子句中使用多列子查询而在一个update命令中完成。当能够在单一的sql命令中完成任务,何必要让数据在网上流来流去的?我建议用户认真学习如何最大限度地发挥sql的功能
sql,oracle都是关系型数据库,事务考虑的比较多,sql面对中小型企业和数据系统,傻瓜型,管理简单。oracle面向大型企业的数据引用,在金融行业应用广泛,其RAC架构可保证高可用性,但其架构为share disk架构。teradata是专门用于数据仓库的数据库,其基于Mpp架构(分布式并行架构),share nothing的架构,并且是一体机,超级贵。。当然还有db2,gp,mysql等数据库
以上就是关于如何在SAS系统中整合ORACLE资源全部的内容,包括:如何在SAS系统中整合ORACLE资源、如何连接oracle数据库、Oracle为数据整合功能而收购GoldenGate等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)