文档介绍:Database Operation and Maintenance
Speaker: He jun (Doctor)
Under Big data and Industry
大数据时代下的数据库操作
数据库的稳定性
数据库安全
数据的可靠
数据库运行高效经济
Database operation
数据库的稳定性
1. SQL语句没有使用绑定变量,这样SQL每次执行都要解析;
2. SQL长时间没有执行,被刷出SHARED POOL,再次执行时需要重新解析。
3. 在SQL引用的对象(表、视图等)上执行了DDL操作,甚至是结构发生了变化,比如建了一个索引。
4. 对SQL引用的对象进行了权限更改。
5. 重新分析(收集统计信息)了SQL引用的表和索引,或者表和索引统计信息被删除。
6. 修改了与性能相关的部分参数。
7. 刷新了共享池。
8. 重启数据库也会使所有SQL全部重新解析。
数据库的稳定性
影响稳定的因素
1. 表和索引的优化统计信息被删除,或者重新收集后统计信息不准确。重新收集统计信息通常是由于收集策略(方法)不正确引起。比如对分区表使用analyze命令而不是用dbms_stats包、收集统计信息时采样比例过小等等。Oracle优化器严重依赖于统计信息,如果统计信息有问题,则很容易导致SQL不能使用正确的执行计划。
影响稳定的因素
2. SQL绑定变量窥探(bind peeking),同时绑定变量对应的列上有直方图;或者绑定变量的值变化范围过大、分区数据分布极不均匀:
(1)绑定变量的列上有直方图
select * from orders where state=:b1
(2)绑定变量的值变化范围过大
Select * from orders where created_date >=:b1;
(3)分区数据量不均匀
select * from orders where area=:b1 and product_id =:b2
处理技术
1、规划好优化统计信息的收集策略,对使用绑定变量的列,不收集列上的直方图,,避免系统自动收集该表的统计信息,然后编写脚本来定制地收集表的统计信息
1 exec …
2 exec …
3 exec …
处理技术
2、修改SQL语句,使用HINT,使SQL语句按HINT指定的执行计划进行执行。这需要修改应用,同时需要逐条SQL语句进行,加上测试和发布,时间较长,成本较高,风险也较大。HINT语句用来告诉优化器按照我们的告诉它的方式生成执行计划。可实现:使用的优化器的类型,基于代价的优化器的优化目标,是all_rows还是first_rows,表的访问路径,是全表扫描,还是索引扫描,还是直接利用rowid,表之间的连接类型与顺序,语句的并行程度。
处理技术
3、修改隐含参数”_optim_peek_user_binds”为FALSE,修改这个参数可能会引起性能问题(这里讨论的是稳定性问题)。
  这时可以使用刷新一下共享池alter system flush shared_pool;   或者alter session set "_optim_peek_user_binds"=false;
处理技术
4、使用OUTLINE。对于曾经出现过执行计划突然变差的SQL语句,可以使用OUTLINE来加固其执行计划。。如果事先对所有频繁执行的核心SQL使用OUTLINE加固执行计划,将最大可能地避免SQL语句性能突然变差。
DBMS_OUTLN可以通过$ORACLE_HOME/rdbms/admin/。
数据库安全
1、用户标识和鉴别
(1)提供用户标识自己身份
(2)记录所有合法用户标识
(3)进入系统时必须核对身份标识
(4)可重复标识和鉴定
(5)鉴定后才使用