刚刚开始学习oracle,遇到一些问题请各位高手帮忙。只要解答正确均给分,详细者多给分,分数不够可以再加!谢谢各位啦!
CREATE TABLESPACE spTest
    LOGGING
    DATAFILE '$ORADATA_DICT/$ORACLE_SID/spCallTestIdx.DBF'  SIZE 256M 
    AUTOEXTEND ON NEXT  128M MAXSIZE 512M
    BLOCKSIZE 4096 EXTENT MANAGEMENT LOCAL UNIFORM size 204800
    SEGMENT SPACE MANAGEMENT  AUTO;create table tbTest
(
   a     varchar2(64) not null,
   b     number(8) not null,
   c     char(19) not null
)
tablespace spTest
  pctfree 10
  pctused 40
  initrans 1
  maxtrans 255
  storage
  (
    initial 400K
    next 400K
    minextents 1
    maxextents unlimited
    pctincrease 0
  );
问题:1)AUTOEXTEND ON NEXT  128M MAXSIZE 512M是什么意思?表空间spTest有多大,256M还是512M?
      2) BLOCKSIZE 4096 EXTENT MANAGEMENT LOCAL UNIFORM size 204800是什么意思?
      3)pctfree 10 pctused 40 initrans 1 maxtrans 255是什意思?
      4) storage
        (
           initial 400K
           next 400K
           minextents 1
           maxextents unlimited
           pctincrease 0
         );是什么意思?

