阿里巴巴数据库操作手册 01-建表

V1.0

 

Revision

Author/Modifier Comments

No.

Date

1.0 2011.9 陈立 初稿
       

一、 目的

明确建表操作的风险及标准流程,最大限度避免建表操作带来的故障。

二、 适用范围

l 项目预发布新建表

l 项目正式发布新建表

l 不包含数据订正所建临时表

l 不包含导数据所建的中间表

三、 风险评估

l 登录到错误的schema下,导致表建到错误的schema里,而应用无法访问。

l 忽略了TABLESPACE参数,导致表建到了默认表空间,导致后续空间增长和维护困难。

l 对于未来增量较快的表选择了一个空间规划不足的表空间,导致后续空间增长和维护困难。

l 脚本末尾缺少分号,导致该表没有被创建上,而执行DDL的过程又不会报错。

l 其他原因漏建了表,导致应用访问错误。

l 所建的表定义(表名、字段名、字段定义、字段个数、字段顺序)跟测试环境不一致,导致应用访问错误。

l 同步库没有及时创建相应的表,或者没有更新同步配置,导致同步及应用出问题。

四、 操作流程

1. 准备工作

a) 在项目需求分析阶段,跟数据库设计人员一起明确新表所存放的数据库。具体设计原则本文不繁述。

b) 准备发布脚本时,检查tablespace定义,检查tablespace剩余空间,参考表空间自身负荷及新表的预期负荷,为每个新建的表选择合适的表空间,并在建表语句中添加tablespace的配置。

c) 定发布计划时,跟开发接口人一起商定好建表操作的时间点。如小需求没有发布计划评审,则必须在提交测试时(即表结构冻结时)即开始与开发接口人确定建表时间点。如果发生计划外的发布建表需求,则要追究项目跟进的应用DBA沟通不力的责任。

d) 以目前的认知,仅建表操作本身不会对数据库造成任何风险,故操作的时间点可以放宽:在变更时间窗口内,均可以执行建表操作。

e) 建表操作属于预授权变更,在做之前必须在ITIL中提交相应的变更申请。

2. 执行过程

a) 用应用账户登录数据库,SHOW USER检查是否连接到正确的schema。严禁使用sys、system等用户建表。

b) 执行建表脚本。若一次建表个数超过三个以上,要求将脚本事先保存为文本文件,上传至数据库服务器,执行时使用 @create_table_ddl.sql 的方式直接执行。

c) 查看过程若无报错,退出当前登录。若有报错,找出报错的地方,修改确认再执行,直至全部执行通过,最后退出当前登录。

3. 验证方案

a) 常规检查:@dbcheck

b) 检查表定义是否与测试库一致:

exec pkg_check.CompareObject(’user‘,’TABLE_NAME‘);

c) 立即联系开发接口人进行应用测试,【建表】变更是否成功以应用测试结果为准。

d) 同步库若建表,也需要执行 a) 和 b) 两个步骤。

五、 核心对象风险

无特别风险。

六、 回退方案

建表操作因对应用和数据库均无影响,所以无需回退。

七、 历史故障及教训

  1. da shang
    donate-alipay
               donate-weixin weixinpay

发表评论↓↓