oracle-表空间相关笔记
oracle 表空间相关的笔记
官方例子
参考https://docs.oracle.com/html/E25494_01/omf003.htm#sthref1838
Example 1
以下示例将数据文件创建的缺省位置设置为 /u01/oradata,然后在该位置创建一个包含数据文件的表空间tbs_1。数据文件为100 MB,可自动扩展,最大大小不受限制。
1 | SQL> ALTER SYSTEM SET DB_CREATE_FILE_DEST = '/u01/oradata'; |
Example 2
此示例在目录 / u01/oradata 中创建一个名为 tbs_2 的表空间,其中包含数据文件。数据文件初始大小为400 MB,并且由于指定了SIZE子句,因此数据文件不可自动扩展。
The following parameter setting is included in the initialization parameter file:
DB_CREATE_FILE_DEST = '/u01/oradata'
The following statement is issued at the SQL prompt:
1 | SQL> CREATE TABLESPACE tbs_2 DATAFILE SIZE 400M; |
表空间的一些笔记
查询用户默认表空间
1 | select username,default_tablespace,TEMPORARY_TABLESPACE from user_users; |
查询默认表空间路径
该路径是在创建表空间时未指定 datafile 时默认保存的路径
1 | show parameter DB_CREATE_FILE_DEST |
修改默认表空间路径
1 | ALTER SYSTEM SET DB_CREATE_FILE_DEST = '/u01/oradata'; |
建表空间语句
这里文件路径可用 ./GZ_FUYI.dbf
这里创建一个初始大小为100m,自动扩展50m,无限制扩展的表空间 gz_fuyi
1 | create tablespace gz_fuyi datafile 'D:\oradata\orcl\yibo\gz_fuyi.dbf' size 100m |
查询当前数据库默认的表空间类型
1 | select * from database_properties where property_name = 'DEFAULT_TBS_TYPE'; |

v$datafile查当前所有表空间
1 | select name from v$datafile |
查询当前所有表空间名及路径
1 | select t1.name,t2.name from v$tablespace t1, v$datafile t2 where t1.ts# = t2.ts#; |

dba_data_files查询某个表空间的信息
1 | select file_name,tablespace_name,online_status from dba_data_files where tablespace_name = 'FUYI_ZHUANKEPINGTAI'; |

查询所有表空间容量情况
1 | SELECT Total.name "Tablespace Name", |

修改数据库默认使用bigfile表空间
1 | alter database set default bigfile tablespace; |
建bigfile表空间
可以将表空间默认类型改为bigfile,这样用上面的语句创建出来的就是bigfile表空间了
1 | create bigfile tablespace bigtbs_test |
建临时表空间
1 | --temporary tablespace |
分配表空间给指定用户
给用户user_test 分配表空间TS_TEST,配额无限制
1 | alter user user_test quota unlimited on TS_TEST; |
表空间修改为自动扩展
1 | alter tablespace BIGTBS_TEST autoextend on; |
查询表空间信息的语句
1 | select file_name, |
示例

一些说明
USER_BYTES is ‘Size of the useful portion of file in bytes’;
USER_BLOCKS is ‘Size of the useful portion of file in ORACLE blocks’;
修改用户默认表空间
1 | alter user yibo default tablespace gz_yibo_bigtbs; |
SQL> alter user yibo default tablespace gz_yibo_bigtbs;
User altered
1 | alter user kcgl default tablespace kcgl temporary tablespace temp; |
修改用户临时表空间
1 | alter user yibo temporary tablespace YIBO_TEMP1; |
修改数据库的默认临时表空间
1 | alter database default temporary tablespace temp_tbs_name; |
删除表空间及其数据文件
1 | drop tablespace TBS_01 |
表空间数量超出上限解决
1 | show parameter db_files; |
修改表空间最大值
UNDO表空间
查看当前undo表空间
1 | show parameter undo_tablespace |
创建
语法
1 | --使用create undo tablespace |
实例
1 | create bigfile undo tablespace yibo_undo_bigtbs datafile 'D:\YIBODB\yibo_undo_bigtbs.dbf' size 100m autoextend on next 50m maxsize 50g; |
切换undo表空间
1 |
|
不用重启实例
查询undo表空间
| 数据字典 | 解释 |
|---|---|
| v$undostat | 包含所有undo表空间的统计信息,用于对undo表空间进行监控和调整。通过该视图,可以估计当前undo表空间的大小,Oracle利用该视图完成对回退信息的自动管理,该视图数据是有最近4天内,每10分钟产生一条统计记录构成的。 |
| v$rollstat | 包含undo表空间中回退段的性能统计信息 |
| v$transaction | 包含事务所使用的回退段信息 |
| dba_undo_extents | 包含undo表空间中区的大小与状态信息 |
| dba_hist_undostat | 包含v$undostat的快照,主要是4天前的统计信息 |
查询undo表空间中回退信息的当前状态
1 | select tablespace_name,segment_name,extent_id,status from dba_undo_extents; |
undo表空间中区的状态一共有3种:EXPIRED、UNEXPIRED、ACTIVE。
–EXPIRED:表示该回退信息对应的事务已经提交,保存时间超过保留区;
–UNEXPIRED:表示该回退信息对应的事务已经提交,保存时间没有超过保留区;
–ACTIVE:表示回退信息对应的事务还没有提交,该区还在使用;