oracle分析表怎么做 oracle分析表需要多长时间

请ORACLE专家帮忙分析【Oracle数据库恢复】ORA-00600[25027]错误解析
ORA-00600[25027]错误的触发原因是ORACLE检测到一个无效的表空间号TSN Tablespace Number或者相对文件号Relative File Number 。
该ORA-00600[25027]的2个变量各代表:
arg[a] Tablespace Number表空间号
arg[b] 十进制的相对数据块号Relative Data Block Address (RDBA)
该ORA-00600[25027]错误相关的模块为Kernel File management Tablespace component,其影响为可能的物理块损坏 。
当该错误触发后 如果 arg[b] 即RDBA为0 , 则该错误可能由于索引问题引起 。
可以使用如下查询来获得有问题的索引:
select do.owner,do.object_name, do.object_type,sysind.flags
from dba_objects do, sys.ind$ sysind
where do.object_id = sysind.obj#
and bitand(sysind.flags,4096)=4096;
如果上面的查询返回了数据行,则建议用户进一步检查查询所获得的对象 , 并考虑drop这些对象来绕过错误 。
进一步可以对trace文件中指向的表做一个analyze table validate structure cascade,来进一步确认该问题 。
与ORA-00600[25027]相关的一些BUG列表如下:
如果自己搞不定可以找诗檀软件专业ORACLE数据库修复团队成员帮您恢复!
诗檀软件专业数据库修复团队
对一个1200万的表进行analyze操作,大约要多久Oracle中分析表的作用
1.分析更新表的统计信息,,有可能导致执行计划改变..
2.以的analyze table abc compute statistics;这条为例oracle分析表怎么做,生成的统计信息会存在于user_tables这个视图oracle分析表怎么做 , 查看一下select * from user_tables where table_name='ABC';
观察一下NUM_ROWS,BLOCKS,AVG_SPACE,AVG_ROW_LEN几列你就会明白,这就是变化 。分析完表之后,会发现DBA_tables 视图中,以前很多列值是空的,现在开始有数据oracle分析表怎么做了 。这些数据就是分析表得到的.
3.怎么样分析表或索引
命令行方式可以采用analyze命令
如Analyze table tablename compute statistics;
Analyze index|cluster indexname estimate statistics;
ANALYZE TABLE tablename COMPUTE STATISTICS
FOR TABLE
FOR ALL [LOCAL] INDEXES
FOR ALL [INDEXED] COLUMNS;
ANALYZE TABLE tablename DELETE STATISTICS
ANALYZE TABLE tablename VALIDATE REF UPDATE
ANALYZE TABLE tablename VALIDATE STRUCTURE
[CASCADE]|[INTO TableName]
ANALYZE TABLE tablename LIST CHAINED ROWS [INTO TableName]
【oracle分析表怎么做 oracle分析表需要多长时间】等等 。
如果想分析整个用户或数据库 , 还可以采用工具包 , 可以并行分析
Dbms_utility(8i以前的工具包)
Dbms_stats(8i以后提供的工具包)

