管理数据库存储结构
表空间和数据文件
Oracle DB在逻辑上将数据存储在表空间中,在物理上将数据存储在数据文件中
表空间:
-只能属于一个数据库
-包括一个或多个数据文件
-可进一步划分为逻辑存储单元
数据文件:
-只能属于一个表空间和一个数据库
-是存储方案对象数据的资料档案库
System表空间 存了大量的系统表,包括一些数据字典和动态性能视图等
Sysaux 辅助表空间 作为SYSTEM表空间的辅助表空间.以前一些使用独立表空间或系统表空间的数据库组件现在在SYSAUX表空间中创建
Temp 临时表空间 临时表空间用来管理数据库排序操作以及用于存储临时表、中间排序结果等临时对象
UNDOTBS1 还原表空间
Users表空间存放永久用户信息的
Example表空间
查看数据库里所有表空间的信息
Desc dba_data_files;
select file_name,tablespace_name from dba_data_files;
/u01/app/oracle/oradata/VDEDU/users01.dbf USERS
/u01/app/oracle/oradata/VDEDU/undotbs01.dbf UNDOTBS1
/u01/app/oracle/oradata/VDEDU/sysaux01.dbf SYSAUX
/u01/app/oracle/oradata/VDEDU/system01.dbf SYSTEM
/u01/app/oracle/oradata/VDEDU/example01.dbf EXAMPLE
select file_name,tablespace_name from dba_temp_files;
/u01/app/oracle/oradata/VDEDU/temp01.dbf TEMP
创建表空间
SQL> create tablespace test datafile '/u01/app/oracle/oradata/VDEDU/test01.dbf' size 100m autoextend on;
Tablespace created.
扩大表空间
SQL> Alter tablespace test add datafile ‘/u01/app/oracle/oradata/VDEDU/test02.dbf’ size 100 m autoextend on;
创建临时表空间
Create temporary tablespace test tempfile '/u01/app/oracle/oradata/VDEDU/test01.dbf' size 100m autoextend on;
扩大临时表空间
Alter tablespace test add tempfile '/u01/app/oracle/oradata/VDEDU/test01.dbf' size 100m autoextend on;
Alter user hr default tablespace test;使hr用户默认使用表空间test
Alter user hr temporary tablespace temptest;指定使用临时表空间
SQL> select tablespace_name,bytes/1024/1024||'M' as "size" from dba_data_files;
TABLESPACE_NAME size
------------------------------ -----------------------------------------
USERS 5M
UNDOTBS1 110M
SYSAUX 580M
SYSTEM 760M
EXAMPLE 346.25M
TEST 100M
TEST 100M
TEST2 100M
TEST2 100M
TEST3 100M
TEST3 100M
Oracle11gR2创建表空间基本模版
Create smallfile tablespace <tablespace_name>
Datafile<路径和文件名>size<文件大小>
Autoextend on next<每次扩展多大>maxsize {unlimited|nM/G/T} logging
Extent management {local|dictionary} {autoallocate|uniform size<区固定大小>}
Segment space management {auto|manual}; (段扩展)
段管理模式
ASSM:automatic segment space management(自动段空间管理)
MSSM:manual segment space management(手工段空间管理)
Select tablespace_name,segment_space_management from dba_tablespaces;
SQL> create tablespace tbs01 datafile '/u01/app/oracle/oradata/VDEDU/tbs0101.dbf' size 10m autoextend on extent management local autoallocate;--区扩展本地管理自动分配大小
SQL> create tablespace tbs02 datafile '/u01/app/oracle/oradata/VDEDU/tbs0201.dbf' size 100m autoextend on extent management local uniform size 10m;--区扩展本地管理固定大小
SQL> create tablespace ASSMTBS1 datafile '/u01/app/oracle/oradata/VDEDU/assmtbs1_01.dbf' size 10m segment space management auto; --自动段空间管理
SQL> create tablespace MSSMTBS1 datafile '/u01/app/oracle/oradata/VDEDU/mssmtbs1_01.dbf' size 10m
segment space management manual;--手工段空间管理
加logging实际上是对象的一个属性,用来表示在创建对象时是否记录redo日志,包括在做dml时是否记录redo日志。一般表上不建议使用nologging,在创建索引或做大量数据导入时,可以使用nologging
管理表空间的数据字典视图
Dba_tablespaces;
Dba_free_space;
Dba_segments;
Dba_data_files;
Dba_temp_files;
Dba_tablespace_groups;
V$datafile;
V$filestat;
查询用户使用的默认表空间是哪个
SQL> select username,default_tablespace from dba_users;
USERNAME DEFAULT_TABLESPACE
------------------------------ ------------------------------
HR HRTBS