Archive for 十二月, 2008

gc cr busy

星期二, 十二月 30th, 2008

看到如下代码,既熟又感慨吧

Module Operation
Kdifbk: Fetches the single index row matching the argument key.
Kdusru: Updates the single row piece.
Kdifind: Finds the appropriate index block to store the key.
Kdstgr :Performs full table scan get row. Rows are accessed by a full table scan. Check the number of FULL table scans
Kdsgrp :Performs get row piece. Typically, row pieces are affected only in case of chained and migrated rows. Row chaining has to be analyzed and fixed.
Kdiixs :Performs index range scan.
Kdifxs :Fetches the next or previous row in the index scan.
Kdifbk :Fetches the single index row matching the agreement key.
Ktugct :Block cleanout.

oracle client和database的支持关系

星期一, 十二月 29th, 2008

ORACLE客户端和数据库的版本关系

 

1

recyclebin维护

星期一, 十二月 29th, 2008

ORACLE 10G 有了回收站,类似于WINDOWS下回收站,就是删除对象时,不会直接删除,会首先保留到回收站里,一般默认存在用户默认的表空间里,当数据库空间使用达到一定程度时,会自动DROP,由于HS应用的特点,一段时间后回收站里对象就很多,此时你就会发现,在运行统计表空间使用率的时候,或者相关操作时特别慢,有它一部分原因,一下介绍下简单维护
1 回收站的相关视图
dba_recyclebin :数据库所有用户删除的对象都会在此查询到
user_recyclebin:当前用户下删除对象可以在此查询到
注意:SYS SYSTEM等系统用户删除对象是不会保留的,直接删除了,所以用以上用户操作时注意了。,也尽量避免用以上用户操作
以下几种drop不会将相关对象放进RecycleBin:

  • drop tablespace:会将RecycleBin中所有属于该tablespace的对象清除
  • drop user:会将RecycleBin中所有属于该用户的对象清除
  • drop cluster:会将RecycleBin中所有属于该cluster的成员对象清除
  • drop type:会将RecycleBin中所有依赖该type的对象清除

RecycleBin中的对象会被系统自动按照规则重命名,这是为了防止命名冲突。命名格式为:BIN$unique_id$version
其中unique_id是26个字符的对象唯一标识符,version则是对象在数据库中的版本号。
  1*  select owner,ORIGINAL_NAME,operation,droptime,partition_name,space,type from dba_recyclebin
SQL> /

OWNER                          ORIGINAL_NAME                    OPERATION DROPTIME            PARTITION_NAME                        SPACE TYPE
—————————— ——————————– ——— ——————- ——————————– ———- ————————-
HS_USER                        IDX_USEROPERLOG_OPER            DROP      2008-12-22:09:51:12                                        2432 INDEX
HS_USER                        IDX_USEROPERLOG                  DROP      2008-12-22:09:51:12                                        3200 INDEX
HS_USER                        IDX_USEROPERLOG_BRAN            DROP      2008-12-22:09:51:12                                        3200 INDEX
HS_USER                        USEROPERLOG                      DROP      2008-12-22:09:51:12                                      14336 TABLE
HS_SECU                        IDX_ENTRUST                      DROP      2008-12-18:19:07:24                                        512 INDEX
HS_SECU                        IDX_ENTRUST_BATCH                DROP      2008-12-18:19:07:24                                        384 INDEX
HS_SECU                        IDX_ENTRUST_FUND                DROP      2008-12-18:19:07:24                                        384 INDEX
HS_SECU                        IDX_ENTRUST_STKCACCT            DROP      2008-12-18:19:07:24                                        768 INDEX
HS_SECU                        ENTRUST                          DROP      2008-12-18:19:07:24                                        2816 TABLE
HS_SECU                        IDX_ENTRUST                      DROP      2008-12-22:20:14:29                                          8 INDEX
HS_SECU                        IDX_ENTRUST_BATCH                DROP      2008-12-22:20:14:29                                          8 INDEX

