ImageVerifierCode 换一换
格式:DOCX , 页数:70 ,大小:77.77KB ,
资源ID:21982955      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/21982955.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(数据库通用规范Word文档下载推荐.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

数据库通用规范Word文档下载推荐.docx

1、a) 用应用账户登录数据库, SHOW USER 检查是否连接到正确的 schema。严禁使用 sys、system 等用户建表。b) 执行建表脚本。若一次建表个数超过三个以上,要求将脚本事先保存为文本文件,上传至数据库服务器,执行时使用 create_table_ddl.sql 的方式直接执行。c) 查看过程若无报错,退出当前登录。若有报错,找出报错的地方,修改确认再执行,直至全部执行通过,最后退出当前登录。3. 验证方案a) 常规检查: dbcheckb) 检查表定义是否与测试库一致:exec pkg_check.CompareObject(user,TABLE_NAME);c) 立即联系

2、开发接口人进行应用测试,【建表】变更是否成功以应用测试结果为准。d) 同步库若建表,也需要执行 a) 和 b) 两个步骤。02-数据订正明确【数据订正】操作的种类、风险,并根据各种类型的数据订正制定完善的步骤和回退方案,最大限度减少此类操作带来的故障。l 新建表数据初始化l 现有表新增数据l 现有表删除数据l 现有表上新增字段初始化l 现有表上现有字段值修改l 业务风险:订正本身所包含的业务不正确,导致给客户给公司带来损失。l 程序风险:订正本身业务正确,但是应用程序无法兼容订正的数据,导致应用出错。l 数据库风险:订正本身业务正确,应用程序也可以兼容,但是订正速度过快、订正并发压力过大,导致

3、数据库无法正常提供服务。通常会造成表空间耗尽、 undo 消耗过快、 archive增长过快、备库恢复压力大等问题。l 沟通风险:在业务方-开发接口人-DBA 三方的沟通交流过程中,信息传递错误或者不及时,导致最终订正的数据没有达到预期的目的。l 回滚风险:主要是因为业务方的原因,订正完成一段时间后要求回退,若在订正前没有备份原始数据,则可能导致无法顺利回退或者回退难度极大,给客户给公司带来损失。l 同步风险:各类同步架构下,数据订正可能导致同步堆积和同步延时,影响正常同步业务,所以有些大规模订正必须要正确屏蔽同步,并在多个库分别执行相同的订正脚本。l 缓存:有些表在应用层面做了缓存,制定订正

4、计划的时候要考虑到订正后是否需要更新缓存。a) 需求分析阶段确认项目涉及的数据订正范围和数据量。b) 跟开发人员确定订正后是否涉及到对缓存的刷新和订正。c) 根据数据量评估对数据同步的影响,决定是否屏蔽同步。(应用 DBA 必须熟悉同步采用的技术、正常情况下的同步量和延时、可以容忍的同步延时、屏蔽同步的具体方法。)d) 注意规划订正速度,以防 undo 消耗殆尽。e) 订正脚本:i. 开发接口人直接提供可执行的 SQL 脚本, DBA 只负责拷贝执行。ii. 开发接口人提供主键及更新字段新值列表,由 DBA 导入数据库,写 SQL 脚本关联原表批量订正。iii. 开发接口人提供订正逻辑,由 D

5、BA 翻译为批量提交 SQL 脚本。iv. 订正脚本要求可断点续跑,可反复执行。v. 严禁仅用一个事务来处理大规模订正(影响的记录数超过1万笔)。超过一万笔的订正必须分段提交。vi. 确认订正脚本的执行计划正确。vii. 脚本中加入进度报告,即调用如下包(但是对于 trigger 中判断 client_info 的不允许这样处理。):Dbms_Application_Info.set_client_info(n | rows commit.);n 为变量,累加,表示当前订正的总记录数。f) 开发阶段跟开发接口人确认数据订正逻辑, 完成订正脚本,并跟开发接口人确认脚本是否正确,同时按照需求准备备

