《 Oracle创建表空间 》
关于Oracle数据库:
1),数据库:磁盘上存储数据的集合,在物理上表现为数据文件,日志文件和控制文件等,在逻辑上以表空间形式存在。2),全局数据库名称:类似于网络中的域名,数据库命名在整个网络中唯一。
3),数据库实例:每个启动的数据库都对应一个数据库实例,由这个实例来访问数据库中的数据
4),表空间:数据库由若干个表空间构成。一个表空间由多个数据文件组成,但一个数据文件只能属于一个表空间。
创建表空间四步走:
第1步:创建临时表空间
创建表空间之前还需要创建"临时表空间",若不创建则默认的临时表空间为 temp
create temporary tablespace etc_temp
tempfile 'e:\oracle\administrator\oradata\orcl\etc_temp.dbf'
size 10240m
autoextend on
next 200m maxsize 20480m
extent management local;
第2步:创建数据表空间
创建用户之前先要创建数据表空间,若没有创建则默认永久性表空间是 system
create tablespace etc_data
logging
datafile 'e:\oracle\administrator\oradata\orcl\etc_data.dbf'
size 10240m
autoextend on
next 200m maxsize 20480m
extent management local;
第3步:创建用户并指定表空间
create user etc identified by etc189
default tablespace etc_data
temporary tablespace etc_temp;
第4步:给用户授予权限
grant connect,resource,dba to etc;
表示把 connect,resource,dba 权限授予etc用户,权限授予完成后就可以去使用该用户登录并创建表了。
改变表空间状态
1、使表空间脱机
alter tablespace etc_data offline;
如果是意外删除了数据文件,则必须带有recover选项
alter tablespace etc_data offline for recover;
2、使表空间联机
alter tablespace etc_data online;
3、使数据文件脱机
alter database etc_data.dbf offline;
4、使数据文件联机
alter database etc_data.dbf online;
5、使表空间只读
alter tablespace etc_data read only;
6、使表空间可读写
alter tablespace etc_data read write;
删除用户/表空间
1、删除用户
drop user etc cascade;
注意在删除用户你可能遇到 ORA-01940: cannot drop a user that is currently connected的问题,
2、删除空的表空间,但是不包含物理文件
drop tablespace etc_data;
3、删除非空表空间,但是不包含物理文件
drop tablespace etc_data including contents;
4、删除空表空间(包含物理文件)
drop tablespace etc_data including 'e:\oracle\administrator\oradata\orcl\etc_data.dbf';
5、删除非空表空间(包含物理文件)
drop tablespace etc_data including contents and 'e:\oracle\administrator\oradata\orcl\etc_data.dbf';
6、如果其他表空间中的表有外键等约束关联到了本表空间中的表的字段,就要加上cascade constraints
drop tablespace etc_data including contents and datafiles cascade constraints;
扩展表空间
1、给某个表空间增加数据文件
alter tablespace etc_data
add datafile 'e:\oracle\administrator\oradata\orcl\etc199_data.dbf' size 20480m;
2、手动增加数据文件大小
alter database datafile 'e:\oracle\administrator\oradata\orcl\etc199_data.dbf'
resize 10240m;
3、设定数据文件自动扩展
alter database datafile 'e:\oracle\administrator\oradata\orcl\etc199_data.dbf'
autoextend on
next 200m
maxsize 10240m;
查看表空间内容信息
1、查询设定后的表空间信息
SELECT A.TABLESPACE_NAME,
A.BYTES TOTAL,
B.BYTES USED,
C.BYTES FREE,
(B.BYTES * 100) / A.BYTES "% USED",
(C.BYTES * 100) / A.BYTES "% FREE"
FROM SYS.SM$TS_AVAIL A, SYS.SM$TS_USED B, SYS.SM$TS_FREE C
WHERE A.TABLESPACE_NAME = B.TABLESPACE_NAME
AND A.TABLESPACE_NAME = C.TABLESPACE_NAME;
2、查询表空间的名称和所属表空间的数据文件
SELECT TABLESPACE_NAME,
FILE_ID,
FILE_NAME,
ROUND(BYTES / (1024 * 1024), 0) TOTAL_SPACE
FROM DBA_DATA_FILES
ORDER BY TABLESPACE_NAME;
3、查询表空间的名称及大小
SELECT T.TABLESPACE_NAME, ROUND(SUM(BYTES / (1024 * 1024)), 0) TS_SIZE
FROM DBA_TABLESPACES T, DBA_DATA_FILES D
WHERE T.TABLESPACE_NAME = D.TABLESPACE_NAME
GROUP BY T.TABLESPACE_NAME;
4、查询空闲表空间大小
SELECT TABLESPACE_NAME, SUM(BYTES) / 1024 / 1024
FROM DBA_FREE_SPACE
GROUP BY TABLESPACE_NAME;