某互联网行业公司数据库操作手册-07-赋权限

四月 18, 2012 by · Leave a Comment 

XXX 初稿

一、 目的

明确常用赋权操作标准流程,以及赋权过程中可能产生的风险,最大限度避免赋权操作带来的系统故障。

二、 适用范围

l 对数据库对象的授权操作,数据库对象包括表、存储过程、同义词、视图和序列等。授权类型包括查询、增删改、执行。

l 对数据库用户的系统授权操作。

三、 风险评估

l 对数据库用户进行系统授权时,需要根据实际情况进行,避免因对用户授予过高的系统权限或角色,进而使该用户存在误操作引发数据库或应用故障的风险。

l 对于存储机密数据的表的授权,需要慎重。以免泄露机密数据。

l 对于涉及同步的数据库,需要分别在同步的两端数据库执行相同的授权操作。 Read more

原创文章,转载请注明: 文章地址某互联网行业公司数据库操作手册-07-赋权限

某互联网行业公司数据库操作手册-19-数据迁移工具之copy data

四月 18, 2012 by · Leave a Comment 

作者:×××

一、 目的

说明使用copy data进行数据迁移的前置条件、操作步骤,降低对对应用造成的影响及避免故障

二、 适用范围

l 开发查问题需要访问线上大量数据时,可以将线上数据拉到线下方便开发处理

l 开发在线上做数据订正时,需要从导入一些业务提供的关联数据 Read more

原创文章,转载请注明: 文章地址某互联网行业公司数据库操作手册-19-数据迁移工具之copy data

某互联网行业公司数据库操作手册-06-加not null字段

四月 18, 2012 by · Leave a Comment 

作者:**

一、 目的

阐述表变更的风险及其步骤,降低对应用的影响和避免故障。

二、 适用范围

 所有在使用的表的加not null字段,但核心表(并发访问高的大表不允许加not null)。

三、 风险评估

 新增字段的类型、长度(精度)是否合适
解决方法:跟应用明确加字段和改字段的风险,确认新增字段类型正确、长度(精度)合适。是否有默认值?以及跟应用明确老数据是否要订正?如何订正?
新增字段的非空属性、默认值以及老数据问题。 Read more

某互联网行业公司数据库操作手册-18-临时重跑任务

四月 18, 2012 by · Leave a Comment 

作者:××

一、 目的

明确临时重跑任务操作的风险及标准流程,最大限度避免临时重跑任务操作带来的故障。

二、 适用范围

l 由于任务失败或项目要求需要重跑任务

l 由于业务需要,修改原有的任务,临时执行。

三、 风险评估

l 登录到错误的schema下,运行了其他schema下名字相同的procedure。

l 重新执行的时间点错误,可能会导致任务的逻辑错误和数据错误。

Read more

原创文章,转载请注明: 文章地址某互联网行业公司数据库操作手册-18-临时重跑任务

某互联网行业公司数据库操作手册-11-重建索引

四月 18, 2012 by · Leave a Comment 

作者:黄欢欢

一、 目的

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

二、 适用范围

l 索引本身失效, 或者由于其他操作导致索引失效的情况

l 有索引unusable需要改为可用的情况

l 由于数据删除率过大, B-tree高度过高等导致的索引效率降低, 空间浪费的情况, 但是我们总是建议在需要的时候才去重建索引

l 移动索引至其他表空间的情况

l 无特殊说明,本手册只是针对常规B-tree索引,以及我们常用到的Local Partitioned Indexes和函数索引, 不涉及Bitmap类型和unique类型,临时表上的索引及其他复杂索引, 重建的方式为rebuild online。

Read more

原创文章,转载请注明: 文章地址某互联网行业公司数据库操作手册-11-重建索引

某互联网行业公司数据库操作手册-05-加字段

四月 18, 2012 by · Leave a Comment 

作者:梅庆

一、 目的

阐述表变更的风险及其步骤,降低对应用的影响和避免故障。

二、 适用范围

 所有在使用的表的加字段

