首页 技术 正文
技术 2022年11月9日
0 收藏 981 点赞 3,784 浏览 3146 个字

Oracle中有一个表空间的概念,一个数据库可以有好几个表空间,表放在表空间下。

1. 创建表空间

创建表空间使用create tablespace命令:

CREATE TABLESPACE foo_tablespace
DATAFILE 'E:/oracle/data/foo_tablespace.dbf'
SIZE 20M
AUTOEXTEND ON NEXT 5M
MAXSIZE 500M;

DATAFILE ‘E:/oracle/data/foo_tablespace.dbf’  指定逻辑上的表空间在磁盘上的物理存储文件。

SIZE 20M 指定表空间的初始大小,创建完成后到磁盘上查看:

不管里面有多少数据,初始化的时候会先分配20M。

AUTOEXTEND ON NEXT 5M 当之前分配的那20M空间用完了之后怎么办,这个时候就需要能够动态扩展,这里指定每次扩展的时候扩展5M的空间。

MAXSIZE 500M 动态扩展也总会有有一个上限的吧,这里指定动态扩展最大扩展到多少就不再继续扩展了。

创建完成后查看其相关信息:

SQL> SELECT * FROM dba_data_files;
FILE_NAME FILE_ID TABLESPACE_NAME BYTES BLOCKS STATUS RELATIVE_FNO AUTOEXTENSIBLE MAXBYTES MAXBLOCKS INCREMENT_BY USER_BYTES USER_BLOCKS ONLINE_STATUS
-------------------------------------------------------------------------------- ---------- ------------------------------ ---------- ---------- --------- ------------ -------------- ---------- ---------- ------------ ---------- ----------- -------------
C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\USERS01.DBF 4 USERS 5242880 640 AVAILABLE 4 YES 3435972198 4194302 160 5177344 632 ONLINE
C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSAUX01.DBF 3 SYSAUX 262144000 32000 AVAILABLE 3 YES 3435972198 4194302 1280 262078464 31992 ONLINE
C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\UNDOTBS01.DBF 2 UNDOTBS1 26214400 3200 AVAILABLE 2 YES 3435972198 4194302 640 26148864 3192 ONLINE
C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSTEM01.DBF 1 SYSTEM 503316480 61440 AVAILABLE 1 YES 3435972198 4194302 1280 503250944 61432 SYSTEM
E:\ORACLE\DATA\FOO_TABLESPACE.DBF 5 FOO_TABLESPACE 20971520 2560 AVAILABLE 5 YES 524288000 64000 640 20905984 2552 ONLINE

2. 使用表空间

查看用户的默认表空间:

SQL> SELECT username, default_tablespace FROM dba_users;
USERNAME DEFAULT_TABLESPACE
------------------------------ ------------------------------
MGMT_VIEW SYSTEM
SYS SYSTEM
SYSTEM SYSTEM
DBSNMP SYSAUX
SYSMAN SYSAUX
FOO USERS
SCOTT USERS
SAM USERS
TOM USERS
OUTLN SYSTEM
MDSYS SYSAUX
ORDSYS SYSAUX
CTXSYS SYSAUX
ANONYMOUS SYSAUX
EXFSYS SYSAUX
DMSYS SYSAUX
WMSYS SYSAUX
XDB SYSAUX
ORDPLUGINS SYSAUX
SI_INFORMTN_SCHEMA SYSAUX
USERNAME DEFAULT_TABLESPACE
------------------------------ ------------------------------
OLAPSYS SYSAUX
MDDATA USERS
DIP USERS
TSMSYS USERS
24 rows selected

一些特殊用户的默认表空间是SYSTEM,普通用户的默认表空间是USERS。

修改用户的默认表空间(只对一个用户生效):

ALTER USER SCOTT DEFAULT TABLESPACE foo_tablespace;

修改数据库级别的默认表空间(对整个数据库都生效):

ALTER DATABASE DEFAULT TABLESPACE foo_tablespace;

关于表空间:

在Oracle9i中,如果没有用DEFAULT TABLESPACE子句指定用户默认表空间的话其默认表空间就是SYSTEM,而且也不能为数据库指定默认表空间。

在Oracle10g中定义数据库级别的默认表空间是USERS,在创建用户时如果没有指定默认表空间就会使用数据库级别默认表空间。

在创建表的时候指定使用哪一个表空间:

CREATE TABLE t_user(
id INT NOT NULL ,
username VARCHAR2(20) NOT NULL ,
passwd CHAR(32) NOT NULL ,
CONSTRAINT PK_T_USER PRIMARY KEY (id)
) TABLESPACE foo_tablespace;

查看t_user表所属的表空间:

SQL> SELECT TABLE_NAME, TABLESPACE_NAME  FROM user_tables WHERE table_name='T_USER';
TABLE_NAME TABLESPACE_NAME
------------------------------ ------------------------------
T_USER FOO_TABLESPACE

对于已经创建了的表可以将其从一个表空间下移动到另一个表空间下:

ALTER TABLE t_user MOVE TABLESPACE users;

再查看,会发现之前的t_user已经到了默认的users表空间下:

SQL> SELECT TABLE_NAME, TABLESPACE_NAME  FROM user_tables WHERE table_name='T_USER';
TABLE_NAME TABLESPACE_NAME
------------------------------ ------------------------------
T_USER USERS

3. 重命名表空间

重命名表空间,修改表名类似:

ALTER TABLESPACE foo_tablespace RENAME TO foobar_tablespace;

4. 删除表空间

删掉表空间,连同其内已有的数据对象和磁盘上之前指定的数据文件都一并删掉:

DROP TABLESPACE foo_tablespace INCLUDING CONTENTS AND DATAFILES;

需要注意删除表空间的时候表空间必须不在使用状态。即没有哪个数据库用其作为默认表空间。

.

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,492
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,907
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,740
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,493
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:8,132
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:5,295