[20141024]不同的表rowid可以相同.txt

[20141024]不同的表rowid可以相同.txt

--前一阵子参加一个会议,在会议间隙听到别人议论"招DBA"的事,问上面的问题,竟然许多dba都回答不上来,看来现在的认证水分太大.
--"在一个数据库里面,不同的表rowid可以相同吗?"

--正好前一阵子看了cluster表的内容,知道这个答案(也许还有其他答案,我不知道,至少cluster表是其中一个正确的答案),自己也做一些
--测试.

SCOTT@test> @ver

BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production

create cluster cluster_dept (deptno NUMBER(2))  index;
create index i_cluster_deptno on cluster cluster_dept;

create table dept1 cluster cluster_dept(deptno) as select * from dept;
create table emp1  cluster cluster_dept(deptno) as select * from emp;

select owner, segment_name, file_id, block_id, blocks, bytes
from dba_extents
where segment_name in ('I_CLUSTER_DEPTNO','CLUSTER_DEPT')
order by segment_name, extent_id;

OWNER  SEGMENT_NAME            FILE_ID   BLOCK_ID     BLOCKS      BYTES
------ -------------------- ---------- ---------- ---------- ----------
SCOTT  CLUSTER_DEPT                  4       1976          8      65536
SCOTT  CLUSTER_DEPT                  4        544          8      65536
SCOTT  I_CLUSTER_DEPTNO              4       1984          8      65536

SCOTT@test> select owner,object_name,object_id,data_object_id,object_type  from dba_objects where owner=user and object_name in ('DEPT1','EMP1','CLUSTER_DEPT');
OWNER  OBJECT_NAME           OBJECT_ID DATA_OBJECT_ID OBJECT_TYPE
------ -------------------- ---------- -------------- -------------------
SCOTT  CLUSTER_DEPT             291016         291016 CLUSTER
SCOTT  DEPT1                    291018         291016 TABLE
SCOTT  EMP1                     291019         291016 TABLE

--可以发现这3个对象DATA_OBJECT_ID都是一样的.DATA_OBJECT_ID=291016.

SCOTT@test> select owner,segment_name,segment_type,header_file,header_block,bytes  from dba_segments where owner=user and segment_name in ('DEPT1','EMP1','CLUSTER_DEPT','I_CLUSTER_DEPTNO');
OWNER  SEGMENT_NAME         SEGMENT_TYPE       HEADER_FILE HEADER_BLOCK      BYTES
------ -------------------- ------------------ ----------- ------------ ----------
SCOTT  I_CLUSTER_DEPTNO     INDEX                        4         1986      65536
SCOTT  CLUSTER_DEPT         CLUSTER                      4         1978     131072

--仅仅存在CLUSTER_DEPT,I_CLUSTER_DEPTNO段.

SCOTT@test> select rowid,dept1.* from dept1;
ROWID                  DEPTNO DNAME          LOC
------------------ ---------- -------------- -------------
AABHDIAAEAAAAe7AAA         20 RESEARCH       DALLAS1
AABHDIAAEAAAAe8AAA         30 SALES          CHICAGO
AABHDIAAEAAAAe9AAA         40 OPERATIONS     BOSTON
AABHDIAAEAAAAe+AAA         50 aaa            bbb
AABHDIAAEAAAAe/AAA         10 ACCOUNTING     NEW YORK
AABHDIAAEAAAAIgAAA         70 aaaa           BBBB
AABHDIAAEAAAAInAAA         60 cc             aaa

7 rows selected.

SCOTT@test> select rowid,emp1.* from emp1;
ROWID                   EMPNO ENAME      JOB              MGR HIREDATE                   SAL       COMM     DEPTNO
------------------ ---------- ---------- --------- ---------- ------------------- ---------- ---------- ----------
AABHDIAAEAAAAe7AAA       7369 SMITH      CLERK           7902 1980-12-17 00:00:00        800                    20
AABHDIAAEAAAAe7AAB       7566 JONES      MANAGER         7839 1981-04-02 00:00:00       2975                    20
AABHDIAAEAAAAe7AAC       7788 SCOTT      ANALYST         7566 1987-04-19 00:00:00       3000                    20
AABHDIAAEAAAAe7AAD       7876 ADAMS      CLERK           7788 1987-05-23 00:00:00       1100                    20
AABHDIAAEAAAAe7AAE       7902 FORD       ANALYST         7566 1981-12-03 00:00:00       3000                    20
AABHDIAAEAAAAe8AAA       7499 ALLEN      SALESMAN        7698 1981-02-20 00:00:00       1600        300         30
AABHDIAAEAAAAe8AAB       7521 WARD       SALESMAN        7698 1981-02-22 00:00:00       1250        500         30
AABHDIAAEAAAAe8AAC       7654 MARTIN     SALESMAN        7698 1981-09-28 00:00:00       1250       1400         30
AABHDIAAEAAAAe8AAD       7698 BLAKE      MANAGER         7839 1981-05-01 00:00:00       2850                    30
AABHDIAAEAAAAe8AAE       7844 TURNER     SALESMAN        7698 1981-09-08 00:00:00       1500          0         30
AABHDIAAEAAAAe8AAF       7900 JAMES      CLERK           7698 1981-12-03 00:00:00        950                    30
AABHDIAAEAAAAe/AAA       7782 CLARK      MANAGER         7839 1981-06-09 00:00:00       2450                    10
AABHDIAAEAAAAe/AAB       7839 KING       PRESIDENT            1981-11-17 00:00:00       5000                    10
AABHDIAAEAAAAe/AAC       7934 MILLER     CLERK           7782 1982-01-23 00:00:00       1300                    10

