YUYU的博客
===========================================================
PGA,sga命中sql查询
===========================================================

经常忘记,记录这里,以便备查:

PGA的内存命中:

SELECT name profile,cnt,decode( total, 0, 0, round( cnt * 100 / total)) percentage
FROM ( SELECT name, value cnt, ( SUM( value ) OVER()) total
FROM v$sysstat
WHERE name LIKE 'workarea exec%');

-- 数据缓冲区高速缓存
SELECT physical_reads, db_block_gets, consistent_gets, NAME,
100 * ( 1 - ( physical_reads / (consistent_gets + db_block_gets - physical_reads))) "Data Buffer Hit Ratio"
FROM v$buffer_pool_statistics;

-- 重做日至缓冲区
SELECT a.VALUE redo_entries, b.VALUE redo_buffer_allocation_retries,
ROUND ((1 - b.VALUE / a.VALUE) * 100, 4) log_buffer_ratio
FROM v$sysstat a, v$sysstat b
WHERE a.NAME = 'redo entries' AND b.NAME = 'redo buffer allocation retries';

-- 数据字典高速缓存
SELECT SUM (pinhits) / SUM (pins) * 100 "hit radio"
FROM v$librarycache;

-- 库高速缓存
SELECT TO_CHAR (ROUND ((1 - SUM (getmisses) / SUM (gets)) * 100, 1)) || '%' "Dictionary Cache Hit Ratio"
FROM v$rowcache;

-- 排序
SELECT a.VALUE disk_sort, b.VALUE memory_sort, ROUND ((1 - a.VALUE / (a.VALUE + b.VALUE)) * 100, 4) sort_ratio
FROM v$sysstat a, v$sysstat b
WHERE a.NAME = 'sorts (disk)' AND b.NAME = 'sorts (memory)';

--找出相关的sql根据系统pid
select se.username,se.machine,sq.cpu_time,sq.sql_text from
v$process p,v$session se,v$sqlarea sq
where p.addr=se.paddr and se.sql_hash_value=sq.hash_value and p.addr='&pid';

列出cpu_time top 10

select cpu_time,sql_text
from (select sql_text,cpu_time,
rank() over (order by cpu_time desc) exec_rank
from v$sql
)
where exec_rank <=10;


执行次数最多的top 10
select sql_text,executions
from (select sql_text,executions,
rank() over
(order by executions desc) exec_rank
from v$sql)
where exec_rank <=10;

 查看全文

veteransa 发表于:2007.10.29 10:08 ::分类: ( ORACLE学习笔记 ) ::阅读:(547次) :: 评论 (1)
===========================================================
索引中是否包含ROWID
===========================================================

今天看到个帖子,关于索引中是否包含ROWID,做个DUMP跟踪下看,以下为详细的跟踪记录:

SQL> create table test as select rownum a ,'c' c from dual connect by level<101;

Table created

SQL> create index u_test on test(a);

Index created

SQL> select extent_id,file_id,block_id from dba_extents where segment_name='U_TEST';

EXTENT_ID FILE_ID BLOCK_ID

---------- ---------- ----------

0 6 121

SQL> alter system dump datafile 6 block 121; --assm 自动段管理位图占3个块,跳3个块

System altered

SQL> alter system dump datafile 6 block 124;

System altered

以下部分跟踪记录:

row#0[8024] flag: ------, lock: 0, len=12

col 0; len 2; (2): c1 02 ----------------索引键值

col 1; len 6; (6): 01 80 00 74 00 00 -----------------------rowid

row#1[8012] flag: ------, lock: 0, len=12

col 0; len 2; (2): c1 03

col 1; len 6; (6): 01 80 00 74 00 01

row#2[8000] flag: ------, lock: 0, len=12

col 0; len 2; (2): c1 04

col 1; len 6; (6): 01 80 00 74 00 02

SQL> create unique index u_test on test(a);

Index created

SQL> select extent_id,file_id,block_id from dba_extents where segment_name='U_TEST';

EXTENT_ID FILE_ID BLOCK_ID

---------- ---------- ----------

0 6 121

SQL> alter system dump datafile 6 block 124;

以下部分跟踪记录:

row#0[8025] flag: ------, lock: 0, len=11, data:(6): 01 80 00 74 00 00

col 0; len 2; (2): c1 02

row#1[8014] flag: ------, lock: 0, len=11, data:(6): 01 80 00 74 00 01

col 0; len 2; (2): c1 03

row#2[8003] flag: ------, lock: 0, len=11, data:(6): 01 80 00 74 00 02

col 0; len 2; (2): c1 04

row#3[7992] flag: ------, lock: 0, len=11, data:(6): 01 80 00 74 00 03

如上所示:唯一索引不包含ROWID,普通索引包含rowid.


veteransa 发表于:2007.10.23 15:02 ::分类: ( ORACLE学习笔记 ) ::阅读:(269次) :: 评论 (0)
===========================================================
转:Oracle常用dump命令
===========================================================

转自:http://ningoo.itpub.net/post/2149/287794

Oracle常用dump命令,记录一下备查。

一.Memory Dumps

1).Global Area

ALTER SESSION SET EVENTS 'immediate trace name global_area level n';

1 包含PGA
2 包含SGA
4 包含UGA
8 包含indrect memory

2).Library Cache

ALTER SESSION SET EVENTS 'immediate trace name library_cache level n';

1 library cache统计信息
2 包含hash table histogram
3 包含object handle
4 包含object结构(Heap 0)

3).Row Cache

ALTER SESSION SET EVENTS 'immediate trace name row_cache level n';

1 row cache统计信息
2 包含hash table histogram
8 包含object结构

4).Buffers

ALTER SESSION SET EVENTS 'immediate trace name buffers level n';

1 buffer header
2 level 1 + block header
3 level 2 + block contents
4 level 1 + hash chain
5 level 2 + hash chain
6 level 3 + hash chain
8 level 4 + users/waiters
9 level 5 + users/waiters
10 level 6 + users/waiters

5).Buffer

ALTER SESSION SET EVENTS 'immediate trace name buffer level n';

n为某个指定block的rdba,该命令可以转储某个block在buffer中的所有版本。

6).Heap

ALTER SESSION SET EVENTS 'immediate trace name heapdump level level';

1 PGA摘要
2 SGA摘要
4 UGA摘要
8 Current call(CGA)摘要
16 User call(CGA)摘要
32 Large call(LGA)摘要
1025 PGA内容
2050 SGA内容
4100 UGA内容
8200 Current call内容
16400 User call内容
32800 Large call内容

7).Sub Heap

Oracle 9.0.1版本之前

ALTER SESSION SET EVENTS 'immediate trace name heapdump_addr level n';

若n为subheap的地址,转储的是subheap的摘要信息
若n为subheap的地址+1,转储的则是subheap的内容

Oracle 9.2.0版本之后

ALTER SESSION SET EVENTS 'immediate trace name heapdump_addr level n, addr m';

其中m为subheap的地址

n为1转储subheap的摘要,n为2转储subheap的内容

8).Process State

ALTER SESSION SET EVENTS 'immediate trace name processstate level n';

9).System State

ALTER SESSION SET EVENTS 'immediate trace name systemstate level n';

10).Error State

ALTER SESSION SET EVENTS 'immediate trace name errorstack level n';

0 Error stack
1 level 0 + function call stack
2 level 1 + process state
3 level 2 + context area

11).Hang Analysis

ALTER SESSION SET EVENTS 'immediate trace name hanganalyze level n';

12).Work Area

ALTER SESSION SET EVENTS 'immediate trace name workareatab_dump level n';

1 SGA信息
2 Workarea Table摘要信息
3 Workarea Table详细信息

13).Latches

ALTER SESSION SET EVENTS 'immediate trace name latches level n';

1 latch信息
2 统计信息

14).Events

ALTER SESSION SET EVENTS 'immediate trace name events level n';

1 session
2 process
3 system

15).Locks

ALTER SESSION SET EVENTS 'immediate trace name locks level n';

16).Shared Server Process

ALTER SESSION SET EVENTS 'immediate trace name shared_server_state level n';

n取值为1~14

17).Background Messages

ALTER SESSION SET EVENTS 'immediate trace name bg_messages level n';

n为pid+1

二.File Dumps

1).Block

Oracle 7之前

ALTER SESSION SET EVENTS 'immediate trace name blockdump level n';

n为block的rdba

Oracle8以后

ALTER SYSTEM DUMP DATAFILE file# BLOCK block#;

ALTER SYSTEM DUMP DATAFILE file#
BLOCK MIN minimum_block#
BLOCK MAX maximum_block#;

2).Tree Dump

ALTER SESSION SET EVENTS 'immediate trace name treedump level n';

n为object_id

3).Undo Segment Header

