最近数据库升级到11G之后,出现一些问题,慢慢的开始发现一些需要总结的东西,每次心里都在想:下次,我自己搭建数据仓库的时候,一定要注意这些细节,在仓库的创建初期就做好这些工作。
1、redo log的设计
1)如果可以单独放,redo和数据文件单独划组做条带化等。物理上分开。
2)redolog如果可以单独放,就不要设置得太大,最多500M一个,因为日志太大,可能会导致实例恢复的时间很长。另外在极端倒霉的情况下,如果再数据恢复过程中,实例再次down掉,比如掉电。那你就惨了。总之,那么多数据放在日志里不安全,放在datafile里放心一些。
3)如果你和我一样悲催,redo和datafile所在磁盘组都在一个,因为存储底层直接划分的一个大池子(基于成本、速度的综合考虑),那你就把日志调大一些(目前我的是2G/个),组数增加一些(目前我的20组),如果还是出现日志不够用,那就多增加组数,比如30组。另外ASM在这种大池子面前,基本无法提高IO了,因为你无法解决redo和datafile竞争IO的问题。
2.undo策略
1)undo_retention的设计
一般可以直接设置3小时,先保证系统可用。当然undo表空间要足够大。
好吧,如果你说无法定量,我给你一个参考值。
数据量3T的数据库,设置undo表空间为300G,undo_retention时间为10800,默认单位是秒,也就是3小时。
2)guarantee参数的取舍
我觉得,如果你未充分了解你的业务系统和数据库状况之前,不要轻易启用这个参数。有可能会导致异常灾难。
上述条件不成立的,可以尝试使用该参数,以防止ORA-01555的出现。
3、DB和OS级别都要记得开启异步IO
前面已经写过了,不在赘述:
http://blog.csdn.net/laven54/article/details/9771327
4、。。。其他的,等想到了再加上来吧
5、OLTP和DSS不同数据库设计
转载自:http://space.itpub.net/26464953/viewspace-712124
oltp 数据库 | dss 数据库 |
oltp = online transaction processing | dss = data warehousing |
联机事物处理 | 数据仓库 |
例如:飞机订票,网上交易,bbs等 | 例如:各种资源资料查询系统 |
大量的在线用户和dml操作 | 很少的dml操作 |
大量基于索引的查询 | 大量的全表扫描的查询 |
用b-tree,reverse key索引,定期索引重建 | 用bitmap索引 |
需要较多的小的回退段 | 需要较少的大的回退段 |
不要用分布式查询 | 用分布式查询 |
数据对象的存储参数pctfree 20 或者更高 | 数据对象的存储参数pctfree 0 |
共享程序代码和各种变量常量 | 字符变量和线索 |
启动多线索服务 | 使用大的数据块,db_file_mutiblock_read_count |
使用较大的日志文件 | 使用较小的日志文件 |
listener开多个响应端口 | 增加sort_area_size |
从itpub上又找到一些内容,我直接转过来了,转载地址为:http://www.itpub.net/thread-1726429-8-1.html
1.数据仓库生产库和OLTP系统的生产库的配置具体有哪些地方不相同?
(1)、内存
和OLTP相比,DW系统PGA意义重大,我以前还通过修改隐藏参数让DW可以用更多的PGA
(2)、表空间:
TEMP表空间要大,可以分用户使用不同的临时表空间。
(3)、并行
并行进程的数量要足够,我们以前DW做大的报表,全靠并行了。
(4)、备份
增量备份可以开启“块改变跟踪文件”,提高增量备份速度。
(5)、块大小、区大小
使用大块、大区。
我以前DW是用32K块大小。
另外,分区设计也要重点考虑。还可以考虑RAC扩展CPU、内存。存储磁盘越多越好,磁盘越多吞吐量才能越大。OLTP我一般用RAI10,DW为节省空间一般用RAID5就行。曾用过RAID6模式,效果不是太好,写性能有点慢。归档空间要足够,并切要快。DW要经常做大的数据加载,我们以前归档是瓶径。
2.数据仓库系统在日常性能维护和调优的过程中,有哪些特点以及需要注意的地方?
除OLTP的常见指标外,一是要关注PGA、临时表空间的消耗。二是DW系统空间耗用比较大,可以多关注空间的消耗。SQL方面,DW的SQL一般都巨长无比,调优难度还是比较大的。大部分的表,我都是以5%的比例收集统计信息,让Oracle自己生成计划,只有客户反应慢的SQL才会发精力去看。
1:我们的数据仓库归档是关闭,oltp一般开归档 2:数据仓库大量的数据IO瓶颈是在临时表空间,临时表空间我们用2TB的固态盘;oltp io一般在数据表空间 3:数据仓库 单个redo较大,数目较多; 4:数据仓库db_block一般较大16,32K,oltp较小,8,16kB 5:数据仓库一般数据装载采用sqlldr direct=true parallel=true,一般采用多个进程同时加载 6:数据仓库一般采用二级分区,oltp表设计一般为表或一级分区 7:数据仓库数据插入一般采用append,parallel优化指示,oltp不采用。 8:数据仓库一般设定并行服务,设定parallel相关参数,oltp不用 9:数据仓库rac间通讯成为瓶颈,所以采用rds的ib协议,oltp较少使用。 10:数据仓库接口表一般不建索引,oltp一般都建立索引 |
公司最近也要我研究数据仓库,了解不多,讨论两个问题吧
1.数据仓库生产库和OLTP系统的生产库的配置具体有哪些地方不相同?
答:
(1)OLTP系统中PGA的设置通常规律是:总物理内存*80%*20%,而在数据仓库中PGA的比重要增加:总物理内存*80%*50% (当然都是些前者总结的经验值,不可完全照搬);
(2)在OLTP系统中,通常建好库我们会将数据库模式调为归档;但在数据仓库中常常会需要将模式调为非归档,特别在载入时;
(3)在数据库设计上来说,OLTP系统常用到的3范式就不能再在数据仓库中照搬了。OLTP提倡的降低数据冗余,而在数据仓库维度建模中为避免过度的雪花处理(过度的雪花处理会导致数据仓库过多的表和连接,造成查询缓慢,另外也降低了用户在维度中进行浏览的能力,并且还挫败了位图索引的使用),维度表常常出现一些数据冗余。相对动则10多GB的事实表,无需花太多精力去规范化比事实表小很多的维度表。
2.数据仓库系统在日常性能维护和调优的过程中,有哪些特点以及需要注意的地方?
答:
(1)数据仓库系统常常都是批量操作,小事务操作很少,因此无论在导入还是查询都可以考虑采用并行提高性能;
(2)分区技术在数据仓库日常维护中发挥了更大的作用,由于OLTP系统事务性强,经常做小事务的DML操作的表是不适合做分区的,并且分区索引的使用要求也相对比较苛刻,而在数据仓库中对于维护大批量历史数据备份与迁移这块,分区技术使本来笨重麻烦的工作变得轻松简单;
(3)说到数据迁移,基于表空间的数据迁移方法也不错,比普通EXPDP/IMPDP快捷;
(4)由于数据仓库修改操作比较少,在每次批量操作以后将表空间设置为只读也便于备份与查询的效率提升;
(5)数据仓库中位图索引使用的好处就不说了,这个你懂的
大db_block_size,pctfree 0,pga比较大,db_file_multiblock_read_count |
_________________________________________________________________________________
版权所有,文章允许转载,但必须以链接方式注明源地址,否则追究法律责任!
Author: laven54 (lurou)
Email: laven54@163.com
Blog: http://blog.csdn.net/laven54