OWNER                          ORIGINAL_NAME                    OPERATION DROPTIME            PARTITION_NAME                        SPACE TYPE
—————————— ——————————– ——— ——————- ——————————– ———- ————————-
HS_SECU                        IDX_ENTRUST_FUND                DROP      2008-12-22:20:14:29                                          8 INDEX
HS_SECU                        IDX_ENTRUST_STKCACCT            DROP      2008-12-22:20:14:29                                          8 INDEX
HS_SECU                        IDX_ENTRUST_REPORT              DROP      2008-12-22:20:14:29                                          8 INDEX
HS_SECU                        ENTRUST                          DROP      2008-12-22:20:14:29                                          8 TABLE
HS_FUND                        IDX_FUNDSERIALCOUNTER            DROP      2008-12-22:20:12:46                                          8 INDEX
HS_FUND                        FUNDSERIALCOUNTER                DROP      2008-12-22:20:12:46                                          8 TABLE
HS_FUND                        IDX_FUNDREALJOUR                DROP      2008-12-22:20:13:33                                          8 INDEX
HS_FUND                        IDX_FUNDREALJOUR_ACCT            DROP      2008-12-22:20:13:33                                          8 INDEX
HS_FUND                        FUNDREALJOUR                    DROP      2008-12-22:20:13:34                                          8 TABLE

2 回收站的清理
删除当前用户下所有回收站的对象
purge user_recyclebin.
删除单个对象

删除所有用户下的回收站对象
purge dba_recyclebin
删除指定表空间里的对象
purge tablespace user boson test_recyclebin
单独删除和恢复对象注意一些约束,比如索引
SQL> purge index hs_user. IDX_USEROPERLOG_OPER
  2  ;

Index purged.3 打开回收站的原因就是,避免误操作DROP对象时,可以恢复
一下介绍下简单的恢复例子
SQL> conn boson/boson
Connected.
SQL> create table test_recyclebin (a number,b varchar2(40));
Table created.
SQL> insert into test_recyclebin values (1,’one rows’);
1 row created.
SQL> commit;
Commit complete.
SQL> select * from test_recyclebin;
        A B
———- —————————————-
        1 one rows
SQL> drop table test_recyclebin; (此处模拟表的DROP操作
Table dropped.
SQL> select * from test_recyclebin; (可以确认表已经被DROP了)
select * from test_recyclebin
              *
ERROR at line 1:
ORA-00942: table or view does not exist

删除所有用户下的回收站对象
purge dba_recyclebin
删除指定表空间里的对象
purge tablespace user boson test_recyclebin
单独删除和恢复对象注意一些约束,比如索引

  1* select ORIGINAL_NAME,operation,droptime,partition_name,space,type from user_recyclebin (回收站里可以查询到对象)
SQL> /
ORIGINAL_NAME                    OPERATION DROPTIME            PARTITION_NAME                        SPACE TYPE
——————————– ——— ——————- ——————————– ———- ————————-
TEST_RECYCLEBIN                  DROP      2008-12-24:16:10:23                                          16 TABLE

SQL>  flashback table test_recyclebin to before drop; (恢复此表)
Flashback complete.
SQL> select * from test_recyclebin; (可以确认对象恢复了)
        A B
———- —————————————-
        1 one rows

可能有人问如果在DROP后,别人又创建了相同的名字,改怎么恢复呢?如何确定恢复那个呢?以下在给你演示下:
SQL> drop table test_recyclebin;(接着上边,先删除刚恢复的表)
Table dropped.
SQL> create table test_recyclebin (a number,b varchar2(40));
Table created.
SQL> insert into test_recyclebin values (1,’one rows’);
1 row created.
SQL> insert into test_recyclebin values (2,’two rows’);(为了和之前的表相区别,此处插入2行)
1 row created.
SQL> commit;
Commit complete.
SQL> select * from test_recyclebin;
        A B
———- —————————————-
        1 one rows
        2 two rows

SQL> drop table test_recyclebin;
Table dropped.
SQL> select ORIGINAL_NAME,operation,droptime,partition_name,space,type from user_recyclebin;
ORIGINAL_NAME                    OPERATION DROPTIME            PARTITION_NAME                        SPACE TYPE
——————————– ——— ——————- ——————————– ———- ————————-
TEST_RECYCLEBIN                  DROP      2008-12-24:16:17:52                                          16 TABLE
TEST_RECYCLEBIN                  DROP      2008-12-24:16:19:29                                          16 TABLE

SQL> l
  1* select ORIGINAL_NAME,operation,droptime,partition_name,space,type from user_recyclebin
SQL> c/operation/object_name,operation/
  1* select ORIGINAL_NAME,object_name,operation,droptime,partition_name,space,type from user_recyclebin
SQL> /

ORIGINAL_NAME                    OBJECT_NAME                    OPERATION DROPTIME            PARTITION_NAME                        SPACE TYPE
——————————– —————————— ——— ——————- ——————————– ———- ————————-
TEST_RECYCLEBIN                  BIN$XsZsdTnBBM3gRAAbeHwkqA==$0 DROP      2008-12-24:16:17:52                                          16 TABLE
TEST_RECYCLEBIN                  BIN$XsZsdTnCBM3gRAAbeHwkqA==$0 DROP      2008-12-24:16:19:29                                          16 TABLE

在回收战里可以看到两条信息,original_name一致,但是object_name droptime以及还有其他选项不一致,以此来区别,要恢复那个表,此处恢复的时候可以使用object_name了
比如我们想恢复,第一次删除的表,
SQL> flashback table “BIN$XsZsdTnBBM3gRAAbeHwkqA==$0″ to before drop;
Flashback complete.
SQL> select * from test_recyclebin;
        A B
———- —————————————-
        1 one rows                                            到此可以确认我们恢复的是第一次删除的表,注意用OBJECT_NAME时,需要用双引号
恢复第二次删除的表,因为数据库里已经有test_recyclebin的表了,所以恢复的时候需要重命名
SQL> flashback table “BIN$XsZsdTnCBM3gRAAbeHwkqA==$0″ to before drop rename to test_recyclebin_2;
Flashback complete.
SQL> select * from test_recyclebin_2;
        A B
———- —————————————-
        1 one rows
        2 two rows
SQL> select ORIGINAL_NAME,object_name,operation,droptime,partition_name,space,type from user_recyclebin;
no rows selected

回收站里已经没有对象了

4 回收站的禁用
alter system set recyclebin=off scope=spfile;

以上仅作参考,慎重.更详细的内容请看ORACLE官方文档

snapshot维护

星期一, 十二月 29th, 2008

数据库的快照是性能调整的时候的依据,所以说,一般不要禁用快照。
下面将介绍下日常维护内容
数据块照存储在SYSAUX 表空间当中,默认保留时间为一个星期,每一个小时收集一次
1 首先确认自己数据库快照当前设置
SQL> select * from dba_hist_wr_control;

    DBID SNAP_INTERVAL                                                              RETENTION                                                                  TOPNSQL
———- ————————————————————————— ————————————————————————— ———-
3704746844 +00000 01:00:00.0                                                          +00007 00:00:00.0                                                          DEFAULT

对以上各列解释下:
snap_interval:是快照的收集间隔,默认为1小时,最短为10分钟,最长为1年,一般为一小时就OK,有问题的时候可以根据情况适度调整
                    不过不要过于频繁)
