首页 > 数据库 > Oracle >

安装好oracle后创建表空间SQL语句教程

2017-09-26

安装好oracle后创建表空间SQL语句教程。安装好数据库之后,接下来就要开始使用了。但是我们不能上来就create table,我们需要先创建一个表空间以及一个新用户。什么是表空间,为什么需要表空间?

安装好数据库之后,接下来就要开始使用了。

但是我们不能上来就create table,我们需要先创建一个表空间以及一个新用户。

什么是表空间,为什么需要表空间?

首先,表空间是一个逻辑概念,逻辑的意思就是它是实际上不存在的,在文件夹里找不到的。oracle中真正存着数据的文件(物理上最大的)是数据文件(data file)。而在逻辑上把一组数据文件看成是一个集合,就是一个表空间。

一个数据库可以有多个 表空间 ,一个表空间只能属于一个数据库。

一个表空间可以有多个数据文件,一个数据文件只能属于一个表空间。

而我们熟悉的表,是放在数据文件中的,一个数据文件中可以有多个表。

不仅是表,还有索引、视图等等,这些都是放在数据文件中的。而这些表视图等,被称为段。一份数据文件包含多个段,有各种段,比如数据段(表),索引段,视图段,回滚段等等。

一个段由多个区构成,区指分配给某一对象(比如表)的任何连续块。

块是oracle的最小数据管理单元。当区的存储空间用完后,它会自动扩展临近的块,用来存储。所以区是不定大小的,块是确定大小的。

如图就是上文说的,是oracle的存储结构。可以看出,物理上真正存在的是数据文件和块。其他都是逻辑上的概念,是方便系统管理的逻辑结构。

这里写图片描述

当我们想使用数据库时,我们需要一个用户,来登陆上去,然后才可以做相应操作。如果我们没有为该用户创建表空间,那么就会使用默认的表空间SYSTEM来存储数据,这是不合理的。

假如把数据库实例看成是网盘,如果一个新用户注册进来准备使用,没有给用户分配他自己的空间,那么大家上传网盘的东西就会被所有人看到,就没有了隐私。所以需要给每个用户分配一个逻辑上的空间,别人是看不到这个空间里的东西。至于物理上的,可能我刚上传的照片跟隔壁老王上传的视频挨着存着,我不知道也不影响我。

所以我们需要创建一个表空间,然后创建新用户(相当于注册一个用户),然后把该表空间分配给这个用户。用户与表空间是多对多的,一个用户可以有多个表空间,一个表空间可以有多个用户。这里与刚才网盘的类比又有些区别。

创建表空间的SQL语句如下:

create tablespace your_data
      logging
      Datafile'地址\your_data.dbf'  --地址指某个实际文件夹地址
      Size 50m
      Autoextend on
      Next 50m maxsize 20480m
      Extent management local;

同时我们也需要创建一个临时表空间。

什么是虚拟表,有什么用?

上文所说的表空间是永久表空间,是存放永久性数据的,如表,视图,索引等。临时表空间,顾名思义,就是存放临时数据的,不是永久性的。

存放什么临时性数据呢?我们知道,在进行表连接查询时,会先将两张表做笛卡尔积,生成一张非常大的,有很多无效信息的表——称为临时表。这时候我们往往会通过where语句对其进行筛选,筛出我们需要的数据。而那张临时表自然不能存在永久表空间里,所以我们需要一个临时表空间来存放它。除了这种情况,还有很多地方会用到临时表(但笔者目前还不清楚),因此我们需要创建一个临时表空间配合永久表空间使用。

创建临时表空间的SQL语句:

create temporary tablespace your_temp
            tempfile'地址\your_temp.dbf'
            Size 50m
            Autoextend on
            Next 50m maxsize 20480m
            Extent management local;

做完上面两件事后,我们终于可以创建用户了,在创建用户的同时,把表空间和临时表空间分配给用户。

SQL语句:

create user newuser identified by 密码 --(注意这里的密码不能有特殊字符,否则会报错)
account unlock
Defaul tablespace your_data
Temporary tablspace your_temp;

这样,就可以使用这个用户登录上去,然后干你想干的事了。

相关文章
最新文章
热点推荐