ALTER SYSTEM DUMP UNDO_HEADER 'segment_name';

4).Undo for a Transaction

ALTER SYSTEM DUMP UNDO BLOCK 'segment_name' XID xidusn xidslot xidsqn;

5).File Header

ALTER SESSION SET EVENTS 'immediate trace name file_hdrs level n';

1 控制文件中的文件头信息
2 level 1 + 文件头信息
3 level 2 + 数据文件头信息
10 level 3

6).Control file

ALTER SESSION SET EVENTS 'immediate trace name controlf level n';

1 文件头信息
2 level 1 + 数据库信息 + 检查点信息
3 level 2 + 可重用节信息
10 level 3

7).Redo log Header

ALTER SESSION SET EVENTS 'immediate trace name redohdr level n';

1 控制文件中的redo log信息
2 level 1 + 文件头信息
3 level 2 + 日志文件头信息
10 level 3

8).Redo log

ALTER SYSTEM DUMP LOGFILE 'FileName';

ALTER SYSTEM DUMP LOGFILE 'FileName'
SCN MIN MinimumSCN
SCN MAX MaximumSCN
TIME MIN MinimumTime
TIME MAX MaximumTime
LAYER Layer
OPCODE Opcode
DBA MIN FileNumber . BlockNumber
DBA MAX FileNumber . BlockNumber
RBA MIN LogFileSequenceNumber . BlockNumber
RBA MAX LogFileSequenceNumber . BlockNumber;

其中time = (((((yyyy - 1988)) * 12 + mm - 1) * 31 + dd - 1) * 24 + hh) * 60 + mi) * 60 + ss;

9).Loghist

ALTER SESSION SET EVENTS 'immediate trace name loghist level n';

1 dump控制文件中最早和最迟的日志历史项
>1 dump 2^n个日志历史项


veteransa 发表于:2007.10.23 11:57 ::分类: ( ORACLE学习笔记 ) ::阅读:(308次) :: 评论 (0)
===========================================================
oracle1og缩小sga的例子
===========================================================

由于需要,需缩小一数据库的SGA,并重新分配:

alter system set sga_max_size=500m scope=spfile;

alter system set sga_target=500m scope=spfile;

shutdown immediate;

startup;

alter system system set shared_poll_size=300m scope=both;

记录下.


veteransa 发表于:2007.10.19 17:35 ::分类: ( ORACLE学习笔记 ) ::阅读:(345次) :: 评论 (0)
===========================================================
关于ora-03113 ora03114 的一例处理
===========================================================

  昨天在给应用系统做升级的时候,脚本老是执行到一半,就出现,已断开数据库连接,跟踪后发现,执行到中间回出现,ora-03113错误(通信通道的文件结束),接着就是ora-03114(失去oracle连接).

1.怀疑脚本问题,语句有问题,仔细研究下,没问题.

2.网络问题.换台机器还是一样.

3.换了个库试下,还是一样.

4.查了下 失效对象,有一些失效对象,compile之,结果得以解决.

总结: 一些失效的对象也会引起ora-03113 ora-3114错误

 查看全文

