xsb Oracle Blog

暂无签名

  • 博客访问: 3047289
  • 博文数量: 343
  • 用 户 组: 普通用户
  • 注册时间: 1970-01-01 08:00
个人简介

鏆傛棤浠嬬粛

ITPUB论坛APP

ITPUB论坛APP



APP发帖 享双倍积分

文章分类

全部博文(343)

文章存档

2012年(1)

2011年(6)

2010年(2)

2009年(6)

2008年(32)

2007年(28)

2006年(182)

2005年(78)

2004年(8)

微信关注

IT168企业级官微



微信号:IT168qiye



系统架构师大会



微信号:SACC2013

发布时间:2006-03-29 10:38:14

(2004-11-15 First Publish )http://www.oracle.com/global/cn/oramag/oracle/03-sep/o53business.html注意:对于用于查询改写的物化视图,必须有ENABLE QUERY REWRITE子句。还有,初始化参数QUERY_REWRITE_ENABLED必须被设置为TRUE。 物化视图MV综合技术应用[@more@]无需改变SQL查询就可以大幅提高查询性能。  你是否为等待你的查询返回结果而感到疲惫?你是否已经为增强索引和调优SQL而感到疲惫,但仍然不能提高查询性能?那么,你是否已经考虑创建物化视图?有了物化视图,那些过去需要数小时运行的报告可以在几分钟内完成。物化视图......【阅读全文】

阅读(4113) | 评论(0) | 转发(0)

发布时间:2006-03-28 13:05:58

阻止DDL并记警告日志(zt).[@more@]Ref: http://blog.itpub.net/post/330/5417有时我们需要控制用户对表执行DDL操作,包括truncate等操作。为了达到灵活控制的目的,我们使用了DDL trigger。由于我们的系统每5分钟会检查alert log错误信息并短信报警,这样我采取了写alert log的方式来记录不明DDL操作。 下面这个trigger限制非服务器本机进行的DDL操作,由于应用的要求,我们允许非服务器本地登陆用户对snapshot log 和以log结尾的表进行操作。为了实现目标我们需要给用户授予相关权限conn / as sysdbagrant select on v_$session to aliba......【阅读全文】

阅读(5055) | 评论(0) | 转发(0)

发布时间:2006-03-24 18:10:15

