Archive for 四月, 2008

不能忽略的dynamic sampling

星期三, 四月 30th, 2008

10g中CBO优化器已经全面的代替了RBO优化器。CBO优化器的基础就是对象上的统计信息,所以10g中增加 了dynamic sampling的功能,对那些没有统计信息的或者统计信息陈旧的对象进行动态的统计。 一个新的初始化参数optimizer_dynamic_sampling被引入 SQL> show parameter dy NAME                                 TYPE        VALUE ------------------------------------ ----------- ------- optimizer_dynamic_sampling           integer     2 optimizer_dynamic_sampling参数控制的是动态分析的取样量,参数的范围是0到10,10g中的默认值是2 。下面做个测试,看看dynamic sampling的效果。 SQL> create table sunwg as select * from dba_objects; 表已创建。 SQL> set autot traceonly SQL> select count(*) from sunwg; 执行计划 ---------------------------------------------------------- Plan hash value: 2736253977 -------------------------------------------------------------------- | Id  | Operation          | Name  | Rows  | Cost (%CPU)| Time     | -------------------------------------------------------------------- |   0 | SELECT STATEMENT   |       |     1 |   ...

flashback database

星期二, 四月 29th, 2008

flashback table最早是在9i中提出的,但是在9i中的仅仅能恢复dml操作。在10g中对flashback table进 行了增加,并且还引入了flashback database的操作。这样DBA又有了一个数据库恢复的强有力的工具。 打开flashback database有如下步骤: 1,确保数据库运行在归档模式 shutdown immediate startup mount alter database archivelog 2,配置恢复区(recovery area)相关初始化参数 db_recovery_file_dest db_recovery_file_dest_size 3,以mount exclusive方式打开数据库,修改flashback database属性 startup mount exclusive alter database flashback on 4,设置flashback database恢复目标 db_flashback_retention_target 可以通过下面的sql检查数据库是否成功开启flashback database select flashback_on from v$database flashback database常用的两个视图是v$flashback_database_stat和v$flashback_database_log。 flashback database可以通过以下两种方法: 1,rman flashback database to time = to_date ('2008-04-29 15:30:30','yyyy-mm-dd hh24:mi:ss') 2,sql command flashback database to timestamp(SYSDATE – 5/24) flashback database to scn 88888 关闭flashback startup mount alter database flashback off 最后还有一点要说明的是: 在flashback database之后如果是需要resetlogs的,如果不确定是否flashback到正确的时间点,最好先 用read only方式打开数据库后在resetlogs。 参考:http://www.dbazine.com/olc/olc-articles/liu6

常用的数据库监控脚本(3)

星期一, 四月 28th, 2008

19.最近24小时新创建的对象 col OWNER FOR a15 col OBJECT_NAME FOR a30 col SUBOBJECT_NAME FOR a30 col OBJECT_TYPE FOR a20 SELECT OWNER,OBJECT_NAME,SUBOBJECT_NAME,OBJECT_ID,OBJECT_TYPE,TO_CHAR(CREATED,'yyyy-mm-dd hh24:mi:ss')   FROM dba_objects  WHERE CREATED > sysdate - 1  ORDER BY 1,2   20.最近24小时创建的表及其大小 col OWNER FOR a15 col OBJECT_NAME FOR a30 col SUBOBJECT_NAME FOR a30 col OBJECT_TYPE FOR a20 SELECT B.OWNER,B.OBJECT_NAME,B.SUBOBJECT_NAME,B.OBJECT_ID,a.bytes/(1024*1024) as "size(M)" ,TO_CHAR(CREATED,'yyyy-mm-dd hh24:mi:ss')   FROM DBA_SEGMENTS a,        dba_objects b  WHERE a.segment_name=b.object_name    AND a.owner = ...

常用的数据库监控脚本(2)

星期一, 四月 28th, 2008

6.Check OS process id from Oracle sid SELECT spid   FROM v$process  WHERE addr IN ( SELECT paddr                    FROM v$session                   WHERE sid = &sid )                   7.Check Oracle sid from OS process id SELECT sid   FROM v$session  WHERE paddr IN ( SELECT addr                     FROM v$process                    WHERE spid = &spid )                    8.Check current SQL in a SESSION SELECT SQL_TEXT   FROM ...

常用的数据库监控脚本(1)

星期一, 四月 28th, 2008

1.监控表空间使用率与剩余空间大小 SELECT D.TABLESPACE_NAME,        SPACE "SUM_SPACE(M)",        BLOCKS SUM_BLOCKS,        SPACE-NVL(FREE_SPACE,0) "USED_SPACE(M)",        ROUND((1-NVL(FREE_SPACE,0)/SPACE)*100,2) "USED_RATE(%)",        FREE_SPACE "FREE_SPACE(M)"   FROM (SELECT TABLESPACE_NAME,                ROUND(SUM(BYTES)/(1024*1024),2) SPACE,                SUM(BLOCKS) BLOCKS           FROM DBA_DATA_FILES          GROUP BY TABLESPACE_NAME) D,        (SELECT TABLESPACE_NAME,                ROUND(SUM(BYTES)/(1024*1024),2) FREE_SPACE           FROM DBA_FREE_SPACE          GROUP BY TABLESPACE_NAME) F  WHERE D.TABLESPACE_NAME = F.TABLESPACE_NAME(+) UNION ALL --if have tempfile SELECT D.TABLESPACE_NAME,        SPACE "SUM_SPACE(M)",        BLOCKS SUM_BLOCKS,        USED_SPACE "USED_SPACE(M)",        ROUND(NVL(USED_SPACE,0)/SPACE*100,2) ...

Page 1 of 812345678»