ORACLE 数据库操作手册4.1
中国通信集团公司安徽有限公司
信息系统部
2010年7月
修改记录
oracle游标的使用
版本
日期
编辑者
编辑内容
1.0
2006/2/10
见春蕾
形成初稿
1.1
2007/8/31
见春蕾
根据实际情况修订部分章节
2.0
2007/11/05
见春蕾
一、在第一章(数据库使用注意事项)中增加了关于批量更新数据的大事务分次提交的要求、客户端的配置方法、修改密码方法;
二、在第二章(SQL编写注意事项)中增加了关于提示(Hints)的使用;
三、增加了第四章(跟踪SQL执行计划),阐述了相关的理论知识和SQL执行计划的跟踪方法。
3.0
2009/3/5
尹宁、王永波、涂定宏等
一、根据实际情况修订相关章节。
二、补充了绑定变量使用规范以及SQL语句优化的基本规则。
4.0
2010/7/12
王永波、尹宁等
一、根据NG现状修改访问地址说明。
二、去除不适用ORACLE 10G的内容,增加相关内容
三、去除数据库设计规范及集成规范涉及的内容
四、刷新SQL语句编写规则
五、调整部分章节顺序
4.1
2012/9/11
常玉龙、尹宁等
一、根据NG现状修改访问地址说明。
二、刷新sql注意事项

第一章 数据库使用注意事项
一、营业前台使用统一地址,后台业务严格区别业务区,不可随意访问
营业网址需要通过4A系统统一使用10.153.176.6通过四层交换机访问,禁止访问指定的主机。 后台业务(包含后台脚本及维护人员业务操作)须严格按照业务区使用中间件及数据库实例,以避免影响数据库性能。
A1:合肥、淮北
中间件:10.153.171.125 crmtux1/3(主)、10.153.171.126 crmtux1(备)
10.153.171.125 bosstux1/3(主)、10.153.171.126 bosstux1(备)
数据库:WCRMA1、WACCTA1、WRES1
A2:阜阳、宿州、亳州、池州
中间件:10.153.171.126 crmtux2/3(主)、10.153.171.125 crmtux2(备)
10.153.171.126 bosstux2/3(主)、10.153.171.125 bosstux2(备)
数据库:WCRMA2、WACCTA2、WRES2
B1:蚌埠、马鞍山、安庆、黄山、滁州
中间件:10.153.171.135 crmtux1/3(主)、10.153.171.136 crmtux1(备)
10.153.171.135 bosstux1/3(主)、10.153.171.136 bosstux1(备)
数据库:WCRMB1、WACCTB1、WRES1
B2:芜湖、淮南、铜陵、六安、宣城
中间件:10.153.171.136 crmtux2/3(主)、10.153.171.135 crmtux2(备)
10.153.171.136 bosstux2/3(主)、10.153.171.135 bosstux2(备)
数据库:WCRMB2、WACCTB2、WRES2
二、不涉及当天业务的查询和统计在BCV库中操作
BCV库每天0时同步一次(历时约1小时),数据、用户及密码与生产环境相同。BCV库是单节点数据库,共有WCRMABCV、WCRMBBCV、WACCTABCV、WACCTBBCV和WRESBCV等五个库。BCV库的TBS_PERSON表空间是可写表空间。
三、前台营业时间禁止在生产环境进行大数据量的查询和统计操作
前台营业时间一般为8:00-18:00(高峰时间8:30-10:30、15:00-16:30),在此期间不要在生产环境做大数据量的查询和统计,每个查询的执行时间控制在1分钟内。
四、关联表均很大的查询和统计尽量用BCV库
大表关联查询操作一般会占用较大的临时表空间和较高CPU,对数据库影响较大,尤其是多个大表关联且涉及排序、分组等操作时。
五、按照业务规则进行DML操作,DML不要忘记执行COMMIT或ROLLBACK
不要只执行语句,而不控制事务。当执行一条DML语句时,数据库会分配相应锁、回滚段、REDO LOG BUFFER等资源。语句执行后应尽快的提交或回滚释放分配的资源。
六、大批量更新数据的事务分次提交
在营业忙时,大于10万的数据刷新需分次提交。大于100万的数据刷新尽量在系统空闲时进行,并分次提交,以减少异常发生。
七、数据库DDL操作由数据库管理员根据业务规则进行
DDL操作有可能涉及到存储分配、表分析、数据生命周期规划等,须数据库管理员执行,业务人员不能使用预设帐号执行DDL语句。
八、数据库使用结束及时断开连接,但也不要频繁的连接和断开
数据库连接是数据库的宝贵资源,数据库支持的连接有限,不需要使用数据库时断开连接。如果能正常退出,别用“结束任务”或kill -9。如果正在执行SQL时发生终端异常,联系数据库管理员检查处理,以防止数据库一直占用该SQL相关资源。
九、客户端配置与客户端第三方工具使用
Oracle客户端版本要求在10.2.0.4及以上,以尽量避免出现兼容性问题。第三方工具PL/SQ
L Developer版本应在8.0及以上,Toad for Oracle版本应在10.0及以上,DBArtisan版本应在8.5及以上。
十、不要使用工具进行可视化数据修改操作
使用工具可视化修改数据时可能会加长数据库锁时间、增加误操作风险,因此数据修改操作须直接用SQL语句进行。
十一、合理使用帐号,妥善保管密码
个人帐号能进行的操作不要使用应用帐号执行,少量数据修改的操作应通过问题知识库对个人帐号授权后进行。帐号密码应妥善保管,不得借给他人使用,每三个月需修改一次个人帐号密码,密码应不低于8位,并含有字母、数字和特殊字符,且不能同于前五次密码。不要非法获取未经授权的系统预设(应用)帐号密码。不要使用未经授权的帐号登陆数据库。帐号被锁定时联系数据库管理员解决。
十二、严禁在生产库进行业务开发、调试工作
十三、单条SQL语句的长度最好不要超过1000字节
1000字节对应1000个英文字符或500个中文字符,需要更长语句的操作考虑使用语句段、存储过程或临时表解决。
十四、数据导出导入使用expdp/impdp,不要使用exp/imp
、PL/SQL程序应尽量符合第二章要求,注意事务的提交、回滚及异常情况处理
十六、一定不能在循环体内部创建数据库的连接,包括通过JDBC连接数据库。
十七、SQL语句在执行前需要对语句逻辑进行检查,避免形成隐式笛卡尔积,占用大量临时表空间和降低语句效率。

第二章 SQL编写注意事项
一、查看表字段名或随机少量数据时,不要使用SELECT * FROM TABLENAME
用DESC TABLENAME或SELECT * FROM TABLENAME WHERE 1 = 2、SELECT * FROM TABLENAME WHERE ROWNUM < 1等命令查看表结构信息,尽量不要直接执行S
ELECT * FROM TABLENAME,然后kill会话。
二、SELECT 子句中避免使用*
在SELECT子句中列出所有的列时,使用*很方便,但是效率低。因为ORACLE在解析过程中会查询数据字典,将*依次转换成所有的列名。所以,直接在SELECT子句中写出想要显示的列。
三、查询总记录数时,尽量不要用COUNT(*),而要指定一个有索引的字段。
例如主键列为INDEX,使用COUNT(INDEX)能利用索引。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。