oracle中select数据时默认的显示顺序(续) - focus on oracle

oracle中select数据时默认的显示顺序(续) - focus on oracle

ID:25264125

大小:93.50 KB

页数:14页

时间:2018-11-19

oracle中select数据时默认的显示顺序(续) - focus on oracle_第1页
oracle中select数据时默认的显示顺序(续) - focus on oracle_第2页
oracle中select数据时默认的显示顺序(续) - focus on oracle_第3页
oracle中select数据时默认的显示顺序(续) - focus on oracle_第4页
oracle中select数据时默认的显示顺序(续) - focus on oracle_第5页
资源描述:

《oracle中select数据时默认的显示顺序(续) - focus on oracle》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、Oracle中select数据时默认的显示顺序(续)有朋友问我在oracle里执行select语句后oracle默认的显示顺序是什么?他说网上有三种观点:1、select的时候oracle默认的显示顺序是按照数据插入的顺序来显示。2、select的时候oracle默认的显示顺序是按照数据的rowid的顺序来显示。3、select的时候oracle没有一个固定的顺序,但是当所选择的数据是在一个extent中的时候,这些数据是按照rowid来排序的。他问我哪种观点正确?我说上述观点都是错的!我现在来证明一下。先建

2、立一个只有1M大小的autoallocate的LMT的tablespace:SQL>connscott/tiger@cuihua;ConnectedtoOracleDatabase10gEnterpriseEditionRelease10.2.0.1.0ConnectedasscottSQL>showparameterdb_block_size;NAMETYPEVALUE----------------------------------------------------------------------

3、-------db_block_sizeinteger8192SQL>createtablespacetesttbsdatafile'D:oracleoradatacuihuatest01.dbf'size1M;Tablespacecreated然后我们建一个表t1,这个table占据896K,即占据14个extent:SQL>createtablet1(idnumber,namevarchar2(30))tablespacetesttbsstorage(initial896K);Tablecreat

4、ed现在表空间testtbs中还剩下64K的剩余空间(1M-896K-64K=64K),如下所示:SQL>colsegment_nameformata5SQL>selectsegment_name,extent_id,block_idfromdba_extentswheresegment_name='T1';SEGMEEXTENT_IDBLOCK_ID-------------------------T109T1117T1225T133314T1441T1549T1657T1765T1873T1981T110

5、89T11197T112105T11311314rowsselected这里为什么要减去64K是因为testtbs所在的datafile占用了8个block作为文件头,从上面显示结果里我们也可以看到表T1的block_id也是从9开始(因为前8个已经被用作文件头了)。接着我们再建一个表t2,t2的特性就决定了它的一个block只能存下t2的一行数据(因为现在一个block的大小为8K):SQL>createtablet2(idnumber,c1char(2000),c2char(2000),c3char(20

6、00))tablespacetesttbsstorage(initial64K);Tablecreatedtesttbs是一个autoallocate的LMT表空间,oracle这里每次自动分配的extent的最小值是64K,换句话说,表t2中的数据只能插入到其initial分配的64K的那个extent中,当这个initial的extent插入满后oracle将不再能够给t2分配另外一个extent!t2中的这initial64K最多只能插入5条记录,因为(64K-24K)/8K=5,这里为什么要减去24K

7、是因为t2中的前3个block要被用来当作表头。好,我们来测试一下上述结论:SQL>insertintot2VALUES(1,'A','A','A');1rowinsertedSQL>insertintot2VALUES(2,'A','A','A');1rowinsertedSQL>insertintot2VALUES(3,'A','A','A');1rowinsertedSQL>insertintot2VALUES(4,'A','A','A');1rowinserted14SQL>insertintot2V

8、ALUES(5,'A','A','A');1rowinsertedSQL>commit;CommitcompleteSQL>insertintot2VALUES(6,'A','A','A');insertintot2VALUES(6,'A','A','A')ORA-01653:表SCOTT.T2无法通过8(在表空间TESTTBS中)扩展这时候我们看到确实第6条记录已经不能够被插入到表t2中。现在我们

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。