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;

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

.

Oracle笔记之表空间的更多相关文章

  1. 记一次ORACLE的UNDO表空间爆满分析过程

    这篇文章是记录一次ORACLE数据库UNDO表空间爆满的分析过程,主要整理.梳理了同事分析的思路.具体过程如下所示: 早上收到一数据库服务器的UNDO表空间的告警邮件,最早一封是7:55发出的(监控作 ...

  2. Oracle 10g bigfile表空间、smallfile 表空间

    smallfile tablespace设置不同大小的db_block_size时数据文件允许的最大大小 db_block_size=2KB,2KB*4M=8192M      8Gdb_block_ ...

  3. Oracle 10g创建表空间的完整步骤详解

    本文我们主要介绍了Oracle 10g创建表空间的完整步骤,包括表空间的创建与删除.为应用创建用户以及权限的授予等操作,希望能够对您有所帮助. AD:WOT2014:用户标签系统与用户数据化运营培训专 ...

  4. 如何让Oracle释放undo表空间

    如何让Oracle释放undo表空间   最佳答案   在日常的数据库维护和数据库编程中经常会遇到犹豫对大数据量做DML操作后是得ORACLE的undo表空间扩展到十几个G或者几十个G 但是这些表空间 ...

  5. [Oracle]理解undo表空间

    一.回退段介绍 在Oracle数据库中,当某个事物对数据进行修改时,Oracle首先将数据的原始值保存到一个回退段中.一个事物只能将它的回退信息保存到一个回退段中,而多个并行事物可以使用同一个回退段. ...

  6. oracle用户与表空间操作

    oracle系统用户sys,system , sysman, scott 使用system用户登录[username/password][@server][as sysdba|sysoper]eg: ...

  7. 删除Oracle用户及表空间

    --转载自 https://blog.csdn.net/sunny05296/article/details/81126548--以sysdba用户登录,查找需要删除的用户conn / as sysd ...

  8. Oracle 删除用户和表空间////Oracle创建删除用户、角色、表空间、导入导出、...命令总结/////Oracle数据库创建表空间及为用户指定表空间

    Oracle 使用时间长了, 新增了许多user 和tablespace. 需要清理一下 对于单个user和tablespace 来说, 可以使用如下命令来完成. 步骤一:  删除user drop ...

  9. Oracle笔记 多表查询

    Oracle笔记  多表查询   本次预计讲解的知识点 1. 多表查询的操作.限制.笛卡尔积的问题: 2. 统计函数及分组统计的操作: 3. 子查询的操作,并且结合限定查询.数据排序.多表查询.统计查 ...

随机推荐

  1. selenium webdriver XPath的定位方法练习 !

    html  代码: <html> <body> <div id="div1"> <input name="divl1input& ...

  2. python接口自动化测试框架实现之操作mysq数据库

    python操作mysql数据库需要使用到mysqlclient库. 安装:pip install mysqlclient python连接mysql数据库分以下步骤: 1.与mysql建立连接: 2 ...

  3. 第129天:node.js安装方法

    node.js安装方法 第一步:双击node.js安装包开始安装,注意64位和32位,按照自己的进行安装 第二步:在安装过程中一直选择next,在选择安装目录时,大多数默认安装在C盘,我安装在了D盘, ...

  4. ZOJ3529_A Game Between Alice and Bob

    题目的意思是给你若干个数字,两个游戏者轮流操作,每次可以将该数变为一个小于当前的一个约数,无法操作的游戏者fail. 和其他的博弈题目大同小异吧. 不同点有两个,逐一分析吧. 一.每次改变一个数只能改 ...

  5. 【bzoj2329】[HNOI2011]括号修复 Splay

    题目描述 题解 Splay 由于有区间反转操作,因此考虑Splay. 考虑答案:缩完括号序列后剩下的一定是 $a$ 个')'+ $b$ 个'(',容易发现答案等于 $\lceil\frac a2\rc ...

  6. 题解 P1567 【统计天数】

    天哪!竟然没人用优先队列! 小金羊又来水题了... 优先队列中的大根堆帮助我们把时间复杂度降到O(n+logn) 首先我们先了解一下大根堆... 大根堆的性质:根节点比子节点大, 这意味着最上面的节点 ...

  7. servlet中doGet()和doPost()的区别

    1.生成方式 get方法有四种: ①直接在URL地址栏中输入URL ②网页中的超链接 ③form中method为get ④form中method为空时,默认是get提交 post只知道有一种:form ...

  8. 【BZOJ3437】小P的牧场(动态规划,斜率优化)

    [BZOJ3437]小P的牧场(动态规划,斜率优化) 题面 BZOJ 题解 考虑暴力\(dp\),设\(f[i]\)表示强制在\(i\)处建立控制站的并控制\([1..i]\)的最小代价. 很显然,枚 ...

  9. ZendFramework安装配置

    1.创建项目目录 E:/wwwroot/myzfpro 运行cmd后,cd到框架源文件的bin目录 运行zf.bat创建命令:zf.bat create project E:/wwwroot/myzf ...

  10. Codeforces Round #338 (Div. 2) D 数学

    D. Multipliers time limit per test 2 seconds memory limit per test 256 megabytes input standard inpu ...