veteransa 发表于:2007.10.19 16:16 ::分类: ( ORACLE学习笔记 ) ::阅读:(1586次) :: 评论 (1)
===========================================================
转:系统动态视图速查
===========================================================
-----------DBA_
DBA_2PC_NEIGHBORS 包含待处理事务进入连接和退出连接信息。
DBA_2PC_PENDING 包含等待恢复的分布式事务的信息。
DBA_ALL_TABLES 显示数据库中所有表(对象表和关系表)的描述。
DBA_ANALYZE_OBJECTS 列出分析对象。
DBA_ASSOCIATIONS 列出用户定义的统计信息。
DBA_AUDIT_EXISTS 列出由AUDIT NOT EXISTS(不存在审计)和AUDIT EXISTS(存在审
计)产生的审计跟踪条目。
DBA_AUDIT_OBJECT 包含系统中所有对象的审计跟踪记录。
DBA_AUDIT_SESSION 列出关于CONNECT(连接)和DISCONNECT(断开连接)的所有审讯跟踪记录。
DBA_AUDIT_STATEMENT 列出关于GRANT(授权)、REVOKE(取消)、AUDIT〔审计〕、NOAUDIT(不审计)和ALTER SYSTEM(改变系统)语句的审记跟踪记录。
DBA_AUDIT_TRAIL  列出所有的审记跟踪条目。
DBA_BLOCKERS  列出所有人等待一个会话持有的锁的所有会话,但并非它们自己在等待一个锁。
DBA_CATALOG 列出所有数据库表、视图、同义词和序列。
DBA_CLU_COLUMNS 列出表列到簇列的映射。
DBA_CLUSTER_HASH_EXPRESSIONS 列出所有簇的散列(hash)函数。
DBA_CLUSTERS 包含数据库中所有族的描述。
DBA_COL_COMMENS 列出所有表和视图列的注解。
DBA_COL_PRIVS 列出数据库中授予列的所有权限。
DBA_COLL_TYPES 显示数据库中所有命名的集合类型,如VARRAY(数组)、嵌套表、对象表,等等;
DBA_CONS_COLUMNS 包含在约束定义中的,可访问的列的信息
DBA_CONSTRAINTS 包含所有表上的约束定义。
DBA_CONTEXT 列出所有上下文名字空间的信息。
DBA_DATA_FILES 包含有关数据库文件的信息
DBA_DB_LINKS 列出数据库中的所有数据库链接。
DBA_DDL_LOCKS 列出数据库持有的所有DDL锁,及所有对一个DDL锁的未定请求。
DBA_DEPENDENCIES 列出对象之间的依赖性。在没有任何数据库链接时所创建的视图上的依赖性也是可用的。
DBA_DIM_ATTRIBUTES 代表维级和功能依赖的列之间的关系。维级列所在的表,必须与所依赖列所在的表相匹配。
DBA_DIM_CHILD_OF 代表在维中的一对维级之间的1:n的层次关系。
DBA_DIM_HIERARCHIES 代表一个维层次。
DBA_DIM_JOIN_KEY 代表两个维表之间的连接。这种连接通常在一个双亲维级列和一个子列之间指定。
DBA_DIM_LEVEL_KEY 代表一个维级的列。一个级中列的位置通过KEY_POSITION来指定。
DBA_DIM_LEVELS 代表一个维级。一个维级的所有列,必须来自于同一关系。
DBA_DIMENSIONS 代表维对象。
DBA_DIRECTORIES 提供数据库中所有目录对象的信息。
DBA_DML_LOCKS 列出数据库中持有的所有DML锁,和对一个DML锁的所有未决请求。
DBA_ERRORS 列出数据库中所有存储的对象的当前错误。
DBA_EXP_FILES 包含导出文件的描述。
DBA_EXP_OBJECTS 列出以增量方式导出的对象。
DBA_EXP_VERSION 包含最后导出会话的版本号。
DBA_EXTENTS 列出数据库中组成所有段的区。
DBA_FREE_SPACE 列出所有表空间中的空闲分区。
DBA_FREE_SPACE_COALESCED 包含表空间中合并空间的统计数据。
DBA_IND_COLUMNS 包含在所有表和簇中组成索引的列的描述。
DBA_IND_EXPRESSIONS 列出在所有表和簇中函数型索引的表达示。
DBA_IND_PARTITIONS 为每一个索引分区,描述分区级的分区信息、分区的存储参数和由ANALYZE决定的各种分区统计数据。
DBA_IND_SUBPARTITIONS 为当前用户拥有的每一个索引子分区,描述分区级的分区信息、子分区的存储参数和由ANALYZE决定的各种分区统计数据。
DBA_INDEXES 包含数据库中所有索引的描述。
DBA_INDEXTYPE_OPERATORS 列出由索引类型支持的所有操作符。
DBA_INDEXTYPES 列出所有的索引类型。
DBA_JOBS 列出数据库中的所有作业。
DBA_JOBS_RUNNING 列出数据库中当前运行的所有作业。
DBA_LIBRARIES 列出数据库中所有的库。
DBA_LOB_PARTITIONS 显示包含在表中的用户可访问的LOB。
DBA_LOB_SUBPARTITIONS 显示LOB数据子分区中的分区级属性。
DBA_LOBS 显示包含在所有表中的LOB.
DBA_LOCK_INTERNAL 包含每个被持有的锁或简易锁的一行信息,及锁或简易锁的每一个未决定请求的一行信息。
DBA_LOCKS 列出数据库中持有的所有锁或简易锁,及一个锁或简易锁的所有未决请求。
DBA_METHOD_PARAMS 包含数据库中类型的方法参数的描述。
DBA_METHOD_RESULTS 包含数据库中所有类型的方法结果的描述。
DBA_MVIEW_AGGREGATES 代表在聚集实例化视图的SELECT列表中出现的分组函数(聚集方法)。
DBA_MVIEW_ANALYSIS 代表潜在地支持查询重写,并有可用于应用程序分析的附加信息的实例化视图。这种视图包括任何引用远程表或者包括如SYSDATE或USER等非静态值的实例化视图。
DBA_MVIEW_DETAIL_RELATIONS 代表命名细节关系,这些关系或者在一个实例化视图的FROM列表中,或者直接通过FORM列表中的视图引用。在这个表中,没有表示实例化视图中的内嵌视图。
DBA_MVIEW_JOINS 在一个实例化视图的WHERE子句中,代表两个列之间的连接。
DBA_MVIEW_KEYS 代表命名细节关系,这些关系或者在一个实例化视图的FROM列表中,或者直接通过FORM列表中的视图引用。在这个表中,没有表示实例化视图中的内嵌视图。
DBA_NESTED_TABLES 显示包含在所有表中的嵌套表的描述。
DBA_OBJ_AUDIT_OPTS 列出一个用户所拥有的所有对象的审计选项。
DBA_OBJECT_SIZE 列出各类PL/SQL对象的、用字节数表示大小。
DBA_OBJECT_TABLES 显示数据库中所有对象表的描述。
DBA_OBJECTS 列出数据库中所有的对象。
DBA_OPANCILLARY 列出操作符连接的附加信息。
DBA_OPARGUMENTS 列出操作符连接的参数信息。
DBA_OPBINDINGS 列出操作符连接。
DBA_OPERATORS 列出操作符。
DBA_OUTLINE_HINTS 列出组成概要的提示集。
DBA_OUTLINES 列出有关概要的信息。
DBA_PART_COL_STATISTICS 包含所有表分区的列统计数据和直方图信息。
DBA_PART_HISTOGRAMS 包含所有表分区上直方图的直方图数据(每个直方图的端点)。
DBA_PART_INDEXES 列出所有分区索引的对象级分区信息。
DBA_PART_KEY_COLUMNS 描述所有分区对象的分区关键字列。
DBA_PART_LOBS 描述分区LOB的表级信息,包括LOB数据分区的缺省属性。
DBA_PART_TABLES 列出所有分区表的对象级分区信息。
DBA_PARTIAL_DROP_TABS 描述部分删除的表。
DBA_PENDING_TRANSACTIONS 提供关于未完成事务(由于故障或协调器没有提交或回滚)的信息。
DBA_POLICIES 列出策略。
DBA_PRIV_AUDIT_OPTS 描述通过系统和由用户审计的当前系统权限。
DBA_PROFILES 显示所有启动文件及其限制
DBA_QUEUE_SCHEDULES 描述当前传播信息的方案。
DBA_QUEUE_TABLES 描述在数据库中建立的所有队列表中的队列的名称和类型。
DBA_QUEUE 描述数据库中每一个队列的操作特征。
DBA_RCHILD 列出任何刷新组中的所有子组。
DBA_REFRESH 列出所有刷新组。
DBA_REFRESH_CHILDREN 列出刷新组中所有对象。
DBA_REFS 描述数据库中所有表的对象类型列中的REF列和REF属性。
DBA_REGISTERED_SNAPSHOT_GROUPS 列出该场地的所有快照登记组。
DBA_REGISTERED_SNAPSHOT 检索本地表的远程快照的信息。
DBA_REPCAT_REFRESH_TEMPLATES 与Advanced Replication(高级复制)一起使用。
DBA_REPCAT_TEMPLATES_PARMS 与Advanced Replication(高级复制)一起使用。
DBA_REPCAT_TEMPLATES_SITES 与Advanced Replication(高级复制)一起使用。
DBA_REPCAT_USER_AUTHORIZATIONS 与Advanced Replication(高级复制)一起使用。
DBA_REPCAT_USER_PARM_VALUES 与Advanced Replication(高级复制)一起使用。
DBA_REPCATLOG 与Advanced Replication(高级复制)一起使用。
DBA_REPCOLUMN 与Advanced Replication(高级复制)一起使用。
DBA_REPCOLUMN_GROUP 与Advanced Replication(高级复制)一起使用。
DBA_REPCONFLICT 与Advanced Replication(高级复制)一起使用。
DBA_REPDDL 与Advanced Replication(高级复制)一起使用。
DBA_REPGENERATED 与Advanced Replication(高级复制)一起使用。
DBA_REPGENOBJECTS 与Advanced Replication(高级复制)一起使用。
DBA_REPGROUP 与Advanced Replication(高级复制)一起使用。
DBA_REPGROUPED_COLUMN 与Advanced Replication(高级复制)一起使用。
DBA_REPKEY_COLUMNS 与Advanced Replication(高级复制)一起使用。
DBA_REPOBJECT 与Advanced Replication(高级复制)一起使用。
DBA_REPPARAMETER_COLUMN 与Advanced Replication(高级复制)一起使用。
DBA_REPPRIORITY 与Advanced Replication(高级复制)一起使用。
DBA_REPPRIORITY_GROUP 与Advanced Replication(高级复制)一起使用。
DBA_REPPROP 与Advanced Replication(高级复制)一起使用。
DBA_REPPESOL_STATS_CONTROL 与Advanced Replication(高级复制)一起使用。
DBA_REPRESOLUTION 与Advanced Replication(高级复制)一起使用。
DBA_REPRESOLUTION_METHOD 与Advanced Replication(高级复制)一起使用。
DBA_REPSITES 与Advanced Replication(高级复制)一起使用。
DBA_RGROUP 列出所有刷新组。
DBA_ROLE_PRIIVS 列出授予用户和角色的角色
DBA_ROLES 列出数据库中存在的所有角色
DBA_ROLLBACK_SEGS 包含回滚段的描述
DBA_RSRC_CONSUMER_GROUP_PRIVS 列出所有已授权的资源消费组、用户和角色。
DBA_RSRC_CONSUMER_GROUPS 列出数据库中存在的所有资源消费组。
DBA_RSRC_MANAGER_SYSTEM_PRIVS 列出所有已授予属于资源管理员系统权限的用户
和角色。
DBA_RSRC_PLAN_DIRECTIVES 列出数据库中存在的所有资源计划的指示。
DBA_RSRC_PLANS 列出数据库中存在的所有资源计划。
DBA_RULESETS 列出规则集信息。
DBA_SEGMENTS 包含分配级所有数据库段的存储信息。
DBA_SEOUENCES 包含数据库中所有序列的描述。
DBA_SNAPSHOT_LOG_FILTER_COLS 列出记录在快照日志上的所有过滤列(不包括PK列)
DBA_SNAPSHOT_LOGS 列出数据库中所有的快照日志。
DBA_SNAPSHOT_REFRESH_TIMES 列出快照刷新次数。
DBA_SNAPSHOTS 列出数据库中所有的快照。
DBA_SOURCE 包含数据库中所有存储对象的来源。
DBA_STMT_AUDIT_OPTS 包含的信息为:描述通过系统并由用户审计的当前
系统审计选项。
DBA_SUBPART_COL_STATISTICS 列出表子分区的列统计数据和直方图信息。
DBA_SUBPART_HISTOGRAMS 列出表子分区中直方图的实际数据(每个直方图的端点)。
DBA_SUBPART_KEY_COLUMNS 列出用Composite Range(复合排列)或HASH方法进行分区
的表(和表上的本地索引)的子分区关键字列。
DBA_SYNONYMS 列出数据库中所有同义词
DBA_SYS_PRIVS 列出授予用户和角色的系统权限。
DBA_TAB_COL_STATISTICS 包含在DBA_TAB_COLUMNS视图中的列统计数据和直方图信息。
DBA_ TAB_COLUMNS 包含所有表、视图和簇的描述列的信息。
DBA_TAB_COMMENTS 包含对数据库中所有表和视图的注解。
DBA_TAB_HISTOGRAMS 列出所有表中列的直方图。
DBA_TAB_PARTITIONS 对每一个表分区,描述它的分区级分区信息、分区的存储参数,和由
ANALYZE 决定的各种分区统计数据。
DBA_TAB_PRIVS 列出数据库中所有授予对象的授权。
DBA_TAB_SUBPARTITIONS 对每一个表的子分区,描述它的名称、表的名称和它所属的分区,
以及它的存储属性。
DBA_TABLES 包含数据库中所有关系表的描述。
DBA_TABLESPACES 包含所有表空间的描述
DBA_TEMP_FILES 包含数据库临时文件的信息。
DBA_TRIGGER_COLS 列出所有触发器中列的用法。
DBA_TRIGGERS 列出数据库中所有触发器。
DBA_TS_QUOTAS 列出所有用户的表空间限额。
DBA_TYPE_ATTRS 显示数据库中类型的属性。
DBA_TYPE_METHODS 描述数据库中所有类型的方法。
DBA_TYPES 显示数据库中所有的抽象数据类型。
DBA_UNUSED_COL_TABS 包含对所有具有未使用列的表的描述。
DBA_UPDATABLE_COLUMNS 包含对可在一个连接视图中,由数据库管理员更新的列的描述。
DBA_USERS 列出数据库中所有用户的信息。
DBA_USTATS 包含当前用户的信息。
DBA_VARRAYS 列出用户可以访问的视图的文本。
DBA_VIEWS 包含数据库中所有视图的文本。
DBA_WAITERS 列出所有正在等待一个锁的会话,以及列出正在阻止它们获得该锁的会话。