很久前(2005-05-26)写的一个函数,今天(2006/02/10 18:10)传上来备用。 今天重新作了一下修改!虽然是个非常小的函数![@more@]create or replace function F_DAYS2STR(P_DAYS in number) return varchar2 is--Ver:1.0--Created by xsb on 2005-05-26--For:将天数转换成天时分秒格式DAYS number := NVL(P_DAYS, 0);VD number; --天VH number; --小时VM number; --分钟VS number; --秒--result varchar2(100); --返回值beginVD := TRUNC(DAYS);VH := TRUNC((DAYS - VD) * 24);VM := TRUNC((DAYS - VD - VH / 24) * 24 * 60);VS := TRUNC((D......【阅读全文】

阅读(5235) | 评论(0) | 转发(0)

发布时间:2006-03-24 09:48:25

Get Oracle Hint ListGetting a list of Oracle hints for SQL tuning is often difficult. The Oracle hint list is inside the Oracle executable and you can extract the Oracle hint list easily with UNIX commands.You can use grep and strings to get them directly from the Oracle executable:[@more@]通过Leading 和 use_hash 提示连用,我们可以巧妙的影响SQL中表和结果集的Join顺序http://www.eygle.com/archives/2006/02/use_leading_hints_change_sql_explain.htmlOracle Hints详解 strings $ORACLE_HOME/bin/oracle > ......【阅读全文】

阅读(3968) | 评论(0) | 转发(0)

发布时间:2006-03-22 13:42:52

why is the advantage to RAID 1+0:[@more@]RAID 0+1: We stripe together drives 1, 2, 3, 4 and 5 into RAID 0 stripe set "A", and drives 6, 7, 8, 9 and 10 into RAID 0 stripe set "B". We then mirror A and B using RAID 1. If one drive fails, say drive #2, then the entire stripe set "A" is lost, because RAID 0 has no redundancy; the RAID 0+1 array continues to chug along because the entire stripe set "B" is still functioning. However, at this point you are reduce......【阅读全文】

阅读(3087) | 评论(0) | 转发(0)

发布时间:2006-03-22 12:01:42

v$bh视图保存着buffer cache中每一个block的信息(dirty字段,如果为N表示已经被写入磁盘,如果为Y则表示仍然是脏数据),另附F_GET_ROWID函数:[@more@]SQL> select * from t; SQL> select count(*) from v$bh where file# = 8 and block# = 537028; COUNT(*) ---------- 1create or replace function F_GET_ROWID(P_ROWID in varchar2) return varchar2 is---获取ROWID信息ROWID_TYPE number;OBJECT_NUMBER number;RELATIVE_FNO number;BLOCK_NUMBER number;ROW_NUMBER number;beginDBMS_ROWID.ROWID_INFO(P_ROWID, ROWID_TYPE, OBJ......【阅读全文】

阅读(3687) | 评论(0) | 转发(0)

发布时间:2006-03-22 11:41:44

http://www.iamdba.com/2006/03/dw_star_transform.html[@more@]......【阅读全文】

阅读(2779) | 评论(0) | 转发(0)

发布时间:2006-03-22 11:35:46

用_allow_read_only_corruption参数更好:很多在数据库不一致时, 最后用_allow_resetlogs_corruption参数设为true来打开了, 不过这个方法不如用_allow_read_only_corruption设有true来得好, 后者只是要求数据库用open read only来打开, 而不会对原来的数据文件作破坏. [@more@] 在打开read only后还是可以导出的, 并可以为temp表空间加临时文件. 反正遇到这种情况总是要重新导出然后导入到新的数据库中的. Ref: http://www.iamdba.com/2006/03/allow_read_only_corruption.html ......【阅读全文】

阅读(2928) | 评论(0) | 转发(0)

发布时间:2006-03-20 12:03:19

摘要:本文深入分析几则由于人为操作不当造成的数据库事故,并根据案例总结归纳出操作高压线和维护规则,用以指导工程师正确维护Oracle数据库,减少人为事故的发生。 [@more@]背景:在日常的数据库技术支持工作中,会发现相当部分的数据库事故和人为操作不当有直接的关系。每次的新员工培训,也会用真实案例来说明和强调正确操作习惯的重要性。在强调职业化,推行可服务性的大环境下,了解数据库操作的高压线,掌握维护规则绕开雷区,就显得格外刻不容缓。为此我特别总结过去一两年中的突出数据库案例,罗列出常见的违规操作,希望借此能够......【阅读全文】

阅读(4848) | 评论(0) | 转发(0)

发布时间:2006-03-17 15:51:19

日志文件使用小结(zt)[@more@]1:给日志组1增加重做日志文件. SQL> alter database add logfile member 'G:ORACLEORADATALIJIEREDO1b.LOG' to group 1; 数据库已更改。 2:删除重做日志. SQL>alter database drop logfile member 'G:ORACLEORADATALIJIEREDO1b.LOG'; 备注:如果要删除点日志是当前重做日志,就无法删除. 如: 查看当前重做日志的信息. SQL> select a.member,b.status 2 from v$logfile a ,v$log b 3 where a.group#=b.group#; MEMBER STATUS ---------------- G:ORACLEORADATALIJIEREDO01.LOG CURRE......【阅读全文】

阅读(3647) | 评论(0) | 转发(0)

发布时间:2006-03-17 15:49:23

假设条件:1、只做了对控制文件的备份2、非归档模式3、在对控制文件做了备份以后,创建了一个表空间,并包含一个数据文件4、在新建的表空间下建了一张表,并存了一条数据5、备份控制文件以后没有进行别的DML操作6、shutdown abort以后,错误删除刚建表空间所包含的数据文件,包括控制文件:[@more@]思路:要想恢复数据库,必须先恢复控制文件,但控制文件是旧的,不包括删除了的表空间和数据文件.但删除的数据文件的信息在redo里面还是存在的,由此想到了利用redo来更新控制文件.更新控制文件后,如果open数据库,它应该会提示数据文件丢失.再增加相......【阅读全文】

阅读(4170) | 评论(0) | 转发(0)

发布时间:2006-03-17 15:42:43

本文只讨论Oracle中最常见的索引,即是B-tree索引。本文中涉及的数据库版本是Oracle8i。[@more@]  一. 查看系统表中的用户索引  在Oracle中,SYSTEM表是安装数据库时自动建立的,它包含数据库的全部数据字典,存储过程、包、函数和触发器的定义以及系统回滚段。  一般来说,应该尽量避免在SYSTEM表中存储非SYSTEM用户的对象。因为这样会带来数据库维护和管理的很多问题。一旦SYSTEM表损坏了,只能重新生成数据库。我们可以用下面的语句来检查在SYSTEM表内有没有其他用户的索引存在。select count(*) from dba_indexeswhere tablespa......【阅读全文】

阅读(3430) | 评论(0) | 转发(0)

发布时间:2006-03-17 15:40:12

从Oracle9i开始,索引跳跃式扫描特性可以允许优化器使用组合索引,即便索引的前导列没有出现在WHERE子句中。索引跳跃式扫描比全索引扫描要快的多。下面的程序清单显示出性能的差别:[@more@]create index idx_skip on emp5(job,empno);index created.select count(*) from emp5where empno=7900;Elapsed:00:00:03.13Execution Plan0 SELECT STATEMENT Optimizer=CHOOSE(Cost=4 Card=1 Bytes=5)1 0 SORT(AGGREGATE)2 1 INDEX(FAST FULL SCAN) OF 'idx_skip'(NON-UNIQUE)Statistics6826 consistent gets6819 physical readsselect /*+ index......【阅读全文】

阅读(151522) | 评论(0) | 转发(0)

发布时间:2006-03-17 15:31:10

其他帖子:statspack应用指南,statspack 必看的十项内容[@more@]一、statspack 输出结果中必须查看的十项内容1、负载间档(Load profile)2、实例效率点击率(Instance efficiency hit ratios)3、首要的5个等待事件(Top 5 wait events)4、等待事件(Wait events)5、闩锁等待6、首要的SQL(Top sql)7、实例活动(Instance activity)8、文件I/O(File I/O)9、内存分配(Memory allocation)10、缓冲区等待(Buffer waits) 二、输出结果解释1、报表头信息数据库实例相关信息,包括数据库名称、ID、版本号及主机等信息 STATSPACK report forDB Name DB I......【阅读全文】

阅读(3655) | 评论(0) | 转发(0)

发布时间:2006-03-17 15:28:14

可以用以下几点对high-water mark进行理解。[@more@]1.指一个表中曾经被用过的最后一个块2.如果有数据被插入表,high-water mark 就移到到被使用的最后一个块。3.如果有数据被删除,high-water mark的位置不会变。4.high-water mark被储存在表的段头(segment header of the table)。5.当对表执行全表扫描时,oracle server 被所有的块直到high-water mark。这样看来high-wate mark就是用来标识最后一个被用过的block的另外:1 如果为表分配了大量的extents , 但这些extent 还没使用可以手工收回。并且有如下两种情况第一种 minextent <......【阅读全文】

阅读(2911) | 评论(0) | 转发(0)

发布时间:2006-03-17 15:25:52

在很多時候我們需要通過bind var來提高整個DB的performance,在我們用第三次開發軟件做對結果集的查詢。我們如何在procedure中完成對結果集的查詢呢,從oracle7.3才被支持,在9i以后又有新的變化,在9i以前要define一個type才可以。而在9i以后oracle引入了一個新的類型為sys_refcursor,這樣就不需要我們重新定義。我們來看一個例子吧。[@more@]C:oracleora92sqlplusdemo>sqlplus /nologSQL*Plus: Release 9.2.0.1.0 - Production on 星期六 4月 2 11:09:06 2005Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.SQL......【阅读全文】

阅读(5152) | 评论(0) | 转发(0)

发布时间:2006-03-17 15:24:03

第五部分:ORACLE网络与安全[@more@][Q]如何限定特定IP访问数据库[A]可以利用登录触发器、cmgw或者是在$OREACLE_HOME/network/admin下新增一个protocol.ora文件(有些os可能是. protocol.ora),9i可以直接修改sqlnet.ora:增加如下内容:tcp.validnode_checking=yes#允许访问的iptcp.inited_nodes=(ip1,ip2,……)#不允许访问的iptcp.excluded_nodes=(ip1,ip2,……)[Q]如何穿过防火墙连接数据库[A]这个问题只会在WIN平台出现,UNIX平台会自动解决。解决方法:在服务器端的SQLNET.ORA应类似SQLNET.AUTHENTICATION_SERVICES= (NTS) NAMES.DI......【阅读全文】

阅读(2850) | 评论(0) | 转发(0)

发布时间:2006-03-17 15:22:43

第四部分:性能调整[@more@][Q]如果设置自动跟踪[A]用system登录执行$ORACLE_HOME/rdbms/admin/utlxplan.sql创建计划表执行$ORACLE_HOME/sqlplus/admin/plustrce.sql创建plustrace角色如果想计划表让每个用户都能使用,则SQL>create public synonym plan_table for plan_table;SQL> grant all on plan_table to public;如果想让自动跟踪的角色让每个用户都能使用,则SQL> grant plustrace to public;通过如下语句开启/停止跟踪SET AUTOTRACE ON |OFF | ON EXPLAIN | ON STATISTICS | TRACEONLY | TRACEONLY EXPLAIN[Q]如果跟踪自......【阅读全文】

阅读(2976) | 评论(0) | 转发(0)

发布时间:2006-03-17 15:21:13

第三部分:备份与恢复[@more@] -->[Q]如何开启/关闭归档[A]如果开启归档,请保证log_archive_start=true开启自动归档,否则只能手工归档,如果是关闭了归档,则设置该参数为false注意:如果是OPS/RAC环境,需要先把parallel_server = true注释掉,然后执行如下步骤,最后用这个参数重新启动1、开启归档a. 关闭数据库shutdown immediateb. startup mountc. alter database archivelogd. alter database opne2、禁止归档a. 关闭数据库shutdown immediateb. startup mountc. alter database noarchivelogd. alter database open归档信息可......【阅读全文】

阅读(3015) | 评论(0) | 转发(0)

发布时间:2006-03-17 15:20:59

第一部分:SQL&PL/SQL[@more@][Q]怎么样查询特殊字符,如通配符%与_[A]select * from table where name like 'A_%' escape ''[Q]如何插入单引号到数据库表中[A]可以用ASCII码处理,其它特殊字符如&也一样,如 insert into t values('i'||chr(39)||'m'); -- chr(39)代表字符'或者用两个单引号表示一个or insert into t values('I''m'); -- 两个''可以表示一个'[Q]怎样设置事务一致性[A]set transaction [isolation level] read committed; 默认语句级一致性set transaction [isolation level] serializable;read only; 事务级一致性......【阅读全文】

阅读(2684) | 评论(0) | 转发(0)

发布时间:2006-03-17 15:17:19

第二部分:ORACLE构架体系:[@more@][Q]ORACLE的有那些数据类型[A]常见的数据类型有CHAR固定长度字符域,最大长度可达2000个字节 NCHAR多字节字符集的固定长度字符域,长度随字符集而定,最多为2000个字符或2000个字节 VARCHAR2可变长度字符域,最大长度可达4000个字符 NVARCHAR2多字节字符集的可变长度字符域,长度随字符集而定,最多为4000个字符或4000个字节 DATE用于存储全部日期的固定长度(7个字节)字符域,时间作为日期的一部分存储其中。除非 通过设置init.ora文件的NLS_DATE_FORMAT参数来取代日期格式,否则查询时,日期以 DD-MON......【阅读全文】

阅读(2653) | 评论(0) | 转发(0)

发布时间:2006-03-17 15:08:35

在会话级,查询视图V$SESSION_WAIT时如果有该事件存在,那么该视图中的:P1-表示Latch地址,也就是进程正在等待的latch地址。P2-表示Latch编号,对应于视图V$LATCHNAME中的latch#。P3-表示为了获得该latch而尝试的次数。[@more@]......【阅读全文】

阅读(2971) | 评论(0) | 转发(0)

发布时间:2006-03-17 15:03:22

等待事件(wait event)是oracle核心代码的一个命名部分,有两种类型的等待事件:空闲事件(idle event)与非空闲事件(non-idle event),空闲事件指oracle正在等待某种工作,常见的空闲等待事件:client message、null event、pipe get、pmon/smon timer、rdbms rpc message及sql*net等;非空闲等待事件:buffer busy waits、db file scattered read、db file sequential read、enqueue、free buffer waits、latch free、log file sync、log file paralle write等。[@more@] 什么是瓶颈?一旦熟悉了系统的等待事件,就能够把握问题......【阅读全文】

阅读(2701) | 评论(0) | 转发(0)

发布时间:2006-03-17 15:01:44

truncate,delete,drop的比较:[@more@]-->注意:这里说的delete是指不带where子句的delete语句相同点:truncate和不带where子句的delete, 以及drop都会删除表内的数据 不同点: 1. truncate和 delete只删除数据不删除表的结构(定义) drop语句将删除表的结构被依赖的约束(constrain),触发器(trigger),索引(index); 依赖于该表的存储过程/函数将保留,但是变为invalid状态. 2.delete语句是DML,这个操作会放到rollback segement中,事务提交之后才生效;如果有相应的trigger,执行的时候将被触发. truncate,drop是DDL, 操作立即生效,原数据不放到r......【阅读全文】

阅读(2946) | 评论(0) | 转发(0)

发布时间:2006-03-17 13:29:42

仅供参考,并不全面也不代表权威:[@more@]Oracle面试常见的二十个问题及回答1.冷备份和热备份的不同点以及各自的优点  解答:热备份针对归档模式的数据库,在数据库仍旧处于工作状态时进行备份。而冷备份指在数据库关闭后,进行备份,适用于所有模式的数据库。热备份的优点在于当备份时,数据库仍旧可以被使用并且可以将数据库恢复到任意一个时间点。冷备份的优点在于它的备份和恢复操作相当简单,并且由于冷备份的数据库可以工作在非归档模式下,数据库性能会比归档模式稍好。(因为不必将archive log写入硬盘)  2.如果你必须利用备份恢......【阅读全文】

阅读(11407) | 评论(0) | 转发(0)
给主人留下些什么吧!~~
留言热议
请登录后留言。

登录 注册