Oracle表空间的使用
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;
版权声明:
本站所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自
ZFS的成长之路!
喜欢就支持一下吧