Oracle之创建表与修改表详解(三)

2014-11-24 16:47:22 · 作者: · 浏览: 3
Initrans和maxtrans参数用于设置指定并发访问数据块的事务数量,initrans用于设置数据块头部可以存放的数据数量;maxtrans参数用于设置并发访问数据块所允许的事务总数。
Initrans和maxtrans对数据块的管理如下:
在表创建的时候,oracle为为每个数据块的头部分配空间,该空间大小可以存储initrans参数指定数量的事务记录。
当一个事务访问数据块的时候,该事务将会在数据块的头部保存一个标记,表示该事务正在使用这个数据块,当该事务结束的时候,对应的标记将被删除。
当数据块的头部空间已经存储了initrans参数指定的数量的事务后,如果还有其他的事务访问该数据块,那么oracle将会在该数据块的空闲空间中为事务分配空间。
Eg:
SCOTT@orcl#r
1 create table books_01(
2 b_id number not null,
3 b_name varchar2(40) not null,
4 constraint unique_key_02 unique(b_id)
5* ) pctfree20 pctused 40 initrans 5 maxtrans 200
表已创建。
SCOTT@orcl#
SCOTT@orcl#selecttable_name,pct_free,pct_used,ini_trans,max_trans from user_tables wheretable_name=
2 'BOOKS_01';
TABLE_NAME PCT_FREE PCT_USED INI_TRANS MAX_TRANS
---------------------------------------------------------------------- ---------- ---------- ----------
BOOKS_01 20 5 255
SCOTT@orcl#
六)使对表的操作不记录到redo可以再创建表的时候使用nologging,
Eg:
SCOTT@orcl#r
1 create table books_01(
2 b_id number not null,
3 b_name varchar2(40) not null,
4 constraint unique_key_02 unique(b_id)
5* ) nologging
表已创建。
SCOTT@orcl#
七)指定cache
当sql操作数据的时候,如select查看数据文件中的数据,那么先从缓存中找相应内容,如果没有找到,那么会把数据文件中的信息存入缓冲中。当进行全表扫描的时候,那么oracle会根据lru算法进行缓存内容的变更信息,这个时候如果不希望我一些内容从缓存中丢掉,那么可以使用cache,这个时候在利用lru算法对缓存块进行换入、换出调度时,不会将将属于这个表的数据块换出缓存,以提高对表的查询速度。
Eg:
SCOTT@orcl#r
1 create table books_01(
2 b_id number not null,
3 b_name varchar2(40) not null,
4 constraint unique_key_02unique(b_id)
5*) cache
表已创建。
SCOTT@orcl#
第二部分修改表:
增加或删除列,
更新列
对表进行重命令
修改表的存储参数
将表移动到另一个表空间
删除表;
这部分内容,我直接进行试验操作:
Eg:
SCOTT@orcl#
SCOTT@orcl#
SCOTT@orcl#
SCOTT@orcl#DESC mybook5;
名称 是否为空 类型
--------------------------------------------------------------------------------- --------------------------------------------------
BOOKID NOT NULL NUMBER(10)
BOOKNAME VARCHAR2(40)
AUTHOR VARCHAR2(40)
BOOKPRICE NUMBER(4,2)
PRESSTIME DATE
SCOTT@orcl#alter table mybook5 add book_newvarchar2(20) not null;
表已更改。
SCOTT@orcl#desc mybook5;
名称 是否为空 类型
--------------------------------------------------------------------------------- --------------------------------------------------
BOOKID NOT NULL NUMBER(10)
BOOKNAME VARCHAR2(40)
AUTHOR VARCHAR2(40)
BOOKPRICE