[zt]prebuilt 物化视图迁移数据库
最近论坛上有人问exp 一个300G的数据库,有没有更好的方法,有人提议有prebuilt,做了个试验,记下过程SQL> conn test/test@jumper;已连接。[@more@]SQL> create table test(a int,b varchar(2));表已创建。SQL> alter table test add constraint pk_test primary key(a);表已更改。SQL> create index i_b on test(b);索引已创建。SQL> insert into test values(1,'a');已创建 1 行。SQL> commit;提交完成。SQL> create materialized view log on test with primary key;实体化视图日志已创建。获得需要创建的对象SQL>
[ZT]v$sqlarea,v$sql,v$sqltext这三个视图提供的sql语句有什么区别
今天看帖子的一小点收获.先总结个人经验:通常根据v$sqlarea( DISK_READS NUMBERBUFFER_GETS NUMBER)作sql性能诊断.根据v$sqltext,(HASH_VALUE)ORDER BY PIECE获取到完整的sql语句进行分析优化.根据v$session(SQL_HASH_VALUE)联合v$sqltext也能获取到当前session正在执行的sql.[@more@]biti对v$sqlarea,v$sql,v$sqltext这三个视图的解释.出处: http://www.itpub.net/showthread.php?threadid=181450v$sqltext存储的是完整的SQL,SQL被分割SQL> desc v$sqltextName Null? Type----------------------------------------- -------- ------
9i分区表自动管理实现方法之一
需求cmd_sent,track保留最近三个月数据当前天为2005年3月5日为例[@more@]分析:1 2005年3月20日导出2004.12分区数据2 2005年3月21日增加2005.5分区 exec add_partition_procedure(2); 3 2005年3月20日删除2004.12分区数据 exec drop_partition_procedure(3);1 备份原有分区数据[oracle@gpsbeta admin]$ cat cmd_sent_bk_by_partition.sh#!/bin/shexport ORACLE_HOME=/home/oracle/OraHome1export ORACLE_SID=orclexport NLS_LANG=american_america.ZHS16GBKdateStr=`/bin/date +%Y%m`dateAgo=`date --date='3 months ago' +%Y%m`tabWi
Shrink Undo表空间
UNDOTBS1 已经extend到13.1396484G。 由于磁盘紧张,现在需要Shrink Undo表空间.[@more@]SQL> select usn,xacts,rssize/1024/1024/1024,hwmsize/1024/1024/1024,shrinks,extends2 from v$rollstat order by rssize;USN XACTS RSSIZE/1024/1024/1024 HWMSIZE/1024/1024/1024 SHRINKS EXTENDS---------- ---------- --------------------- ---------------------- ---------- ----------0 0 .000358582 .000358582 0 01 0 .005973816 .012809753 45 866 0 .005973816 .006950378 30 482 0 .005973816 .008903503 37 567 0 .005973816 .00
重建tempfile
今天上班发现公司测试库的temp表空间数据文件包增到11g ,询问开发说昨天作了数据库压力测试.出于磁盘空间考虑,重新把temp表空间数据文件做小.SQL> select FILE_NAME,TABLESPACE_NAME from dba_temp_files;FILE_NAME--------------------------------------------------------------------------------TABLESPACE_NAME------------------------------/opt/oracle/product/9i/oradata/cwt/temp01.dbfTEMP[oracle@localhost cwt]$ ls -lhtotal 13G...-rw-rw---- 1 oracle dba 11G Mar 20 14:58 temp01.dbf....[@more@]SQL> ALTER DAT
给兄弟项目做Statspack优化过程
目前数据库负载处理事务情况需要指出的是数据库每秒钟需要处理事务数(业务和Oracle数据字典本身)为99.53.说明数据库在24-Feb-05 16:00:03至24-Feb-05 22:00:05期间比较繁忙.每秒钟的物理读(disk reads)为4,558.93*8k=35671k(34M左右)表示: 每秒钟处理业务需要系统级的内存交换在34M左右.这一点是需要降低的,看到这里我感觉到数据缓冲区中的命中率不会高.Load Profile~~~~~~~~~~~~ Per Second Per Transaction --------------- ---------------
histogram一点研究(待整理)
一 基于值的histogram1corp表sp_id列的distinct key为22SQL> select count(distinct sp_id) from corp;COUNT(DISTINCTSP_ID)-------------------- 22[@more@]一 基于值的histogram1corp表sp_id列的distinct key为22SQL> select count(distinct sp_id) from corp;COUNT(DISTINCTSP_ID)-------------------- 222 使用以下语句产生柱状图数据.默认会产生75个buckets来表示数据分布SQL> analyze table corp compute statistics for columns sp_id; Table analyzed.3 当histogram buckets>=表
索引内部结构探索
Oracle的Branch block纪录了Leaf block的地址,以及该Leaf block的index entry的最小值Branch block dump=================header address 180063820=0xabb8e4ckdxcolev 1KDXCOLEV Flags = - - -kdxcolok 1kdxcoopc 0x81: opcode=1: iot flags=--- is converted=Ykdxconco 2kdxcosdc 1kdxconro 2kdxcofbo 32=0x20kdxcofeo 8042=0x1f6akdxcoavs 8010kdxbrlmc 37750271=0x24005ffkdxbrsno 0kdxbrbksz 8056 row#0[8042] dba: 37750269=0x24005fd 第一个Leaf block的存储地址 十六进制 24 代表文件号 5fd代表block号col 0; len 1; (1): 36 第一
固定缓存对象
尝试在内存中固定经常使用的对象,包括表,存储过程等。[@more@]一 固定频繁使用的表如果我们要固定表,那么可以在创建表的时候或者修改表属性时使用CACHE关键字,将表放置到Buffer Cache的LRU列表的MRU端。通常我们需要对于较小的但是频繁使用的表进行这种操作。ALTER TABLE TABLE_NAME CACHE;我们也可以将需要频繁使用的表放置到另外一个独立的Buffer Cache中,比如KEEP池。这种操作可以使这些表的数据不至于很快被清除出Default Buffer Cache。ALTER TABLE <tablename> STORAGE (BUFFER_POOL KEEP); ALTER INDEX <indexname&g
没事干写个每天导出的教本
bash-2.05$ cat smbk.sh #Backup script written by foreverlee#version 1.2#!/bin/shORACLE_BASE=/oracleORACLE_HOME=$ORACLE_BASE/product/9.2.0ORACLE_SID=orclNLS_LANG=AMERICAN_AMERICA.ZHS16GBKdateStr=`/bin/date +%Y%m%d`dmpFileName=$dateStr'sm.dmp'dmpLogName=$dateStr'sm.log'dmpLocation='/oradata/orabk/'$dmpFileNamelogLocation='/oradata/orabk/'$dmpLogName$ORACLE_HOME/bin/exp xx/xx owner=xx file=$dmpLocation log=$logLocation rows=y FEEDBACK=100000 buffer=100000000##rm last backup filedateAgo=`date --dat
数据文件internal分析
http://www.cnoug.org/viewthread.php?tid=1201&highlight=%2Bparrotao[@more@]―――――――――――――――――――――――――――――――――― *** 2003-06-12 11:36:22.437 *** SESSION ID:(12.96) 2003-06-12 11:36:22.343 Start dump data blocks tsn: 8 file#: 11 minblk 2 maxblk 2 buffer tsn: 8 rdba: 0x02c00002 (11/2) scn: 0x0000.001148eb seq: 0x01 flg: 0x00 tail: 0x48eb1001 frmt: 0x02 chkval: 0x0000 type: 0x10=DATA SEGMENT HEADER - UNLIMITED Extent Control Header
10g Data guard 最大性能时(默认)redo data传送流程
参考文档:Oracle Data Guard Concepts and Administration10g Release 1 (10.1)下面讲述默认情况下(LOG_ARCHIVE_LOCAL_FIRST=TRUE)redo data传送流程如图:10g_data_guard_5_2.gif这是一个默认情况下DataGuard传送日至流程.Primary database在ChicagoStandby database在Boston流程是这样的: 归档发生在primary database的一次日志切换.[@more@]参考文档:Oracle Data Guard Concepts and Administration10g Release 1 (10.1)下面讲述默认情况下(LOG_ARCHIVE_LOCAL_FIRST=TRUE)redo data传送流程如图:这是一个默认情况下DataGuard传送日至流程
访问分区表
原文:http://www.cnoug.org/viewthread.php?tid=3171[@more@]1. 对一张表建立了分区后,在访问表中数据时是如何操作的。 answer: 普通表呢像一个小学生用的新华字典,分区表呢像一套博士们辞海,在同一个漂亮的盒子里面(表名)有若干本辞海分册(每一册就是一个分区了)。 如果说检索一张普通表就像查新化字典,检索分区表就像查辞海了。具体而言呢,又这么几种方式: 1). 因为你知道你查的内容只会出现在某些分册里面,于是你很快的从辞海盒子里面取出你要的那个册子,不加思索的翻到索引页,根据索引页的指示,
RAID
From Metalink.==================================================================================== RAID Type of RAID Control Database Redo Log Archive Log File &nbs
找出冗余索引的脚本
查看数据库中有无多余的索引,即一个索引的字段为另一个索引的前几个字段。如index1的定义为test(filed1,filed2),index2的定义为test(filed1,filed2,filed3),则认为index1是多余的。[@more@]查看数据库中有无多余的索引,即一个索引的字段为另一个索引的前几个字段。如index1的定义为test(filed1,filed2),index2的定义为test(filed1,filed2,filed3),则认为index1是多余的。----------------------------------------------------------------------------------- Script: redundant_indexes.sql-- Purpose: to find any redun
Cold Database backup script
--Set SQL*Plus variables to manipulate outputset feedback off heading off verify off trimspool offset pagesize 0 linesize 200[@more@]--Set SQL*Plus variables to manipulate outputset feedback off heading off verify off trimspool offset pagesize 0 linesize 200--Set SQL*Plus user variables used in this scriptdefine dir = '/backup/cold_backup'define fil = /tmp/closed_backup_temp.sql'prompt Spool to &fil ......--Create a command file with file backup commandsspool &fil select 'host cp '|
手工创建控制文件
1> 最首要的备份方法是将控制文件备份为二进制文件.ALTER DATABASE BACKUP CONTROLFILE TO '/oracle/backup/cf.bak' REUSE;reuse:参数reuse的含义是可以直接将/oracle/backup/cf.bak代替现在的控制文件2>A binary backup is preferable to a trace file backup because itcontains additional information such as the archived log history, offline range forread-only and offline tablespaces, and backup sets and copies (if you use RMAN).Note that binary control file backups do not include tempfile entries.3> to
表空间级数据库备份恢复
案例:最后一次对表空间aaa备份是在2005年03月03日上午2005年04月03日上午应用报sp表不能查询,经查询user_tables发现sp表处于aaa表空间.aaa表空间需要恢复[@more@]案例:最后一次对表空间aaa备份是在2005年03月03日上午2005年04月03日上午应用报sp表不能查询,经查询user_tables发现sp表处于aaa表空间.aaa表空间需要恢复现象:SQL> select * from sp;select * from sp *ERROR 位于第 1 行:ORA-00376: 此时无法读取文件 13ORA-01110: 数据文件 13: 'D:ORACL
open_cursor数量
一个案例[@more@]首先登陆到DB.cmd sqlplus xx/xx@xxxx SQL*Plus: Release 9.2.0.1.0 - Production on 星期一 1月 10 16:25:45 2005 Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved. 连接到:Oracle Database 10g Enterprise Edition Release 10.1.0.3.0 - ProductionWith the Partitioning, OLAP and Data Mining options察看应用中一个session可以打开的cursor数量 SQL> show parameter open_cursor NAME &nb
Managing the database buffer cache
1:首先Server Process根据Hash Function查询需要的块是否在Buffer中可用.如果可用Server Process将其置于LRU list的头部.这个过程叫做一个逻辑读. 因为没有实际发生OS级的IO.如果所需块没有在Buffer中找到,Server Process 将从数据文件中读取所需数据块.[@more@] 1:首先Server Process根据Hash Function查询需要的块是否在Buffer中可用.如果可用Server Process将其置于LRU list的头部.这个过程叫做一个逻辑读. 因为没有实际发生OS级的IO.如果所需块没有在Buffer中找到,Server Process 将从数据文件中读取所需数据块.2: Server Proces