表空间
为什么要创建表空间?是为了便于管理,毕竟逻辑存储结构相对于物理存储结构来说,软件管理的可用性会大大提高。比如扩容、改删、迁移等。 以下摘自《数据库系统概念》第五版:表空间也可以作为在数据库之间转移数据的一种办法。譬如,很常见的是每隔一段时间把数据从事务系统转移到数据仓库中去。Oracle允许将一个表空间的所有数据从一个系统转移到另一个系统,仅仅简单地复制文件并从数据字典元数据中输入输出一小部分数据。这些操作比从一个数据库下载数据,然后用一个加载器将数据插入到另一个数据库中比起来块多了。
2012-12-31更新(描述清楚点):
1、表空间是逻辑结构,对开发人员或者用户来说处理逻辑结构更方便、对系统管理员来说逻辑结构不可见,更能保证数据安全性,物理结构则交由数据库本身去管理,这样在重新组织物理存储后(如迁移、更换硬件、更换操作系统)应用程序可以不做任何修改直接使用。
2、
如果没有表空间,庞大的数据库系统中的表、索引等会对应于相应数量的操作系统文件,这对DBA的维护工作来说是无法想象的。
3、表空间的逻辑结构可以突破操作系统或者底层硬件环境(如硬盘大小)对文件大小的限制,
创建表空间
表空间
建立表空间(一般建N个存数据的表空间和一个索引空间):
create tablespace 表空间名
datafile ' 路径(要先建好路径)\***.dbf ' size *M
tempfile ' 路径\***.dbf ' size *M
autoextend on --自动增长
--还有一些定义大小的命令,看需要
default storage(
initial 100K,
next 100k,
);
例子:创建表空间
create tablespace DEMOSPACE
datafile 'E:/oracle_tablespaces/DEMOSPACE_TBSPACE.dbf'
size 1500M
autoextend on next 5M maxsize 3000M;
删除表空间
drop tablespace DEMOSPACE including contents and datafiles
创建唯一索引(姓名不能重复)
create unique index username_index ON t_user (username);
创建组合索引
create index name_time_index ON t_user(username,user_time);
create index IDX_O_ORG_ORGNO_ICS on O_ORG (ORG_NO_ICSS)
tablespace DATA_ICS
pctfree 10
initrans 2
maxtrans 255
storage
(
initial 64K
minextents 1
maxextents unlimited
);
create index IDX_O_ORG_P_ORG_NO on O_ORG (P_ORG_NO)
tablespace DATA_ICS
pctfree 10
initrans 2
maxtrans 255
storage
(
initial 64K
minextents 1
maxextents unlimited
);
-- Create/Recreate primary, unique and foreign key constraints
alter table O_ORG
add constraint P_O_ORG primary key (ORG_NO)
using index
tablespace DATA_ICS
pctfree 10
initrans 2
maxtrans 255
storage
(
initial 64K
minextents 1
maxextents unlimited
);
注意:
1。Oracle建议要把一个用户的数据分离到多个表空间------------这个分为数据文件和索引文件,把数据和索引分开而来,有利于读取。