原文链接:https://www.cnblogs.com/shujk/p/12493493.html
一、表空间和表概述
ORACLE物理上是由磁盘上的以下几种文件:==数据文件、控制文件和LOGFILE构成的==。 oracle中的表就是一张存储数据的表。表空间是逻辑上的划分,方便管理的。 ==数据表空间(Tablespace)==:存放数据总是需要空间,Oracle把一个数据库按功能划分若干空间来保存数据。当然数据存放在磁盘最终是以文件形式,所以一般一个数据表空间包含一个以上的物理文件。 ==数据表==:在仓库,我们可能有多间房子,每个房子又有多个货架,每架又有多层。 我们在数据库中存放数据,++最终是数据表的单元来存储与管理的++。 ==数据文件==:以上几个概念都是逻辑上的,而数据文件则是物理上的。就是说,数据文件是真正“看得着的东西”,它在磁盘上以一个真实的文件体现。
1.创建表空间和表的步骤:
==(1)、创建表空间:== 格式: create tablespace 表空间名 datafile '数据文件名' size 表空间大小。如:
create tablespace data_test datafile 'e:\oracle\oradata\test\data_1.dbf' size 2000M;
create tablespace idx_test datafile 'e:\oracle\oradata\test\idx_1.dbf' size 2000M;
数据文件名包含全路径, 表空间大小2000M表是2000兆
==(2)、建好tablespace, 就可以建用户了== 格式: create user 用户名 identified by 密码 default tablespace 表空间名。如:
create user study identified by study default tablespace data_test;
我们创建一个用户名为 study,密码为 study, 缺省表空间为 data_test。==缺省表空间==++表示用户study今后的数据如果没有专门指出,其数据就保存在 data_test中,也就是保存在对应的物理文件 e:\oracle\oradata\test\data_1.dbf中++
2.创建用户并指定表空间
CREATE USER cici IDENTIFIED BY cici
PROFILE DEFAULT
DEFAULT TABLESPACE CICI ACCOUNT UNLOCK;
create user jykl identified by jykl
default tablespace jykl_data
temporary tablespace jykl_temp;
授权给新用户
GRANT connect, resource TO cici;
grant create session to cici;
==(1)、授权给新用户==
grant connect,resource to study;
表示把 connect,resource权限授予study用户 grant dba to study; --表示把 dba权限授予给 study ==(2)、创建数据表== 在上面,我们已建好了用户 study 我们现在进入该用户 sqlplusw study/study@test 然后就可以在用户study中创建数据表了 格式: create table 数据表名
二、表空间详解
==1、建立表空间==
CREATE TABLESPACE data01
DATAFILE '/oracle/oradata/db/DATA01.dbf' SIZE 500M
UNIFORM SIZE 128k; #指定区尺寸为128k,如不指定,区尺寸默认为64k
==2、建立UNDO表空间==
CREATE UNDO TABLESPACE UNDOTBS02
DATAFILE '/oracle/oradata/db/UNDOTBS02.dbf' SIZE 50M
#注意:在OPEN状态下某些时刻只能用一个UNDO表空间,如果要用新建的表空间,必须切换到该表空间:
ALTER SYSTEM SET undo_tablespace=UNDOTBS02;
==3、建立临时表空间==
CREATE TEMPORARY TABLESPACE temp_data
TEMPFILE '/oracle/oradata/db/TEMP_DATA.dbf' SIZE 50M
==4、改变表空间状态==
(1)使表空间脱机
ALTER TABLESPACE game OFFLINE;
如果是意外删除了数据文件,则必须带有RECOVER选项:
ALTER TABLESPACE game OFFLINE FOR RECOVER;
(2)使表空间联机
ALTER TABLESPACE game ONLINE;
(3)使数据文件脱机
ALTER DATABASE DATAFILE 3 OFFLINE;
(4)使数据文件联机
ALTER DATABASE DATAFILE 3 ONLINE;
(5)使表空间只读
ALTER TABLESPACE game READ ONLY;
(6)使表空间可读写
ALTER TABLESPACE game READ WRITE;
==5、删除表空间==
DROP TABLESPACE data01 INCLUDING CONTENTS AND DATAFILES;
==6、扩展表空间==
(1)首先查看表空间的名字和所属文件
select tablespace_name, file_id, file_name,
round(bytes/(1024*1024),0) total_space
from dba_data_files
order by tablespace_name;
(2)表空间扩容
方法1:增加数据文件
ALTER TABLESPACE game
ADD DATAFILE '/oracle/oradata/db/GAME02.dbf' SIZE 1000M;
方法2:手动增加数据文件尺寸:
ALTER DATABASE DATAFILE '/oracle/oradata/db/GAME.dbf'
RESIZE 4000M;
方法3:设定数据文件自动扩展
ALTER DATABASE DATAFILE '/oracle/oradata/db/GAME.dbf
AUTOEXTEND ON NEXT 100M
MAXSIZE 10000M;
(3)设定后查看表空间信息
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