-----------$

V$ACCESS 显示当前被锁定的数据库中的对象及正在访问它们的会话。
V$ACTIVE_INSTANCES 为当前安装的数据库中出现的所有实例建立从实例名到实例号码的
映射
V$AQ 描述当前数据库中队列的统计量。
V$ARCHIVE 包含归档所需的重做日志文件中的信息。每一行提供了一个线程所需的信息。这些信息在V$LOG中也是可用的。Oracle建议你使用V$LOG.
V$ARCHIVE_DEST 描述当前实例的所有归档日志目的文件及它们的当前值、模式和状态。
V$ARCHIVED_LOG 显示控制文件中的归档日志信息,包括归档日志名。在联重做日志文件成功地归档或清除(如果日志被清除,名字列将为NULL)后,一条归档日志记录被插入。如果这个日志被归档两次,那么就将有两条具有相同THREAD#,SEQUENCE#,FIRST_CHANG#值的归档日志记录,但它们的名字不同。当一个归档日志从一个备份集或一个副本中被恢复时,一个归档日志记录也将被插入。
V$ARCHIVE_PROCESSES 为一个实例提供关于不同ARCH进程状态的信息。
V$BACKUP 显示所有联机数据文件的备份状态。
V$BACKUP_ASYNC_IO 从控制文件中显示备份集的信息。在这个备份集成功完成后,一个
备份集记录将被插入。
V$BACKUP_CORRUPTION 从控制文件中显示数据文件备份中有关损坏的信息。注意在控
制文件和归档日志备份文件中损坏是不能容忍的
V$BACKUP_DATAFILE 从控制文件中显示备份数据文件和备份控制文件的信息。
V$BACKUP_DEVICE 显示关于支持备份设备的信息。如果一个设备类型不支持指名的设备,那么将为这个设备类型返回一个带有设备类型和NULL设备名的行。如果一个设备类型支持指名的设备,那么将为每一个这种类型的可用设备返回一行。特殊的设备类型DISK不会通过这个视图返回,因为它总是可用的 。
V$BACKUP_PIECE 从控制文件中显示备份块的信息。每一个备份集由一个更多个备份块组
成。
V$BACKUP_REDOLOG 从控制文件中显示关于备份集中归档日志的信息。注意联机的重做日
志文件不能够被直接备份。它们必须首先被存储到磁盘上然后再进行
备份。一个归档日志备份集能包含一个或多个归档日志。
V$BACKUP_SET 从控制文件中显示备份集的信息。在备份集成功完成后,一个备份集记录将被插入。
V$BACKUP_SYNC_IO 从控制文件中显示备份集的信息。在备份集成功完成后,一个备份
集记录将被插入。
V$BGPROCESS 描述后台进程。
V$BH 这是一个并行服务器视图。这个视图为系统全局区中的每一个缓冲区给出了状态和探查次数。
V$BUFFER_POOL 显示关于这个实例所有可用缓冲池的信息。这个“集合数”属于LRU简易锁集的数目。
V$BUFFER_POOL_STATISTICS 显示关于这个实例所有可用缓冲池的信息。这个“集合数”
属于LRU简易锁集的数目。
V$CACHE 这是一个并行服务器视图。这个视图包含当前实例的SGA中的每一个块的头部信息,这个实例是与一个特殊数据库对象相关联的。
V$CACHE_LOCK 这是一个并行服务器的视图。除了特殊平台锁管理器标识符不同外,
V$CACHE_LOCK 与V$CACHE非常相似。如果这个特殊平台锁管理器为监视当前正发生的PCM锁操作提供了工具,那么这些信息可能是有用的。
V$CIRCUIT 包含关于虚电路的信息,这个虚电路是用户通过调度程序和服务器到数据库的所有连接。
V$CLASS_PING 显示每一个块类中被探查块的数目。用这个视图可以比较不同类的块竞争。
V$COMPATIBILITY 显示数据库实例使用中的特征,可能阻止系统性能下降到先前的版本。这是这些信息的动态(SGA)版本,它不可能反映出所用过的另外一些实例的特征,并可能包含暂时的不兼容性(如UNDO段),不过这将在数据库完全的关闭掉后不复存在。
V$COMPATSEG 列出数据库使用中的永久性的特征,这些特征将会阻止数据库回到早期的版本中去。
V$CONTEXT 列出当前对话的设置属性。
V$CONTROLFILE 列出控制文件的名字。
V$CONTROLFILE_RECORD_SECTION 显示关于控制文件记录部分的信息。
V$COPY_CORRUPTION 显示关于控制文件中数据文件副本损坏的信息。
V$DATABASE 包含控制文件中数据库信息。
V$DATAFILE 包含控制文件中数据库文件的信息。
V$DATAFILE_COPY 显示控制文件中数据文件副本的信息。
V$DATAFILE_HEADER 显示数据文件头部的数据文件信息。
V$DBFILE 列出组成数据库中的所有数据文件。这个视图是为历史兼容性保留的,我们建议用V$DATAFILE来代替。
V$DBLINK 描述由发布对V$DBLINK查询的会话所打开的所有数据库链接(用
IN_TRANSACTION=YES链接)。这些数据库链接必须在关闭前被提交或滚回。
V$DB_OBJECT_CACHE 显示缓存在库高速缓存中的数据库对象。这些对象包括表、索引、簇、
同义词定义、PL/SQL过程和包及触发器。
V$DB_PIPES 显示当前数据库中的管道。
V$DELETED_OBJECT 显示控制文件中被删除归档日志、数据文件副本和备份块的信息。这
个视图的唯一目的是优化恢复目录的再同步操作。当一个归档日志、数据文件副本或备份块被删除时,相应的记录将被做上删除标志。
V$DISPATCHER 提供调度进程的信息。
V$ DISPATCHER_RATE 为调度进程提供速率统计量。
V$DLM_ALL_LOCKS 这是一个并行服务器视图。V$DLM_ALL_LOCKS列出当前所有锁的信息,这些是锁管理器已知的被阻塞或阻塞其他对象的锁信息。
V$DLM_CONVERT_LOCAL 显示本地锁转换操作所消耗的时间。
V$DLM_CONVERT_REMOTE 显示远程锁转换操作所消耗的时间。
V$DLM_LOCKS 这是一个并行服务器视图。V$DLM_ALL_LOCKS 列出当前所有锁的信息,这些是锁管理器已知的被阻塞或阻塞其他对象的锁信息。
V$DLM_MISC 显示多种DLM统计量。
V$DLM_RESS 这是一个并行服务器的视图,它显示了当前锁管理器已知的全部资源的信息。
V$ENABLEDPRIVS 显示被授予的权限。这些权限可以在SYS.SYSTEM_PRIVILEGES_MAP这个表中找到。
V$ENQUEUE_LOCK 显示排队状态对象所拥有的全部锁。这个视图中的列等同于V$LOCK
中的列。更多的信息参见V$LOCK.
V$EVENT_NAME 包含等待事件的信息。
V$EXECUTION 显示并行执行中的信息。
V$FALSE_PING 这是一个并行服务器视图。这个视图显示可能得到探查失败的缓冲区,探查被同样锁保护的缓冲区10次以上,如像另一个探查10次以上的缓冲区。被鉴别为获得探查失败信息的缓冲区能够被重新映射到GC_FILES_TO_LOCKS 中以减少锁的冲突。
V$FAST_START_SERVERS 提供关于执行并行事务恢复的所有从属恢复操作的信息。
V$FAST_START_TRANSACTIONS 包含关于Oracle 恢复中的事务进展信息。
V$FILE_PING 显示每一个数据文件被探查的块数目。反过来,这些信息能被用来决定对一个存在的数据文件访问方式,同时也可以决定从数据文件块到PCM锁的新的映射。
V$FILESTAT 包含文件关于读/写统计量的信息
V$FIXED_TABLE 显示数据库中所有动态性能表、视图和导出表。一些V$表(如
V$ROLLNAME)涉及到了真正的表,没有被列出来。
V$FIXED_VIEW_DEFINITION 包含所有固定视图的定义(以V$开头的视图)。应谨慎地使
用这个表。Oracle 总是想从版本到版本保持固定视图的行为,但是固定视图的定义能够在没有通知的情况下改变。用这些定义通过使用动态性能表中的索引列可以优化你的查询。
V$GLOBAL_BLOCKED_LOCKS 显示全局块锁。
V$GLOBAL_TRANSACTION 显示当前激活的全局事务的信息。
V$HS_AGENT 标识当前运行在一个给定的主机上的HS代理的集合,每一个代理进程用一行表示。
V$HS_SESSION 标识当前为一个Oracle 服务器打开的HS会话集。
V$INDEXED_FIXED_COLUMN 显示建立索引的动态性能表中的列(X$表),X$表能够在没
有通知的情况下改变。使用这个视图仅仅在写查询方面比固定视图(V$视图)的效率要高。
V$INSTANCE 显示当前实例的状态。这个V$INSTANCE 版本同早期的V$INSTANCE 版本不兼容。
V$INSTANCE_RECOVERY 用来监视执行用户指定恢复读次数的限制机制。
V$LATCH 为非双亲简易锁列出统计表,同时为双亲简易锁列出总计统计。就是说,每一个双亲简易锁的统计量包括它的每一个子简易锁的计算值。
V$LATCHHOLDER 包含当前简易锁持有者的信息。
V$LATCHNAME 包含关于显示在V$LATCH中的简易锁的解码简易锁名字的信息。
V$LATCHNAME 中的行与V$LATCH中的行有一一对应的关系。
V$LATCH_CHILDREN 包含关于子简易锁的统计量。这个视图包括V$LATCH中的所有列和
一个CHILD#列。注意如果子简易锁LATCH#列相匹配,那么它们将具有相同的双亲。
V$LATCH_MISSES 包含试图获得一个简易锁失败的统计量。
V$LATCH_PARENT 包含关于双亲简易锁的统计量。V$LATCH_PARENT中的列与V$LATCH中的列是相等的。
V$LIBRARYCACHE 包含关于高速缓存性能和活动的统计量。
V$LICENSE 包含关于许可证限制的信息。
V$LOADCSTAT 包含在一个直接装载执行过程中所编译的SQL*Loader统计量。这些统计量适用于整个的加载。既然装载数据和查询不能在同一时间进行,那么,任何对这个表的SELECT操作都将会导致”no rows retured”(没有行返回)
V$LOADTSTAT 包含在一个直接装载执行过程中所编译的SQL*Loader统计量。这些统计量适用于当前的表。既然装载数据和查询不能在同一时间进行,那么,任何对这个表的SELECT操作都将会导致”no rows retured”(没有行返回)
V$LOCK 列出当前ORACLE服务器所持有的锁和对一个锁或简易锁的未决请求。
V$LOCK_ACTIVITY 这是一个并行服务器视图。它显示当前实例的DLM锁操作活动,每
一行对应着锁操作的类型。
V$LOCK_ELEMENT 这是一个并行服务器视图。每一个被缓冲高速缓存使用的PCM锁在
V$LOCK_ELEMENT中都有一个条目。与一个锁元素相对应的PCM锁的名字是(‘BL’,indx,class)。
V$LOCKED_OBJECT 列出在这个系统中每一个事务所获得的全部锁。
V$LOCKS_WITH_COLLISIONS 这是一个并行服务器视图。用这个视图可以查找保护多重锁
缓冲区的锁,这些缓冲区的每一个至少被强制性的读或写达十次以上。那些正经历着探查失败的缓冲区,主要是由于被映射到同样的锁上。
V$LOG 包含控制文件中的日志文件信息。
V$LOGFILE 包含重做日志文件的信息。
V$LOGHIST 包含控制文件中的日志历史信息。这个视图是为历史兼容性保留的。这里建议使用V$LOG_HISTORY来代替它。
V$LOGMNR_CONTENTS 包含日志历史信息。
V$LOGMNR_DICTIONARY 包含日志历史信息。
V$LOGMNR_LOGS 包含日志信息。
V$LOGMNR_PARAMETERS 包含日志信息。
V$LOG_HISTORY 包含控制文件中的日志历史信息。
V$MLS_PARAMETERS 这是一个ORACLE委托服务器(Trusted Oracle Server)视图,这个视图列出ORACLE指定委托服务器的初始化参数。更多的信息,可以在你的ORACLE委托文件中查到。
V$MTS 包含调节多线程的服务器的信息。
V$MYSTAT 包含当前会话的统计量。
V$NLS_PARAMETERS 包含当前NLS参数的值。
V$NLS_VALID_VALUES 列出NLS参数所有有效的信息。
V$OBJECT_DEPENDENCY 能够通过当前装戴在共享池中的包、过程或游标来决定依赖于那
一个对象。例如,与V$SESSIONV和$SQL一起,它能被用来决定在SQL语句中使用哪一个正在被用户执行的表。要知道更多的信息,请见V$SESSION和V$SQL
V$OBSOLETE_PARAMETER 列出陈旧的参数。只要有某一值为TRUE,你就应该检查为什
么。
V$OFFLINE_CURSOR 显示控制文件中数据文件的脱机信息。
V$OPEN_CURSOR 列出每一个用户会话当前打开的和解析的游标。
V$OPTION 列出用ORACLE服务器安装的选项。
V$PARALLEL_DEGREE_LIMIT_MTH 显示所有有效的并行度限制资源分配的方法。
V$PARAMETER 列出关于初始化参数的信息。
V$PING 这是一个并行服务器视图。除了只显示至少被探查一次的块有所不同外,V$PING视图与V$CACHE视图完全是一样的,这个视图包含当前实例的SGA中每一块的块首部信息,这个实例是与一个特定的数据库对象相关联的。
V$PQ_SESSTAT 列出并行查询会话的统计信息。注意:这个视图在未来的版本中将会成为过的 。
V$PQ_SLAVE 列出一个实例上每个活动并行执行服务器的统计量。注意:这个视图在未来的版本中将会过时而被一个新的称做V$PX_PROCESS的视图所代替。
V$PQ_SYSSTAT 列出并行查询的系统统计量。注意:这个视图在未来的版本中将会过时而被一个新的称做V$PX_PROCESS_SYSSTAT的视图所代替。
V$PQ_TQSTAT 包含并行执行操作上的统计量。这些统计量是在完成了查询后编辑的,并且仅在会话期保持。它显示在执行树的每一级阶段,通过每一个并行运行服务器处理的行数。这个视图能够帮助在一个查询执行中测定不平衡的问题。注意:这个视图在未来的版本中将称做V$PX_TQSTAT视图。
V$PROCESS 包含关于当前活动进程的信息。当LATCHWAIT列显示一个进程正等待什么样的简易锁时,LATCHSPIN列就显示一个进程正围绕什么样简易锁运行。在多处理器机器上,ORACLE进程在等待一个简易锁之前是围绕它运行的。
V$PROXY_ARCHIVEDLOG 包含归档日志备份文件的描述信息,这些备份文件带有一个称
为Proxy副本的新特征。每一个行代表一个归档日志的备份信息。
V$PROXY_DATAFILE 包含数据文件和控制文件备份的描述信息,这个备份文件带了一个称
为Proxy副本的新特征。每一行代表一个数据库文件的备份信息。
V$PWFILE_USERS 列出被授予SYSDBA和SYSOPER权限的用户,这些权限就象从
password文件中衍生而来一样。
V$PX_PROCESS 包含正运行并行操作的会话的信息。
V$PX_PROCESS_SYSSTAT 包含正运行并行操作的会话的信息。
V$PX_SESSION 包含正运行并行操作的会话的信息。

