Oracle9i模式对象.pptx
《Oracle9i模式对象.pptx》由会员分享,可在线阅读,更多相关《Oracle9i模式对象.pptx(75页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、1 1Oracle 9i 模式和模式对象 2 2表(table)表表(table)为为数数据据库库中中数数据据存存储储的的基基本本单单位位,其其数数据据按按行行、列列存存储储。每每个个表表具具有有一一表表名名和和列列的的集集合合。每每一一列列有有一一个个列列名名、数数据据类类型型、宽宽度度或或精精度度、比比例例。一行是对应单个记录的列信息的集合。一行是对应单个记录的列信息的集合。3 3不同类型的表RegularRegulartabletableClusterClusterPartitionedPartitionedtabletableIndex-organizedIndex-organized
2、tabletable4 4创建表CREATE TABLE employees(empno NUMBER(4),last_name VARCHAR2(30)deptno NUMBER(2)PCTFREE 20 PCTUSED 50STORAGE(INITIAL 200K NEXT 200KPCTINCREASE 0 MAXEXTENTS 50)TABLESPACE data01;5 5删除列SQL alter table lunartest 2 drop column OBJECT_NAME;表已更改。表已更改。SQL或者或者SQL alter table lunartest 2 drop(SU
3、BOBJECT_NAME,OBJECT_ID);表已更改。表已更改。SQL6 6将列标志为“未使用(UNUSED)”SQL ALTER TABLE lunartest SET UNUSED(DATA_OBJECT_ID);表已更改。表已更改。SQL desc lunartest;或者或者SQL ALTER TABLE lunartest SET UNUSED(OBJECT_TYPE,CREATED);表已更改。表已更改。SQL7 7删除未使用的列SQL ALTER TABLE lunartest SQL ALTER TABLE lunartest DROP UNUSED COLUMNSDROP
4、 UNUSED COLUMNS;表已更改。表已更改。SQLSQL或者或者SQL ALTER TABLE lunartest SQL ALTER TABLE lunartest DROP UNUSED COLUMNS CHECKPOINT 20;DROP UNUSED COLUMNS CHECKPOINT 20;表已更改。表已更改。SQLSQL8 8并行创建(复制)表CREATE TABLE testSTORAGE(INITIAL 200K NEXT 200KPCTINCREASE 0 MAXEXTENTS 50)NOLOGGINGPARALLELTABLESPACE USERSASSELECT
5、*FROM USER_OBJECTS;9 9何时能够并行执行?Create 部分:部分:在在CREATE TABLE AS SELECT 语句中包含了语句中包含了PARALLEL 子句子句指定了指定了ALTER SESSION FORCE PARALLEL DDL 语句语句Select 部分:部分:查询中包含了一个并行提示说明查询中包含了一个并行提示说明PARALLEL,或或CREATE 部部分包含分包含PARALLEL 至少在一个查询中指定的表需要全表扫描或索引范围扫描至少在一个查询中指定的表需要全表扫描或索引范围扫描跨越多个分区跨越多个分区1010删除约束使用下属命令删除约束:用下属命令删
6、除表及外键ALTER TABLE testDROP CONSTRAINT test_ln_uk;DROP TABLE testCASCADE CONSTRAINTS;1111创建临时表CREATE GLOBAL TEMPORARY TABLE所有会话都可以看到临时表的定义,但只有将数据插入该表中的会话所有会话都可以看到临时表的定义,但只有将数据插入该表中的会话才能看见临时表中的数据才能看见临时表中的数据ON COMMIT DELETE ROWS子句子句(缺省)指出,每次事务提交后舍弃表指出,每次事务提交后舍弃表(删除所有行)(删除所有行)ON COMMIT PRESERVE ROWS子句指出,
7、结束会话时舍弃表(删除所有子句指出,结束会话时舍弃表(删除所有行)行)1212Free space after deleteFree space after deleteUnused blockUnused blockHigh water markHigh water markExtent IDExtent ID 0 01 12 23 34 4Extent IDExtent ID 0 01 12 23 34 4Used blockUsed blockHigh Water MarkAfter insertsAfter insertsAfter deletesAfter deletes1313找出
8、High Water Mark:Extent IDExtent ID 0 01 12 23 34 4High water markLAST_USED_EXTENT_FILE_ID,LAST_USED_EXTENT_BLOCK_IDTOTAL_BLOCKSUNUSED_BLOCKSDBMS_SPACE.UNUSED_SPACE1414Free space after deleteFree space after deleteUnused blockUnused blockHigh water markHigh water mark释放之前释放之前释放之前释放之前Used blockUsed bl
9、ock释放未使用的空间ALTER TABLE scott.employeesDEALLOCATE UNUSED;释放之后释放之后释放之后释放之后0 1 2 30 1 2 3 4 41515清空表TRUNCATE TABLE scott.employees;Extent IDExtent ID 0 01 1High water markHigh water mark Free space Free space1616删除表DROP TABLE scott.departmentsCASCADE CONSTRAINTS;1717检索表的信息DBA_OBJECTSOWNEROBJECT_NAMEOBJ
10、ECT_IDDATA_OBJECT_IDCREATEDDBA_SEGMENTSOWNERSEGMENT_NAMETABLESPACE_NAMEHEADER_FILEHEADER_BLOCKDBA_TABLESOWNERTABLE_NAMEPCT_FREEPCT_USEDINITIAL_EXTENTNEXT_EXTENTMIN_EXTENTSMAX_EXTENTSPCT_INCREASECACHEBLOCKSEMPTY_BLOCKSCHAIN_CNT1818视图(view)一个视图(一个视图(view)view)是由一个或多个表(或其他视图)中的数据的一种定是由一个或多个表(或其他视图)中的数据
11、的一种定制的表示,是用一个查询定义制的表示,是用一个查询定义。视图不分配任何存储空间,视图不真正地包含数据视图不分配任何存储空间,视图不真正地包含数据 视图的优点:视图的优点:通过限制对表的行预定义集合的存取,为表提供附加的安全性隐藏数据复杂性。为用户简化命令为基本表的数据提供另一种观点。可将应用隔离基本表定义的修改用于不用视图无法表示的查询。可用于保存复杂查询。1919聚集(cluster)一个聚集是一组表,将具有同一公共一个聚集是一组表,将具有同一公共列值的行存储在一起,并且它们经常一起列值的行存储在一起,并且它们经常一起使用。这些公共列构成聚集码。使用。这些公共列构成聚集码。2020索引
12、(index)索引是为提高数据检索的性能而建立索引是为提高数据检索的性能而建立 索引可建立在一表的一列或多列上索引可建立在一表的一列或多列上 2121索引分类逻辑上单列或组合索引唯一非唯一索引注意:组合索引最多可以为32个列,并且,所有列的大小不能超过块的1/3物理上 分区或非分区 B 树 正常或反向键 位图2222DML 操作对索引的影响插入操作导致在适当的块中插入索引项插入操作导致在适当的块中插入索引项删除行只导致逻辑删除索引项,删除的行所占用删除行只导致逻辑删除索引项,删除的行所占用的空间不能用于新项,直到删除块中的所有项的空间不能用于新项,直到删除块中的所有项PCTFREE 对索引没有
13、影响对索引没有影响2323索引行格式索引行格式每个索引行有唯一的表示每个索引行有唯一的表示create unique index iname on tname(a,b,c)create index iname on tname(a,b,c)Label:存储列数和锁定信息:存储列数和锁定信息abcrowidlabelabcrowidlabel23232424KEY ROWIDEMPNO (BLOCK#ROW#FILE#)-1257 0000000F.0002.00012877 0000000F.0006.00014567 0000000F.0004.00016657 0000000F.0003.
14、00018967 0000000F.0005.00019637 0000000F.0001.00019947 0000000F.0000.0001.逆向键值索引Index on EMP(EMPNO)Index on EMP(EMPNO)EMP table EMP tableEMPNO ENAME JOB .-7499 ALLEN SALESMAN7369 SMITH CLERK7521 WARD SALESMAN .7566 JONES MANAGER7654 MARTIN SALESMAN7698 BLAKE MANAGER7782 CLARK MANAGER.2525Bitmap索引row
15、1234NameJoeJaneJohnJamesM_StatusSingleMarriedDivorcedMarriedStatePACACAPAGenderMFMMM_Status-IDXSingleMarriedDivorcedState-IDXCAPAGender-IDXMF1 0 0 00 1 0 00 0 1 00 1 1 01 0 0 11 0 1 10 1 0 0Select count(*)from customerswhere M_Status=married ANDState=CA AND Gender=M25252626更适合Bitmap的情况 当表很大(如数百万行),且
16、关键字列的基数低(如性别列)时,即该列有非常少的独特值例 当查询经常使用涉及OR 运算符的多个WHERE 条件组合时 当关键字列上存在只读或很少的更新操作时2727B 树索引和位图索引B 树适合高基数的列适合高基数的列更新关键字列的费用相对较低更新关键字列的费用相对较低使用使用OR 谓词的查询效率低谓词的查询效率低对对OLTP 有用有用位图适合低基数的列适合低基数的列更新关键字列的费用非常昂贵更新关键字列的费用非常昂贵使用使用OR 谓词的查询效率高谓词的查询效率高对数据仓库有用对数据仓库有用2828建立通常的B-Tree 索引CREATE UNIQUE INDEX schema.indexON
17、 schema.table(column ASC|DESC ,column ASC|DESC .)TABLESPACE tablespace PCTFREE integer INITRANS integer MAXTRANS integer storage-clause LOGGING|NOLOGGING NOSORT 2929索引和空值B*Tree索引不存储完全索引不存储完全NULL(空空)的条目,但是位图索引和的条目,但是位图索引和聚族索引存储完全聚族索引存储完全NULL(空空)的条目。的条目。oracle中除了中除了group by会认为会认为(NULL,NULL)=(NULL,NULL
18、),其,其他任何情况下的空值条目比较都视为不同的空值,他任何情况下的空值条目比较都视为不同的空值,即即(NULL,NULL)(NULL,NULL)为了保证真正的唯一性,每个唯一约束(为了保证真正的唯一性,每个唯一约束(unique index)应)应该至少有一个该至少有一个NOT NULL字段。字段。3030索引和视图 如果基本表中定义了索引,一般情况下如果基本表中定义了索引,一般情况下还是应该想办法用到那些索引还是应该想办法用到那些索引 3131一些子句说明INITRANS 指定每块中预先分配的事务项指定每块中预先分配的事务项的数目,缺省值和最小值为的数目,缺省值和最小值为2MAXTRANS
19、 限制分配给每块的事务项的限制分配给每块的事务项的数目,缺省值为数目,缺省值为2553232建立B-TREE的例子CREATE INDEX test_idxON test(a)PCTFREE 30STORAGE(INITIAL 200K NEXT 200K PCTINCREASE 0 MAXEXTENTS 50)TABLESPACE indx;3333建立索引的原则平衡查询和DML 需求放在一个单独的表空间内(非 SYSTEM,RBS,TABLE)使用统一的区大小(经验值:五块的倍数或表空间MININUM EXTENT 大小的倍数)考虑对大索引使用NOLOGGING如果新的关键字值有可能位于当
20、前范围内,则设置高PCTFREE3434建立逆向索引CREATE UNIQUE INDEX schema.indexON schema.table(column ASC|DESC ,column ASC|DESC .)TABLESPACE tablespace PCTFREE integer INITRANS integer MAXTRANS integer storage-clause LOGGING|NOLOGGING REVERSE(注意,这里不能使用(注意,这里不能使用 nosort)3535建立逆向索引的例子SQL CREATE UNIQUE INDEX test_rsidx 2 O
21、N test(b)REVERSE 3 PCTFREE 30 4 STORAGE(INITIAL 200K NEXT 200K 5 PCTINCREASE 0 MAXEXTENTS 50)6 TABLESPACE indx;索引已创建。索引已创建。SQL3636建立Bitmap索引 CREATE BITMAP INDEX schema.indexON schema.table(column ASC|DESC ,column ASC|DESC .)TABLESPACE tablespace PCTFREE integer INITRANS integer MAXTRANS integer stor
22、age-clause LOGGING|NOLOGGING NOSORT 注意,注意,Bitmap 不能是不能是 unique 的的3737建立Bitmap索引的例子SQL CREATE BITMAP INDEX test_bm_idx 2 ON test(c)3 PCTFREE 30 4 STORAGE(INITIAL 200K NEXT 200K 5 PCTINCREASE 0 MAXEXTENTS 50)6 TABLESPACE indx;索引已创建。索引已创建。SQL3838创建基于函数的索引SQL CREATE INDEX TEST_BFI ON TEST(A+B);索引已创建。索引已
23、创建。SQL SELECT*FROM TEST WHERE A+B 3939分配释放索引空间SQL ALTER INDEX test_bm_idx 2 ALLOCATE EXTENT(SIZE 200K 3 DATAFILE E:ORACLEORA92TESTINDX01.DBF);索引已更改。索引已更改。SQLSQL ALTER INDEX test_bm_idx 2 DEALLOCATE UNUSED;索引已更改。索引已更改。SQL注意:释放注意:释放HWM之上的之上的4040重建索引ALTER INDEX test_bm_idx REBUILDTABLESPACE users;重建索引命
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Oracle9i 模式 对象
限制150内