① 表空间实体消除了段与数据文件之间多对多关系。
② PL/SQL、视图、序列不是段,它们不存储数据,而且存在于数据字典中。
③ DB_BLOCK_SIZE参数控制块大小,需要改变大小的唯一办法是新建一个数据库。
④ 需要以后关注的段类型:CLUSTER、NESTED TABLE。
⑤ 为了确定表空间,也可以查询DBA_SEGMENTS视图。
⑥ 群集文件系统,OCFS(Oracle Clustered File System)
⑦ ASM只能存储数据文件,不能存储二进制文件。
⑧ 创建表空间的SQL:
create smallfile
tablespace "newts"
datafile '……'
size 100m autoextend on
next 10m maxsize 200m
logging
extent management
local
segment space management
auto
default nocompress
⑨
临时表空间使用临时文件,而非数据文件。临时文件在V$TEMPFILE视图和DBA_TEMP_FILES视图中列出。而数据文件在V$DATAFILE和DBA_DATA_FILES中列出。
查看$TABLESPACE了解表空间是否为bigfile表,查询V#TEMPFILE或V$DATAFILE来查看文件创建时的大小。因为他们保存在控制文件中。
⑩ 表空间创建后常见更改如下:
重命名
使其联机或者脱机
标记为可读写或只读
重调大小
更改警报阀值
重命名表空间的步骤:
alter tablespace storetabs rename to storedata; --重命名表空间
alter tablespace storedata offline; --使表空间进入脱机状态
host rename /opt/……/storetabs_01.dbf storedata_01.dbf;
--操作系统命令,重命名文件系统中的数据文件
alter database rename file '/opt/……/storetabs_01.dbf' to
'/opt/……/storedata_01.dbf'; --
按控制文件中的记录更改文件名,以便Oracle能够找到它们
alter tablespace storedata online; --使表空间重返联机状态
其中:使表空间脱机的语法:
alter tablespace tablespacename offline [normal | immediate |
temporary];
⑪ 使表空间只读的语法:
alter tablespace
tablespacename [read only | read write]
被标记为只读后,不能使用DML语句(包括truncate),但可以使用DDL语句删除它。
使得表空间只读对于备份和还原操作有好处。Oracle了解到表空间内容不能更改,因此不需要重复备份它们。
⑫ 删除表空间:
drop tablespace tablespacename [including contents [and
datafiles]]
including contents
只有表空间为空是可以不加,and datafiles将同事删除数据文件。
⑬ OMF(Oracle-Managed
Files),DBA将不必了解有关文件系统的任何知识。将以完全自动的方式完成数据库文件的创建。要启用OMF,请设置如下所有的参数:
DB_CREATE_FILE_DEST
DB_CREATE_ONLINE_LOG_DEST_1
DB_CREATE_ONLINE_LOG_DEST_2
DB_CREATE_ONLINE_LOG_DEST_3
DB_CREATE_ONLINE_LOG_DEST_4
DB_CREATE_ONLINE_LOG_DEST_5
DB_RECOVERY_FILE_DEST
DB_CREATE_FILE_DEST:指定所有数据文件的默认位置。
DB_CREATE_ONLINE_LOG_DEST_n:制定联机重做日志文件的默认位置。
DB_RECOVERY_FILE_DEST:设置归档重做日志文件和备份文件的默认位置。
启用OMF后,始终可以通过在CREATE
TABLESPACE命令上指定数据文件名执行重写操作。
⑭区间管理:字典管理 或 本地管理
本地管理为:在在每个数据文件中存储位图。位图中的每个位覆盖一个块范围,在分配空间时,适当的位从0变成1.与字典管理的基于事务的机制相比,此机制的效率高的多。
在创建本地管理的表空间时,一个重要的选项是uniform
size。如果指定了该选项,那么每个位覆盖的块范围可以更大:每个区间只需一位
create tablespace large_tabs datafile '……' size 10g
extent management local uniform size 160m;
分配在表空间的每个区间为160MB,故将有64个。位图只需要64位空间,更新一位可以分配160MB的空间。
create tablespace small_tabs
datafile '……' size 1g
extent management local uniform
size 160k;
create tablespace any_tabs datafile
'……' size 10g
extent management local
autoallocate;
ORACLE公司建议使用AUTOALLOCATE,如果知道段的大小,也可以相应地放置她们,UNIFORM
SIZE理当是最佳选项。
⑮如果数据库从先前的版本升级而来。则可能包括字典管理的表空间,查询sql是:
select tablespace_name, extent_management from
dba_tablespaces;
转换:
execute
dbms_space_admin.tablespace_migragte_to_local('tablespacename');
⑯管理段空间的方法为每个表空间设置,应用于表空间中所有的段。
手动和自动。
自动:每个段有5个视图,一个块恰好位于一个位图上。
0~25%
25%~50%
50%~75%
75%~100%。
要查看任何表空间是否使用手动管理,查询sql为:
select tablespace_name,segmment_space_management from
dba_tablespaces;
无法将表空间从手动管理转换为自动段空间管理,唯一的解决方案是使用自动段空间管理方法新建表空间,将段移入其中,并删除旧的表空间。