分享
 
 
 

oracle 使用杂记一

王朝oracle·作者佚名  2008-05-31
窄屏简体版  字體: |||超大  

一直学习Oracle 希望能和大家共同探讨问题 如有不对之处还请指出

index 种对null的使用

================================================================

有些情况可以用 " N/A " 代替 NULL

================================================================

8i 以上使用基于函数的index 可以用上 null

create table t (n number);

create index ind_n on t(n,1); //用 t(n,'a') 更省空间

select v from t where n is null;

V

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

lg

Execution Plan

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

0SELECT STATEMENT Optimizer=CHOOSE (Cost=3 Card=614 Bytes=6140)

10 TABLE Access (BY INDEX ROWID) OF 'T' (Cost=3 Card=614 Bytes=6140)

21 INDEX (RANGE SCAN) OF 'IND_N' (NON-UNIQUE) (Cost=3 Card=614)

要记住用 CBO

I doesn't need query rewrite to make that leap, it is a "safe" operation.

==============================================================

null 可以在 bitmap index 中使用

==============================================================

或者象下面这样使用多列组合的index 方便使用index

create table t ( f_seq int, t_seq int, x char(1) );

create index t_idx on t(f_seq,t_seq);

select f_seq, t_seq from t where f_seq 0 and t_seq is null;

Execution Plan

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

0SELECT STATEMENT Optimizer=CHOOSE

10 INDEX (RANGE SCAN) OF 'T_IDX' (NON-UNIQUE)

select f_seq, t_seq, x from twhere f_seq 0 and t_seq is null;

Execution Plan

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

0SELECT STATEMENT Optimizer=CHOOSE

10 TABLE ACCESS (BY INDEX ROWID) OF 'T'

21 INDEX (RANGE SCAN) OF 'T_IDX' (NON-UNIQUE)

===============================================================

表所占空间的大小

select segment_name, round(blocks*8/1024, 0) table_size from user_segments where segment_type='TABLE';

---- 你可以知道你的表的实际size (单位: M)

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

数据字典表DBA_TABLES、ALL_TABLES、USER_TABLES

select table_name,initial_extent,next_extent,min_extents,max_extents,pct_increase

from user_tables;

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

分析一对象实际使用的块

analyze table lg.t compute statistics;

分析完后就可以看一对象实际使用的块

select blocks,num_rows,empty_blocks,avg_space,avg_row_len

from dba_tables where owner='LG' and table_name='T';

select table_name, round(avg_row_len*num_rows/1024/1024, 0) data_size from user_tables;

---- 你可以知道表中大约的data size (单位: M)

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

select count(distinct substr(rowid,1,15)) "how many use of block" from a;

这是看一个表真正使用了多少数据块 dba_tables 的 blocks 显示了 HWM 下不包含行的块的数目

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

declare

l_total_blocksnumber;

l_total_bytes number;

l_unused_blocks number;

l_unused_bytesnumber;

l_LastUsedExtFileId number;

l_LastUsedExtBlockIdnumber;

l_last_used_block number;

l varchar2(128);

t varchar2(128);

begin

l:=upper('&name');

select object_type into t from user_objects where object_name=l;

dbms_space.unused_space(

segment_owner =USER,

segment_name=l,

segment_type=t,

partition_name= null,

total_blocks= l_total_blocks,

total_bytes = l_total_bytes,

unused_blocks = l_unused_blocks,

unused_bytes= l_unused_bytes,

last_used_extent_file_id = l_LastUsedExtFileId,

last_used_extent_block_id = l_LastUsedExtBlockId,

last_used_block = l_last_used_block);

dbms_output.put_line(RPAD(('total_blocks: 'l_total_blocks),40,' ')'total_bytes: 'l_total_bytes);

dbms_output.put_line(RPAD(('unused_blocks: 'l_unused_blocks),40,' ')'unused_bytes: 'l_unused_bytes);

dbms_output.put_line(RPAD(('last_used_extent_file_id: 'l_LastUsedExtFileId),40,' ') 'last_used_extent_block_id: 'l_LastUsedExtBlockId);

dbms_output.put_line('last_used_block: 'l_last_used_block);

end;

/

sequence

<<Oracle9i Database Administrator's Guide20

if your application can never lose sequence numbers, then you cannot use Oracle sequences

and you may choose to store sequence numbers in database tables.

CREATE SEQUENCE// 需要的系统权限

create sequence lg_sequence

start with 1

increment by 1

order//保证每个序列值都比先前的大, ********在并行服务中有用

nocycle; //防止循环又回到初始值

NOCACHE NOORDER;

默认cache 为 20 直接 shutdown abort 后在内存中缓存的序列就会消失

startup后从上次shutdown以前的 sys.seq$ 的HIGHWATER 的值开始

最大值1.0E+271后面27个零

lg_sequence.nextval

lg_sequence.currval

alter sequence lg_sequence //alter sequence squ_1 increment by trunc(9999999/2);

increment by 997;//假如序列之前是2,这样一改就是999

//是逐渐在原有的基础上涨的

oracle 不支持复制 sequence

-------------------------------eXP sequence--------------------------------------

sequences are objects -- just like a table, procedure, view, package, etc.

要exp sequence 那就 export a database or schema, that will get the sequences.

或者select 'create sequence ' sequence_name ' start with ' last_number+1

';

' from user_sequences where.....;

由于是杂记 想到什么就写的什么 可能有点乱 请大家多包涵

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有