veteransa 发表于:2007.10.10 09:08 ::分类: ( ORACLE学习笔记 ) ::阅读:(346次) :: 评论 (0)
===========================================================
关于ORACLE自动统计CBO统计信息
===========================================================

关于ORACLE自动统计CBO统计信息

ORACLE10G以后,在建库后默认就创建了个GATHER_STATS_JOB的定时任务。默认情况下在工作日晚上1000-600和周末全天开启。它调用DBMS_STATS.GATHER_DATABASE_STATS_JOB_PROC的程序收集统计信息。它检测统计信息缺失的对象和陈旧的对象。然后确定优先级,再开始进行统计信息。

说明:当做完统计信息后,如果对对象的行数修改达到10%DBMS_STATS就认为是统计信息过旧。

可以查询这个JOB的运行情况:

select * from Dba_Scheduler_Jobs where JOB_NAME ='GATHER_STATS_JOB'

也可以关闭自动统计信息收集功能:

DBMS_SCHERDULER.DISABLE(‘GATHER_STATS_JOB’);

对与易变对象的变化,可以人工收集统计信息(DBMS_STATS) 主要两种处理方式:

.

一种就是删除统计信息。使它的统计信息为空,对于任何统计信息缺失的表,oracle会用动态取样特性自动产生统计信息。如果使用久的统计信息 就可能产生错误的执行计划。需要设置optimizer_dynamic_sampling2ORACLE10G默认值)或以上都可以启动此特性。

