获取表空间DDL
通过sys_connect_by_path可以获取某个用户用到的表空间的简单建立DDL。SQL> DECLARE 2 l_sql VARCHAR2(32767) := ''; 3 l_len INT := 255; 4 i INT := 1; 5 BEGIN 6 dbms_output.enable(1000...
In和exists使用及性能分析(二):exists的使用
本节主要讨论exists的使用。二、exists的使用2.1 exists的使用2.1.1内、外两表关联字段都非空SQL> select * from tb1;T1 NAME1---------- ----------1 12 2SQL> select * from tb2;T2 NAME2---------- ----------2 2...
不起界面,用response file的方式升级数据库
本文主要讨论如何通过response文件,在不起界面的方式升级数据库。具体步骤如下:一、把下载的补丁集解压,修改vi /software/Disk1/response/patchset.rsp把如下值修改为你实际的值:UNIX_GROUP_NAME=oinstallFROM_...
减少热备方法迁移数据库的停机时间
迁移需求:1、两边数据保持一致2、停机时间很短3、不借助移动硬盘之类的设备4、nocatelog背景:1、两边数据库和OS版本一致2、DML操作比较频繁3、原数据库数据量很大分析:1、实现方式有多种,如prebuild MV、RMAN、...
oracle 9i临时表产生过多redo
今天遇到一个bug,对临时表进行insert的时候产生异常多的redo,下面模拟过程: SQL> select * from v$version;BANNER----------------------------------------------------------------Oracle9i ...
DATA GUARD主库丢失数据文件的恢复(2)
在DATAGUARD中,如果有备份,主库出现问题时,有多种恢复方式可选:1、从备库拷贝相关文件到主库上恢复2、拷贝备库备份到主库还原恢复3、从主库备份还原恢复本文主要讨论10G DATAGUARD中,主库丢失数据文件时,利用...
通过添加条件优化SQL
今天帮助同事优化了一个SQL,效果显著。优化方式很简单,没有修改执行计划,没有添加hint,只是根据实际情况增加一些条件。[@more@]原来的SQL是这样的:sys@dwrac1> select b.*, a.login_date 2 from user1.tb1 a, user1.tb2 b 3 where 4 a.login_date >= b.call_date 5 and a.login_date < to_char(to_date(b.call_date,'yyyy-mm-dd')+30,'yyyy-mm-dd') 6 and a.game_name = b.game_id 7 and a.popt_id = b.popt_id;Elapsed: 00:00:00.01Execution Plan----------------------------------------------------
oracle全文索引之几个关键表
oracle全文索引的原理是把对索引的查找转换成对几个表的查找。下面对几个主要的表进行简单介绍:DR$INDEX_NAME$I:该表的owner是基表所属的schema。这个表包含了所有的关键字和其对应的位置信息。这是全文索引最主要...
10G FGA的增强
我们知道,在9i中,FGA只能审计SELECT 语句,而DML语句需要用普通审计或者触发器来记录。10g增强了FGA的功能,可以审计SELECT和DML语句了。SQL> SELECT * FROM V$VERSION;BANNER-----------------------------------...
Nologging对恢复的影响(二)
Nologging在提高性能的同时,会给恢复带来一定的影响。下面通过两个案例来说明它是怎么影响恢复的。第二个案例要验证在先备份数据文件,再发生nologging操作的情况下,是否可以完全恢复数据。[@more@]1. 建表CREATE TABLE SUK.PLOGGING ( A NUMBER, B NUMBER ) PARTITION BY LIST (A) (PARTITION P1 VALUES (1) TABLESPACE SUK , PARTITION P2 VALUES (2) TABLESPACE SUK ) ; CREATE TABLE SUK.PNOLOGGING ( C NUMBER, D NUMBER ) PARTITION BY LIST (C) (PARTITION P1 VALU
记一个低级又严重的错误
今天在做两表关联update的时候,发现产生的日志量远远超出想象,update的sql如下:update t1 set t1.name=(select t2.name from t2 where t1.id=t2.id)其中t2只有几条数据。按我以前的观点,只更新t1表中id在t2存在...
用10046进行诊断一例
今天,一直运行正常的物化视图刷新忽然执行不正常SQL> exec dbms_refresh.refresh('WAI_REFRESH');begin dbms_refresh.refresh('WAI_REFRESH'); end;ORA-02019: connection description for remote database not fou...
求主外键的关系
在日常数据维护中,经常删除数据,要是这些数据所在的表有外键关联,又不设置成级联删除的话,就需要先清空子表的相关数据了。要找出所有的主外键的关联是一个比较头疼的事情,下面给出一个例子,可以得到某用户下的...
完善昨天写的数据库结构同步方案
在昨天的方案中,并没有实现对由系统自动生成约束名的约束的修改和删除的同步。考虑到这种情况的同步较为复杂,决定通过before触发器防止SYS_XXXX之类对象的创建触发器代码如下:在昨天的方案中,并没有实现对由系统...
update操作会产生几条mlog$日志?
我们知道,在快速刷新物化视图中,源表必须建立物化视图日志来记录源表数据的变化,从而使得物化视图能够快速刷新。 今天以前一位同事提出这样一个问题:做一个update操作会产生两个mlog$日志。这与我印象中...
statistics_level与SGA_TARGET冲突
今天有朋友数据库启动报错,向我求助。其中报错信息如下:SQL> startupORA-00824: cannot set sga_target due to existing internal settings, see alert log for more information最后发现问题出在参数设置冲突上,...
索引与null(一):单列索引
这篇文章主要讨论单列索引与null的关系。一、单列索引SQL> create table t(a int,b int);Table createdSQL> create index idx_t on t(a);Index createdSQL> select * from t; A B---------- ------...
静默方式安装、升级oracle(二): 创建数据库
本文简单阐述在Linux AS 4中如何不用启动界面的情况下安装oracle 10g软件、创建数据库以及升级数据库,这就是oracle的静默安装。不起界面创建数据库可以有三种方式:1、手工执行脚本这个讨论起来篇幅也比较长,不在...
对一条基于分区的简单SQL的优化
今天遇到一个很奇怪的问题,在同一个数据库上,一条简单SQL访问同样的表,一个用常量,一个用变量,但执行计划看起来一样,返回相同的数据,性能差别很大,经过一番研究,终于发现原因。下面通过实验模拟这个问题。[@more@]由于我遇到问题的表是分区表,故在实验中也用分区表模拟。drop table test purge;create table test(id int, big_col char(2000))partition by range(id)(partition p0 values less than(1),partition p1 values less than(2),partition p2 values less than(3),partition p3 values less than(4),partition p4 valu
Solaris 10下迁移10G RAC (八)
最近做了一个rac数据库的迁移,中间涉及到很多部分内容,包括rac环境的搭建、ASM的设置、数据库的迁移、升级等。本文是这次迁移工作的第八部分:迁移过程中遇到的错误。8 遇到的错误8.1 错误Crs我安装了3遍,在其中...