Note:413586.1上有个小程序不错,供大家参考SQL> set serveroutput ondeclare db_ready boolean; begin db_ready := dbms_tdb.check_db('Linux IA (64-bit)');end;/SQL> PL/SQL procedure successfully completed.SQL> set serveroutput ondeclare db_ready boolean; begin db_ready := dbms_tdb.check_db('AIX-Based Systems (64-bit)');end;/SQL> The specified target platform name 'AIX-Based Systems (64-bit)' is invalid orthe target platform is not transportable.PL/SQL procedure successfully completed.如果没返回任何信息,就是可以兼容,否则会显示不兼容。不过要注意的是数据库要在READONLY模式下打开才可以做该贴被白鳝编辑于2008-9-26 16:08:32
刚才有个人问我如何修复被设置为UNUSED的字段,我考虑了一下,以下的方法可以恢复(以下步骤执行前要做好备份),没有经验的DBA不要轻易尝试。1、创建实验表TTTASQL> CREATE TABLE TTTA ( A INTEGER,B INTEGER,C VARCHAR2(10),D INTEGER);表已创建。SQL> INSERT INTO TTTA VALUES (1,2,'3',4);已创建 1 行。SQL> INSERT INTO TTTA VALUES (2,3,'4',5);已创建 1 行。SQL> COMMIT;提交完成。 ALTER TABLE TTTA SET UNUSED COLUMN C;2、以下进行恢复 SQL> SELECT OBJ# FROM OBJ$ WHERE NAME='TTTA'; OBJ#---------- 32067SELECT COL#,INTCOL#,NAME FROM COL$ WHERE OBJ#=32067; COL# INTCOL# NAME---------- ---------- ------------------------------ 1 1 A 2 2 B 0 3 SYS_C00003_08031720:09:55$ 被UNUSED的字段 3 4 DSQL> SELECT COLS FROM TAB$ WHERE OBJ#=32067; COLS---------- 3 ------字段数变为3了 SQL> UPDATE COL$ SET COL#=INTCOL# WHERE OBJ#=32067;已更新4行。SQL> UPDATE TAB$ SET COLS=COLS+1 WHERE OBJ#=32067;已更新 1 行。UPDATE COL$ SET NAME='C' WHERE OBJ#=32067 AND COL#=3;UPDATE COL$ SET PROPERTY=0 WHERE OBJ#=32067;SQL> COMMIT;3、重启数据库SQL> SELECT * FRO
很多人会把健康性检查和调优混淆起来,其实调优和健康性检查的出发点是不同的。健康性检查的目的是找出系统可能存在的隐患,性能隐患只是其中的一个方面,而不是全部。有些非性能隐患可能给系统带来的风险更大。所以说健康性检查的最终目的是找出可能对系统造成影响,带来服务终止或者服务质量下降的因素。一般来说健康性检查需要涵盖以下的方面:1、硬件资源:各种硬件资源是否充足,是否能够满足目前以及未来几个月甚至半年的业务发展2、操作系统:操作系统的文件系统是否存在问题,操作系统日志中是否存在严重的隐患,操作系统的参数是否满足目前数据库实例的需要,SWAP区、/tmp等是否满足目前业务的需要3、数据库的配置:参数设置是否存在问题,SGA、UNDO、REDO、控制文件、归档是否合理。表空间是否存在问题。4、数据库各种日志5、数据库性能6、备份恢复7、TOP SQL8、安全可以参考一下METALINK How to Perform a Healthcheck on the Database 122669.1该贴被白鳝编辑于2008-4-6 9:32:55
有些BLOCK比较热,如何查找热块呢?通过X$BH可以发现热块,以下的查询可以发现热块:select dbarfil,dbablk,sum(tch) from x$bh group by dbarfil,dbablk having sum(tch)><阀值>;另外一种情况是可能某个块在DB CACHE中的版本较多,通过下列查询可以检查:select dbarfil,dbablk,count(*) from x$bh group by dbarfil,dbablk having count(*)><阀值>;过高的版本数可能还会导致cache buffer chains的增加,从而导致该闩锁的竞争加剧。当然过高的TCH也可能导致cache buffer chains的竞争。热块引起HASH CHAINS相关闩锁竞争也是十分常见的。该贴被白鳝编辑于2008-4-6 14:02:13