14 rows selected.

--可以发现rowid出现相同的情况.

时间: 2024-10-01 14:35:38

[20141024]不同的表rowid可以相同.txt的相关文章

[20141028]不同的表rowid可以相同.txt

[20141028]不同的表rowid可以相同.txt --前一阵子参加一个会议,在会议间隙听到别人议论"招DBA"的事,问上面的问题,竟然许多dba都回答不上来,看来现在的认证水分太大. --"在一个数据库里面,不同的表rowid可以相同吗?" --正好前一阵子看了cluster表的内容,知道这个答案(也许还有其他答案,我不知道,至少cluster表是其中一个正确的答案),自己也做一些 --测试.相关链接如下: http://blog.itpub.net/2672

[20121021]探究表的rowdependencies属性.txt

[20121021]探究表的rowdependencies属性.txt 使用bbed来探索表的rowdependencies属性. 实际上默认这个功能是不打开的,也就是采用norowdependencies方式,这样block的所有行会共享同一个SCN,如果执行DML操作, 这个SCN都是一样的在同一块中.而使用rowdependencies.每行都会有对应事务的scn.使用ora_rowscn可以查询到块中记录的SCN. SQL> select * from v$version; BANNER

[20131211]对比两个表的不同信息.txt

[20131211]对比两个表的不同信息.txt 昨天看了http://jonathanlewis.wordpress.com/2013/12/09/differences/博客,通过包dbms_rectifier_diff可以查看两个表存在那些不同. 自己做一个测试看看,重复测试. SCOTT@test> @verBANNER--------------------------------------------------------------------------------Oracl

[20130910]12C执行计划的TABLE ACCESS BY INDEX ROWID BATCHED(补充).txt

[20130910]12C执行计划的TABLE ACCESS BY INDEX ROWID BATCHED(补充).txt 链接http://space.itpub.net/267265/viewspace-772371 写了12c下在范围扫描时可能出现的TABLE ACCESS BY INDEX ROWID BATCHED,这是一种新的执行方式,能够提高执行效率,特别在数据聚集很好的情况下. 既然是12c的一个特性应该有一个参数关闭这个特性.重复前面的例子: 1.建立测试环境: SCOTT@t

[20130325]表Initrans的数量.txt

[20130325]表Initrans的数量.txt http://aprakash.wordpress.com/2010/12/18/oracle-tables-initrans/ SQL> @ver BANNER -------------------------------------------------------------------------------- Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 -

[20170520]利用undo表空间保护数据.txt

[20170520]利用undo表空间保护数据.txt --//undo表空间是用来记录前映像信息,也用来保证查询时一致性的.上个星期去听一些课,提到不打开归档情况下一些维护技巧, --//就是建立多个redo日志文件,用来保存日志,至少维持3-4天甚至1个星期的日志,这样可以一定程度减少错误以及会查问题. --//另外提到一种利用undo表空间避免异常操作的恢复方法,就是再建立1个undo表空间,出现异常dml语句时切换使用新的undo表空间. --//这样可以非常从容的恢复信息.当然最好不要

[20150112]系统管理表空间的疑问.txt

[20150112]系统管理表空间的疑问.txt http://www.itpub.net/thread-1903121-1-1.html 10g下每个数据文件3-8块为位图区. 6个块=48K(假设数据块大小8k) 48*8*1024=393216 区 对于系统表空间管理.1区=64K. SCOTT@test> set numw 20 SCOTT@test> select 48*8*1024*64*1024 from dual;    48*8*1024*64*1024 ----------

[20170623]传输表空间补充测试.txt

[20170623]传输表空间补充测试.txt --//昨天测试了使用dblink+传输表空间,链接如下:http://blog.itpub.net/267265/viewspace-2141115/ --//今天补充测试看看加参数SQLFILE生成的脚本是什么内容. impdp scott/book network_link=l_dbcn1 transport_tablespaces=users transport_datafiles=/home/oracle/backup/sugar01.d

[20160904]表统计信息lock.txt

[20160904]表统计信息lock.txt 晚上看链接:https://blogs.oracle.com/Database4CN/entry/%E8%AF%8A%E6%96%AD%E7%BB%9F%E8%AE%A1%E4%BF%A1%E6%81%AF%E4%B8%8D%E6%94%B6%E9%9B%86%E5%8E%9F%E5%9B%A0 提到如果导入使用ROWS=n,会导致导入的表lock,测试看看: 官方有如下解释: If ROWS=n, then statistics for all