DBA的日常工作

dba的日常工作:
oracle的产品安装:参考安装包中的安装文档(单机和RAC --> ops)

数据库的网络配置:listener.ora & tnsnames.ora

创建数据库:安全因素(控制文件和日志成员的多元化),存储的规划(合理设计表空间),数据量大(2g以上,行超过千万级别)的表设计成分区表将表中数据库分散到多个表空间,数据量小的频繁访问的表也要分散到不同的表空间,表和索引要分散到不同的表空间,需要若干的temp表空间,至少2个undo表空间

oracle跟踪文件目录下要有足够的空闲空间:
audit_file_dest=''
diagnostic_dest=''

监控数据库的空间使用情况(每周)

监控数据库中的无效对象,无效索引,无效约束,无效日志(每天)

将空数据库的统计信息

监控数据库中的等待事件:v$system_event,v$session_wait

监控数据量大的表和索引
select * from (select segment_name,blocks,segment_type from dba_segments order by 2 desc) where rownum<11;

指定备份策略

定期查看备份日志

为数据库安装补丁程序(数据库版本升级)

数据库性能调整:内存、网络、存储

通过oem查看数据库运行情况的概览
------------------------------------------------------------------------------------------
为数据库规划内存使用:
OLTP:联机事务处理系统(并发量大,操作相对简单,计算不复杂,访问数据量不大)
OLAP:联机分析系统(连接的会话很少,但计算非常复杂,通常指仓库系统决策支持系统)

OLTP:80% TOTAL MEMORY
PGA:20%
SGA:80%

OLAP:80% TOTAL MEMORY
PGA:50%
SGA:50%
------------------------------------------------------------------------------------------
oracle 11g 的内存分配:(sga+pga)组合在一起自动管理
memory_max_target:静态参数,oracle使用的内存上限
memory_target :动态参数,自动管理的内存的上向,memory_target<=memory_max_target<=/dev/shm

kernel.shmmni*kernel.shmall = total_memory*80%
/dev/shm = total_memory*80%
memory_max_target = total_memory*80%

SQL> select * from v$sgainfo;
控制共享池的参数仍然有效,指定的值是共享池收缩的最小值
SQL> alter system set shared_pool_size=300m;
控制数据库缓冲区高速缓存的最小值db_cache_size
SQL> alter system set db_cache_size=500m;
*上面两个参数控制内存收缩的下限,避免性能下降

SQL> select * from v$pgastat;
pga_aggregate_target 控制pga大小的参数无效
------------------------------------------------------------------------------------------
oracle 10g 的内存分配:
从spfile中删除11g内存自动管理的参数
SQL> alter system reset memory_target scope=spfile sid='*';
SQL> startup force

PGA自动管理的参数
pga_aggregate_target --> 单个pga扩张的上限

查看后台进程的PGA使用情况
SQL> select p.pid,b.name,p.PGA_USED_MEM/1048576 mb from v$bgprocess b,v$process p where p.addr=b.paddr;

根据会话查找pga使用情况:
SQL> select PGA_USED_MEM/1048576 from v$process where addr in (select paddr from v$session where username='SCOTT');

pga对排序操作的影响:
通过sql跟踪查看sql语句执行成本:
SQL> set autot trace exp

SQL> select * from t01 order by 5,4,3,2,1;
Elapsed: 00:00:00.00

Execution Plan
----------------------------------------------------------
Plan hash value: 2509066158

-----------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes |TempSpc| Cost (%CPU)| Time |
-----------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 200K| 6445K| | 5246 (1)| 00:01:03 |
| 1 | SORT ORDER BY | | 200K| 6445K| 10M| 5246 (1)| 00:01:03 |
| 2 | TABLE ACCESS FULL| T01 | 200K| 6445K| | 343 (1)| 00:00:05 |
-----------------------------------------------------------------------------------

查看pga的调整建议:
SQL> select PGA_TARGET_FOR_ESTIMATE/1048576,ESTD_PGA_CACHE_HIT_PERCENTAGE from v$pga_target_advice;

修改cursor info中的游标数量:
show parameter session_cached_cursors = 50
查看cursor info中的游标:快速软解析
select SID,USER_NAME,sql_text from v$open_cursor where sql_text like 'select * from scott%';
------------------------------------------------------------------------------------------