6、份脚本。g) 测试阶段在测试库执行订正脚本,由开发接口人和测试人员验证订正的正确性,应用DBA 协助验证。h) 发布前确定订正速度和并发度,确定订正时间段,预估订正总时长,若涉及量较大,需要跨天做订正,则应规划好每日订正的数据量和时间段。i) 备份要求:i. 新建表初始化:无需备份,回退时直接 truncate 即可。ii. 现有表新增数据:新建备份表记录下新增记录的主键,或者在新增记录中特定字段标识区分出订正所新增的数据,回退时定向 delete 这些记录。iii. 现有表删除数据:新建备份表记录下删除数据的完整记录,回退时直接从备份表中取出数据 insert 到原表。iv. 现有表上新增字

7、段初始化:无需备份,回退时将该字段 update 为 NULL 或者开发接口人要求的值。不得将删除字段作为回退手段。v. 现有表上现有字段值修改:新建备份表记录下所改动记录的主键及所改动字段的原始值,回退时将改动过的字段按照主键更新到原表(若应用程序在回滚前已经修改了记录,则要根据具体业务具体分析回滚方案)。vi. 备份表:备份表统一命名为 table_name_bak_mmdd_operator,最后的 operator为操作 DBA的姓名每个字的首字母,如果超长了,则将原表名缩减。创建人有责任定期删除创建时间超过一个月以上的备份表。a) 如果需要,按照备份脚本备份数据。b) 执行订正脚本。

8、查看订正进度,使用如下脚本:select client_info from v$session where client_info is not null;这个脚本必须配合前面描述的进度报告脚本执行。c) 检查 undo 消耗: undod) 检查表空间消耗: tbse) 检查归档空间f) 检查同步延时是否异常。g) 如果需要刷新应用缓存,在订正结束后通知应用刷新缓存。a) 以应用验证为主,数据库辅助做一些 count 等验证。以应用验证通过为操作成功标准。五、 核心对象风险l 考虑到对 erosa 和 otter 的影响,严禁数据订正更新主键值。六、 回退方案按照备份时所做的各种不同的回退方

9、案进行回退,回退之后也要要求应用做验证。03-创建、删除、修改 sequence明确定义对于 sequence 对象的操作风险及步骤。l 项目发布创建新 sequence。l 以删除、重建的方式修改 sequence 的起始值。l 在线修改 sequence 的 cache 值。l Sequence 命名与应用程序中不一致,导致应用无法正常访问 sequence。l 双向同步的库,多库创建同名 sequence,起始值和步长值设置不合理,导致生成的值在表中对应主键值同步产生冲突。l 删除、重建 sequence 的过程中,应用无法访问 sequence,高并发的应用可能会产生故障。l 删除、重

10、建 sequence 之后没有对 sequence 的权限进行恢复,导致原本访问该 sequence 的其他 schema 无法正常访问。l Sequence 的 cache 设置不合理,设置过小会导致大量的系统相关等待,反之则导致 sequence生成值断层过多浪费严重。l Java 程序的 int16数据类型只能容纳最大21亿,所以 sequence 不能超过这个值,如果有可能超过,需要跟开发确认。a) 默认使用变更系统生成的 sequence 名称,如果要修改,必须跟开发人员沟通一致。b) 与开发人员、项目发布负责人沟通变更时间点。对于删除、重建的操作必须明确告诉他们其间会有短暂的无法访

11、问,如果是高并发的应用则选择在系统访问量最低的时候执行,规避风险。c) 根据并发数确定 cache 值,默认为100,如遇特殊需求,酌情调整。d) 删除、重建的操作,事先检查是否有其他 schema 拥有对于该 sequence 的访问权限:SELECT grantee, owner, table_name, privilegeFROM dba_tab_privsWHERE table_name = upper(重建的对象名);e) 全面考虑同步的风险,确定同步环节中各个数据库的同名 sequence 起始值及步长,保证不会发生冲突,通常有如下两种做法:i. 起始值相差不大,步长值等于数据库个

12、数。以双库同步为例,起始值分别设为1和2,步长均设为2。ii. 起始值相距较大,步长值相同。以双库同步为例, A 库起始值设为1, B 库起始值设为2亿,步长均设为1。相差的值可以根据增长预期进行调整。a) 标准新建脚本:CREATE SEQUENCE seq_tablename START WITH 1 CACHE 100;命名规范: seq_tablename默认不指定 recycle 和 max value。b) 标准重建脚本:DROP SEQUENCE seq_tablename ;为了尽量缩短 sequence 不可用时间,这两个语句一起放在 SecureCRT 的 chartWin