optimizer_dynamic_sampling ,提供在SQL分析的时候,自动根据不同的Level0-10)以不同的准确度分析SQL中未被analyze过的表,意在为CBO提供更多的统计信 息。在Oracle9iR2中引入,默认为Level 110g默认为2

http://download-west.oracle.com/docs/cd/B10501_01/server.920/a96536/ch1135.htm#REFRN10140

Level 0: Do not dynamically sample the table(s)

Level 1:Sample tables that have not been analyzed if there is more than one table in the query,the table in question has not been analyzed and it has no indexes,and the optimizer determines that the query plan would be affected based on the size of this objects

Level 2:Sample all unanalyzed tables referenced in the query using default sampling amounts(small sample)

Level 3 -- Level 10 ........更详细的sample而已。

例如:dbms_stats.delete_table_stats(‘table_name’ ,‘VOLATILE_TABLE’)

另一种就是设置为表进行锁定,这样就可以不更新统计信息(注意LOCK表以后,表就不能修改了)。

dbms_stats.lock_table_stats(‘table_name’ ,‘VOLATILE_TABLE’);


veteransa 发表于:2007.09.09 20:58 ::分类: ( ORACLE学习笔记 ) ::阅读:(1060次) :: 评论 (0)
===========================================================
关于块损坏
===========================================================

关于块损坏

块损坏或物理损坏是物理磁盘上的快边的不可读或数据不一致到不可用的状态。块损坏一般原因是人为错误。缺陷,补丁或硬件异常也会导致块损坏。查看块损坏通过阅读操作系统,应用程序,数据库层次的日志文件。在WINDOW可以查看系统日志。在大多数UNIX环境下文件位于/var/adm/syslog。数据库日志和跟踪文件参考与alter.log关联的跟踪文件位于UDUMPBDUMP目录,alter.log通常概要的说明存在一个问题,跟踪文件详尽的给出损坏的细节。

检测坏块的方法有四种方法:

1. ANALYZE TABLE TABLE_NAME VALIDATE STRUCTURE

分析对象的完整性,返回错误,可能需要重建对象。

2. ORACLE DBVERIFY 工具用于离线数据文件。

DBVERIFY 用来检查一个特定数据文件是否有坏块。

DBV HELP=Y看参数设置

3. Init.ora 参数DB_BLOCK_CHECKING ,在创建或修改数据和索引块时,对其进行检查。

4. DBMS_REPAIR程序包,用语表,索引 和分区

DBMS_REPAIR是一组程序,可以检测和修复坏块。

可以通过恢复进行数据恢复,恢复数据文件或数据块

RMAN里可以进行数据块恢复

rman> connect target

rman> blockrecover datafile 5 block 6
veteransa 发表于:2007.09.04 22:07 ::分类: ( ORACLE学习笔记 ) ::阅读:(313次) :: 评论 (0)
===========================================================
关于分区表的操作
===========================================================

创建分区表

范围分区:

Create table t {range_key_column date,

Data varchar2(20)

}

Partition by ranger(range_key_column)

(

partiton part1 values less then (….),

partiton part2 values less then (….),

)

HASH分区可以是数据分散从而更好的避免热块,建议N2的一个幂,可以得到最佳的分布。

Create table t(hash_key_word date,

data varchar2(20)

)

Partition by HASH(hash_key_column)

(

partition part1 tablespace p1,

partition part2 tablespace p2

)

列表分区

Create table t (state_cd varchar2(2),

Data varchar2(20))

Partition by list(stat_cd)

(

partition part1 values(‘1’,’2’),

partiton part2 values(‘3’,’4’)

)

组合分区 外层总是范围分区

实现空表 表分区交换的 表和分区表的结构要一致。

alter table partitioned exchange partition part1

with table partiton including indexes without validation

增加一分区

alter table t add partition part3 value less then(….)

删除一分区

alter table t drop partition part3;

合并分区

alter table t

merge partitions part1,part2 into partition part;

分区改名称

alter table t rename partition part1 to part4;

分区更改表空间

alter table t move partiton part1 tablespaces tb_test1 nologging;

分区表的导出

USERID = USER/PWD@ORCL

TABLE = T:PART1,T:PART2

FILE=D: est.dmp

LOG=D: est.log
veteransa 发表于:2007.08.28 20:31 ::分类: ( ORACLE学习笔记 ) ::阅读:(277次) :: 评论 (0)
===========================================================
使用flashback 恢复用户错误
===========================================================

Flashback drop 提供虚拟回收站,允许删除对象重建。

Flashback versions query, Flashback transation Query 用语识别或确定要恢复到当前状态的数据行。

Flashback Table 用于恢复单独的表,比如错误的更新了表。

10gdrop 数据库对象 实际是把对象放入回收站,可以查看回收站:

show recyclebin;

select object_name as recycle_name,original_name from recyclebin;

在回收站的命名格式是bin$globalUID$Version 24位的全局UID和数据库分配的版本号

对于recyclebin里表可以象正常表一样访问数据.

Select * from “bin$globalUID$version”;

实现恢复:

flashback table “bin$globalUID$version” to before drop( rename to t2) ;

purge table “bin$globalUID$version” 可以从回收站彻底删除对象并且释放空间

purge tablespace tablespacename 清除所有特定表空间的所有丢弃对象.

Purge tablespace tablespacename USER user的特定用户表空间内容

Purge recuclebin 清空用户的回收站

Purge DBA_RECYCLEBIN 清空所有用户回收站.(具有sysdba权限).

对于flashback drop 的一些局限

回收站功能只能用于一些非系统,本地管理的表空间.

在回收站的时间很难界定,是由系统空间 和系统活动 决定的.

对回收站里的表不能进行dml,ddl

回收站恢复 依存的对象也就被恢复.

分区表 不受回收站保护..

使用flashback version query

闪回查询时间是由UNDO_RETENTION的时间决定.闪回查询要具有select flashback 权限.

Select * from t1 versions between scn minvalue and maxvalue where…

Select * from t1 versions between timestamp

To_timestamp(‘2004-10-26 11:37:00’,’YYYY-MM-DD HH:MI:SS’) and

To_timestamp(‘2004-10-26 11:43:00’,’YYYY-MM-DDHH:MI:SS’) where …

函数 SCN_TO_TIMESTAMP TIMESTAMP_TO_SCN能可以让scn和时间相互转换.

关于新增的一些虚列:

VERSIONS_STARTSCN 创建行的起始SCN,如为NULL,在在BETWEEN 前创建.

VERSIONS_STARTTIME 创建行的起始TIMESTAMP,如为NULL,在在BETWEEN 前创建.

VERSIONS_ENDSCN 行版本终止时的SCN,如为NULL,此版本为当前版本,或对应一个delete 操作.

VERSIONS_ENDTIME 行版本终止时的TIMESTAMP,如为NULL,此版本为当前版本,或对应一个delete 操作.

VERSIONS_XID 创建行版本的事务标识符.

VERSIONS_OPERATION 改变数据的事物执行的操作.(I,D,U)

Select versions_starttime,version_endtime,versions_xid,version_operation from t1 versions between scn minvalue and maxvalue where ………..

使用闪回事务查询

使用闪回事务查询可以识别表和表操作,从而进行分析:

select table_name,operation,undo_sql from flashback_transaction_Query where xid=’…’

使用这个的功能权限 需要flashback any table

使用闪回表

同样受UNDO_RETENTION的影响.

闪回表需要权限 flashback any table flashback table 执行闪回select,insert,delete,alter权限.

闪回表必须启动row movement;

alter table t1 enable row movement ;

flashback table to scn/timestamp enable triggers;

这里注意闪回表时trigger 默认是disenable
veteransa 发表于:2007.08.27 22:55 ::分类: ( ORACLE学习笔记 ) ::阅读:(340次) :: 评论 (0)
===========================================================
Flashback database
===========================================================

Flashback 最早出现在oracle 9i flashback query,oracle 10g 增强了flashback的功能:

1. Flashback database

2. Flashback drop

3. Flashback versions query

4. Flashback Transaction Query

5. Flashback Table

不过除了 Flashback database 是基于Flashback log 其他都是基于UNDO DATA.

Flashback drop 提供虚拟回收站,允许删除对象重建。

