Oracle诊断事件列表
经常有人问,Oracle有哪些诊断事件,各是什么含义,怎样使用?这些问题问得太多太多,Oracle没有过多的说明,实际上也不需要太多的说明。我们可以通过以下代码查询得到Oracle的诊断事件及说明,通过这些,我想就足够了。列举在这里给自己参考。1.代码SET linesize 120SET feedback offSET SERVEROUTPUT ONDECLAREerr_msg VARCHAR2(120);BEGINdbms_output.enable (1000000);FOR err_num IN 10000..10999LOOPerr_msg := SQLERRM (-err_num);IF err_msg NOT LIKE '%Message '||err_num||' not found%' THENdbms_output.put_line (err_msg);EN
一些转储和清除内存对象和物理对象的命令
9i清buffer cachealter session set events 'immediate trace name flush_cache level 1';alter session set events = 'immediate trace name flush_cache';10g中清buffer cachealter system flush buffer_cache;清shared poolalter system flush shared_pool;转储sgaalter session set events 'immediate trace name heapdump level 2'; 转储library cacheALTER SESSION SET EVENTS 'immediate trace name LIBRARY_CACHE level n';Level =1 ,转储Library cache统计信息Level =2 ,转储hash table概要Level =4 ,转储Library cache对象,只包
START WITH and CONNECT BY in Oracle SQL
select ... start with initial-condition connect by nocycle recurse-conditionselect ... connect by recurse-conditionselect ... start with initial-condition connect by nocycle recurse-conditionselect ... connect by recurse-conditionThe start with .. connect by clause can be used to select data that has a hierarchical relationship (usually some sort of parent->child (boss->employee or thing->parts). It is also being used when an sql execution plan is explained. recurse-condition can mak
dbms_stats
PurposeGathering statistics is essential for the CBO to do his work. Procedures/Functionsalter_database_tab_monitoringprocedure alter_database_tab_monitoring ( monitoring in boolean default, sysobjs in boolean default);alter_schema_tab_monitoringprocedure alter_schema_tab_monitoring ( ownname in varchar2 default, monitoring in bo
GLOBAL TEMPORARY TABLE
1 语法 在Oracle中,可以创建以下两种临时表: 1) 会话特有的临时表 CREATE GLOBAL TEMPORARY ( ) ON COMMIT PRESERVE ROWS; 2) 事务特有的临时表 CREATE GLOBAL TEMPORARY ( ) ON COMMIT DELETE ROWS; CREATE GLOBAL TEMPORARY TABLE MyTempTable 所建的临时表虽然是存在的,但是如果insert 一条记录然后用别的连接登上去select,记录是空的。 --ON COMMIT DELETE ROWS 说明临时表是事务指定,每次提交后ORACLE将截断表(删除全部行) --ON COMMIT PRESERVE ROWS 说明临时表是会话指定
用 logoff trigger 保留每个 session 的性能信息
OWI -- 用 logoff trigger 保留每个 session 的性能信息如果某个开发人员跟你说他的程序最近跑得很慢,你问他做了什么修改,他说没有。你说能不能跑给你看一下,他说程序只在每天凌晨跑。这时候收集每个session的性能历史信息就很重要。event 10046对于不确定的session,收集信息太多,成本太高。statspack缺乏追踪每一个数据库连接的功能。用l ogoff trigger 是个不错的选择,该 trigger 会在每个 session 正常退出时自动触发。脚本如下,可根据具体情况作适当修改。--from <<Oracle Wait Interface A Practical Guide to Performa
SPOOL、SQLLOADER数据导出导入的一点小总结
1、SQLLOADER的CONTROL文件//********************************************************************************//基本格式:LOAD DATA INFILE 'T.DAT' // 要导入的数据文件(格式1) //INFILE 'TT.DAT' // 导入多个文件(可以和格式1并列使用) //INFILE * // 要导入的内容就在CONTROL文件里 下面的BEGINDATA后面就是导入的内容(和格式1互斥使用) APPEND INTO TABLE TABLE_NAME // 指定装入的表(这里有几种加载方式) //以下是4种装入表的方式 //APPEND // 原先的表有数据就加在后面 // INSERT // 装载空表,如果原先的表有数据SQLLOADER会停
按行数据累加计算
create table test(km varchar2(10), --会计科目dzrq date, --登帐日期jfje number(18,2), --借方金额dfje number(18,2), --贷方金额ye number(18,2) default 0 --余额); insert into test(km,jfje,dfje,dzrq) values('1',300,500,to_date('2006-01-01','yyyy-mm-dd'));insert into test(km,jfje,dfje,dzrq) values('1',600,800,to_date('2006-01-02','yyyy-mm-dd'));insert into test(km,jfje,dfje,dzrq) values('2',300,600,to_date('2006-01-01','yyyy-mm-dd'));insert into test(km,jfje,dfje,dzrq) values('3',700,500,to_date('2006
树形查询
create table test(bm number(8),bmmc varchar2(20),sjbm number(8));insert into test values(1,'aaa',0);insert into test values(11,'aaa1',1);insert into test values(12,'aaa2',1);insert into test values(111,'aaa11',11);insert into test values(112,'aaa12',11);insert into test values(113,'aaa13',11);insert into test values(121,'aaa21',12);insert into test values(122,'aaa22',12);insert into test values(123,'aaa23',12);--select bm,bmmc,sjbm,levelfrom zjstart with sjbm=0connect by prior bm = sjbm;或者sele
ORACLE FREELIST HWM(2)
3.分析方法存储参数基本上属于oracle internal的东西,因此oralce并没有提供很好的手段来分析。但是对于DBA来说,还是可以通过block dump和DBMS_SPACE等手段来获取部分信息。3.1 提取block和free list信息创建dbms_space使用的存储过程show_spaceSQL>create or replace procedure show_space( p_segname in varchar2,p_owner in varchar2 default user,p_type in varchar2 default 'TABLE',p_partition in varchar2 default NULL )asl_free_blks number;l_total_blocks number;l_total_bytes number;l_unused_blocks number;l_unused_b
ORACLE FREELIST HWM(3)
4.优化4.1手工回收存储空间在HIGH WATER MARK以上的块对性能没有影响,但是会耗费空间。如何空间大小是一个考虑的问题,就可以决定回收空块。假设表T1的存储示意图如图2.5所示,使用ALTER TABLE ... DEALLOCATE UNUSED语句可以回收HWM以上的空间。比如:alter table t1 deallocate unused;回收后T1的存储示意如图4.1.1如果在ALTER TABLE ... DEALLOCATE UNUSED语句中使用了KEEP关键字,则可以在HWM之后保留指定大小的空闲空间,比如:alter table t1 deallocate unused keep 10K;回收后T1的存储示意如图4.1.24.2删减表根据3.2.1可以得到HW
ORACLE FREELIST HWM(1)
ORACLE FREELIST HWM在Oracle9I中引入了ASSM自动表空间管理,这个使得段上面freelist,pctused,pctfree的定义已经没有太大意义,但现在很多系统还是8I,或是没有使用ASSM特性,直接采用本地手工管理表空间,所以这些参数的含义还是有意义的PCTUSED 代表每个数据块必须用多少,PCTFREE代表每个数据库需要保留多少的空间,供以后块上数据行的扩展,一般一个段上面包含一个FREELIST,当事务 需要获取空闲块时,就扫描freelist,如果扫描块数超过5块或到达freelist尽头,则抬高HWM(高水位线),让freelist容纳新的空 闲块,以供使用,如果不能抬高HWM,表示段
重建控制文件时,与数据文件相关的Checkpoint信息来自何处
背景:关闭数据库,启动数据库到Mount状态,查询此时数据文件头,控制文件中记录的各数据文件的Checkpoint;再次关闭数据库,备份所有数据文件;然后打开数据库,执行各种操作,如:强制执行检查点;再次关闭数据库,用备份的数据文件恢复现在的数据文件,重建控制文件(重建控制文件分为两种情况1. Noresetlogs ——> 查看此时的数据文件头,控制文件记录的各数据文件的Checkpoint)2. Resetlogs ——> 查看此时的数据文件头,控制文件记录的各数据文件的Checkpoint)与之前的Checkpoint比较。问题:1. Noresetlogs 重建控制文件,
修改Oracle数据库字符集
html,body { border: 0px; }If the database has been created with the wrong character set, use the following to change the character set UPDATE SYS.PROPS$ SET VALUES$ = 'WE8ISO8859P1' WHERE NAME = 'NLS_CHARACTERSET'; It is VERY important to specify the character set name correctly. If the NLS_CHARACTERSET is updated to an invalid value, it will not then be possible to restart the database once it has been shutdown. 如果已经创建的数
Oracle数据库数据锁定机制全面解析
html,body { border: 0px; }为了得到最大的性能,一般数据库都有并发机制,不过带来的问题就是数据访问的冲突。为了解决这个问题,大多数数据库用的方法就是数据的锁定。 数据的锁定分为两种方法,第一种叫做悲观锁,第二种叫做乐观锁。什么叫悲观锁呢,悲观锁顾名思义,就是对数据的冲突采取一种悲观的态度,也就是说假设数据肯定会冲突,所以在数据开始读取的时候就把数据锁定住。而乐观锁就是认为数据一般情况下不会造成冲突,所以在数据进行提交更新的时候,才会正式对数据的冲突与否进行检测,如果发现冲突了,则让用户返回错
恭喜我成功申请ITPUB BLOG
恭喜我成功申请ITPUB BLOG[@more@]
obsolete and/or deprecated parameters
在 Oracle 10g 中,以前熟悉的一些参数已经 deprecated 了,有的时候很烦人。SQL> STARTUP;ORA-32004: obsolete and/or deprecated parameter(s) specifiedORACLE instance started.Total System Global Area 213909504 bytesFixed Size 778156 bytesVariable Size 128983124 bytesDatabase Buffers 83886080 bytesRedo Buffers 262144 bytesDatabase mounted.Database opened.SQL>SQL> host oerr ora 3200432004, 00000, "obsolete and/or deprecated parameter
Linux备份与压缩命令
用户经常需要备份计算机系统中的数据,为了节省存储空间,常常将备份文件进行压缩。下面分别介绍备份与压缩的命令。 tar命令 作用:tar可以为文件和目录创建档案。利用tar,用户可以为某一特定文件创建档案(备份文件),也可以在档案中改变文件,或者向档案中加入新的文件。tar最初被用来在磁带上创建档案,现在,用户可以在任何设备上创建档案,如软盘。利用tar命令,可以把一大堆的文件和目录全部打包成一个文件,这对于备份文件或将几个文件组合成为一个文件以便于网络传输是非常有用的。Linux上的tar是GNU版本的。 语法
Linux文件内容查询命令
grep、fgrep和egrep命令 这组命令以指定模式搜索文件,并通知用户在什么文件中搜索到与指定的模式匹配的字符串,并打印出所有包含该字符串的文本行,在该文本行的最前面是该行所在的文件名。grep命令一次只能搜索一个指定的模式;egrep命令检索扩展的正则表达式(包括表达式组和可选项);fgrep命令检索固定字符串,它不识别正则表达式,是快速搜索命令。 这组命令在搜索与定位文件中特定的主题方面非常有用。要搜索的模式可以被认为是一些关键词,您可以用它们来搜索文件中包含的这些关键词。编写程序时,可以用它来寻找某一个
Linux改变文件或目录的访问权限命令
Linux改变文件或目录的访问权限命令 Linux系统中的每个文件和目录都有访问许可权限,用它来确定谁可以通过何种方式对文件和目录进行访问和操作。 文件或目录的访问权限分为只读,只写和可执行三种。以文件为例,只读权限表示只允许读其内容,而禁止对其做任何的更改操作。可执行权限表示允许将该文件作为一个程序执行。文件被创建时,文件所有者自动拥有对该文件的读、写和可执行权限,以便于对文件的阅读和修改。用户也可根据需要把访问权限设置为需要的任何组合。 有三种不同类型的用户可对文件或目录进行访问:文件所有者,