某互联网行业公司数据库操作手册-07-赋权限
四月 18, 2012 by johnny0924 · Leave a Comment
| XXX | 初稿 | ||
一、 目的
明确常用赋权操作标准流程,以及赋权过程中可能产生的风险,最大限度避免赋权操作带来的系统故障。
二、 适用范围
l 对数据库对象的授权操作,数据库对象包括表、存储过程、同义词、视图和序列等。授权类型包括查询、增删改、执行。
l 对数据库用户的系统授权操作。
三、 风险评估
l 对数据库用户进行系统授权时,需要根据实际情况进行,避免因对用户授予过高的系统权限或角色,进而使该用户存在误操作引发数据库或应用故障的风险。
l 对于存储机密数据的表的授权,需要慎重。以免泄露机密数据。
l 对于涉及同步的数据库,需要分别在同步的两端数据库执行相同的授权操作。 Read more
原创文章,转载请注明: 文章地址某互联网行业公司数据库操作手册-07-赋权限
某互联网行业公司数据库操作手册-19-数据迁移工具之copy data
四月 18, 2012 by dimen · Leave a Comment
作者:×××
一、 目的
说明使用copy data进行数据迁移的前置条件、操作步骤,降低对对应用造成的影响及避免故障
二、 适用范围
l 开发查问题需要访问线上大量数据时,可以将线上数据拉到线下方便开发处理
l 开发在线上做数据订正时,需要从导入一些业务提供的关联数据 Read more
原创文章,转载请注明: 文章地址某互联网行业公司数据库操作手册-19-数据迁移工具之copy data
某互联网行业公司数据库操作手册-06-加not null字段
四月 18, 2012 by johnny0924 · Leave a Comment
作者:**
一、 目的
阐述表变更的风险及其步骤,降低对应用的影响和避免故障。
二、 适用范围
所有在使用的表的加not null字段,但核心表(并发访问高的大表不允许加not null)。
三、 风险评估
新增字段的类型、长度(精度)是否合适
解决方法:跟应用明确加字段和改字段的风险,确认新增字段类型正确、长度(精度)合适。是否有默认值?以及跟应用明确老数据是否要订正?如何订正?
新增字段的非空属性、默认值以及老数据问题。 Read more
某互联网行业公司数据库操作手册-18-临时重跑任务
四月 18, 2012 by dimen · Leave a Comment
作者:××
一、 目的
明确临时重跑任务操作的风险及标准流程,最大限度避免临时重跑任务操作带来的故障。
二、 适用范围
l 由于任务失败或项目要求需要重跑任务
l 由于业务需要,修改原有的任务,临时执行。
三、 风险评估
l 登录到错误的schema下,运行了其他schema下名字相同的procedure。
l 重新执行的时间点错误,可能会导致任务的逻辑错误和数据错误。
原创文章,转载请注明: 文章地址某互联网行业公司数据库操作手册-18-临时重跑任务
某互联网行业公司数据库操作手册-11-重建索引
四月 18, 2012 by dimen · Leave a Comment
作者:黄欢欢
一、 目的
明确新建索引操作的风险及标准流程,最大限度避免新建索引操作带来的故障。
二、 适用范围
l 索引本身失效, 或者由于其他操作导致索引失效的情况
l 有索引unusable需要改为可用的情况
l 由于数据删除率过大, B-tree高度过高等导致的索引效率降低, 空间浪费的情况, 但是我们总是建议在需要的时候才去重建索引
l 移动索引至其他表空间的情况
l 无特殊说明,本手册只是针对常规B-tree索引,以及我们常用到的Local Partitioned Indexes和函数索引, 不涉及Bitmap类型和unique类型,临时表上的索引及其他复杂索引, 重建的方式为rebuild online。
原创文章,转载请注明: 文章地址某互联网行业公司数据库操作手册-11-重建索引
某互联网行业公司数据库操作手册-05-加字段
四月 18, 2012 by johnny0924 · Leave a Comment
作者:梅庆
一、 目的
阐述表变更的风险及其步骤,降低对应用的影响和避免故障。
二、 适用范围
所有在使用的表的加字段
三、 风险评估
新增字段的类型、长度(精度)是否合适
解决方法:跟应用明确加字段和改字段的风险,确认新增字段类型正确、长度(精度)合适。以及跟应用明确老数据是否要订正?如何订正?新增列是否非空?是否有默认值等等。
新增字段的非空属性、默认值以及老数据问题。 Read more
某互联网行业公司数据库操作手册-12-删除索引
四月 18, 2012 by dimen · Leave a Comment
作者:***
一、 目的
明确删除索引操作的风险及标准流程,最大限度避免删除索引操作带来的故障。
二、 适用范围
l 由于新建了索引,冗余的索引可以删除的情况。
l 存在的索引没有在被使用或者并没有加快查询,浪费空间和降低DML效率的情况。
l 由于SQL走错执行计划,通过删除索引来调整执行计划的情况。
l 在IMP导入或者大数据量修订的时候,不允许先删除索引之后再重建的方式, 而是先设置索引不可用。
l 由于删除表所引起的索引删除不在此范围内。
l 无特殊说明,本手册只是针对常规B-tree索引,以及我们常用到的Local Partitioned Indexes和函数索引, 不涉及Bitmap类型和domain类型的索引及其他复杂索引。
l 在11G中, 如果不是为了节约空间的考虑, 可以选择将index设置成不可见,索引正常更新,但会被CBO忽略,观察三天没有问题的话再删除。
原创文章,转载请注明: 文章地址某互联网行业公司数据库操作手册-12-删除索引
某互联网行业公司数据库操作手册-17-01-MOVE表
四月 18, 2012 by dimen · 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 dimen · Leave a Comment
作者:***
一、 目的
明确创建dblink操作标准流程及其操作风险,最大限度避免创建dblink操作带来的风险。
二、 适用范围
l 适用于创建fixed user认证类型的database link。
三、 风险评估
l 在错误的schema创建了dblink或者创建了public类型的dblink,导致无关用户可以获取数据,产生数据泄漏的风险。
l 使用了错误的连接字符串,导致无法获取数据或者数据不正确。
l 两个数据库之间使用不同的字符集,创建后没有验证,导致查询结果乱码或插入乱码的数据。
l Dblink理论上不能被用于应现业务逻辑,以避免造成两数据库间产生大量的网络交互,甚至造成堵塞,影响其他业务的正常使用。
四、 操作流程
原创文章,转载请注明: 文章地址某互联网行业公司数据库操作手册-16-创建dblink
某互联网行业公司数据库操作手册-15-启停触发器、启停job
四月 18, 2012 by dimen · 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
