数据库体系结构
物理存储结构与Oracle启动时关系是 依次打开 参数(startup nomount)、控制(startup mount)、数据文件(open)
物理存储结构:指实际的文件存储形式
数据文件:扩展名.dbf。主要用来存放系统数据、数据字典、索引、表等信息
数据字典:V$DATAFILE
数据字典:Oracle数据库字典通常是在创建和安装数据库时被创建的,Oracle数据字典是Oracle数据库系统工作的基础,没有数据字典的支持,Oracle数据库系统就不能进行任何工作
临时文件:属于数据文件, 存放在临时表空间中
控制文件:扩展名.ctl。是一个二进制文件。主要用来保存数据库中物理结构信息。
联机重做日志文件:扩展名.log。一个包含数据变更记录的文件集合。
日志操作模式:联机日志、归档日志。
数据块:存储空间中能够读写的最小逻辑存储单位。
区:由一个或多个数据块构成。通过一次分配获得特定数量的相邻数据块,用于分配存储空间。
段:由一个或多个区构成,用于存储特定类型的信息。
表空间:由多个段构成。是逻辑存储结构中最大的存储单位,是物理存储结构中的数据文件对应的。
数据字典:DBA_TABLESPACES DBA_DATAFILES
Oracle数据库的内存结构:
系统全局区(SGA):数据库缓冲区、重做日志缓冲区、共享池、大型池、JAVA池、数据流池、固定的SGA
程序全局区(PGA):SQL工作区、会话内存、私有SQL区
用户全局区 软件代码区
Oracle数据库的进程结构:
客户端进程(用户进程):当运行一个应用程序后,操作系统就会创建一个客户端进程来运行应用程序。
服务端进程:接收客户端进程中的请求,也就是用来建立客户端与数据库的通信
后台进程:一种特使的服务器进程,完成数据库的后台管理工作。
Oracle实例(instance):是唯一访问数据块的方法;一个实例管理一个数据库。
总结:Oracle的体系结构由存储结构与软件结构组成,存储结构由物理存储结构与逻辑存储结构组成,Oracle对数据的组织与存储是使用逻辑存储结构来进行管理的;而软件结构由内存结构与后台进程结构组成,他们组成了Oracle的实例。
表空间
概念:表空间由多个逻辑区域构成的,把数据库分成了不同的区域,每个表空间中存放多个数据文件。表空间由系统表空间和非系统个表空间组成。系统自带SYSTEM(默认表空间)和SYSAUX两个表空间。
创建表空间:CREATE [TEMPORARY] TABLESPACE tablespace_name
TEMPFILE|DATAFILE ‘xx.dbf’ SIZE integer[K|M]
[AUTOEXTEND[OFF|ON [NEXT integer[K|M]|MAXSIZE [UNLIMITED|integer[K|M]]
[MINMUN EXTENT integer[K|M]]]
[ONLINE|OFFLINE]
[TEMPORARY]:创建临时表空间,否则就是永久表空间
TEMPFILE|DATAFILE:创建表空间中临时文件或数据文件
AUTOEXTEND OFF:不允许自动扩展数据文件大小。
AUTOEXTEND ON :允许扩展数据文件的大小。
ONLINE|OFFLINE:选择ONLINE时,表空间创建完成后可以直接使用;选择OFFLINE时,表空间创建完成后暂时不能使用,只有将表空间状态更改成ONLINE状态才能使用。默认情况下,创建完表空间就是ONLINE状态。
例子:创建一个名为tablespace_test,数据文件为testdatafile_1,大小为10MB,不允许自扩数据文件大小的表空间。
Create tablespace tablespace_test
Datafile ‘testdatafile_1.dbf’ size 10m
Autoextend off;
设置默认表空间、临时表空间:ALTER USER username
DEFAULT|TEMPORARY TABLESPACE tablespace_name
修改表空间:ALTER TABLESPACE tablespace_name
[ADD DATAFILE|TEMPFILE xx.dbf SIZE integer[K|M]]
[DROP DATAFILE|TEMPFILE file_name]
[RENAME oldname TO newname]
[AUTOEXTEND[OFF|ON [NEXT integer[K|M] | MAXSIZE[UNLIMITED|integer[K|M]]
[MINMUM EXTEND integer[K|M]]]]
[ONLINE|OFFLINE]
ADD子句:用于添加数据文件。
DROP子句:用于删除数据文件,但是不能删除表空间中第一个数据文件。
RENAME子句:用于重命名表空间。
例子:在表空间tablespace_test中添加一个名为test_datafile1的数据文件
ALTER TABLESPACE table_test
ADD DATAFILE ‘test_datafile1.dbf’ SIZE 1M;
删除表空间:DROP TABLESPACE tablespace_name
[INCLUDING CONTENTS[{AND|KEEP}DATAFILES]]
[CASCADE CONSTRAINTS]