三、 风险评估

 新增字段的类型、长度(精度)是否合适
解决方法:跟应用明确加字段和改字段的风险,确认新增字段类型正确、长度(精度)合适。以及跟应用明确老数据是否要订正?如何订正?新增列是否非空?是否有默认值等等。
新增字段的非空属性、默认值以及老数据问题。 Read more

某互联网行业公司数据库操作手册-12-删除索引

四月 18, 2012 by · Leave a Comment 

作者:***

一、 目的

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

二、 适用范围

l 由于新建了索引,冗余的索引可以删除的情况。

l 存在的索引没有在被使用或者并没有加快查询,浪费空间和降低DML效率的情况。

l 由于SQL走错执行计划,通过删除索引来调整执行计划的情况。

l 在IMP导入或者大数据量修订的时候,不允许先删除索引之后再重建的方式, 而是先设置索引不可用。

l 由于删除表所引起的索引删除不在此范围内。

l 无特殊说明,本手册只是针对常规B-tree索引,以及我们常用到的Local Partitioned Indexes和函数索引, 不涉及Bitmap类型和domain类型的索引及其他复杂索引。

l 在11G中, 如果不是为了节约空间的考虑, 可以选择将index设置成不可见,索引正常更新,但会被CBO忽略,观察三天没有问题的话再删除。

Read more

原创文章,转载请注明: 文章地址某互联网行业公司数据库操作手册-12-删除索引

某互联网行业公司数据库操作手册-17-01-MOVE表

四月 18, 2012 by · Leave a Comment 

作者:**

一、 目的

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

二、 适用范围

l 优化操作中,为了降低表,分区,LOB的高水位

l 操作对象包括:普通表,分区,子分区,LOB字段

备注:表中不能包含LONG 字段

三、 风险评估

l MOVE 表期间,会阻塞所有关于此表的DML和DDL操作,且INDEX会失效

l MOVE 表完成后,表统计信息会失效,需要重新收集(9i)

l 如果表上存在TRANSACTION,则无法使用MOVE操作,会报resource busy

l MOVE到其他表空间,保证表空间有足够的空闲空间

四、 操作流程

1. 准备工作

a) 和应用确认MOVE表的持续时间和期间无法操作表(包括查询)的风险,看是否能接受或者选择停相关应用模块

b) 事先整理完成MOVE TABLE和REBUILD INDEX的脚本

c) 确认原来表的大小@size,方便操作前后对比

d) 如果前后表空间不同,请确认空闲空间@tbs

2. 执行过程

a) alter table *** move tablespace ***

[partition *** tablspace_name ***]

[lob(***) store as (tablespace ***)]  parallel ?;

b) MOVE操作期间,查看数据库等待事件@showlong和锁情况@lock

c) 重建索引,需要考虑是否要收集统计信息,详见【重建INDEX】

d) 查看失效对象@dbcheck

3. 验证方案

a) 常规检查:@dbcheck

b) 大小确认:@size

c) 数据库是否正常:@active

五、 核心对象风险

不建议使用MOVE操作

六、 回退方案

无需回退

七、 历史故障及教训

 

原创文章,转载请注明: 文章地址某互联网行业公司数据库操作手册-17-01-MOVE表

某互联网行业公司数据库操作手册-16-创建dblink

四月 18, 2012 by · Leave a Comment 

作者:***

一、 目的

明确创建dblink操作标准流程及其操作风险,最大限度避免创建dblink操作带来的风险。

二、 适用范围

l 适用于创建fixed user认证类型的database link。

三、 风险评估

l 在错误的schema创建了dblink或者创建了public类型的dblink,导致无关用户可以获取数据,产生数据泄漏的风险。

l 使用了错误的连接字符串,导致无法获取数据或者数据不正确。

l 两个数据库之间使用不同的字符集,创建后没有验证,导致查询结果乱码或插入乱码的数据。

l Dblink理论上不能被用于应现业务逻辑,以避免造成两数据库间产生大量的网络交互,甚至造成堵塞,影响其他业务的正常使用。

