1. oracle表空间:数据库的逻辑存储空间。
2. 表空间分类:
(1), 永久表空间:用于存放数据库中要永久花存储的对象,比如表,视图等。
(2),临时表空间: 中间存储过程,比如临时变量。
(3),UNDO表空间: 用于保存事务所修改的备份。防止事务的回滚等操作。
3. 查看用户的表空间:
两个数据字典:
(1),dba_tablespaces:针对系统管理员用户。
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
SQL> select tablespace_name from dba_tablespaces; TABLESPACE_NAME ------------------------------ SYSTEM SYSAUX 作为example的辅助表空间。 UNDOTBS1 存储撤销表空间的。 TEMP USERS 永久性表空间 EXAMPLE 已选择6行。 SQL>
(2),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>
SQL> select tablespace_name from user_tablespaces; TABLESPACE_NAME ------------------------------ SYSTEM SYSAUX UNDOTBS1 TEMP USERS EXAMPLE 已选择6行。 SQL>
SQL> connect scott/910214 已连接。 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行。 SQL>
(3),dba_users数据字典:系统管理员级别的;
SQL> connect system/910214 已连接。 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>
SQL> select default_tablespace,temporary_tablespace from dba_users; DEFAULT_TABLESPACE TEMPORARY_TABLESPACE ------------------------------ ------------------------------ SYSTEM TEMP SYSTEM TEMP SYSTEM TEMP SYSAUX TEMP SYSAUX TEMP USERS TEMP SYSTEM TEMP SYSAUX TEMP SYSAUX TEMP SYSAUX TEMP SYSAUX TEMP DEFAULT_TABLESPACE TEMPORARY_TABLESPACE ------------------------------ ------------------------------ SYSAUX TEMP SYSAUX TEMP SYSAUX TEMP SYSAUX TEMP SYSAUX TEMP SYSAUX TEMP SYSAUX TEMP SYSAUX TEMP SYSAUX TEMP SYSAUX TEMP SYSAUX TEMP DEFAULT_TABLESPACE TEMPORARY_TABLESPACE ------------------------------ ------------------------------ SYSAUX TEMP USERS TEMP USERS TEMP USERS TEMP USERS TEMP USERS TEMP USERS TEMP USERS TEMP USERS TEMP USERS TEMP USERS TEMP DEFAULT_TABLESPACE TEMPORARY_TABLESPACE ------------------------------ ------------------------------ USERS TEMP USERS TEMP USERS TEMP 已选择36行。
(4),user_users数据字典:普通用户级别的。
3. 设置用户的默认或者临时表空间:
设置默认表空间就是用"default"设置临时表空间就是用“temporary”;
普通用户没有修改表空间的权限。要想让它可以修改就必须给它设置权限。
将system的默认表空间更改为system;
SQL> SQL> alter user system 2 default tablespace system; 用户已更改。 SQL>
4. 创建表空间:(永久表空间,临时表空间)
(1), 创建永久表空间:
SQL> create tablespace test1_tablespace 2 datafile ‘test1file.dbf‘ size 10m; 表空间已创建。 SQL>
(2), 创建临时表空间:
SQL> SQL> create temporary tablespace temptest1_tablespace 2 tempfile ‘tempfile1.dbf‘ size 10m; 表空间已创建。
(3), 查看表空间:
SQL> desc dba_data_files 名称 是否为空? 类型 ----------------------------------------- -------- ---------------------------- FILE_NAME VARCHAR2(513) FILE_ID NUMBER TABLESPACE_NAME VARCHAR2(30) BYTES NUMBER BLOCKS NUMBER STATUS VARCHAR2(9) RELATIVE_FNO NUMBER AUTOEXTENSIBLE VARCHAR2(3) MAXBYTES NUMBER MAXBLOCKS NUMBER INCREMENT_BY NUMBER USER_BYTES NUMBER USER_BLOCKS NUMBER ONLINE_STATUS VARCHAR2(7)
默认情况下数据文件存放的位置(默认表空间):
SQL> select file_name from dba_data_files where tablespace_name=‘TEST1_TABLESPACE‘; FILE_NAME -------------------------------------------------------------------------------- F:\APP\WYL\PRODUCT\11.2.0\DBHOME_1\DATABASE\TEST1FILE.DBF
默认情况下数据文件存放的位置(临时表空间):
SQL> select file_name from dba_temp_files where tablespace_name=‘TEMPTEST1_TABLESPACE‘; FILE_NAME -------------------------------------------------------------------------------- F:\APP\WYL\PRODUCT\11.2.0\DBHOME_1\DATABASE\TEMPFILE1.DBF SQL>
5.修改表空间:
1. 状态:
设置联机或脱机状态:
ALTER TABLESPACE tablespace_name ONLINE | OFFLINE;
SQL> select file_name from dba_temp_files where tablespace_name=‘TEMPTEST1_TABLESPACE‘; FILE_NAME -------------------------------------------------------------------------------- F:\APP\WYL\PRODUCT\11.2.0\DBHOME_1\DATABASE\TEMPFILE1.DBF SQL> ALTER TABLESPACE test1_tablespace OFFLINE; 表空间已更改。 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 status from dba_tablespaces where tablespace_name=‘TEST1_TABLESPACE‘; STATUS --------- OFFLINE SQL>
修改表空间:
SQL> select status from dba_tablespaces where tablespace_name=‘TEST1_TABLESPACE‘; STATUS --------- OFFLINE SQL> alter tablespace test1_tablespace 2 online; 表空间已更改。 SQL> select status from dba_tablespaces where tablespace_name=‘TEST1_TABLESPACE‘; STATUS --------- ONLINE SQL>
设置表空间的只读或者可读写状态:
alter tablespace tablespace_name READ ONLY | READ WRITE(可读写的);
只有联机状态才可以修改;
SQL> SQL> SQL> alter tablespace test1_tablespace 2 read only; 表空间已更改。 SQL> select status from dba_tablespaces where tablespace_name=‘TEST1_TABLESPACE‘; STATUS --------- READ ONLY SQL>
默认的联机状态就是可读写状态:
SQL> alter tablespace test1_tablespace 2 read write; 表空间已更改。 SQL> select status from dba_tablespaces where tablespace_name=‘TEST1_TABLESPACE‘; STATUS --------- ONLINE SQL>
(2). 修改表空间中的数据文件:
1. 增加数据文件
ALTER TABLESPACE tablespace_name ADD DATAFILE ‘xx.dbf‘ SIZE xx;
SQL> alter tablespace test1_tablespace 2 add datafile ‘test2-file.dbf‘ size 10m; 表空间已更改。 SQL> select file_name from dba_data_files where tablespace_name=‘TEST1_TABLESPACE‘; FILE_NAME -------------------------------------------------------------------------------- F:\APP\WYL\PRODUCT\11.2.0\DBHOME_1\DATABASE\TEST1FILE.DBF F:\APP\WYL\PRODUCT\11.2.0\DBHOME_1\DATABASE\TEST2-FILE.DBF SQL>
2. 删除数据文件:
ALTER TABLESPACE tablespace_name DROP DATAFILE ‘xx.dbf‘;
SQL> alter tablespace test1_tablespace 2 DROP datafile ‘test2-file.dbf‘; 表空间已更改。 SQL> select file_name from dba_data_files where tablespace_name=‘TEST1_TABLESPACE‘; FILE_NAME -------------------------------------------------------------------------------- F:\APP\WYL\PRODUCT\11.2.0\DBHOME_1\DATABASE\TEST1FILE.DBF SQL>
6. 删除表空间:
DROP TABLESPACE
tablespace_name [INCLUDING CONTENTS]
SQL> drop tablespace test1_tablespace including contents; 表空间已删除。 SQL>