首页 > 代码库 > Oracle TableSpace

Oracle TableSpace

一、创建表空间

--创建用户表空间

CREATE TABLESPACE mytablespace NOLOGGING --nologging 则为不生重做日志,在TABLESPACE前

DATAFILE ‘D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\mytp01.DBF‘ SIZE 1G AUTOEXTEND ON NEXT 1G MAXSIZE 30G

EXTENT MANAGEMENT LOCAL AUTOALLOCATE;

说明:

第一行CREATE TABLESPACE默认为CREATE PERMANENT TABLESPACE永久表空间(表空间类型分为PERMANENT永久,TEMPORARY临时,UNDO撤销)

第二行,为定义文件属性,MAXSIZE 20M为最大20M,MAXSIZE UNLIMITED 大小不受限制

第三行local表示区管理类型为本地管理(local本地管理,TEMPORARY字典管理),AUTOALLOCATE表示段管理类型为自动管理(段管理类型分为AUTO和MANUAL)

 

OMF

CREATE TABLESPACE ts_cs NOLOGGING DATAFILE SIZE 1G

AUTOEXTEND ON NEXT 1G MAXSIZE 30G

EXTENT MANAGEMENT LOCAL AUTOALLOCATE;

 

一个数据文件正常最大32G。由LOADID长度限制。

create smallfile TABLESPACE

create bigfile TABLESPACE

--创建临时表空间

CREATE TEMPORARY TABLESPACE mytemporary

TEMPFILE ‘D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\mytemp01.DBF‘ SIZE 10M

AUTOEXTEND ON NEXT 5M

MAXSIZE 10M

EXTENT MANAGEMENT LOCAL;

--创建用户

CREATE USER liut IDENTIFIED BY liut --用户名liut密码liut

DEFAULT TABLESPACE mytablespace

TEMPORARY TABLESPACE mytemporary;

--授予角色(多种权限)

GRANT CONNECT,RESOURCE,DBA TO liut;

 

二、增加表空间

ALTER TABLESPACE tablespace_name ADD DATAFILE ‘D:\ORACLE\PRODUCT\10.2.0\ORADATA\EDWTEST\APP04.DBF‘ SIZE 1G

AUTOEXTEND ON NEXT 1G MAXSIZE 30G; --有这一行则允许文件自动增长,没有则不允许

 

OMF

ALTER TABLESPACE ts_cs ADD DATAFILE SIZE 30G;

 

三、修改表空间

1.允许已存在的数据文件自动增长

ALTER DATABASE DATAFILE ‘D:\ORACLE\PRODUCT\10.2.0\ORADATA\EDWTEST\APP03.DBF‘ AUTOEXTEND ON NEXT 5M MAXSIZE 100M;

2.手工改变已存在数据文件的大小

ALTER DATABASE DATAFILE ‘D:\ORACLE\PRODUCT\10.2.0\ORADATA\EDWTEST\APP02.DBF‘ RESIZE 100M;

alter database datafile 4 resize 10M;

注意:可以改大,也可以改小,但是改完之后空间都会立即分配,而不是自动增长需要时才分配。

3、修改表空间名

alter tablespace CICHR rename to USERS;

4、删除数据文件

ALTER TABLESPACE TS_STD NOLOGGING;

 

四、删除表空间

DROP TABLESPACE XXXXX INCLUDING CONTENTS AND DATAFILES;

 

五、查看表空间大小

1、数据表空间大小

SELECT tablespace_name,maxsum_m,sum_m as total_m,

(sum_m-free_m) as used_m,free_m,

to_char(100*(sum_m-free_m)/sum_m, ‘99.99‘) || ‘%‘ AS pct_used,

to_char(100*free_m/sum_m, ‘99.99‘) || ‘%‘ AS pct_free

FROM

( SELECT tablespace_name,sum(bytes)/1024/1024 AS sum_m,

sum(maxbytes)/1024/1024 AS maxsum_m

FROM dba_data_files GROUP BY tablespace_name),

( SELECT tablespace_name AS fs_ts_name,sum(bytes/1024/1024) AS free_m

FROM dba_free_space GROUP BY tablespace_name )

WHERE tablespace_name = fs_ts_name(+)

order by free_m;

2、临时表空间

SELECT TABLESPACE_NAME,

a.TABLESPACE_SIZE / 1024 / 1024 TABLESPACE_SIZE,

a.ALLOCATED_SPACE / 1024 / 1024 ALLOCATED_SPACE,

FREE_SPACE / 1024 / 1024 AS "FREE SPACE(M)"

FROM DBA_TEMP_FREE_SPACE a

WHERE TABLESPACE_NAME = ‘&tablespace_name‘;

SELECT TABLESPACE_NAME, FILE_ID, FILE_NAME, BYTES/1024/1024 AS "SPACE(M)"

FROM DBA_TEMP_FILES;

 

六、在ASM下管理表空间

create tablespace test1 datafile ‘+DATA‘ size 10M;

create bigfile tablespace bts datafile ‘+DATA‘ size 10M;

select bigfile from dba_tablespaces;

--修改数据库默认表空间

alter database default tablespace test1;

select * from database_properties where property_name = ‘DEFAULT_PERMANENT_TABLESPACE‘;

--修改用户默认表空间

alter user a1 default tablespace users;

select DEFAULT_TABLESPACE from dba_users where username=‘SCOTT‘;

预配置的数据库表空间包括:

? SYSTEM

? SYSAUX

? TEMP

? UNDOTBS1

? USERS

? EXAMPLE(可选)

Oracle TableSpace