oracle企业资产管理.ppt

上传人:F****n 文档编号:97148588 上传时间:2019-09-02 格式:PPT 页数:139 大小:768KB
返回 下载 相关 举报
oracle企业资产管理.ppt_第1页
第1页 / 共139页
oracle企业资产管理.ppt_第2页
第2页 / 共139页
oracle企业资产管理.ppt_第3页
第3页 / 共139页
oracle企业资产管理.ppt_第4页
第4页 / 共139页
oracle企业资产管理.ppt_第5页
第5页 / 共139页
点击查看更多>>
资源描述

《oracle企业资产管理.ppt》由会员分享,可在线阅读,更多相关《oracle企业资产管理.ppt(139页珍藏版)》请在金锄头文库上搜索。

1、第七章 管理Oracle对象,管理表 概览 表是最基本的数据库对象,它用于存储用户数据,关系数据库的所有操作最终都是围绕用户表进行的。在Oracle数据库中,按照存储方式的不同,表可以分为普通表、分区表、索引组织表以及簇表等四种表。,1.表结构 表是Oracle数据库数据存储的基本单元,在表中是通过行和列来组织数据的。一张表一般都具有多个列,或者称为字段,每个字段都具有特定的属性,包括字段名、字段数据类型、字段长度、约束、默认值等,这些属性在表创建时即被确定。而表的每一行存放一条信息 。,2.基本的数据类型 当建立表时,不仅要指定表名、列名,而且要根据情况为列选择合适的数据类型以及长度。下面介

2、绍一些常用的Oracle数据类型: CHAR(N) 该数据类型用于定义固定长度的字符串,其最大长度为2000字节。假定定义COLA列为CHAR(100),并且该列的数据为“ACCESS”,这时虽“ACCESS”只有六个字符,但COLA列仍将占用100字节的空间。 VARCHAR2(N) 该数据类型用于定义可变长度的字符串,其最大长度为4000字节。假定定义COLA列为VARCHAR2(100),并且该列的数据为“ACCESS”,那么COLA列将占用6字节的空间。所以使用VARCHAR2类型可以节省空间,但CHAR类型存取速度更快。, NUMBER(P,S) 该数据类型用于定义数字类型的数据,其

3、中P是精度,表示数字的总位数,而S是刻度范围,表示小数点后的位数。精度和刻度范围都是可选的,但若指定了刻度范围,那么必须指定精度。假定定义SAL列为NUMBER(4,3),若该列的数据为123.4567,则存储错误,因为超出了精度范围;若该列的数据为1.234567,则实际存储的数据为1.235,因为当被指派值超出了刻度范围时,存储值按照刻度范围指定的数字位的位数进行舍入。另外,定义整数还可以直接使用INT数据类型。, DATE 该数据类型用于定义日期时间数据,其长度为7个字节。 RAW(N) 该数据类型用于定义二进制数据,其最大长度为2000字节。通常用来存储小型二进制数据。 存储大对象的数

4、据类型 Oracle为存储大对象(LOB)提供了六种数据类型,其中:CLOB和LONG用于存储大型的、固定宽度字符数据;BLOB和LONG RAW用于存储非结构化数据,如二进制图象;NCLOB用于存储大型的、固定宽度字符集数据;BFILE用于存储操作系统文件中的非结构化数据。,3.数据的存储方式 当创建表时,Oracle会自动从指定的表空间中为新建的表创建一个数据段,而该表的所有数据都会存放到相应的表段中。 表的行数据存储在数据块中,如果一个块的大小足够容纳一条记录,Oracle就将一条记录完整的存储在一个数据块中。一般情况,记录按列定义顺序来存放,但若使用LONG或LONG RAW类型,那么

5、它们的数据总是放在记录的尾部。 如果表中某字段允许为NULL,若NULL值字段位于非NULL值字段的中间,则需使用1字节的空间来存储NULL值字段的长度 ;若NULL值字段位于一条记录的末尾,将不需要任何存储空间来存储NULL值。因此,在定义表时候,应当将可能包含NULL值的字段放在字段列表的末尾,这样可以节省存储空间。,4. ROWID ROWID用于惟一标识表行。当执行INSERT操作时,服务器进程会将数据插人到表段的相应数据块中,并且Oracle会生成惟一的ROWID对应于该行数据。 ROWID间接地给出了表行的物理存放位置,它是定位表行最快速的方式。ROWID占用10个字节的存储空间,

6、而显示结果为18个字符,具体格式如下:,数据对象号 相对文件号 数据块号 行号,数据对象号:表的惟一对象标识号。当建立表时,Oracle会为该表分配惟一的数据对象号。 相对文件号:表空间内数据文件的惟一标识号。 块号:行所在数据块的位置。 行号:行在块内的位置。 因为创建了一个表就创建了一个段,而一个段只能驻留在一个表空间中,所以使用数据对象编号,Oracle服务器可以确定表所在的表空间;又因为表空间的数据都存放在数据文件中,使用相对文件编号Oracle可以确定存放表数据的数据文件;数据文件用数据块来存储数据,使用数据块编号可知表的某一行数据存放在哪个数据块中;而一个数据块可能存放多行数据,利

7、用行号就可以定位表中的任一行了。,ROWID是表的伪列,用户在查看表的结构时不会看到ROWID字段,但和其它字段一样,可以在执行SELECT操作时直接引用。但是因为用户无法直接读懂ROWID内容,所以在引用ROWID时通常使用DBMS_ROWID将其转变为可读取的内容。 select deptno,dbms_rowid.rowid_relative_fno(rowid) | . | dbms_rowid. rowid_block_number(rowid) | . | dbms_rowid. rowid_row_number(rowid) 行位置 from dept ;,7.1.2 建表 建表