Flashback versions query, Flashback transation Query 用语识别或确定要恢复到当前状态的数据行。

Flashback Table 用于恢复单独的表,比如错误的更新了表。

Flashback database 能使整个数据库闪会至特定的时间点,闪会数据库不能对删除数据文件,缩小数据文件恢复,闪回数据库比传统恢复速度更快。

1. flashback 不能解决媒介故障。

2. 数据文件截断。

3. 不能删除表空间并并resetlogs恢复

4. 不能超出回的界限.(SCN时间点)

Flashback area 通过数据库初始文件建立,文件保留长度由RMAN的保留策略决定.

RMAN CONFIGURE RETENTION POLICY 决定.

Alter system set db_recovery_file_dest_size=10M scope=Both;

Alter system set db_recovery_file_dest=’C:oraceflash_recovery_Areaora_t’;

Alter system set db_recovery_file_dest_size=’25M’;--改变flashback area大小.

Alter system set db_recovery_file_dest=’’ 停用flashback area

配置闪回数据库,数据库必须为归档模式:

connect / as sysdba ;

startup mount ;

alter database set db_flashback_retention_target=4320;(分钟为单位,也就是3)

alter database flashback on;

alter database open;

RMAN中用flashback database 就很简单:

select oldest_flashback_scn,oldest_flashback_time from v$flashback_database_log可以得到时间或SCN,然后数据库重启动到MOUNT状态:

flashback database to time/scn (to sequence thread number)

alter database open resetlogs;
veteransa 发表于:2007.08.27 21:28 ::分类: ( ORACLE学习笔记 ) ::阅读:(240次) :: 评论 (0)
===========================================================
数据库恢复笔记(2)
===========================================================

完成数据库的恢复。必须有两个必要的步骤,重建(restore)和恢复(recovery).

.服务器管理的恢复

数据库完全恢复的例子:

1. 为了完成一个 完全恢复数据库恢复,目标数据库必须在mount状态。

2. 执行restore database recover database 命令

run

{

allocate channel c1 type disk;

restore database;--重建数据文件

recover database;--是否要应用REDOLOG

alter database open;

}

用户管理恢复 用户直接管理和恢复要求的数据文件,需要一些用户的交互操作.

1. 恢复控制文件

a) 使用控制文件自动备份来恢复控制文件.

先进行配置备份控制文件:

rman> connect target

configure controlfile autobackup on;

run

{

backup database;

backup(archivelog all)
}

NOMOUNT下启动数据库 :

connect / as sydba

startup nomount;

连接目标数据库和RMAN ;

SQL> connect rman/rman@rmanLink;

RMAN> connect target /

因为控制文件损坏,需设置DBID (select DBID from V$databse)

set dbid 1212131;

restore contrilfile from auteoback;

alter database mount;

recover database;

later databse open resetlogs;

b) 重建控制文件

connect / as dydba;

alter database backup controlfile to trace; (跟踪文件UDUMP目录里)

connect / as sysdba

@backup_controlfile_noreset.txt (即产生的创建控制文件脚本)

数据库的不完全恢复:

RMAN不完全恢复有两种,一种是RECOVER 之前 set until time /sequence/scn

或用 RECOVER DATABASE UNTIL TIME/SEQUENCE/SCN;

用户管理用RECOVER DATABASE UNTIL TIME/CHANGE/CANCEL

基于时间和序列号的恢复:

1. 时间点; startup mount ;

set nls_date_format=DD-MM-YYYY HH24:MI:SS

rman> run
{

set until time ’06-sep-2004 11:25:00’;

restore database;

recover database;
}

alter database open resetlogs;

2. sequence 可以从V$LOG_HISTORY中获取列和线程信息

startup mount ;

rman> run
{

set until SEQUENCE 3 thread 1;

restore database;

recover database;
}

alter database open resetlogs;

用户管理的不完全恢复:

set nls_date_format=DD-MM-YYYY HH24:MI:SS ;

startup mount;

recover database until time ‘06-sep-2004 11:25:00’ ;

alter databse open resetlogs;(用后以前的备份失效,需重新进行冷备)

resetlogs 选择项会重置REDOLOG SEQUENCE ,重置ONLINE redo 内容,scn不会重置,是数据库一个生命周期的开始和数据库一个生命周期的结束


veteransa 发表于:2007.08.26 16:13 ::分类: ( ORACLE学习笔记 ) ::阅读:(249次) :: 评论 (0)
===========================================================
Oracle 非关键损失恢复
===========================================================

Oracle 非关键损失恢复

1. 非关键损失的恢复,不会对数据库的运行产生致命的影响。

a. 恢复临时表空间:数据库mount状态下,删除临时表空间,创建新的临时表空间.

新建临时表空间, 切换默认临时表空间。

1.Startup mount;

2.Drop tablespace temp including contents;

3.Create temporary tablespace temp tempfile ‘C:oracleoradate emp01.dbf ’

Size 100M extent management local uniform size 128k;

切换临时表空间:

alter database default temporary tablespace temp2;

注意: 运行时切换临时表空间,所有使用TEMP表空间的查询都会CANCEL

可以查看V$sort_usage,v$sql_text.

使用到临时表空间的操作主要有sort,group by ,hash josh , analyze

b. 恢复REDOLOG:这里的恢复是指REDOLOG有镜像的REDOLOG只丢失一个REDOLOG组成员的恢复。

Alter database drop logfile member ‘C:oracleoradata edo01.log’;

Alter database add logfile membe ‘c:oracleoradata edo01.log’ to group 1;

注意:在重建过程中 保持当日志在非活动状态。可以在限制模式下操作。

c. 恢复索引表空间 注意要先知道原来的索引情况, MOUNT状态下,先删除表空间,再重建,再重建索引。

DROP TABLESPACE INDEXES INCLUDING CONTENTS

Create tablespace indexe datafile ‘C:oracleoradateindex01.dbf’;

执行重建索引的脚本。

d. 恢复只读表空间: 当表空间被设置为只读表空间后 有它的备份,只需在数据库关闭情况下物理COPY回原地址即可。

e. 重建密码文件:

shutdown immediate;

startup;

orapwd file=orapwora password=sys entries =20;


veteransa 发表于:2007.08.26 11:30 ::分类: ( ORACLE学习笔记 ) ::阅读:(213次) :: 评论 (0)
===========================================================
转:Rman简明备忘录
===========================================================
NINGOO

测试环境

Oracle Version: 9.2.0.1.0
OS Version:Windows 2000 Server

RMAN备份的信息可以保存在专门的catalog数据库中,也可以保存在目标DB的控制文件中。初始化参数control_file_record_keep_time指定了控制文件保存RMAN备份信息的天数,默认是7。


1. 使用Catalog数据库建议catalog放在单独的instance上,假设名为rcvcata.添加tablespace
create tablespace rman datafile ‘rman01.dbf’ size 20M;b.创建用户
create users rman identified by rman default tablespace rman;
c.授权
grant RECOVERY_CATALOG_OWNER to rman;
grant connect,resource to rman;
C:>rman catalog
rman/rman@rcvcat ---连接到catalog所在的serverRMAN>create catalog; ---创建Catalog
RMAN>exit
C:>rman catalog
rman/rman@rcvcat target / ---连接目标数据库
RMAN>register database; ---注册目标数据库RMAN>upgrade catalog; ---升级catalogRMAN>drop catalog; ---删除catalog


2. 不使用Catalog
C:>rman nocatalog
Recovery Manager: Release 9.2.0.1.0 – Production
Copyright (c) 1995, 2002, Oracle Corporation. All rights reserved.
RMAN>connect target /connected to target database: OraDB (DBID=3038703659)
using target database controlfile instead of recovery catalog


3. RMAN配置
RMAN> show all;
RMAN configuration parameters are:
CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # default
CONFIGURE BACKUP OPTIMIZATION OFF; # default
CONFIGURE DEFAULT DEVICE TYPE TO DISK; # defaultCONFIGURE CONTROLFILE AUTOBACKUP ON;CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F'; # default
CONFIGURE DEVICE TYPE DISK PARALLELISM 1; # default
CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE MAXSETSIZE TO UNLIMITED; # default
CONFIGURE SNAPSHOT CONTROLFILE NAME TO '/opt/oracle/product/9.2.0/dbs/snapcf_Technet.f'; # default


4. RMAN基本命令
列出数据库的schemaRMAN>report schema;列出废弃的备份RMAN>report obsolete;检查备份RMAN> crosscheck backup;删除过期失效的备份信息RMAN>delete expired backup;备份表空间RMAN>backup tablespace system;拷贝数据文件RMAN>copy datafile 1 to ‘d:oracleorabackdatafile1.dbf’;列出备份和拷贝RMAN>list backup;
RMAN>list copy;验证备份能否还原RMAN>restore database validate;