dbms_stats.gather_schema_stats(User,estimate_percent=100,cascade= TRUE);
dbms_stats.gather_table_stats(User,TableName,degree = 4,cascade = true);
这是对命令与工具包的一些总结
(1)、对于分区表,建议使用DBMS_STATS,而不是使用Analyze语句 。
a) 可以并行进行,对多个用户,多个Table
b) 可以得到整个分区表的数据和单个分区的数据 。
c) 可以在不同级别上Compute Statisticsoracle分析表怎么做:单个分区,子分区 , 全表 , 所有分区
d) 可以倒出统计信息
e) 可以用户自动收集统计信息
(2)、DBMS_STATS的缺点
a) 不能Validate Structure
b) 不能收集CHAINED ROWS, 不能收集CLUSTER TABLE的信息,这两个仍旧需要使用Analyze语句 。
c) DBMS_STATS 默认不对索引进行Analyze,因为默认Cascade是False,需要手工指定为True
(3)、对于Oracle 9里面的External Table,Analyze不能使用 , 只能使用DBMS_STATS来收集信息.
Oracle分析函数之Lag和Lead()使用在平时的工作中oracle分析表怎么做,由于主要接触ERP方面的业务数据处理oracle分析表怎么做 , Oracle的分析函数一直没怎么使用,但随着公司开始做数据分析 , Oracle的分析函数出现的越来越频繁 。因此准备把分析函数中重要的几个常用函数用法分析下 。
Lag(): 在查询中取出同一字段前N行的数据作为独立的列 。
表达式理解为oracle分析表怎么做:按column2进行分组且根据column3进行排序,取column1前N行(往前数第N行)的列值 , 如果为空则用xxxx进行默认 。
由此可以想到,采用该方式可以计算环比以及同比,同比与表间join,该函数将大大减少SQL的量 。
Lead(): 在查询中取出同一字段后N行的数据作为独立的列 。
表达式理解为:按column2进行分组且根据column3进行排序,取column1后N行(往后数第N行)的列值,如果为空则用xxxx进行默认 。
lag和lead的函数,主要应用于查找前后行的列记录,使用这两个分析函数 , 可以减少子查询或表关联,并且能够大大提升sql语句性能 。
如何对oracle进行 REORG?alter table tablename move [tablespace tablespacename];
delete数据不会回收已经分配出去的block(也就是delete前后你查看user_segments中的信息不会有改动) 。
但这时你对表执行analyze后查看dba_tables表的话会发现empty_block数目变大或者avg_space数据变小 。
如果你希望减少该table占用的实际block数目,
你需要使用move操作将table重建,oracle才会重新分配block , 这时table上的索引会失效 , 需要rebuild 。
一,创建测试环境
1.1 创建测试表,为其插入16万条记录
create table jax_t11
as
select * from dba_objects
where rownum = 10000;
insert into jax_t11
select * from jax_t11;
commit;
insert into jax_t11
select * from jax_t11;
commit;
insert into jax_t11
select * from jax_t11;
commit;
insert into jax_t11
select * from jax_t11;
commit;
1.2 创建索引
create index idx_jax_t11_01 on jax_t11(owner,object_name,created);
1.3 分析表及索引
begin
dbms_stats.gather_table_stats
( ownname= user,-- 表的拥有者
tabname= upper('jax_t11'),-- 表名称
method_opt = 'for all indexed columns size 1',-- 获得所有索引列的柱状图
cascade= TRUE );-- 级联获取 indexes的统计信息
end;
1.4 查看表占用空间大小
select segment_name,segment_type,bytes/1024/1024 from dba_segments ds
where ds.segment_name in ( 'JAX_T11', upper('idx_jax_t11_01'));
SEGMENT_NAME SEGMENT_TYPE BYTES/1024/1024
JAX_T11 TABLE 17
IDX_JAX_T11_01 INDEX 9
这里我们可以看到,表占空间17M,索引占空间9M;
表空间占用明细
SELECT table_name,tablespace_name,
num_rows,-- 记录行数
avg_row_len,--平均行长度
blocks,
avg_space,
empty_blocks
from user_tables ut
where ut.table_name = 'JAX_T11'
TABLE_NAME TABLESPACE_NAME NUM_ROWS AVG_ROW_LEN BLOCKS AVG_SPACE EMPTY_BLOCKS
JAX_T11 DRP_DATA 160000 100 2146 0 0
索引空间占用明细
SELECT index_name,table_name,leaf_blocks,distinct_keys,num_rows
from user_indexes ut
where ut.index_name = upper('idx_jax_t11_01')
INDEX_NAME TABLE_NAME LEAF_BLOCKS DISTINCT_KEYS NUM_ROWS
IDX_JAX_T11_01 JAX_T11 1036 9832 160000
二,删除90%的记录后的空间占用
2.1 删除90%的记录
delete from jax_t11
where rowid in (select r1
from (select rowid r1, mod(rownum, 100) r2 from jax_t11) t
where r2 = 90);
commit;
2.2 分析表及索引
begin
dbms_stats.gather_table_stats
( ownname= user,-- 表的拥有者
tabname= upper('jax_t11'),-- 表名称
method_opt = 'for all indexed columns size 1',-- 获得所有索引列的柱状图
cascade= TRUE );-- 级联获取 indexes的统计信息
end;
2.3 查看表占用空间大小
select segment_name,segment_type,bytes/1024/1024 from dba_segments ds
where ds.segment_name in ( 'JAX_T11', upper('idx_jax_t11_01'));
SEGMENT_NAME SEGMENT_TYPE BYTES/1024/1024
JAX_T11 TABLE 17
IDX_JAX_T11_01 INDEX 9
这里我们可以看到,表占空间17M,索引占空间9M;与删除数据前相比,没有任何改变
表空间占用明细
SELECT table_name,tablespace_name,
num_rows,-- 记录行数
avg_row_len,--平均行长度
blocks,
avg_space,
empty_blocks
from user_tables ut
where ut.table_name = 'JAX_T11'
TABLE_NAME TABLESPACE_NAME NUM_ROWS AVG_ROW_LEN BLOCKS AVG_SPACE EMPTY_BLOCKS
JAX_T11 DRP_DATA 14400 100 2146 0 0
索引空间占用明细
SELECT index_name,table_name,leaf_blocks,distinct_keys,num_rows
from user_indexes ut
where ut.index_name = upper('idx_jax_t11_01')
INDEX_NAME TABLE_NAME LEAF_BLOCKS DISTINCT_KEYS NUM_ROWS
IDX_JAX_T11_01 JAX_T11 998 7654 14400
三,move tablerebuild index
3.1 删除90%的记录
alter table jax_t11 move;
alter index idx_jax_t11_01 rebuild;
3.2 分析表及索引
begin
dbms_stats.gather_table_stats
( ownname= user,-- 表的拥有者
tabname= upper('jax_t11'),-- 表名称
method_opt = 'for all indexed columns size 1',-- 获得所有索引列的柱状图
cascade= TRUE );-- 级联获取 indexes的统计信息
end;
3.3 查看表占用空间大小
select segment_name,segment_type,bytes/1024/1024 from dba_segments ds
where ds.segment_name in ( 'JAX_T11', upper('idx_jax_t11_01'));
SEGMENT_NAME SEGMENT_TYPE BYTES/1024/1024
JAX_T11 TABLE 2
IDX_JAX_T11_01 INDEX 0.8125
这里我们可以看到,表占空间2M , 索引占空间0.8125M;与删除数据前相比,该回收的空间已经回收完毕
oracle分析表怎么做的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于oracle分析表需要多长时间、oracle分析表怎么做的信息别忘了在本站进行查找喔 。

    推荐阅读