13、dow 中一起执行。c) 标准修改 cache 脚本:ALTER SEQUENCE seq_tablename CACHE 200;d) 标准赋权脚本:GRANT SELECT ON seq_tablename to username;a) dbcheck 检查是否有失效对象b) 通知应用验证是否可以正常访问 sequence高并发对象重建时短暂不可访问;04_增加、删除唯一约束明确增删唯一约束操作的风险及标准流程,最大限度避免增删唯一约束操作带来的故障。l 项目发布新建表的增删唯一约束l 对于旧表的增删唯一约束l 对现有表新增唯一约束的操作,会堵塞包括查询在内的所有操作,风险很大,请谨慎使用

14、,尽量在新建表时和开发讨论后增加。l 没有指定 index,系统自动创建了 index,删除约束时,自动创建的 index 同时删除了。l 在高峰期创建,导致大量的 library cache lock/pin 的等待l 有同步的应用,先要在源端加,后在目标端加。l 表里有重复的数据,导致操作失败。a) 检查唯一建字段上是否存在 index。没有的话,需首先创建 index( 步骤详见增加 index 手册)。b) 检查唯一键上是否有重复数据,如有,需和开发讨论如何处理。c) 根据应用的需求和数据库的负载情况,确定操作的时间点。对于数据量和访问量较大的表,变更时间点要谨慎选择.d) 检查字段上

15、是否已经有了约束。e) 增加和删除唯一约束属于标准变更,需要开发在 ITIL 中提交事件单,应用 dba 提交变更单,有技术经理审批后执行。f) 对现有表新增约束,如果使用 validate 这个参数,会导致该表上连查询在内的所有操作都被锁住,风险非常大;如果使用 novalidate 参数,这个参数会导致数据字典不一致(及导致sqlldr 的时候会导入重复数据)。两者相比,故通常情况下用 validate 的风险更大,默认必须使用 novalidate 参数。g) 约束名与所依赖索引名一致。b) 执行增加或删除的命令。命令模板如下:ALTER TABLE 表名 ADD CONSTRAINT

16、表名_uk unique (字段名) USING INDEX 索引名NOVALIDATE;ALTER TABLE 表名 DROP CONSTRAINT 约束名 KEEP INDEX;如有 otter 同步,要注意执行顺序:先在源数据库端加后在目标端增加。c) 检查约束是否加上或删除:select* fromdba_cons_columns wheretable_name=upper(table_name)1. 核心表访问量大,数据量大。增加唯一约束时会短暂出现 library cache pin/lock。执行时间要订在核心表访问的低峰期。1. 执行前需准备好回退的脚本。2. 回退时需得到开发

17、的确认,并确认回退的时间点。05-加字段阐述表变更的风险及其步骤,降低对应用的影响和避免故障。l 所有在使用的表的加字段l 新增字段的类型、长度(精度)是否合适解决方法:跟应用明确加字段和改字段的风险,确认新增字段类型正确、长度(精度)合适。以及跟应用明确老数据是否要订正?如何订正?新增列是否非空?是否有默认值等等。l 新增字段的非空属性、默认值以及老数据问题。新增字段如果是 NOT NULL 的,则一定要有默认值,否则老应用的 insert 代码可能报错。表如果存在老数据,带上默认值的时候会导致 oracle 去订正老的数据行的新增列。如果老数据非常多,表的并发访问高,很有可能导致大面积的阻

18、塞等待以及产生大事务,甚至有可能导致 undo 耗尽。倘若回滚,还会因为回滚产生的并发会话导致 load 飙升。先不带 not null 不带默认值加上列,再更改列默认值,再批量订正老数据,然后再加上 not null 属性。如果是大表,并且并发访问很高的表,则新增列不允许为 NOT NULL,以简化后面变更步骤,降低风险!l 新增字段导致依赖对象失效、 sql 游标失效问题。表的 DML 并发很高的时候,如果表上面还有依赖对象,新增字段会导致依赖对象失效。默认其他 DML 会话会尝试去自动编译这个依赖对象,此时很可能会出现大面积的 library cachepin。应用会话的连接时间会加长,

