2014-1-15 关于oracle的一些实验

简介:

 通过实验可以得知:

1.对于,即便没有真正数据,建表之后也会预分配空间

2.disable 主键取消索引空间,当重新enable,空间会发生变化。

3.PCTINCREASE参数,我经过实验,没有效果。

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
col SEGMENT_NAME format a20;
col PARTITION_NAME format a20;
col PARTITION_NAME format a10;
col TABLESPACE_NAME format a20;
1.创建一个表,并添加主键
test@CISCOSYS>  create  table  t1 (id  int , name  varchar2(32));
表已创建。
test@CISCOSYS>  alter  table   t1  add  constraint  pk_t1  primary  key (id);
表已更改。
虽然还没有存储数据,但表及新建的索引均已分配了空间
test@CISCOSYS>  select  SEGMENT_NAME   ,PARTITION_NAME ,
2                      SEGMENT_TYPE ,TABLESPACE_NAME,BYTES,
3                     BLOCKS,EXTENTS ,INITIAL_EXTENT,
4                     NEXT_EXTENT,MIN_EXTENTS, MAX_EXTENTS
5                      from  user_segments
6   where  segment_name  in  ( 'T1' , 'PK_T1' );
SEGMENT_NAME         PARTITION_ SEGMENT_TYPE       TABLESPACE_NAME           BYTES     BLOCKS    EXTENTS INITIAL_EXTENT NEXT_EXTENT MIN_EXTENTS MAX_EXTENTS
-------------------- ---------- ------------------ -------------------- ---------- ---------- ---------- -------------- ----------- ----------- -----------
T1                               TABLE               USERS                     65536          8          1          65536                       1  2147483645
PK_T1
INDEX               USERS                     65536          8          1          65536                       1  2147483645
系统默认的块大小
test@CISCOSYS> show parameter db_block_size;
NAME                                  TYPE        VALUE
------------------------------------ ----------- ------------------------------
db_block_size                         integer      8192(bytes)=8K
BYTES=BLOCKS*db_block_size
初始化10000条数据
test@CISCOSYS>  insert  into  t1  select  level , 'n' || level  from  dual  connect  by  level <=10000;
已创建10000行。
test@CISCOSYS>  commit ;
提交完成。
数据初始化后,索引及表的空间均增加了
test@CISCOSYS>  select  SEGMENT_NAME   ,PARTITION_NAME ,
2            SEGMENT_TYPE ,TABLESPACE_NAME,BYTES,
3           BLOCKS,EXTENTS ,INITIAL_EXTENT,
4           NEXT_EXTENT,MIN_EXTENTS, MAX_EXTENTS
5            from  user_segments    where  segment_name  in  ( 'T1' , 'PK_T1' );
SEGMENT_NAME         PARTITION_ SEGMENT_TYPE       TABLESPACE_NAME           BYTES     BLOCKS    EXTENTS INITIAL_EXTENT NEXT_EXTENT MIN_EXTENTS MAX_EXTENTS
-------------------- ---------- ------------------ -------------------- ---------- ---------- ---------- -------------- ----------- ----------- -----------
T1                               TABLE               USERS                    262144         32          4          65536                       1  2147483645
PK_T1                            INDEX               USERS                    196608         24          3          65536                       1  2147483645
同时,可以看出系统的一个区,有8个块组成!
--------------------------------------------------------------------
将主键置为diable ,主键在段内就不能查询了,也就意味着索引删除了
test@CISCOSYS>  alter  table  t1 disable  constraint  pk_t1;
表已更改。
test@CISCOSYS>   select  SEGMENT_NAME   ,PARTITION_NAME ,
2   SEGMENT_TYPE ,TABLESPACE_NAME,BYTES,
3  BLOCKS,EXTENTS ,INITIAL_EXTENT,
4  NEXT_EXTENT,MIN_EXTENTS, MAX_EXTENTS
5   from  user_segments    where  segment_name  in  ( 'T1' , 'PK_T1' );
SEGMENT_NAME         PARTITION_ SEGMENT_TYPE       TABLESPACE_NAME           BYTES     BLOCKS    EXTENTS INITIAL_EXTENT NEXT_EXTENT MIN_EXTENTS MAX_EXTENTS
-------------------- ---------- ------------------ -------------------- ---------- ---------- ---------- -------------- ----------- ----------- -----------
T1                               TABLE               USERS                    262144         32          4          65536                       1  2147483645
重新启用又查询到了,同时发现索引占的空间增加了!!!
test@CISCOSYS>  alter  table  t1 enable  constraint  pk_t1;
表已更改。
test@CISCOSYS>   select  SEGMENT_NAME   ,PARTITION_NAME ,
2   SEGMENT_TYPE ,TABLESPACE_NAME,BYTES,
3  BLOCKS,EXTENTS ,INITIAL_EXTENT,
4  NEXT_EXTENT,MIN_EXTENTS, MAX_EXTENTS
5   from  user_segments    where  segment_name  in  ( 'T1' , 'PK_T1' );
SEGMENT_NAME         PARTITION_ SEGMENT_TYPE       TABLESPACE_NAME           BYTES     BLOCKS    EXTENTS INITIAL_EXTENT NEXT_EXTENT MIN_EXTENTS MAX_EXTENTS
-------------------- ---------- ------------------ -------------------- ---------- ---------- ---------- -------------- ----------- ----------- -----------
T1                               TABLE               USERS                    262144         32          4          65536                       1  2147483645
PK_T1                            INDEX               USERS                    262144         32          4          65536                       1  2147483645
设置最初的并发事务条目(块级别)
test@CISCOSYS>  alter  table  t1 INITRANS 4;
表已更改。
查询确认
test@CISCOSYS>  SELECT
2  TABLE_NAME,
3  PCT_FREE,
4  PCT_USED,
5  INI_TRANS,
6  MAX_TRANS,
7  INITIAL_EXTENT
8   from  dba_tables  where  table_name = 'T1' ;
TABLE_NAME   PCT_FREE   PCT_USED  INI_TRANS  MAX_TRANS INITIAL_EXTENT
---------- ---------- ---------- ---------- ---------- --------------
T1                 10                     4        255          65536
设置PCTUSED 参数(对于块,低于这个值,才可以插入,默认为40)
PCTFREE,PCTUSED两个参数配合使用。
如果一个块的可用空间小于PCTFREE,那么不允许再插入,只能更新,删除。
当删除若干数据时,可用空间低于PCTUSED,允许插入。
test@CISCOSYS>  alter  table  t1 storage( next  50k)
2  ;
alter  table  t1 storage( next  50k)
*
第 1 行出现错误:
ORA-25150: 不允许对区参数执行 ALTERING
表空间使用本地管理,其中的表不能修改 NEXT  MAXEXTENTS和PCTINCREASE参数
sys@CISCOSYS>  create  table  t2(id  int , name  varchar2(32)) storage(initial 10k);
表已创建。
SELECT
TABLE_NAME,
PCT_FREE,
PCT_USED,
INI_TRANS,
MAX_TRANS,
INITIAL_EXTENT
from  dba_tables  where  table_name   in  ( 'T1' , 'T2' , 'T3' );
test@CISCOSYS>  SELECT
2  TABLE_NAME,
3  PCT_FREE,
4  PCT_USED,
5  INI_TRANS,
6  MAX_TRANS,
7  INITIAL_EXTENT
8   from  dba_tables  where  table_name   in  ( 'T1' , 'T2' , 'T3' );
TABLE_NAME   PCT_FREE   PCT_USED  INI_TRANS  MAX_TRANS INITIAL_EXTENT
---------- ---------- ---------- ---------- ---------- --------------
T2                 10         40          1        255          16384
T3                 10                     1        255          65536
T1                 10                     4        255          65536
select  SEGMENT_NAME   ,PARTITION_NAME ,
SEGMENT_TYPE ,TABLESPACE_NAME,BYTES,
BLOCKS,EXTENTS ,INITIAL_EXTENT,
NEXT_EXTENT,MIN_EXTENTS, MAX_EXTENTS
from  dba_segments
where  segment_name  in  ( 'T3' , 'T2' , 'T3);
指定的initial=17K.系统会根据系统指定块大小,最近的整数倍(2*8<17k<3*8)
create table t4(id int,name varchar2(32)) storage(initial 17k);
test@CISCOSYS> select SEGMENT_NAME   ,PARTITION_NAME ,
2                       SEGMENT_TYPE ,TABLESPACE_NAME,BYTES,
3                      BLOCKS,EXTENTS ,INITIAL_EXTENT,
4                      NEXT_EXTENT,MIN_EXTENTS, MAX_EXTENTS
5                      from dba_segments
6   where segment_name in (' T3 ',' T2 ',' T4 ');
SEGMENT_NAME         PARTITION_ SEGMENT_TYPE       TABLESPACE_NAME           BYTES     BLOCKS    EXTENTS INITIAL_EXTENT NEXT_EXTENT MIN_EXTENTS MAX_EXTENTS
-------------------- ---------- ------------------ -------------------- ---------- ---------- ---------- -------------- ----------- ----------- -----------
T2                              TABLE              SYSTEM                    65536          8          1          16384                       1  2147483645
T3                              TABLE              USERS                     65536          8          1          65536                       1  2147483645
T4                              TABLE              USERS                     65536          8          1          24576                       1  2147483645
test@CISCOSYS> SELECT 24576/1024 from dual;
24576/1024
----------
24
明确段与块的关系
test@CISCOSYS> select * from dba_extents where segment_NAME=' T1 ';
OWNER                          SEGMENT_NAME         PARTITION_ SEGMENT_TYPE       TABLESPACE_NAME    EXTENT_ID    FILE_ID   BLOCK_ID      BYTES
------------------------------ -------------------- ---------- ------------------ -------------------- ---------- ---------- ---------- ----------
TEST                           T1                              TABLE              USERS                 0          5        721      65536
TEST                           T1                              TABLE              USERS                 1          5        745      65536
TEST                           T1                              TABLE              USERS                 2          5        753      65536
TEST                           T1                              TABLE              USERS                 3          5        769      65536
test@CISCOSYS> SELECT SEGMENT_NAME,EXTENTS FROM DBA_SEGMENTS WHERE SEGMENT_NAME=' T1 ';
SEGMENT_NAME            EXTENTS
-------------------- ----------
T1                            4
测试pctincrease参数(发现没有效果)
test@CISCOSYS> create table t2 (id int,name varchar2(32)) storage(pctincrease 20);
表已创建。
test@CISCOSYS> insert into  t2 select level,' name '||level from dual connect by level <=10000;
已创建10000行。
test@CISCOSYS> commit;
提交完成。
test@CISCOSYS> select * from dba_extents where segment_NAME=' T2';
OWNER                          SEGMENT_NAME         PARTITION_ SEGMENT_TYPE       TABLESPACE_NAME    EXTENT_ID    FILE_ID   BLOCK_ID      BYTES     BLOCKS RE
------------------------------ -------------------- ---------- ------------------ -------------------- ---------- ---------- ---------- ---------- ----------
SYS                            T2                               TABLE               SYSTEM                0          1      59497      65536          8
TEST                           T2                               TABLE               USERS                 0          4       5793      65536          8
TEST                           T2                               TABLE               USERS                 1          4       5801      65536          8
TEST                           T2                               TABLE               USERS                 2          4       5809      65536          8
TEST                           T2                               TABLE               USERS                 3          4       5817      65536          8
--

 本文转自 randy_shandong 51CTO博客,原文链接:http://blog.51cto.com/dba10g/1351887,如需转载请自行联系原作者

相关文章
|
存储 Oracle 关系型数据库
实验三 Oracle数据库的创建和管理
实验三 Oracle数据库的创建和管理
301 1
|
SQL Oracle 关系型数据库
实验一 安装和使用Oracle数据库
实验一 安装和使用Oracle数据库
320 1
|
SQL Oracle 网络协议
【大数据开发运维解决方案】linux5 安装 oracle 11g(11.2.0.4)实验
​ 安装环境(可以查看附件的环境安装过程来安装和我这个一模一样的环境): oracle linux 5 64位 ,oracle11.2.0.4 64位  ip 192.168.0.5    hostname jtxy 安装目录: /u01 系统要求: 以下是安装Oracle数据库的内存要求11所示g版本2(11.2):
【大数据开发运维解决方案】linux5 安装 oracle 11g(11.2.0.4)实验
|
SQL Oracle 关系型数据库
|
SQL Oracle 关系型数据库
|
SQL 存储 Oracle
Oracle分区技术-- interval parition实验及总结
Oracle分区技术-- interval parition实验及总结 分区写法: 几大点: 1.
1311 0

热门文章

最新文章

推荐镜像

更多