q29191 发表于 2018-9-13 07:14:27

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

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>>  
表已更改。
  
虽然还没有存储数据,但表及新建的索引均已分配了空间
  
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
  
6where 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                     12147483645
  
PK_T1
  
INDEX            USERS                     65536          8          1          65536                     12147483645
  
系统默认的块大小
  
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 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                     12147483645
  
PK_T1                           INDEX            USERS                  196608         24          3          65536                     12147483645
  
同时,可以看出系统的一个区,有8个块组成!
  
--------------------------------------------------------------------
  
将主键置为diable ,主键在段内就不能查询了,也就意味着索引删除了

  
test@CISCOSYS>>  
表已更改。
  
test@CISCOSYS>select SEGMENT_NAME   ,PARTITION_NAME ,
  
2   SEGMENT_TYPE ,TABLESPACE_NAME,BYTES,
  
3BLOCKS,EXTENTS ,INITIAL_EXTENT,
  
4NEXT_EXTENT,MIN_EXTENTS, MAX_EXTENTS
  
5from 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                     12147483645
  
重新启用又查询到了,同时发现索引占的空间增加了!!!

  
test@CISCOSYS>>  
表已更改。
  
test@CISCOSYS>select SEGMENT_NAME   ,PARTITION_NAME ,
  
2   SEGMENT_TYPE ,TABLESPACE_NAME,BYTES,
  
3BLOCKS,EXTENTS ,INITIAL_EXTENT,
  
4NEXT_EXTENT,MIN_EXTENTS, MAX_EXTENTS
  
5from 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                     12147483645
  
PK_T1                           INDEX            USERS                  262144         32          4          65536                     12147483645
  
设置最初的并发事务条目(块级别)

  
test@CISCOSYS>>  
表已更改。
  
查询确认
  
test@CISCOSYS> SELECT
  
2TABLE_NAME,
  
3PCT_FREE,
  
4PCT_USED,
  
5INI_TRANS,
  
6MAX_TRANS,
  
7INITIAL_EXTENT
  
8from dba_tables where table_name ='T1';
  
TABLE_NAME   PCT_FREE   PCT_USEDINI_TRANSMAX_TRANS INITIAL_EXTENT
  
---------- ---------- ---------- ---------- ---------- --------------
  
T1               10                     4      255          65536
  
设置PCTUSED 参数(对于块,低于这个值,才可以插入,默认为40)
  
PCTFREE,PCTUSED两个参数配合使用。
  
如果一个块的可用空间小于PCTFREE,那么不允许再插入,只能更新,删除。
  
当删除若干数据时,可用空间低于PCTUSED,允许插入。

  
test@CISCOSYS>>  
2;
  
alter table t1 storage(next 50k)
  
*
  
第 1 行出现错误:

  
ORA-25150: 不允许对区参数执行>  
表空间使用本地管理,其中的表不能修改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_namein ('T1','T2','T3');
  
test@CISCOSYS> SELECT
  
2TABLE_NAME,
  
3PCT_FREE,
  
4PCT_USED,
  
5INI_TRANS,
  
6MAX_TRANS,
  
7INITIAL_EXTENT
  
8from dba_tables where table_namein ('T1','T2','T3');
  
TABLE_NAME   PCT_FREE   PCT_USEDINI_TRANSMAX_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 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 intot2 select level,'name'||level from dual connect by levelcommit;
  
提交完成。
  
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


页: [1]
查看完整版本: 2014-1-15 关于oracle的一些实验