19、进而导致出现后续应用报不能取得连接池错误。应用服务器 load 由此飙升。表新增字段也会导致跟该表有关的 SQL 的游标失效,如果 SQL 的并发很高(查询 SQL 或者 DML SQL),失效后 SQL 会重新解析,此时也可能会出现大量的 library cache pin & librarycache lock。选择在业务低峰期发布,同时在数据库级别开启 trigger 禁用客户端程序自动编译功能,字段加完后再禁用该 trigger。l 表的依赖对象是否要相应调整。表上面的依赖对象如果有存储过程或触发器等,逻辑是否需要相应调整。l 是否涉及到同步。同步中的表需要两地都要变更。涉及到 ero

20、sa 的要更新一下数据字典。 Erosa 需要重启一下。l 是否要通知其他关联的部门。如 DW, ASC 或 CRM 等等。有些表很多部门都用,需要沟通约定时间一起变更。如果有同步方案,同步方案的变更也要考虑。a) 该表的数据量以及大小,以及数据变更量(按日/时/分/秒等)b) 该表的并发访问数,以及频率最高的几种 sql 的访问方式以表 T1 加字段 col2为例。 T1的数据量非常大,访问频率很高。a) 在 sysdba 下开启 trigger 禁用客户端自动编译功能。(可选)Alter trigger SYS.ddl_trigger_for_database enable;b) 变更字段

21、以下加字段同编译失效对象连着执行。编译时先编译 trigger 再编译存储过程或 package 等conn zzzzzz/aaaAlter table t1 add col2 varchar2(20);Alter trigger trg_t1_search compile;conn retl/rrrAlter trigger trg_t1_sync compile;conn bopsretl/bbbAlter procedure sp_test compile;后面3个 trigger 的编译可以开三个窗口同时进行。另开一个窗口,在 admin 用户下查看当前失效对象dbcheckc) 老数

22、据订正如果需要默认值,加上默认值Alter table t1 modify col2 default Y;数据订正存储过程Create or replace procedure sp_dml0214AsCursor c1 is select rowed rid, id, col2 from t1 where col2 is null;V_cnt number := 0;BeginFor rec_c1 in c1 loopV_cnt := v_cnt + 1;Update t1 set col2=Y where rowed = rec_c1.rid and id=rec_c1.id;If mod

23、(v_cnt,500)=0 thenCommit;Dbms_application_info.set_client_info(sp_dml0214 | v_cnt | rows!);End if;End loop;End;/Exec sp_dml0214;另开一个窗口,查看订正进度col machine for a19col status for a12col client_Info for a50select sid,serial#,status,machine,client_Info,sql_hash_value from v$session where client_Info isnot

24、 null;d) 订正完后加上 NOT NULL 属性Alter table t1 add col2 not null;e) (国际站 可选)中美都变更, erosa 重启更新 erosa 数据字典./getDict.sherosa 重启./erctl stop./erctl starta) 验证 sys 下的 trigger 已经禁用Select owner,trigger_name,status from dba_triggers where owner in (SYS) and trigger_name=ddl_trigger_for_database enable;b) 验证结构正确D

25、esc zzzzzz.t1c) 验证无失效依赖对象核心对象风险指的是业务上重要的表,并且数据量很大或表大小很大或并发访问数很高时,变更的潜在风险。前面已经阐述。1. 大表的新增字段不允许回滚。因为回滚即删掉字段,会导致锁表,持续时间很长进而导致一序列的严重问题。2. 普通表的新增字段如果是发布失败,后续还会有二次发布,也不考虑回滚。或者只是将not null 属性拿掉,下次发布再加上。3. 普通表如果应用有足够的理由要求回滚,则回滚。06-加 not null 字段l 所有在使用的表的加 not null 字段,但核心表(并发访问高的大表不允许加 not null)。是否有默认值?新增字段是 NOT NULL 的,则一定要有默认值,否则老应用的 insert 代码可能报错。先不带 not null 不带默认值加上列,再更改列默认值,再

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1