优化提示的分类
1 优化方法和目标Hints 2 访问路径Hints 3 查询转换Hints4 连接顺序Hints 5 连接操作Hints 6 并行执行Hints7 其他Hints[@more@]优化提示的分类1 优化方法和目标Hints2 访问路径Hints3 查询转换Hints4 连接顺序Hints5 连接操作Hints6 并行执行Hints7 其他Hints1 优化方法和目标HintsALL_ROWSFIRST_ROWS(n)CHOOSERULE2 访问路径HintsFULLROWIDSELECT /*+ROWID(employees)*/ *FROM employeesWHERE rowid > 'AAAAtkAABAAAFNTAAA' AND employee_id = 155;HASHINDEXINDEX_ASCINDEX_COMBINESELECT /*+INDEX_COMBINE(employees
[笔记]statistics信息的收集
Statistics generated include the following:1,Table statistics– Number of rows– Number of blocks– Average row length2,Column statistics– Number of distinct values (NDV) in column– Number of nulls in column– Data distribution (histogram)3,Index statistics– Number of leaf blocks– Levels– Clustering factor4,System statistics– I/O performance and utilization– CPU performance and utilization[@more@]1,表中块的数目,索引深度,从ROOT块到它的叶块。这些都是计算的很准确的。2,ORACLE推荐在使用
学习笔记--how the cbo evaluates IN-list iterators
in-list iterators就是查询时候用IN子句。[@more@]SELECT header_id, line_id, revenue_amountFROM so_lines_allWHERE header_id IN (1011,1012,1013);SELECT header_id, line_id, revenue_amountFROM so_lines_allWHERE header_id = 1011OR header_id = 1012OR header_id = 1013;Plan-------------------------------------------------SELECT STATEMENTINLIST ITERATORTABLE ACCESS BY INDEX ROWID SO_LINES_ALLINDEX RANGE SCAN SO_LINES_N1这两句SQL的执行计划一样。两者是等价的。如果索引是个UNIQUE。用IN的方式发生的是RANGE SCAN不
转帖semi-join,,anti-join;
http://blog.itpub.net/post/901/12680 http://www.itpub.net/438650.html[@more@]表连接的方式如join,semi-join,outer-join,anti-join; 表连接的实现方式如nested loop,merge,hash. 本文简单的介绍表连接的方式join,semi-join,outer-join,anti-join和适用情景。假设2个数据源(row source). Emp(id pk,ename,deptno) Dept(deptno pk,dname) 如下是join select ename,dname from emp,dept where emp.deptno=dname.deptno;2个数据源键值一一比较,返回相互匹配的记录集for example: nested loop joinfor x in ( select * from emp ) l
USE EXPLAIN PLAN
简单的一点。[@more@]SQL> explain plan for 2 select ename from scott.emp; Explained.@$ORACLE_HOME/rdbms/admin/utlxpls.sql PLAN_TABLE_OUTPUT--------------------------------------------------------------------------------Plan hash value: 3956160932--------------------------------------------------------------------------|
select 表的时候如果别的会话TRUNCATE DROP PURGE表后会是什么结果
这边详细讨论了。http://www.orafaq.com/forum/t/90714/102589/有时间学习下[@more@]
append提示与外键还有ORA-12838
今天看AskTom上一文。记录下。http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:486662100346064066有外键的时后。append提示就会忽略了。[@more@] SQL> create table t1(id int primary key); Table created.SQL> create table t2(id int references t1); Table created.SQL> create table t3(id int); Table created.SQL> insert into t1 select rownum from dual connect by rownum<=10;10 rows created.SQL>
restore archivelog
restore archivelog[@more@]RMAN> run{2> allocate channel c1 type 'sbt_tape';3> set archivelog destination to '/mnt/southdb/arch';4> restore archivelog from logseq 18427 until logseq 18527;5> release channel c1;6> }RMAN-03022: compiling command: allocateRMAN-03023: executing command: allocateRMAN-08030: allocated channel: c1RMAN-08500: channel c1: sid=122 devtype=SBT_TAPERMAN-08526: channel c1: VERITAS NetBackup for Oracle - Release 4.5GA (00000000)RMAN-03022: compiling command:
要给自己定计划啊。
总是对自己说要把ORACLE细细的学学。但就是太浮躁。[@more@]郁闷的不行。
节前的恐慌(2)
昨天那鸟DB出事情。今天也是继续。巡检发现硬盘坏了一块。300G。不知道做个rebuild要多久。[@more@]
节前的恐慌
9月27日。假前第三天。IO异常[@more@]夜间被电话CALL。运维反映一服务器数据库挂了。汗来了。。此库800多G。回公司ssh无法登陆上。ping可以通。这下感觉麻烦大了。磁带机是一个星期前的全备份。也刚刚tar了一个全备。解压一下也要2天。这个备份策略很不现实。还好此库为查询DB。不对生产造成直接损失。系统部兄弟去电信机房一看。IO异常。说是一大堆错误。偶也不知道啥子错误。重启动!一次。。。挂死两次。。。自检不过三次。。。ctrl +c跳过自检。还是不中四次。。。总算起了。服了他了。刚要离开机房。另一台standby db 内存报警了。妈
vertias本机恢复过程
说明:10.10.0.53 ctdb04 ,假设此为使用中重要DB ,通过veritas 全库备份至磁带机。10.10.0.59 cdim ,veritas server软件服务器,(windows 2000)。[@more@]情况(一):拥有控制文件的恢复说明:1,53数据库有完整全备份在磁带机中(包括controlfile),其参数文件和controlfile也有第三方手段进行备份。2,53数据库宕,需要用磁带机中的备份数据恢复至53服务器中。操作流程如下:1) RMAN> run{2> allocate channel c1 type 'sbt_tape';3> restore database;4> recover database;5> release channel c1;}
vertias异机恢复过程
情况(一):拥有控制文件的恢复[@more@]说明:10.10.0.58 backupdatabase ,假设此为使用中重要DB ,通过veritas 全库备份至磁带机。10.10.0.53 ctdb04 ,假设此为新服务器,无数据库。10.10.0.59 cdim ,veritas server软件服务器,(windows 2000)。说明:1,58数据库有完整全备份在磁带机中(包括controlfile),其参数文件和controlfile也有第三方手段进行备份。2,58服务器宕机,无法修复,需要用将数据恢复至53服务器中。操作流程如下:1) 利用oracle tar包在10.10.0.53部署数据库。(略过,见文档XXX);目录与58保
ORA-02062号错误
8点钟就跑到公司来,辛苦的拉。为的是割接测试。[@more@]一切顺利。当主database切换到standby后。发现数据库不停的报Errors in file /u01/app/oracle/admin/southdb/bdump/reco_25938.trc:ORA-02062: distributed recovery received DBID b5482b5f, expected 3122e55fTue Sep 25 08:55:50 2007Errors in file /u01/app/oracle/admin/southdb/bdump/reco_25938.trc:ORA-02062: distributed recovery received DBID b5482b5f, expected 3122e55fTue Sep 25 08:55:50 2007Errors in file /u01/app/oracle/admin/southdb/bdump/reco_25938.tr
ORA-29701: unable to connect to Cluster Manager
在测试ASM的时候报THISSQL> startupORA-29701: unable to connect to Cluster Manager[@more@][root@asm ~]# /u01/app/oracle/product/10.0.2/bin/localconfig add/etc/oracle does not exist. Creating it now.Successfully accumulated necessary OCR keys.Creating OCR keys for user 'root', privgrp 'root'..Operation successful.Configuration for local CSS has been initializedAdding to inittab Startup will be queued to init within 90 seconds.Checking the status of new Oracle init process...Expecting the CRS dae
Dataguard的配置
在本机上使用这样的方式建立备用数据库[@more@]一,物理备用数据库是主数据库完全副本,直接应用REDO保持与主数据库的同步物理备用数据库的建立1, 使用用户管理的方式建立备用数据库A:在本机上使用这样的方式建立备用数据库1,先直接利用Tar包部署ORACLE服务端。---详见tar包配置10G服务端文档[oracle@Ora10g-P u01]$ sqlplus "/ as sysdba"SQL*Plus: Release 10.2.0.3.0 - Production on Wed Sep 12 20:43:55 2007Copyright (c) 1982, 2006, Oracle. All Rights Reserved.Connected to an idle instance.SQL> startup mou
查看主数据库的对象中是否使用了不支持的数据类型
在dba_logstdby_unsupported[@more@][oracle@tsdb01-shcd ~]$ sqlplus "/as sysdba"SQL*Plus: Release 10.2.0.3.0 - Production on Tue Sep 18 17:03:30 2007Copyright (c) 1982, 2006, Oracle. All Rights Reserved.Connected to:Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - ProductionWith the Partitioning, OLAP and Data Mining optionsSQL> select distinct owner,table_name from dba_logstdby_unsupported 2 order by owner
vmware esx配置共享磁盘
vmware esx配置共享磁盘[@more@]1 先用 vmkfstools 工具建立一个空白的虚拟硬盘 (例如名为 sdisk)2 打开cluster01的edit setting... ,选择新增harddisk, 然后选择use an existing virtual disk使用现有的虚拟硬盘sdisk3 这一步设置关键: 虚拟硬盘的 virtual device node 选项要选为: SCSI (1:0)4 设置完后,虚拟机设置会多出一个硬盘和一个SCSI 控制器 15 点击新增SCSI 控制器 1, 看右手边的 SCSI Bus Sharing 设置, 将 None 改为 Virtual6 Cluster02照着2-5步同样做一次.创建全0内容的虚拟盘vmkfstools -c <size> -d eagerzer
测试一把
alter session set events '10046 trace name context forever,levle 8';[@more@]SQL> create table t as select * from dba_objects; Table created.SQL> insert into t select * from t; 55867 rows created.SQL> / 111734 rows created.SQL> commit;
profile进行密码设置
用PROFILE进行限制的方法[@more@][oracle@tsdb01-shcd admin]$ cd $ORACLE_HOME/rdbms/admin/[oracle@tsdb01-shcd admin]$ ls utlpwd*utlpwdmg.sql[oracle@tsdb01-shcd admin]$ cat utlpwdmg.sql RemRem $Header: utlpwdmg.sql 31-aug-2000.11:00:47 nireland Exp $RemRem utlpwdmg.sqlRemRem Copyright (c) Oracle Corporation 1996, 2000. All Rights Reserved.RemRem NAMERem utlpwdmg.sql - script for Default Password Resource LimitsRemRem DESCRIPTIONRem This is a script for enabling the password manageme