oracle数据库对象的逻辑和物理结构
来源:互联网 发布:方媛的淘宝店铺叫什么 编辑:程序博客网 时间:2024/04/29 07:02
Database
一、先谈谈数据库和实例:
简单来说有时候这两个名词有时可以互换使用、但是其概念还是不同的。
实例是个动态概念,它由一系列进程和内存区域组成;而数据库是个静态概念,主要指的是构成数据库的一系列文件。一般情况下实例与数据库是一对一的,但是在多实例数据库环境下,一个数据库可以对应多个实例。
实例 instance =进程 + 进程所使用的内存(SGA)
数据库 database=物理操作系统文件或磁盘(disk)的集合(redo文件+control文件+data文件+临时文件)
数据库实例也称作服务器, 是用来访问数据库文件集的存储结构及后台进程的集合.
1、一个数据库可以被多个实例访问(称为真正的应用群集选项).
2、一个实例在其生存期内只能装载(alter database mount)和打开(alter database open)一个数据库
3、Oracle的实例在启动以后,只能load一次数据库,如果想把数据库与Instance断开,然后再重新挂在一个数据库Instance,那么就需要你首先把数据库Instance进程结束,然后重新建立这个instance的一个进程,再load另外一个数据库。否则肯定要抛除ORA-16169错误,说数据库已经被打开。因为一个数据库Instance在其生存期中最多只能load和打开一个instance。.
4、另外实例可以在没有数据文件的情况下单独启动 startup nomount , 通常没什么意义
二、数据库的逻辑结构
数据库(实例)——X表空间——X段——X扩展(区)——X数据块--(OS Block)
对应的数据字典:
v$database--dba_tablespaces(user_tablespaces)--
数据库、表空间、段、扩展、数据块为逻辑结构
数据文件(dba_data_files)、操作系统块为物理结构
SQL> select distinct segment_type fromdba_segments;
SEGMENT_TYPE
------------------------------------------------------
LOBINDEX
INDEX PARTITION
NESTED TABLE
TABLE PARTITION
ROLLBACK
LOB PARTITION
LOBSEGMENT
TABLE
INDEX
CLUSTER
TYPE2 UNDO
已选择11行。
表和段的关系:表是段的一种(一个表可对应一个或多个段),但段不一定是表。表是逻辑对象;段是物理存储对象
通过下面的sql语句可以查看某个表空间的段、区、块的分布情况。
SQL>
SEGMENT_NAME
-------------------- ---------- ---------- --------------------
SYS_XDBPD$565_L
SYS_XDBPD$564_L
SYS_XDBPD$563_L
SYS_XDBPD$562_L
SYS_XDBPD$561_L
EXTRADATA566_L
NAMESPACES567_L
SYS_LOB0000074465C00
010$$
SYS_LOB0000074465C00
SEGMENT_NAME
-------------------- ---------- ---------- --------------------
005$$
SYS_LOB0000074461C00
004$$
SYS_C0011041
SYS_C0011040
SYS_C0011039
SYS_C0011038
SYS_FK0000074510N000
07$
SEGMENT_NAME
-------------------- ---------- ---------- --------------------
SYS_FK0000074510N000
09$
SYS_C0011037
ACTION_TABLE_MEMBERS
LINEITEM_TABLE_MEMBE
RS
SYS_IL0000074460C000
33$$
SEGMENT_NAME
-------------------- ---------- ---------- --------------------
SYS_IL0000074460C000
26$$
SYS_IL0000074460C000
17$$
SYS_IL0000074460C000
12$$
SYS_IL0000074460C000
SEGMENT_NAME
-------------------- ---------- ---------- --------------------
08$$
SYS_IL0000074460C000
05$$
SYS_IL0000074460C000
04$$
SYS_C0011034
SYS_C0011034
SYS_C0011034
SEGMENT_NAME
-------------------- ---------- ---------- --------------------
SYS_IL0000074465C000
10$$
SYS_IL0000074465C000
05$$
SYS_C0011033
SYS_IL0000074461C000
04$$
PK_EMP
SEGMENT_NAME
-------------------- ---------- ---------- --------------------
PK_DEPT
CATEGORIES_TAB
SUBCATEGORY_REF_LIST
_NESTEDTAB
PRODUCT_REF_LIST_NES
TEDTAB
PURCHASEORDER
PURCHASEORDER
LINEITEM_TABLE
SEGMENT_NAME
-------------------- ---------- ---------- --------------------
LINEITEM_TABLE
LINEITEM_TABLE
LINEITEM_TABLE
LINEITEM_TABLE
LINEITEM_TABLE
ACTION_TABLE
SALGRADE
EMP
DEPT
已选择50行。
DBA_TABLESPACES记录的是表空间的逻辑信息,而DBA_DATA_FILES视图则记录的是物理数据文件的信息,这些信息包括数据文件的名称、大小、所属表空间等信息:
SQL>selectfile_id,relative_fno,file_name,tablespace_name,round(bytes/1024/1024,2)MB from dba_data_files;
可以通过DBA_SEGMENTS查询数据库中段的信息,这些信息包括对象名称、类型、所属表空间、空间使用等信息。
DBA_EXTENTS视图记录了Segment中区的分配情况,可以通过以下两个查询获得某个用户每个区的分配情况:
SQL> select distinct OWNER fromdba_extents ;
OWNER
--------------------------------------------------------------------------------
MDSYS
TSMSYS
DMSYS
OUTLN
CTXSYS
OLAPSYS
SYSTEM
EXFSYS
SCOTT
DBSNMP
ORDSYS
OWNER
--------------------------------------------------------------------------------
SYSMAN
XDB
SYS
WMSYS
SQL> selectsegment_name,file_id,extent_id,block_id,blocks from dba_extentswhere OWNER='SCOTT';
SEGMENT_NAME
--------------------------------------------------------------------------------
---------- ---------- --------------------
DEPT
4
EMP
4
BONUS
4
SEGMENT_NAME
--------------------------------------------------------------------------------
---------- ---------- --------------------
SALGRADE
4
PK_DEPT
4
PK_EMP
4
数据库逻辑上最小的单元就是data block, block 可以设置为2K, 4K, 8K....
extent由block组成,segment则由extent组成,tablespace由segment组成,
datafile是数据库的物理表现形式,一个tablespace可以对应多个datafile,一个datafile只能属于一个tablespace。
利用dba_tablespaces可以用来查看所有表空间的基本信息;而dba_data_files可以用来查看相关数据文件的信息(需要管理员权限)。
例:
1、查看当前数据库所有表空间
SQL> select TABLESPACE_NAME fromdba_tablespaces;
TABLESPACE_NAME
----------------------------------------
SYSTEM
UNDOTBS1
SYSAUX
TEMP
USERS
MYMOTIF_TS
SQL> set linesize100
SQL>
SQL> column
SQL> selectSEGMENT_NAME,TABLESPACE_NAME from user_segments;
3、当前用户(scott)下的数据段:
SQL> descuser_segments
SQL> set linesize100
SQL>
SQL> column
SQL> selectSEGMENT_NAME,TABLESPACE_NAME from user_segments;
SEGMENT_NAMETABLESPACE_NAME
--------------------------------------------------------------------------------
DEPT USERS
EMP USERS
SALGRADE USERS
PK_DEPT USERS
PK_EMP USERS
SQL> selectSEGMENT_NAME,EXTENT_ID from user_extents;
SEGMENT_NAME
---------------------------------------- ----------
DEPT
EMP
SALGRADE
PK_DEPT
PK_EMP
基本上每个对象对应一个段(
- oracle数据库对象的逻辑和物理结构
- Oracle数据库对象的逻辑、物理、内存结构
- Oracle的逻辑结构和物理结构
- Oracle的物理结构和逻辑结构
- 数据库的物理结构和逻辑结构
- 数据库的逻辑结构和物理结构
- Oracle Start Up 1: 几个概念和Oracle数据库的物理结构和逻辑结构
- oracle数据库的物理结构及逻辑结构
- oracle基本概念之--oracle的逻辑结构和物理结构
- Oracle数据库物理结构与逻辑结构
- oracle 体系结构和逻辑结构,物理结构
- oracle物理结构和逻辑结构
- oracle逻辑结构和物理结构
- Oracle中的逻辑数据库和物理数据库
- oracle物理、逻辑结构
- 数据的逻辑结构和物理结构
- 数据结构的逻辑结构和物理结构
- Oracle存储结构:物理存储结构和逻辑存储结构
- 关于postgres数据库的一些操作细节
- oracle10g权限与角色
- Oracle Constraint_type,约束类型
- ORACLE删除当前用户下所有的表的方…
- Oracle 10g表空间管理
- oracle数据库对象的逻辑和物理结构
- oracle表空间操作详解
- 数据字典和动态性能视图
- 表空间、数据文件和控制文件的概念
- Oracle之用户Profile详解
- Oracle中dual表的用途介绍
- ubuntu下解决oracle sqlplus…
- v$parameter 里的 issys…
- base64对于图片的部分处理