8、是使用create table命令完成的,执行该命令要求用户必须具有create table系统权限;如果要在其他用户模式中建表,则要求用户必须具有create any table系统权限。当建立表时,Oracle会为该表分配相应的表段,因为表段所需空间是从表空间上分配的,所以要求表的所有者必须要在表空间上具有相应的空间配额或具有unlimited tablespace系统权限。,1.建立普通表 普通表是存储用户数据最常用的方式。当建立普通表时,Oracle会自动为该表建立相应的段,并且段的名称与表名完全相同,而且段的数据只能存放在一个表空间中。创建普通表的语法如下: CREATE TABLE

9、 schema.table (column datatype,column datatype) TABLESPACE tablespace PCTFREE integer PCTUSED integer INITRANS integer MAXTRANS integer STORAGE storage-clause LOGGING| NOLOGGING CACHE | NOCACHE,现对命令中各参数说明如下 : TABLESPACE:标识要在其中创建表的表空间。如果创建表时没有显式的指定表所处的表空间,则表被创建在当前用户的默认表空间中。 PCTFREE和PCTUSED: PCTFREE参数

10、用于指定块中必须保留的最小空闲空间比例,PCTUSED参数用于指定当数据块达到PCTFREE参数的限制之后(这时数据块被标记为不可用),数据块能够被再次使用前,已占用的存储空间必须低于的比例。 INITRANS和MAXTRANS:INITRANS与MAXTRANS参数用于指定针对同一个块所允许的并发事务数目。每当一个DML事务访问表中的一个数据块时,该事务会在数据块的块头部(Block Header)中保存一个条目,用于标记该事务正在使用这个数据块。当该事务结束时,它所对应的条目被删除。,在创建表时,Oracle将在表中每个数据块的头部空间中分配可以存储INITRANS个事务条目的空间。这部分

11、存储空间是永久性的,只能用来存储事务条目。当一个DML事务访问这个数据块时,Oracle首先将该事务的条目存储在块头部空间中。当块头部空间已经存储了INITRANS个事务条目后,再没有多余的空闲空间来存储其他的事务条目了。这时若还有别的事务要访问这个数据块,Oracle将在数据块的空闲空间中为事务条目分配存储空间(如果在块中还有空闲空间的话)。这部分空闲空间是动态分配的,回收以后可以用于存储其他数据。能够在空闲空间中存储的事务条目数量等于MAXTRANS参数值减去INITRANS参数的值。, STORAGE:用于指定段的存储参数,若不指定存储参数,那么Oracle会使用表空间的默认存储参数。

12、在STORAGE子句中可以设置下面6个存储参数: INITIAL:为表的数据段分配的第一个区的大小。 NEXT:为表的数据段分配的第二个区的大小。 PCTINCREASE:指定从第二个区开始,为表的数据段分配的区的大小增加比例。即每个区的大小等于前一个区的大小乘以(1+PCTINCREASE/100)。如果表处于本地管理方式的表空间中,则该参数被忽略。 MINEXTENTS:允许为表的数据段分配的最小区数目。 MAXEXTENTS:允许为表的数据段分配的最大区数目。如果表处于本地管理方式的表空间中,则该参数被忽略。 BUFFER_POOL:指定表的数据块的缓存池。, LOGGING和NOLOG

13、GING:使用了LOGGING,则表的创建操作(包括通过查询创建表时的插入记录操作)都将记录到重做日志中,若用NOLOGGING,则表的创建操作不会被记录到重做日志中。默认情况将使用LOGGING子句。NOLOGGING子句适合于通过查询创建表的情况。 CACHE和NOCACHE:在创建表时默认使用NOCACHE子句。但对于比较小又经常查询的表,可以使用CACHE子句。,下面是一个在data表空间上建立employee表的例子。 create table employee( id number(7), last_name varchar2(25), dept_id number(7) ) pc

14、tfree 20 pctused 50 storage (initial 200k next 200k pctincrease 0 maxextents 50) tablespace data;,2.复制表 使用CREATE TABLE命令不仅可以建立表结构,而且还可以将已存在表的结构和数据复制到另一张新表中。另外为了尽快复制表的数据,复制表时可以指定PARALLEL选项和NOLOGGlNG选项,示例如下: create table new_emp parallel 2 nologging as select * from scott.emp; 其中,parallel degree用于指定执行

15、并行操作,parallel 2表示由两个并行服务器进程执行数据加载操作。另外使用Nologging,在重做日志中没有记录下创建表的操作,3.建立临时表 通过create table语句创建的表是永久性的表,即其中的记录可以一直保存下来。与之对应,在Oracle中还可以创建临时表(Temporary Table)。 与普通表不同,临时表中的数据在使用完毕后自动删除。“使用完毕”有两种情况:事务结束和会话结束。 在创建临时表时若使用了on commit delete rows子句,则说明临时表是事务级别的。这时Oracle将在每次提交事务时对临时表进行删减操作,即删除表中的所有数据。若使用了on

16、commit preserve rows子句,则说明临时表是会话级别的。这时Oracle将直到会话终止时才对临时表进行删减操作。,下面语句就建立了名称为employee_temp的临时表,该临时表将在每次事务提交时进行删减操作: create global temporary table employee_temp on commit delete rows as select * from scott.emp ;,4.建立索引组织表 一般情况下,表与索引数据分别存放在表段和索引段中。但索引组织表(IOT)比较特殊,它将表的数据和索引数据存储在一起,即以B树索引的方式来组织表中的数据。,非键列,键列,行头,普通表及其索引,索引组织表,要创建索引组织表,必须在CREATE TABLE语句中显式地指定organization index关键字。另外,在索引组织表中必须建立一个primary key主码约束。下面语句就创建了一个索引组织表employees。 cr

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号