Oracle- 服务端
自己测试使用的可网上下载或至oracle官网;如果是正式环境安装的,建议由dba提供或装11.2.0.4版本
安装暂不描述,服务端需运行提供服务OracleService
和监听TNSListener
配置监听即listener.ora
...\dbhome_1\NETWORK\ADMIN\listener.ora
本机可使用sqlplus测试连接(ip 127.0.0.1 port 1521/实例名);注意端口、防火墙、网络等
oracle- 客户端
装运行时即可 (也有点过大了,客户机简单连接可装简版客户端) (服务端本身包含客户端功能)
简版客户端有9i 10g 11g等版本建议11g (某些旧版有无法自卸 不能跟踪 不支持括号路径问题)
配置连接即tnsnames.ora
...\dbhome_1\NETWORK\ADMIN\tnsnames.ora
主要依赖oci.dll
(故各种设置注册表/环境变量/检测目录ora_home都是找它和tns) (排查问题也按顺序找它)
oci.dll区分32位与64位!且32位应用程序无法调用64位; (如pb及pb编译出的程序都是32位 plsql日常使用32位)
可使用tnsping/sqlplus测试连接;(10及以下客户端会不支持带括号路径)
plsql的连接
oracle开发必备;(工具--首选项 可配置连接相关) 日常使用32位绿色版即可(服务器上可用64位)
配置完tns即会在登录页面可选;也可直接输入127.0.0.1:1521/orcl登录
dblink也可使用完整tns描述串,或直接ip:port/servername串,或配置好只用tnsname
pb的连接
database profile setup定义连接,可测试 (建议勾掉commit on disconnect)
pb连接oracle依赖的是pboxx.dll;比如 pb9连接数据库 o73 o84 o90 等对应使用不同的动态库 pbo7390.dll pbo8490.dll pbo9090.dll ;他们也分小版本的,像5507和8836;(不同版本间可能有异常,如无法连接或假连接输啥密码都显示可以却查不到表)
开发工具和应用程序同理,只是路径顺序差异。如先寻找程序根目录下的dll,然后寻找环境变量按顺序路径(如\Shared\PowerBuilder, system32,pbdll文件夹等) 建议养成良好习惯,动态库不乱扔,系统目录下更不是解决之道。(查看程序载入的动态库可用工具procexp.exe
)
pb是长连接的模式,即连上数据库后会话一直存在不断开; (第一次连库会创建几个以pb开头的表)
pb每个transaction连接后是一个单独会话session,可用于处理不同事务; 嵌入式sql的执行信息可由sqlcode和sqlerrtext获得; 数据窗口等可由dberror事件获得;
多判断sql执行结果,如select可能会命不中返回100或多行返回-1,update/delete命不中时返回0需要加判断sqlnrows;(其实commit/rollback也是有失败可能的)
pb无检测心跳,如断网被杀会话等失去连接后并不知晓,等再次执行sql请求时返回错误信息如ora03114
pb做webservice应该使用即连即断方式,因为每次请求都是不同实例。于constuctor时连接 destructor时断开
dw的更新属性等更多数据库交互相关属于pb编程的讨论范畴…
pb连接sqlserver可使用snc、odbc、ole db等,建议减少依赖 方便部署;
其他工具或语言的连接
toad、navicat 等工具基本同理
java系的使用jdbc连接,jdbc默认使用sid的方式连接;(服务器集群时server_name统一但sid不同)
⑴ jdbc:oracle:thin:@//
: / ⑵ jdbc:oracle:thin:@
: : ⑶ jdbc:oracle:thin:@
c#使用 using System.Data.OracleClient; OracleConnection对象连接,已经过时被弃用;
现用 using Oracle.ManagedDataAccess.Client; 依赖Oracle.ManagedDataAccess.dll;
关于rac
RAC
实时应用集群,也称双机热备 (好处:多机共享、负载均衡、互备容灾);客户有条件的话强烈建议;
由于多实例提供服务,server_name统一但sid不同,连接时注意方式;(可以通过添加instance_name项来指向特定的实例,也可为特定实例单独建立服务名)
正常登录可能被分配至任一节点,查会话死锁时视图用Gv$,杀会话时也需加参数@INST_ID;编译或调试存储过程可能会卡死;
另:
关于外网连接oracle,有公网ip可直接开放1521端口 (但为安全实不建议,做服务调用才是正解)
走的是tcp协议,利用frp等工具映射端口实测可以;<生产环境,慎重考虑> 数据安全第一