RETENTION  :快照保留时间 默认为一个星期,最短为一天,最长为100年 ,一般一个星期就可以,如果SYSAUX空间富于,可以调整为2个星期或者更长)
TOPNSQL:一般默认为30条,和AWR报告相关,可以调整

2 一下给例子,以作参考(慎重更改)
要求 :保留时间调整为2个星期,每半个小时收集一次,每次TOPSQL为100条

exec DBMS_WORKLOAD_REPOSITORY.MODIFY_SNAPSHOT_SETTINGS( retention => 20160,
                interval => 30, topnsql => 100, dbid => 30800234);
retention和interval单位分钟 dbid 可以用一下sql获得
select dbid from v$database;

3  手动创建快照
exec DBMS_WORKLOAD_REPOSITORY.CREATE_SNAPSHOT ();
4 手动删除快照
首先用一下SQL确认你要删除快照的ID范围,一般从前往后删除)
select * from dba_hist_snapshot;

exec  DBMS_WORKLOAD_REPOSITORY.DROP_SNAPSHOT_RANGE (low_snap_id => 183,
                          high_snap_id => 229, dbid => 559040097);

5 禁用快照
exec DBMS_WORKLOAD_REPOSITORY.MODIFY_SNAPSHOT_SETTINGS(10080,0); (慎用)

一般来说如果SYSAUX空间足够的话,快照默认保留一个星期,之前会自动删除掉

庆祝blog开播一周年

星期五, 十二月 26th, 2008

下午有时间,升级了wordpress到2.7,平时不好用的,可视化编辑好用了。看下了文章列表,想想也有一年了,在这一年里收获了很多,小小庆祝下,继续努力!

 

愿 自己在09年里,买上房,娶上老婆,O(∩_∩)O哈哈~!(貌似比较困难)

 

页面访问次数

14103

访问

3655

过去24小时页面访问次数

24

过去24小时访问者

14