Oracle的表空间 博客分类: 数据库 Oracle表空间
程序员文章站
2024-02-18 20:26:40
...
一 表空间概述
1、理解表空间
表空间是数据库的逻辑存储空间
一个数据库可以有多个表空间构成
表空间是由一个或者多个数据文件构成,数据文件的位置和大小可以由用户自己来定义。
2、表空间分类
永久表空间:永久存储对象,例如:表、视图、存储过程
临时表空间:数据库操作过程中中间执行过程,执行完成后,存放的内容就会被自动释放掉,不进行永久性地保存。
UNDO表空间:保存事务修改数据前的数据,用于事务回滚撤销操作。
二 查看用户的表空间
1、数据字典
dba_tablespaces:针对系统管理员级别的用户登录之后查看的数据字典。
user_tablespaces:普通用户登录之后查看的数据字典。
dba_users:针对系统管理员级别的用户登录之后查看的数据字典。
user_users:普通用户登录之后查看的数据字典。
实例1:表空间实战
SQL> connect system
输入口令:
已连接。
SQL> desc dba_tablespaces
名称是否为空?类型
-----------------------------------------------------------------------------
TABLESPACE_NAME NOT NULL VARCHAR2(30)
BLOCK_SIZE NOT NULL NUMBER
INITIAL_EXTENT NUMBER
NEXT_EXTENT NUMBER
MIN_EXTENTS NOT NULL NUMBER
MAX_EXTENTS NUMBER
MAX_SIZE NUMBER
PCT_INCREASE NUMBER
MIN_EXTLEN NUMBER
STATUS VARCHAR2(9)
CONTENTS VARCHAR2(9)
LOGGING VARCHAR2(9)
FORCE_LOGGING VARCHAR2(3)
EXTENT_MANAGEMENT VARCHAR2(10)
ALLOCATION_TYPE VARCHAR2(9)
PLUGGED_IN VARCHAR2(3)
SEGMENT_SPACE_MANAGEMENT VARCHAR2(6)
DEF_TAB_COMPRESSION VARCHAR2(8)
RETENTION VARCHAR2(11)
BIGFILE VARCHAR2(3)
PREDICATE_EVALUATION VARCHAR2(7)
ENCRYPTED VARCHAR2(3)
COMPRESS_FOR VARCHAR2(12)
SQL>select tablespace_name from dba_tablespaces;
TABLESPACE_NAME
------------------------------
SYSTEM
SYSAUX
UNDOTBS1
TEMP
USERS
EXAMPLE
已选择6行。
SYSTEM:存储system用户的表,视图,存储过程数据对象。也被称为系统表空间。
SYSAUX:作为EXAMPLE的辅助表空间,
UNDOTBS1:存储撤销信息,属于UNDO类型的表空间。
TEMP:属于临时表空间。
USERS:是永久性表空间,用于存储用户创建的数据库对象。
EXAMPLE:安装数据库示例使用的表空间。
实例2:系统用户和普通用户查看表空间的权限不一样
系统用户有查看dba_tablespaces和user_tablespaces数据字典的权限。
普通用户只有查看user_tablespaces数据字典的权限。
SQL> desc user_tablespaces
名称是否为空?类型
-----------------------------------------------------------------------------
TABLESPACE_NAME NOT NULL VARCHAR2(30)
BLOCK_SIZE NOT NULL NUMBER
INITIAL_EXTENT NUMBER
NEXT_EXTENT NUMBER
MIN_EXTENTS NOT NULL NUMBER
MAX_EXTENTS NUMBER
MAX_SIZE NUMBER
PCT_INCREASE NUMBER
MIN_EXTLEN NUMBER
STATUS VARCHAR2(9)
CONTENTS VARCHAR2(9)
LOGGING VARCHAR2(9)
FORCE_LOGGING VARCHAR2(3)
EXTENT_MANAGEMENT VARCHAR2(10)
ALLOCATION_TYPE VARCHAR2(9)
SEGMENT_SPACE_MANAGEMENT VARCHAR2(6)
DEF_TAB_COMPRESSION VARCHAR2(8)
RETENTION VARCHAR2(11)
BIGFILE VARCHAR2(3)
PREDICATE_EVALUATION VARCHAR2(7)
ENCRYPTED VARCHAR2(3)
COMPRESS_FOR VARCHAR2(12)
SQL>select tablespace_name from user_tablespaces;
TABLESPACE_NAME
------------------------------
SYSTEM
SYSAUX
UNDOTBS1
TEMP
USERS
EXAMPLE
已选择6行。
SQL> connect scott
输入口令:
已连接。
SQL>select tablespace_name from dba_tablespaces;
select tablespace_name from dba_tablespaces
*
第1行出现错误:
ORA-00942:表或视图不存在
SQL>select tablespace_name from user_tablespaces;
TABLESPACE_NAME
------------------------------
SYSTEM
SYSAUX
UNDOTBS1
TEMP
USERS
EXAMPLE
已选择6行。
实例3:普通用户无法查看dba_users
SQL> desc dba_users;
ERROR:
ORA-04043:对象"SYS"."DBA_USERS"不存在
实例4:某一个用户对应着默认表空间和临时表空间
SQL> connect system
输入口令:
已连接。
SQL> desc dba_users;
名称是否为空?类型
-----------------------------------------------------------------------------
USERNAME NOT NULL VARCHAR2(30)
USER_ID NOT NULL NUMBER
PASSWORD VARCHAR2(30)
ACCOUNT_STATUS NOT NULL VARCHAR2(32)
LOCK_DATE DATE
EXPIRY_DATE DATE
DEFAULT_TABLESPACE NOT NULL VARCHAR2(30)
TEMPORARY_TABLESPACE NOT NULL VARCHAR2(30)
CREATED NOT NULL DATE
PROFILE NOT NULL VARCHAR2(30)
INITIAL_RSRC_CONSUMER_GROUP VARCHAR2(30)
EXTERNAL_NAME VARCHAR2(4000)
PASSWORD_VERSIONS VARCHAR2(8)
EDITIONS_ENABLED VARCHAR2(1)
AUTHENTICATION_TYPE VARCHAR2(8)
SQL>select default_tablespace,temporary_tablespace from dba_users where username='SYSTEM';
DEFAULT_TABLESPACE TEMPORARY_TABLESPACE
------------------------------------------------------------
SYSTEM TEMP
实例5:设置用户的默认或临时表空间
ALTER USER username
DEFAULT|TEMPORARY
TABLESPACE tablespace_name
SQL> ALTER USER system
2 DEFAULT TABLESPACE system;
用户已更改。
SQL>select default_tablespace,temporary_tablespace from dba_users where username='SYSTEM';
DEFAULT_TABLESPACE TEMPORARY_TABLESPACE
------------------------------------------------------------
SYSTEM TEMP