表空间
物理结构上 : 数据信息存储在数据文件中
逻辑结构上: 数据信息存储在表空间中
一个数据库是由多个表空间构成,表空间和数据文件存在紧密的对应关系
每个表空间是由一个或多个数据文件组成
一个实例对应一个数据库
一个表空间可以对应多个用户, 一个用户只能属于一个表空间
数据库下可以创建多个表空间,一个java项目对应一个表空间
dba_tablespace_name ,存储Oracle数据库中的所有表空间信息
SQL> select tablespace_name, block_size,allocation_type from dba_tablespaces;
TABLESPACE_NAME BLOCK_SIZE ALLOCATIO
SYSTEM 8192 SYSTEM
SYSAUX 8192 SYSTEM
UNDOTBS1 8192 SYSTEM
TEMP 8192 UNIFORM
USERS 8192 SYSTEM
EXAMPLE 8192 SYSTEM
创建基本表空间
在创建表空间的时候:
1. 在数据字典和控件文件中添加新建的表空间信息
2. 操作系统中,创建指定大小的操作系统文件,并作为与表空间对应的数据文件
使用脚本创建
create [temporary|undo] tablespace tablespace_name
datafile filepath
blocksize number k
autoallocate number [k|m]
SQL> create tablespace hnkj
2 datafile 'g:\DB_file\hnkj.dbf'
3 size 10m
4 autoextend on
5 maxsize unlimited;
表空间已创建。
修改表空间
-
为表空间增加新的数据文件
SQL> alter tablespace hnkj
2 add datafile 'd:\db_file\hnkj_02.dbf'
3 size 10m;表空间已更改。
-
查询数据文件信息
SQL> select file_id,file_name,bytes from dba_data_files;FILE_ID FILE_NAME BYTES
4 D:\APP\LINNE\ORADATA\ORCL\USERS01.DBF 5242880 3 D:\APP\LINNE\ORADATA\ORCL\UNDOTBS01.DBF 104857600 2 D:\APP\LINNE\ORADATA\ORCL\SYSAUX01.DBF 534773760 1 D:\APP\LINNE\ORADATA\ORCL\SYSTEM01.DBF 713031680 5 D:\APP\LINNE\ORADATA\ORCL\EXAMPLE01.DBF 104857600 6 D:\DB_FILE\HNKJ.DBF 10485760 7 D:\DB_FILE\HNKJ_02.DBF 10485760
已选择7行。
-
修改数据文件大小
SQL> alter database datafile 'd:\db_file\hnkj_02.dbf' resize 5m;数据库已更改。
SQL> select file_id,file_name,bytes from dba_data_files;
FILE_ID FILE_NAME BYTES
4 D:\APP\LINNE\ORADATA\ORCL\USERS01.DBF 5242880 3 D:\APP\LINNE\ORADATA\ORCL\UNDOTBS01.DBF 104857600 2 D:\APP\LINNE\ORADATA\ORCL\SYSAUX01.DBF 534773760 1 D:\APP\LINNE\ORADATA\ORCL\SYSTEM01.DBF 713031680 5 D:\APP\LINNE\ORADATA\ORCL\EXAMPLE01.DBF 104857600 6 D:\DB_FILE\HNKJ.DBF 10485760 7 D:\DB_FILE\HNKJ_02.DBF 5242880
已选择7行。
修改数据文件是自动增长
SQL> alter database datafile 'D:\DB_FILE\HNKJ_02.DBF' autoextend on;
数据库已更改。
SQL> select file_id,file_name,autoextensible from dba_data_files;
FILE_ID FILE_NAME AUT
---------- -------------------------------------------------- ---
4 D:\APP\LINNE\ORADATA\ORCL\USERS01.DBF YES
3 D:\APP\LINNE\ORADATA\ORCL\UNDOTBS01.DBF YES
2 D:\APP\LINNE\ORADATA\ORCL\SYSAUX01.DBF YES
1 D:\APP\LINNE\ORADATA\ORCL\SYSTEM01.DBF YES
5 D:\APP\LINNE\ORADATA\ORCL\EXAMPLE01.DBF YES
6 D:\DB_FILE\HNKJ.DBF YES
7 D:\DB_FILE\HNKJ_02.DBF YES
已选择7行。
修改表空间状态
正常状态 : online(在线),read write(读写)
非正常状态 : offline(离线),read only(只读)
移动数据文件
1. 修改表空间状态为offline状态,防止其他用户操作
alter tablespace hnkj offline;
SQL> select tablespace_name,status from dba_tablespaces;
TABLESPACE_NAME STATUS
------------------------------ ---------
SYSTEM ONLINE
SYSAUX ONLINE
UNDOTBS1 ONLINE
TEMP ONLINE
USERS ONLINE
EXAMPLE ONLINE
HNKJ OFFLINE
复制数据文件到另一个磁盘
-
使用 alter tablespace rename 语句修改数据文件名称
SQL> alter tablespace hnkj 2 rename datafile 'd:\db_file\hnkj.dbf' 3 to 4 'd:\db\hnkj.dbf';
表空间已更改。
SQL> alter tablespace hnkj
2 rename datafile 'd:\db_file\hnkj_02.dbf'
3 to
4 'd:\db\hnkj_02.dbf';
表空间已更改。
SQL> select file_id,file_name,bytes from dba_data_files;
FILE_ID FILE_NAME BYTES
---------- -------------------------------------------------- ----------
4 D:\APP\LINNE\ORADATA\ORCL\USERS01.DBF 5242880
3 D:\APP\LINNE\ORADATA\ORCL\UNDOTBS01.DBF 104857600
2 D:\APP\LINNE\ORADATA\ORCL\SYSAUX01.DBF 534773760
1 D:\APP\LINNE\ORADATA\ORCL\SYSTEM01.DBF 713031680
5 D:\APP\LINNE\ORADATA\ORCL\EXAMPLE01.DBF 104857600
6 D:\DB\HNKJ.DBF
7 D:\DB\HNKJ_02.DBF
已选择7行。
- 将表空间的状态修改为onlin
SQL> alter tablespace hnkj online;
表空间已更改。
SQL> select tablespace_name,status from dba_tablespaces;
TABLESPACE_NAME STATUS
------------------------------ ---------
SYSTEM ONLINE
SYSAUX ONLINE
UNDOTBS1 ONLINE
TEMP ONLINE
USERS ONLINE
EXAMPLE ONLINE
HNKJ ONLINE
已选择7行。
删除表空间
drop tablespace tablespace_name [including contents] | [including contents and datafiles]
including contents : 表示删除表空间,但是保留该表空间的数据文件(即使保留其数据文件,这些文件也无法使用)
including contents and datafiles : 删除表空间,将内容全部和数据文件全部删除
SQL> drop tablespace hnkj including contents and datafiles;
表空间已删除。
filename 字段最多允许占用50个字符
SQL> column file_name format a50
临时表空间
临时表空间主要用来为排序或者汇总等操作提供的临时工作空间
create temporary tablespace temp
tempfile 'page.temp.dbf'
size 10m
autoentend on
next 10m maxsize 200m
临时表空间用于存储临时数据,不能够存储永久性数据
撤销表空间
控制文件和日志文件
控制文件 ,是一个很小的二进制文件, 用于描述数据块物理结构,包括数据库文件和日志文件的信息
1. 数据库名和标识
2. 数据库创建的时间戳
3. 表空间的名称
4. 数据文件和日志文件的位置
5. 当前日志文件的序列号
SQL> select name from v$datafile;
NAME
--------------------------------------------------------------------------------
D:\APP\LINNE\ORADATA\ORCL\SYSTEM01.DBF
D:\APP\LINNE\ORADATA\ORCL\SYSAUX01.DBF
D:\APP\LINNE\ORADATA\ORCL\UNDOTBS01.DBF
D:\APP\LINNE\ORADATA\ORCL\USERS01.DBF
D:\APP\LINNE\ORADATA\ORCL\EXAMPLE01.DBF
SQL> select member from v$logfile;
MEMBER
--------------------------------------------------------------------------------
D:\APP\LINNE\ORADATA\ORCL\REDO03.LOG
D:\APP\LINNE\ORADATA\ORCL\REDO02.LOG
D:\APP\LINNE\ORADATA\ORCL\REDO01.LOG
SQL> select name from v$controlfile
2 ;
NAME
--------------------------------------------------------------------------------
D:\APP\LINNE\ORADATA\ORCL\CONTROL01.CTL
D:\APP\LINNE\FLASH_RECOVERY_AREA\ORCL\CONTROL02.CTL