四、 操作流程

Read more

原创文章,转载请注明: 文章地址某互联网行业公司数据库操作手册-16-创建dblink

某互联网行业公司数据库操作手册-15-启停触发器、启停job

四月 18, 2012 by · Leave a Comment 

作者:***

一、 目的

明确启停触发器、启停job操作的风险及标准流程,最大限度避免操作带来的故障。

二、 适用范围

l 启停触发器

l 启停job

三、 风险评估

l 打开触发器代码编译不通过,导致表无法做DML操作。

l 线上触发器或job代码逻辑错误,导致数据错误。

l Job执行时间或调度错误,引起数据错误。

l 代码中有SQL性能差,引起数据库压力高。

四、 操作流程

1. 准备工作

a) 熟悉要变更的触发器或JOB的代码逻辑,与应用人员沟通触发器或JOB的具体功能,在哪个数据库环境,及变更对业务的影响。

b) 线上检查触发器或JOB的逻辑是否正常。

c) 编制变更方案,需要说明操作的数据库,使用的业务帐号,及变更脚本,CHECK脚本,回滚脚本。

启停触发器变更方案示例:

–running on db(usoint,hzoint)

Select owner,trigger_name,status from dba_triggers where trigger_name in (‘xxx1’);

@conn zzzzzz/xxx

Alter trigger xxx1 enable;

Alter trigger xxx2 disable;

–check

@dbcheck

Select owner,trigger_name,status from dba_triggers where trigger_name in (‘xxx1’);

–undo

Alter trigger xxx1 disable;

Alter trigger xxx2 enable;

启停job变更方案示例:

–running on db(usoint,hzoint)

–查看当前数据库job列表及运行情况

@job

@conn zzzzzz/xxx

–关闭JOB

Exec dbms_job.broke(job_id,true);

–打开JOB

Exec dbms_job.broke(job_id,false);

–删除JOB

Exec dbms_job.remove(job_id);

–创建JOB

variable jobno number;–用于保存submit返回的job编号

Exec sys.dbms_job.submit(

job => jobno,–返回的job编号

what => ‘xxxxxx’,–job运行的脚本

next_date => to_date(‘’,’YYYY-MM-DD HH24:MI:SS’),–下次运行时间

interval => ‘xxxxx’ –运行间隔

);

select :jobno from dual;

–运行JOB

Exec dbms_job.run(job_id);

2. 执行过程

a) 使用ssh工具连接到线上库,在admin环境下,用应用账户登录数据库,SHOW USER检查是否连接到正确的schema。严禁使用sys、system做变更。

b) 执行对象变更脚本。

c) 如果是打开trigger,trigger编译错误,则直接回滚,把trigger关闭,检查错误原因,线下验证后再重新发布。

d) 所有对象发布完毕后,退出业务账户到admin环境。

3. 验证方案

a) 在admin下用@dbcheck脚本验证发布是否引起依赖对象失效,如果有对象失效,检查失效原因,重新编译失效对象,如果有依赖对象编译不能通过,则先回滚当前变更,再查找原因,重新制定变更方案。

b) 如果是启停job,用@job脚本检查job的当前状态。

c) 立即联系开发接口人进行应用测试,如果应用验证有问题,则与应用沟通是否需要回滚,变更是否成功以应用测试结果为准。对于定时执行的对象,应与应用跟踪定时执行的结果,确实变更是否成功。

五、 核心对象风险

六、 回退方案

变更方案

回滚方案

1

Enable trigger

Disable trigger

2

Disable trigger

Enable trigger

3

Run job

根据job 逻辑编写数据回滚方案

4

Job Broke=false

Job Broke=true

5

Job Broke=true

job Broke=false

6

Submit job

remove job

7

Remove job

Submit job

检查失效对象。

七、 历史故障及教训

略。

 

原创文章,转载请注明: 文章地址某互联网行业公司数据库操作手册-15-启停触发器、启停job

Next Page »

知识共享许可协议
作品采用知识共享署名 2.5 中国大陆许可协议进行许可。