Oracle数据库体系结构及创建表结构
Oracle服务器主要由实例、数据库、程序全局区和前台进程组成,其中
实例就是用来提供管理数据库的功能;
数据库由数据库文件组成,用来存储系统数据;
实例可以进一步划分为系统全局区(SGA)和后台进程(PMON、SMON等)两部分,其中
SGA是所有用户进程共享的一块内存区域,使用操作系统的内存资源,而后台进程需要使用CPU与内存资源。数据库中包含数据文件、控制文件和重做控制文件,数据库存放在硬盘中。
程序全局区(PGA)是一个非共享的内存区域,用于管理用户进程的私有资源。前台进程可以再划分为用户进程和服务器进程,他们需要使用CPU与内存资源。
Oracle数据库的逻辑结构由多个表空间(tablespace)组成,而表空间又由多个段(segment)组成,段由多个数据区(Extent)组成,数据区又由多个数据块(Blocks)组成,如图:
Oracle的数据在逻辑上存储在表空间中,而在物理上存储在表空间所包含的物理文件(即数据文件)中,如图:
Oracle数据库的物理存储结构由多种物理文件组成,主要有数据文件、控制文件、重做日志文件、归档日志文件、参数文件、口令文件和警告日志文件,如图:
每个数据文件只对应一个表空间,一个表空间可以存放多个数据文件。
/*查看表空间*/
select * from dba_tablespaces;
/*查看表空间数据文件的路径*/
select tablespace_name,file_name from dba_tablespaces;
/*表空间使用情况查询*/
select dbf.tablespace_name,dbf.totalspace "总量(M)", dbf.totalblocks as 总块数,dfs.freespace "剩余总量(M)",dfs.freeblocks "剩余块数",(dfs.freespace / dbf.totalspace) * 100 "空闲比例"from (select t.tablespace_name,sum(t.bytes) / 1024 / 1024 totalspace,sum(t.blocks) totalblocks from dba_data_files t group by t.tablespace_name) dbf, (select tt.tablespace_name, sum(tt.bytes) / 1024 / 1024 freespace, sum(tt.blocks) freeblocks from dba_free_space tt group by tt.tablespace_name) dfs where trim(dbf.tablespace_name) = trim(dfs.tablespace_name);
/*创建表空间后创建用户和授权分为四步:创建临时表空间/表空间/创建用户/授权*/
/*第1步:创建临时表空间*/
/*临时表空间一般是指在数据库中存储数据,当内存不够的情况下写入的空间,主要用作查询时带有排序(Group by,Order by等)算法时所用,这个空间并不像一般的表空间,当执行完对数据库的操作后,该空间的数据会自动清空*/
create temporary tablespace test_temp
tempfile 'D:\oracledata\test_temp.dbf'
size 50m
autoextend on
next 50m maxsize 20480m
extent management local;
/*第2步:创建数据表空间*/
create tablespace test_data
logging
datafile 'D:\oracledata\test_data.dbf'
size 50m
autoextend on
next 50m maxsize 20480m
extent management local;
/*第3步:创建用户并指定表空间*/
create user test identified by test
default tablespace test_data
temporary tablespace test_temp;
/*第4步:给用户授予权限*/
grant connect,resource,dba to test;
/*重命名表空间*/
alter tablespace test_data rename to testOne_data;/*将表空间test_data命名为testOne_data*/
/*修改表空间数据文件大小*/
alter database datafile '/ora/oradata/radius/undo.dbf' resize 10240M;