5. 备份脚本热全备
---backup.batfor /f "Tokens=1-4 Delims=/ " %%i in ('date /t') do set dt=%%i%%j%%k
rman nocatalog target sys/pass @d:backup_full.rcv >D:oracleorabackbackup_Full_%dt%.log---backup_full.rcv
# script:bakup_full.rcv
# desc:backup all database datafile in archive with rman
# connect database
#connect rcvcat
rman/rman@back;
#connect target sys/pass ;
# start backup database
run{
allocate channel c1 type disk;
backup full tag 'Full' filesperset 5 format 'D:oracleoraback%d_Full_%T_%u_%p_%c' database include current controlfile;
sql 'alter system archive log current';
backup archivelog all filesperset 5 format 'D:oracleoraback%d_Log_%T_%u_%p_%c';
sql 'alter system archive log current';
release channel c1;
}
# end

0级备份
---backup0.bat
for /f "Tokens=1-4 Delims=/ " %%i in ('date /t') do set dt=%%i%%j%%k
rman nocatalog target sys/pass @d:backup_lvl_0.rcv >D:oracleorabackbackup_Level0_%dt%.log---backup_lvl_0.rcv
# script:bakup_lvl_0.rcv
# desc:backup database with incremental level 0 datafile in archive with rman
# connect database
#connect rcvcat
rman/rman@back;
#connect target sys/pass ;
# start backup database
run{
allocate channel c1 type disk;
backup incremental level 0 tag 'Level_0' maxsetsize=500M format 'D:oracleoraback%d_Level0_%T_%u_%p_%c' database include current controlfile;
sql 'alter system archive log current';
backup archivelog all filesperset 5 format 'D:oracleoraback%d_Log_%T_%u_%p_%c';
sql 'alter system archive log current';
release channel c1;
}
# end


1级备份
---backup1.bat
for /f "Tokens=1-4 Delims=/ " %%i in ('date /t') do set dt=%%i%%j%%k
rman nocatalog target sys/pass @d:backup_lvl_0.rcv >D:oracleorabackbackup_Level0_%dt%.log---backup_lvl_1.rcv
# script:bakup_lvl_1.rcv
# desc:backup database with incremental level 0 datafile in archive with rman
# connect database
#connect rcvcat
rman/rman@back;
#connect target sys/pass ;
# start backup database
run{
allocate channel c1 type disk;
#backup incremental level 1 cumulative tag 'Level_1' …
backup incremental level 1 tag 'Level_1' format 'D:oracleoraback%d_Level1_%T_%u_%p_%c' database include current controlfile;
sql 'alter system archive log current';
backup archivelog all filesperset 5 format 'D:oracleoraback%d_Log_%T_%u_%p_%c';
sql 'alter system archive log current';
release channel c1;
}
# end注: %c 备份片的拷贝数
%d 数据库名称
%D 位于该月中的第几天 (DD)
%M 位于该年中的第几月 (MM)
%F 一个基于DBID唯一的名称,这个格式的形式为c-IIIIIIIIII-YYYYMMDD-QQ,其中IIIIIIIIII为该数据库的DBID,YYYYMMDD为日期,QQ是一个1-256的序列
%n 数据库名称,向右填补到最大八个字符
%u 一个八个字符的名称代表备份集与创建时间
%p 该备份集中的备份片号,从1开始到创建的文件数
%U 一个唯一的文件名,代表%u_%p_%c
%s 备份集的号
%t 备份集时间戳
%T 年月日格式(YYYYMMDD)


6. 还原与恢复完全恢复

C:>rman nocatalog
RMAN>connect target /
RMAN>run {
allocate channel c1 type disk;
alter database mount;
restore database;
recover database;
alter database open;
release channel c1;
}

不完全恢复

C:>rman nocatalog
RMAN>connect target /
RMAN>run {
allocate channel c1 type disk;
set until time ‘2005-01-24 15:20:00’;
#set until sequence 120 thread 1;
alter database mount;
restore database;
recover database;
alter database resetlogs
release channel c1;
}

恢复控制文件

可以使用如下方法,在RMAN中恢复备份片的控制文件
restore controlfile from backuppiecefile;如果是9i的自动备份,可以采用如下的方法
restore controlfile from autobackup; 但是,如果控制文件全部丢失,需要指定DBID,如SET DBID=?自动备份控制文件的默认格式是%F,这个格式的形式为c-IIIIIIIIII-YYYYMMDD-QQ,其中IIIIIIIIII就是DBID


特殊恢复

如果catalog和控制文件中的备份信息丢失,可以通过dbms_backup_restore包来直接从备份集恢复
restore控制文件
declare
devtype varchar2(100)
done boolean;
recid number;
stamp number;
fullname varchar2(100);
begin
devtype:=dbms_backup_restore.deviceallocate(type=>'',ident=>'t1');
dbms_backup_restore.restoresetdatafile;
dbms_backup_restore.restorecontrolfileto(' d:oracleo


RadataTESTcontrol01.ctl');
dbms_backup_restore.restorebackuppiece(' D:oracleorabackC-3965546666-20050228-00',DONE=>done);
sys.dbms_backup_restore.deviceDeallocate;
End; /


restore 0级备份文件
declare
devtype varchar2(100)
done boolean;
recid number;
stamp number;
fullname varchar2(100);
begin
devtype:=dbms_backup_restore.deviceallocate(type=>'',ident=>'t1');
sys.dbms_backup_restore.restoreSetDatafile;
sys.dbms_backup_restore. restoreDatafileTo(dfnumber=>01,toname=>'d:oracleo


RadataTESTSYSTEM01.DBF');
sys.dbms_backup_restore.restoreDatafileTo(dfnumber=>02,toname=>' d:oracleo


RadataTESTUNDOTBS01.DBF');

sys.dbms_backup_restore.restoreBackupPiece(done=>done,handle=>' D:oracleorabackTEST_LEVEL0_20050228_46GDTAV8_1_1 ', params=>null);
sys.dbms_backup_restore.restoreBackupPiece(done=>done,handle=>' D:oracleorabackTEST_LEVEL0_20050228_47GDTB28_1_1 ', params=>null);
sys.dbms_backup_restore.deviceDeallocate;
END;
/restore 1级备份文件
declare
devtype varchar2(100)
done boolean;
recid number;
stamp number;
fullname varchar2(100);
begin

devtype:=sys.dbms_backup_restore.deviceAllocate (type=>'',ident=>'t1');

sys.dbms_backup_restore.applySetDatafile;sys.dbms_backup_restore.applyDatafileTo(dfnumber=>02,toname=>' d:oracleo

RadataTESTSYSTEM01.DBF');

sys.dbms_backup_restore.applyDatafileTo(dfnumber=>02,toname=>' d:oracleo

RadataTESTUNDOTBS01.DBF');

sys.dbms_backup_restore.applyBackupPiece(done=>done,handle=>' D:oracleoraback TEST_LEVEL1_20050301_4AGE6UDI_1_1 ', params=>null);
sys.dbms_backup_restore.deviceDeallocate;

END;
/


restore 归档日志
declare
devtype varchar2(100)
done boolean;
recid number;
stamp number;
fullname varchar2(100);
begin

devtype:=sys.dbms_backup_restore.deviceAllocate (type=>'',ident=>'t1');

sys.dbms_backup_restore.restoreSetArchivedLog; sys.dbms_backup_restore.restoreArchivedLogRange;
sys.dbms_backup_restore.restoreBackupPiece(done=>done,handle=>' D:oracleorabackTEST_LOG_20050228_48GDTB5K_1_1', params=>null);
sys.dbms_backup_restore.deviceDeallocate;

End;
/


veteransa 发表于:2007.08.14 21:11 ::分类: ( ORACLE学习笔记 ) ::阅读:(263次) :: 评论 (0)
===========================================================
关于UNDO表空间的Guarantee属性
===========================================================

Undo_retention oracle 9i 以后开始出现的参数,控制UNDO保留事物信息的时间。9i默认900s,10g 默认时间为10800S9I以后的UNDO管理使ora-01555 snap too old 错误大大降低,但当无可重用的空间后(无可用空间 UNDO不可扩展),系统还是会重用UNDO,这在很多情况下是不允许的。

通过设置:

ALTER TABLESPACE UNDO_TS RETENTION GUARANTEE;

ALTER TABLESPACE UNDO_TS2 RETENTION NOGUARANTEE;

可以强制UNDO重用时必须满足 Undo_retention 这一条件。
veteransa 发表于:2007.08.13 11:51 ::分类: ( ORACLE学习笔记 ) ::阅读:(275次) :: 评论 (0)
切换风格
新闻聚合
博客日历
文章归档...
最新发表...
博客统计...
网站链接...