oracle表空间连接,oracle表空间操作详解

表空间是什么

表空间实质是组织数据文件的一种途径,Oracle就是通过表空间这个数据库对象完成对数据的组织的。在将数据插入Oracle数据库之前,必须首

先建立表空间,然后将数据插入表空间的一个对象中。解释数据库、表空间、数据文件、表、数据的最好办法就是想象一个装满东西的柜子。数据库其实就是柜子,

柜中的抽屉是表空间,抽屉中的文件夹是数据文件,文件夹中的纸是表,写在纸上的信息就是数据。

根据表空间的用途可分为五类:

-目录表空间

每个数据库只有一个目录表空间,它是在发出 CREATE DATABASE 命令时创建的。目录表空间被 DB2 命名为 SYSCATSPACE,它保存了系统目录表。总是在创建数据库时创建该表空间。

-常规表空间

规表空间保存表数据和索引。它还可以保存诸如大对象(Large

Object,LOB)之类的长数据,除非这些数据显式地存储在长表空间中。如果某些表空间是数据库管理的空间(Database Managed

Space,DMS),则可以将表及其索引分别放到单独的常规表空间中。我们将在本文后面定义 DMS 和系统管理的空间(System Managed

Space,SMS)之间的区别。每个数据库中必须至少有一个常规表空间。创建数据库时指定该表空间的缺省名为 USERSPACE1。

-长表空间

长表空间用于存储长型或 LOB 表列,它们必须驻留在 DMS 表空间中。它们还可以存储结构化类型的列或索引数据。如果没有定义长表空间,那么将把 LOB 存储在常规表空间中。长表空间是可选的,缺省情况下一个都不创建。

-系统临时表空间

系统临时表空间用于存储 SQL 操作(比如排序、重组表、创建索引和连接表)期间所需的内部临时数据。每个数据库必须至少有一个系统临时表空间。随数据库创建的系统临时表空间的缺省名为TEMPSPACE1。

-用户临时表空间

用户临时表空间存储已声明的全局临时表。创建数据库时不存在用户临时表空间。至少应当创建一个用户临时表空间以允许定义已声明的临时表。用户临时表空间是可选的,缺省情况下一个都不创建

CREATE TABLESPACE message

DATAFILE '/opt/oracle/oradata/surecomp/message01.dbf' size 200M

EXTENT MANAGEMENT local;

CREATE USER message IDENTIFIED BY message

DEFAULT TABLESPACE message;

GRANT connect, resource TO message;

CREATE TABLE userinfo (

id VARCHAR2(32) NOT NULL,

name VARCHAR2(32) NOT NULL,

password VARCHAR2(32) NOT NULL,

CONSTRAINT userinfo_pk PRIMARY KEY (id),

CONSTRAINT userinfo_unique_name UNIQUE ( name )

);

这里先是用SYSTEM用户创建了一个message表空间

然后创建一个用户message,使这个message用户默认使用message表空间

之后创建一个表USER,这个时候USER表是不是应该在SYSTEM的临时表空间里?

那下次用message登陆往USER表中插记录的时候记录是不是就存在message表空间中?

SYSTEM表空间是不是只存了USER表的逻辑?

概念不清请指教

当你用system创建了message表空间,和message用户后,如果你不从system用户退出,再以message用户登陆,那么,运

行以上创建表的指令,所创建的表userinfo,就会被system用户所拥有。所以,这个表应该在system表空间里。在这样的情况下,用户

message与这张表没有任何关系。下次用message登陆时,message在一般情况下,不能往userinfo表里插记录,除非system给

予message用户特别许可,(GRANT insert on system.userinfo TO

message;)。如果system给予了这种许可,用户message所插的一切记录,都会储存在system表空间里,而不是在message表空

间中。

显然,这是很糟糕的情况。一般情况下,应该避免让普通用户把数据储存在system表空间里。现有二种方法可以避免以上的情况:

1.从system用户退出,再以message用户登陆,然后运行以上创建表的指令。

2.依然是system用户登陆,修改上述创建表的指令。在表名前,加上用户名,并且在最后注明表空间名。请看下例:

CREATE TABLE message.userinfo

(

id  VARCHAR2(32) NOT NULL,

name VARCHAR2(32) NOT NULL,

password VARCHAR2(32) NOT NULL,

CONSTRAINT userinfo_pk PRIMARY KEY (id),

CONSTRAINT userinfo_unique_name UNIQUE ( name )

)

TABLESPACE message;

用上述二种方法所创建的表userinfo,都会属于用户message。因此,message所插的一切记录,都会储存在message表空间中。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值