ORACLE创建tablespace

创建表空间

create tablespace tsp_test
datafile '&datafile\test.dbf'
logging
size 100m
reuse
autoextend on
next 20m
maxsize unlimited
extent management local  segment space management auto;

解析:

tsp_test:表空间名

datafile:数据文件名: 数据文件路径+文件名,例如:'D:\app\developer\oradata\orcl\developer.dbf'

size:数据文件占磁盘空间大小

reuse:该参数表明:1、如果file 已经存在,并且在创建时指定了file size,那么就重用原文件,并应用新的size,如果没有指定file size,则保留原有的大小。

2、如果file 不存在,oracle 将忽略该参数。

autoextend on next 20m:表示该表空间是否是自动扩展的,ON 为自动扩展,OF为不扩展,当自动扩展时,NEXT 20m表示自动扩展20m的大小

maxsize unlimited:表示该表空间可以自动扩展到多大,unlimited表示没有限制,可以扩展到oralce容许的最大32g

extent management local segment space management auto :extent management有两种管理方式,local(本地管理)|dictionary数据字典管理,其中local是默认

segment space management auto 为空间管理的方式,auto为自动管理

使用表空间

1、创建用户时

create user user_name--用户名
identified by user_assword--用户密码
default tablespace tsp_test --指定表空间
temporary tablespace TEMP --临时表空间
quota unlimited on tsp_test;--表空间配额,表示无限制

2、创建数据表

create table user_name.table_name--表名
(
    P_category varchar2(10),
    p_price varchar2(10),
    p_Sales varchar2(20),
    p_year varchar2(20)
)
tablespace TSP_TEST --数据空间名
pctfree 10
initrans 1
maxtrans 255
storage (
    initial 64k
        minextents 1
        maxextents unlimited
        );

3、创建主键

alter table user_name.table_name add constraint PK_TEST primary key(id) using index tablespace TSP_TEST ;

4、创建索引

create index index_test on user_name.table_name tablespace TSP_TEST;

删除表空间

drop tablespace TSP_TEST including contents and datafiles;--Including contents表示删除表空间,同时删除该表空间全部的数据库对象,而datafiles表示将数据库文件也删除。

添加数据文件

当数据文件大于32g时,数据库会报错,ORA-01653,这时候就需要增加数据文件,具体信息可以看这个文章

ALTER TABLESPACE databasename
ADD DATAFILE '&datafile\TSP_TEST01.dbf'
SIZE 500M
AUTOEXTEND 
ON NEXT 20M 
MAXSIZE UNLIMITED;

修改数据文件状态

alter tablespace TSP_TEST online/offline/read only /read write;

offline 离线

read onley 只读

read write 可读写

offline 在线

查看表空间和数据文件

SELECT T.TABLESPACE_NAME,
			 D.FILE_NAME,
			 D.AUTOEXTENSIBLE,
			 D.BYTES,
			 D.MAXBYTES,
			 D.STATUS
	FROM DBA_TABLESPACES T, DBA_DATA_FILES D
 WHERE T.TABLESPACE_NAME = D.TABLESPACE_NAME
 ORDER BY TABLESPACE_NAME, FILE_NAME;

查看表空间使用情况

SELECT UPPER(F.TABLESPACE_NAME) "表空间名",
			 D.TOT_GROOTTE_MB "表空间大小(M)",
			 D.TOT_GROOTTE_MB - F.TOTAL_BYTES "已使用空间(M)",
			 TO_CHAR(ROUND((D.TOT_GROOTTE_MB - F.TOTAL_BYTES) / D.TOT_GROOTTE_MB * 100,
										 2),
							 '990.99') "使用比",
			 F.TOTAL_BYTES "空闲空间(M)",
			 F.MAX_BYTES "最大块(M)"
	FROM (SELECT TABLESPACE_NAME,
							 ROUND(SUM(BYTES) / (1024 * 1024), 2) TOTAL_BYTES,
							 ROUND(MAX(BYTES) / (1024 * 1024), 2) MAX_BYTES
					FROM SYS.DBA_FREE_SPACE
				 GROUP BY TABLESPACE_NAME) F,
			 (SELECT DD.TABLESPACE_NAME,
							 ROUND(SUM(DD.BYTES) / (1024 * 1024), 2) TOT_GROOTTE_MB
					FROM SYS.DBA_DATA_FILES DD
				 GROUP BY DD.TABLESPACE_NAME) D
 WHERE D.TABLESPACE_NAME = F.TABLESPACE_NAME
 ORDER BY 4 DESC;

文章作者: zlinks
本文链接:
版权声明: 本站所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 ZFS的成长之路
Oracle Oracle基本语法
喜欢就支持一下吧