Oracle性能调优 之FreeList和HWM
Normal 0 7.8 pt 0 2 false false false MicrosoftInternetExplorer4 st1:*{behavior:url(#ieooui) } /* Style Definitions */ table.MsoNormalTable {mso-style-name:"Table Normal"; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-parent:""; mso-padding-alt:0cm 5.4pt 0cm 5.4pt; mso-para-margin:0cm; mso-para-margin-bottom:.
Oracle锁调查的脚本
select/*+ NO_MERGER(a) NO_MERGE(b) NO_MERGER(c)*/ a.USERNAME, a.MACHINE, a.SID, a.SERIAL#, a.LAST_CALL_ET "Sec", b.ID1, c.SQL_TEXT "SQL" from v$session a, v$lock b, v$sqltext c where a.USERNAME is not null and a.LOCKWAIT = b.KADDR and a.SQL_HASH_VALUE = c.HASH_VALUE[@more@]
ftp
REMOTE='21.14.25.27'USER='fasfasd'PASSWORD='ffffff'FTPLOG='/orasw/scripts/ftp_logical_bkup.log'date >> $FTPLOGexport vt=`date +%y%m%d`cd /database/expbkp/usr/bin/ftp -n -v $REMOTE <<_FTP>>$FTPLOGquote USER $USERquote PASS $PASSWORDbinpromptcd prod_logicalmput PROD_$vt.*quit_FTP[@more@]
Duplicating Database using RMAN duplicate command
http://www.oracle-mag.com/oracle-database-articles/backup-and-recovery/duplicating-database-using-rman-duplicate-command[@more@]
Oracle Long类型转换为Clob类型
INSERT INTO sammy_test_clob SELECT TO_LOB (report_xml) FROM qm_s_report WHERE report_name = 'Sammy';TO_LOB函数和LONG类型一样,限制有很多。简单的说,TO_LOB一般只用在CREATE TABLE或INSERT TABLE语句后面的子查询中。在其他地方使用会报错,比如UPDATE语句。这还不是最大的问题,最大的问题在于,TO_LOB函数似乎并没有真正的将LONG类型转化为LOB数据类型。个人感觉,Oracle只是对LONG类型做了一些处理,使之可以存放到一个LOB类型中去。[@more@]LONG: 可变长的字符串数据,最长2G,LONG具有VARCHAR2列的特性,可以存储长
Csscan output explained [ID 444701.1]
Csscan output explained [ID 444701.1] Modified 23-JUN-2011 Type REFERENCE Status PUBLISHED In this Document Purpose Scope Csscan output explained A) Csscan output files. A.1) The .out file A.2) The .txt file A.3) The .err file. B) The meaning of the status of data in the Conversion Summary of the .txt file: B.1) CHANGELESS data. B.2) CONVERTIBLE data. B.3) TRUNCATIO
RMAN cumulative and differential incremental backup
http://blog.oraclefans.cn/rocksky/entry/rman_cumulative_and_differential_incremental[@more@]
ORACLE中的DUMP转储方法
一、Oracle跟踪文件 Oracle跟踪文件分为三种类型,一种是后台报警日志文件,记录数据库在启动、关闭和运行期间后台进程的活动情况,如表空间创建、回滚段创建、某些 alter命令、日志切换、错误消息等。在数据库出现故障时,应首先查看该文件,但文件中的信息与任何错误状态没有必然的联系。后台报警日志文件保存 BACKGROUND_DUMP_DEST参数指定的目录中,文件格式为SIDALRT.LOG。另一种类型是DBWR、LGWR、SMON等后台进程创 建的后台跟踪文件。后台跟踪文件根据后台进程运行情况产生,后台跟踪文件也保存在BACKGROUND_DUMP_DEST参数指定的
索引成本计算的基础知识
索引访问路径的工作流程:1 为定义的索引列准备相关的谓词2 定位索引的根块3 沿着索引分支层往下走,一直到叶块,这也是第一个符合谓词条件的索引项 start key4 遍历整个叶块连表,一直到最后一个能与谓词匹配的索引项 stop key5 对每一个索引项,确定是否访问表块有以上可以知道和索引成本相关的3个因素:1 按降续遍历的分之层数2 遍历的叶快数目3 访问过的表块数目SQL> run; 1* select index_name,blevel,leaf_blocks,status,num_rows from user_indexes where table_owner='SCOTT'INDEX_NAME BLEVEL LEAF_
Oracle SQL baseline
Oracle SQL baseline是Oracle用来取代outline的新功能。其原理和outline比较类似,都是将预先设定好的plan或者hint存储在数据字典中,当SQL匹配的时候,采用预订好的plan。 通常用在第三方程序的SQL中,这样的SQL Text通常不能被重写,如果CBO不能自动生成理想的执行计划,则需要DBA通过添加hint等方法人工干预。也常用来固定关键SQL的执行计划。如应用从开发数据库部署到产品数据库,可以将outline或者baseline从测试库输出输入到产品数据库中。也用在数据库升级的时候,防止因为升级带来的optimzer或者其他参数变化导致升级后SQL执行计
行迁移和行链接的检测
通过前面的介绍我们知道,行链接主要是由于数据库的db_block_size不够大,对于一些大的字段没法在一个block中存储下,从而产生了 行链接。对于行链接我们除了增大db_block_size之外没有别的任何办法去避免,但是因为数据库建立后db_block_size是不可改变的 (在9i之前),对于Oracle9i的数据库我们可以对不同的表空间指定不同的db_block_size,因此行链接的产生几乎是不可避免的,也没有 太多可以调整的地方。行迁移则主要是由于更新表的时候,由于表的pctfree参数设置太小,导致block中没有足够的空间去容纳更新后的记录,从而产 生了
Oracle 语法之 OVER (PARTITION BY ..) 及开窗函数 转载
oracle的分析函数over 及开窗函数 一:分析函数over Oracle从8.1.6开始提供分析函数,分析函数用于计算基于组的某种聚合值,它和聚合函数的不同之处是 对于每个组返回多行,而聚合函数对于每个组只返回一行。 下面通过几个例子来说明其应用。 1:统计某商店
使用LAG和LEAD函数统计
Lag和Lead函数可以在一次查询中取出同一字段的前N行的数据和后N行的值。这种操作可以使用对相同表的表连接来实现,不过使用LAG和LEAD有更高的效率。以下是LAG和LEAD的例子: SQL> select year,region,profit ,lag (profit,1) over (order by year) 2 as last_year_exp from test; YEAR REGION PROFIT LAST_YEAR_EXP ---- ------- ---------- ------------- 2003 West 88 2003 West 88 88 2003 Central 101 88 2003 Central 100 101
oracle index 聚集因子
简单看一下clustering_factor简单的说CLUSTERING_FACTOR 用于INDEX 的有序度和表的混乱度之间比较b*tree index是经过排序的例如 INDEX中 记录的第一个rowid指向 表所在DATAFILE 中 BLOCK#1 第1行 计数器 记为1,第2个rowid 指向 BLOCK#2 由于改变了块 所以 计数器加1 ,INDEX 第3个rowid指向BLOCK#2 块没变 所以计数器还为2,接着沿INDEX执行 第4个rowid 指向BLOCK#1 块又变了计数器加1计数器对应着CLUSTERING_FACTOR 计数器每次从一个块到另一个新块时候加1 这样CLUSTERING_FACTOR也加一所以clustering_factor可以描述数据在表中的散布方
使用Bulk Collect提高Oracle查询效率
Oracle8i中首次引入了Bulk Collect特性,该特性可以让我们在PL/SQL中能使用批查询,批查询在某些情况下能显著提高查询效率。现在,我们对该特性进行一些简单的测试和分析。 1. 首先,我们创建一个表,并插入100000条记录 在SQL/Plus中执行下列脚本: drop table empl_tbl / create table empl_tbl(last_name varchar2(20), first_name varchar2(10), salary number(10)) / begin for i in 3000..102999 loop insert into empl_tbl(last_name,first_name,salary) values('carl'||(i-3000),'wu'||(103000-i),i); end loop;
Oracle 10g Logminer 研究及测试
一,如何使用Logminer: 先要安装logminer的两个包;以SYS用户运行下面两个脚本,其中第一个脚本dbmslm.sql用来创建DBMS_LOGMNR包,该包用来分析日志文件。第二个脚本dbmslmd.sql用来创建DBMS_LOGMNR_D包,该包用来创建数据字典文件。 D:oracleproduct10.2.0db_1RDBMSADMIN>sqlplus /nologSQL*Plus: Release 10.2.0.4.0 - Production on星期五4月10 17:49:02 2009Copyright (c) 1982, 2007, Oracle. All Rights Reserved.SQL> conn sys/oracle as sysdba已连接。SQL>SQL> @dbmslm.sql程序包已创建。授权成功。SQL>SQL>
cursor参数
declarecursor t is select * from mao.tabs where rownum<10;cursor c(t_name tabs.table_name%type) is select * from mao.cols where cols.table_name=t_name;t_r tabs%rowtype;c_r cols%rowtype;begin for t in (select * from mao.tabs where rownum<10) loop dbms_output.put_line(t.owner||' '||t.table_name||': '); dbms_output.put_line('-------'); for c in(select * from mao.cols where table_name=t.table_name) loop dbms_output.put_line(c.column_name); end loop; dbms_output.put_line('-
oracle create a new database using backup controlfile to trace
1 atler database backup controlfile to trace2 modify pfile (create pfile='/tmp/init.ora' from spfile);"db_name" to the new string;3 export ORACLE_SID="NEW DATABASE NAME" startup nomount pfile='/tmp/init.ora'CREATE CONTROLFILE set DATABASE "jerry" RESETLOGS ARCHIVELOGalter database mount;alter database open;[@more@]CREATE CONTROLFILE set DATABASE "jerry" RESETLOGS ARCHIVELOG MAXLOGFILES 16 MAXLOGMEMBERS 3 MAXDATAFILES 100 MAXINSTANCES 8 MA
oracle hot block
alter table MYTABLE2 minimize records_per_block;[@more@]
perl自定义函数
#!/usr/bin/perluse strict;sub sum{ my $z; $z=$_[0]+$_[1]; return($z) ; }print sum(1,2);[@more@]