欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2023-03-27 22:50:57
安装好数据库之后,接下来就要开始使用了。 但是我们不能上来就create table,我们需要先创建一个表空间以及一个新用户。 什么是表空间,为什么需要表空间? 首先,表空间...

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

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

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

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

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

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

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

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

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

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

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

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

当我们想使用数据库时,我们需要一个用户,来登陆上去,然后才可以做相应操作。如果我们没有为该用户创建表空间,那么就会使用默认的表空间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;

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