首页 > 代码库 > 【11g体系结构,5】rowid

【11g体系结构,5】rowid

一.rowid

扩展的rowid 使用以64为基数的编码方案来显示。
rowid简单理解为数据的身份证号,总共18位,6位对象号,3为文件号,6位块号,3位行号。
rowid前15位表示块地址,前15位相同的数据在同一个块中。

#查询EMProwid
SQL> select rowid from scott.emp;

ROWID
------------------
AAACgBAAEAAAAAdAAA
AAACgBAAEAAAAAdAAB
AAACgBAAEAAAAAdAAC
AAACgBAAEAAAAAdAAD
AAACgBAAEAAAAAdAAE
AAACgBAAEAAAAAdAAF
AAACgBAAEAAAAAdAAG
AAACgBAAEAAAAAdAAH
AAACgBAAEAAAAAdAAI
AAACgBAAEAAAAAdAAJ
AAACgBAAEAAAAAdAAK

ROWID
------------------
AAACgBAAEAAAAAdAAL
AAACgBAAEAAAAAdAAM
AAACgBAAEAAAAAdAAN

14 rows selected.

#查询对象id
SQL> select object_id,object_name,object_type from dba_objects where owner=‘SCOTT‘;

 OBJECT_ID OBJECT_NAM OBJECT_TYP
---------- ---------- ----------
     10239 DEPT       TABLE
     10240 PK_DEPT    INDEX
     10241 EMP        TABLE
     10242 PK_EMP     INDEX
     10243 BONUS      TABLE
     10244 SALGRADE   TABLE

6 rows selected.

#获取对象号
SQL> select dbms_rowid.rowid_object(‘AAACgBAAEAAAAAdAAG‘) from dual;

DBMS_ROWID.ROWID_OBJECT(‘AAACGBAAEAAAAADAAG‘)
---------------------------------------------
                                        10241

#文件号
SQL> select dbms_rowid.rowid_relative_fno(‘AAACgBAAEAAAAAdAAG‘) from dual;

DBMS_ROWID.ROWID_RELATIVE_FNO(‘AAACGBAAEAAAAADAAG‘)
---------------------------------------------------
                                                  4
#块号
SQL> select dbms_rowid.rowid_block_number(‘AAACgBAAEAAAAAdAAG‘) from dual;

DBMS_ROWID.ROWID_BLOCK_NUMBER(‘AAACGBAAEAAAAADAAG‘)
---------------------------------------------------
                                                 29
#行号,第7条记录
SQL> select dbms_rowid.rowid_row_number(‘AAACgBAAEAAAAAdAAG‘) from dual;

DBMS_ROWID.ROWID_ROW_NUMBER(‘AAACGBAAEAAAAADAAG‘)
-------------------------------------------------
                                                6
#查询区的信息, emp表现在拥有8个块,block_id 是25~32.
SQL> col segment_name for a10
SQL> select extent_id,segment_name,bytes/1024 k,blocks,file_id,block_id from dba_extents where owner=‘SCOTT‘;

 EXTENT_ID SEGMENT_NA          K     BLOCKS    FILE_ID   BLOCK_ID
---------- ---------- ---------- ---------- ---------- ----------
         0 DEPT               64          8          4          9
         0 EMP                64          8          4         25
         0 BONUS              64          8          4         41
         0 SALGRADE           64          8          4         49
         0 PK_DEPT            64          8          4         17
         0 PK_EMP             64          8          4         33

6 rows selected.


二.一个数据块能存放多少条数据和1g空间能存放多少条数据:


三.OFA:最优灵活体系架构
ofa:是指oracle软件和数据库文件集文件夹的命名约定和存储位置规则。

$ORACLE_BASE 为:/u01/app/oracle
$oracle_home为:/u01/app/oracle/11.2.0/db_home_1
$ORACLE_BASE/
  /oradata 数据文件
  /product  软件地址
  /admin 放置dump 文件

$oracle_home
  /dbs 初始化文件(参数文件,密码文件)
  /network/admin 配置监听


四:instance_name,sid ,db_name,global_name的关系
1.sid是操作系统用来表示实例的编号,可以理解为instance的操作系统编号,所以sid和instance_name一一对应。
select instance_name from v$instance 中存储的就是sid
2.但是instance_name 和db_name是有区别的:
rac环境下db_name为racdb,但实例名可能是racdb1和dacdb2
3.global_name 就是db_name.db_domain,global_name是为了在由多个数据库组成的分布式数据库中标识数据库名称而设立的。

SQL> select * from global_name;
GLOBAL_NAME
--------------
LOSCSMAN

SQL> select instance_name from v$instance;

INSTANCE_NAME
--------------------------------
loscsmanager

SQL> show parameter db_name;

NAME                                 TYPE                   VALUE
------------------------------------ ---------------------- ------------------------------
db_name                              string                 loscsman








【11g体系结构,5】rowid