解决方案 »

  1.   

    1 如果表空间满了的话按128M增加,最大增加512M,256M3 表空间空闲10%,已经应用了40%,初始事务数1  最大255
    4 存储的初始大小是400K,下一个是400K,最小数量是1,最大不限制
      

  2.   

    问题:1)AUTOEXTEND ON NEXT  128M MAXSIZE 512M是什么意思?表空间spTest有多大,256M还是512M? 
    表空间自动增加,每次增加128M的空间,最多增加到512M,
    从DATAFILE '$ORADATA_DICT/$ORACLE_SID/spCallTestIdx.DBF'  SIZE 256M 看,表空间初始大小256M      2) BLOCKSIZE 4096 EXTENT MANAGEMENT LOCAL UNIFORM size 204800是什么意思? 
    BLOCKSIZE 4096——指定表空间内的非标准块大小为4096个字节
    EXTENT MANAGEMENT LOCAL UNIFORM size 204800——
    指定此表空间为本地管理类表空间,每个扩展都是204800个字节,且位图中的每个位描述为204800/4096=50块。
          3)pctfree 10 pctused 40 initrans 1 maxtrans 255是什意思? 
          4) storage 
            ( 
              initial 400K 
              next 400K 
              minextents 1 
              maxextents unlimited 
              pctincrease 0 
            );是什么意思? 
    3和4我回去再看看我的笔记,有些忘了。。
      

  3.   

    谢谢楼上三位的解答!结贴时一定给分。
    关于1)的问题,是不是无论前面的数据文件给多大,最后表空间大小的最大值都取决于MAXSIZE
    例如:  DATAFILE '$ORADATA_DICT/$ORACLE_SID/spCallTestIdx.DBF'  SIZE 256M ,
                    '$ORADATA_DICT/$ORACLE_SID/spCallTestIdx.DBF'  SIZE 256M 
           AUTOEXTEND ON NEXT  128M MAXSIZE 1024M 
    如此,表空间的最大值是不是1024M?
      

  4.   

    不是的,AUTOEXTEND ON NEXT  128M MAXSIZE 1024M ,这句的意思是在你设置的表空间满了之后每次增加128M,最大增加到1G,也就是说表空间最大值是1G+256M
      

  5.   

    各位高手:
    关于1)的问题,是不是无论前面的数据文件给多大,最后表空间大小的最大值都取决于MAXSIZE 
    例如:  DATAFILE '$ORADATA_DICT/$ORACLE_SID/spCallTestIdx.DBF'  SIZE 256M , 
                    '$ORADATA_DICT/$ORACLE_SID/spCallTestIdx.DBF'  SIZE 256M 
          AUTOEXTEND ON NEXT  128M MAXSIZE 1024M 
    这个表空间最大值到底是1024M?还是(512+1024)M?还是(256+1024)M?
      

  6.   

    DATAFILE '$ORADATA_DICT/$ORACLE_SID/spCallTestIdx.DBF'  SIZE 256M , 
                    '$ORADATA_DICT/$ORACLE_SID/spCallTestIdx.DBF'  SIZE 256M 
          AUTOEXTEND ON NEXT  128M MAXSIZE 1024M 是不是多写了中间那句。。
    表空间最大应该是1024M
      

  7.   

    问题:1)AUTOEXTEND ON NEXT  128M MAXSIZE 512M是什么意思?表空间spTest有多大,256M还是512M?
           答:刚建立表空间spTest 时,初始化大小为256M,如果空间不够大了,自动增加,每次增加128M,但是增加并不是无限制的,如果表空间增加到512M则不会再继续增加了
          2) BLOCKSIZE 4096 EXTENT MANAGEMENT LOCAL UNIFORM size 204800是什么意思?
           答:BLOCKSIZE 4096-》指定表空间内的非标准块大小为4096个字节
    EXTENT MANAGEMENT LOCAL UNIFORM size 204800—》指定此表空间为本地表空间,每个扩展区都是204800个字节,且位图中的每个位描述为204800/4096=50块。 

          3)pctfree 10 pctused 40 initrans 1 maxtrans 255是什意思?
           答:表空间空闲10%,已经应用了40%,初始事务数1  最大255 
          4) storage
            (
              initial 400K
              next 400K
              minextents 1
              maxextents unlimited
              pctincrease 0
            );
            答:初始给tbTest 表分配两个Extent(区),第一个Extent是400K,因initial 400K
      第二个Extent是400K,因next 400K。 
        如果因表内数据增长,需要分配第三个Extent,因PCTINCREASE是0,则
      第三个Extent是400K=400K+0K
      可通过数据字典表DBA_TABLES、ALL_TABLES、USER_TABLES查看参数设置情况,如:
      select table_name,initial_extent,next_extent,min_extents,max_extents,pct_increase from user_tables;
      

  8.   

     建议PCTINCREASE参数设置为0,可使碎片最小化,使每一个Extent都相同(等于NEXT值)
      一旦建立了某个对象,它的INITIAL和MINEXTENTS参数不能修改(Oracle 816中可修改MINEXTENTS参数)
      对于NEXT和PCTINCREASE的任何修改都只影响后来分配的那些Extent
      在分配一个新Extent时,系统直接按NEXT的值分配一个Extent,
      然后用公式:前一NEXT值*(1+PCTINCREASE/100) 计算出下一个应该分配的Extent的大小,
      并把计算结果保存到相关数据字典的NEXT_EXTENT列上,做为下一个应该分配的Extent的大小。
      

  9.   

    DATAFILE '$ORADATA_DICT/$ORACLE_SID/spCallTestIdx.DBF'  SIZE 256M , 
                    '$ORADATA_DICT/$ORACLE_SID/spCallTestIdx.DBF'  SIZE 256M 
          AUTOEXTEND ON NEXT  128M MAXSIZE 1024M 是不是多写了中间那句。。 
    表空间最大应该是1024M
    参考了一下帮助文档,
    AUTOEXTEND ON NEXT  128M MAXSIZE 1024M 
    不是指表空间整体的扩展情况,仅仅是指spCallTestIdx.DBF这个文件的扩展情况
    至于这个文件的最大空间是1024M,还是1024M+256M,这个从英文的角度来说,不好解释
    Use the MAXSIZE clause to specify the maximum disk space allowed for automatic extension of the datafile
    楼主可以设置一个小一点的表空间试一下