(1)Oracle数据库用户和表空间

时间:2022-09-27 08:39:59

1.使用系统用户登陆Oracle

这里我们会为大家讲解:
如何登陆SQL Plus工具
如何查看登陆用户
如何启动scott用户
<1> 如何登陆SQL Plus工具
SQL Puls是我们Oracle自带的一款工具,它是在DOS页面下使用SQL语句的方式来操作和管理我们的数据库,也是被很多的系统管理员来使用的产品。
在学习它之前我们先要了解系统用户有哪些?如何通过系统用户来登陆。这里需要说明的是,不是只能通过系统用户来登陆SQL Plus,也可以自己创建用户来登陆,但是我们这个里面主要是为大家讲解SQL语句的一个基础内容,所以我们呢不涉及用户创建和管理相关的,仅仅学习登陆。
那么系统用户有哪些呢:

  • sys,system;(sys用户的权限高于system,使用sys来登陆的时候,它必须以管理员或者是系统操作人员的权限,system可以直接登陆)
  • sysman;是用于来操作我们的企业管理器来使用的,也是管理员级别的用户
  • scott;scott用户是默认用户之一,它也是我们oracle创始人之一的名字。
    了解了这些用户之后,那么他们的密码究竟是什么呢?在安装oracle数据库的时候,前三个用户的密码是由你自己来设置的,在设置的时候基本上都设置的统一的密码,最后一个用户scott用户,它的密码默认情况下是tiger。
    如何通过系统工具来登陆sql plus这个工具呢?下面就是登陆的语句:使用system用户登陆,
    [username/password] [@server] [as sysdba|sysoper]
    system/root----------@orcl-----as sysdba---
    orcl就是自己设置的服务名,要使用用户名和密码,如果你的数据库安装不在本机上,那么需要的是服务名或者是ip地址。如果是sys用户则需要设置 as sysdba或者as sysoper。下面我们实际操作一下:system/密码,除此之外还可以使用sys来登陆,connect sys/密码 as sysdba

2.Oracle用户和表空间之查看登录用户

查看登陆用户:

  • SHOW USER命令
  • dba_users数据字典
    接下来我们来学习如何查看登录用户,那么首先为大家介绍的命令就是SHOW USER命令,通过这个命令可以直接查到登陆到sql Plus里的用户是哪一个。在这之中我们还可以通过数据字典来查看一些其他的用户信息,那么这个数据字典叫什么呢?dba_users,数据字典是数据库提供的表,用于查看数据库的信息。使用DESC dba_users查看表中有哪些字段,里面第一个字段是username,直接select username from dba_users;查看用户名有哪些,还可以继续查看其他的用户信息。

3.Oracle用户和表空间之启用scott用户

下面我们就来学习如何启用scott用户,这个用户也是我们的一个默认用户, 它在默认情况下是锁定的,如果要使用它就要对它进行解锁,也就是我们说的如何来启用它。
启用scott用户的语句:alter user username account unlock unlock就是解锁的意思,如果要锁定把un去掉,lock就是锁定了。 那么具体该怎么使用呢?首先我们让system登陆到sql plus中,然后解锁:alter user scott account unlock;此时会提示用户已更改,然后就可以进行登陆了。使用scott登陆就需要一个密码,那么密码默认情况就是tiger,登陆语句就是connect scott/tiger,connect它的单词含义是连接。然后show user查看登陆的用户。
因为目前的12c最新版中移除了这个用户,如果以后学习中需要再创建吧。

4.表空间概述

下面几节我们将为大家讲述
表空间概述
如何查看用户的表空间
创建、修改、删除表空间
本节将学习理解表空间和表空间分类。
表空间和数据库之间有什么关系呢?表空间实际是数据库的逻辑存储空间,我们可以把表空间理解为在数据库中开辟了一个空间用于存放我们数据库的对象,那么一个数据库可以由多个表空间来构成,oracle的很多优化都是通过表空间来实现的。
表空间和数据文件的关系,表空间是由一个或多个数据文件来构成的,那么数据文件的位置和大小可以由我们用户自己来定义,我们实际上要知道的是,我们存储的一些表啊,数据库,数据库当中的一些其他对象都是存放到表空间的数据文件里面的。
表空间的分类:

  • 永久表空间
    数据库当中要永久化存储的一些对象,比如说表,视图,存储过程,这样的一些内容,我们都把它存储在永久表空间中。
  • 临时表空间
    主要用于存放一些数据库操作当中中间执行的过程,当执行结束之后,存放的内容被自动释放,不进行永久性的保存。
  • UNDO表空间
    用于保存事物所修改数据的旧址,也就是被修改之前的数据。比如说当我们一张表进行修改的时候,它会对修改之前的信息就行保存,这样的话我们就可以对数据执行回滚,撤销的操作。

5.查看用户表空间

在oracle当中我们使用不同用户登陆之后,它们所对应的表空间也可以有所不同,下面我们就来查看一下。

  • 先介绍两个数据字典:dba_tablespaces、user_tablespaces。
    第一个针对的是我们系统中管理员级的用户来查看的数据字典,第二个是普通用户登陆以后来查看的数据字典,我们分别来看一下。
    现在我们使用system来登陆sql Plus,先用desc来查看一下这个数据字典。dba_tablespaces的第一个字段就是表空间的名字TABLESPACE_NAME,这样我们可以直接查看它的表空间名字。这里我们看到作为一个系统管理员,system登陆后的默认表空间。
    system表空间下的数据含义:
    SYSTEM 系统表空间,用来存储sys这个用户的表视图以及存储过程这样的数据库对象;
    SYSAUX 作为example的辅助表空间,事例辅助表空间
    TEMP 临时表空间
    UNDOTBS1 存储撤销信息,属于undo类型的表空间
    USERS 用户创建的数据库对象,和system差不多,用户表空间
    EXAMPLE 事例表空间,用于安装oracle以及数据库事例的这样的一个事例表空间
    查看普通用户的表空间desc user_tablespaces; select TABLESPACE_NAME from user_tablespaces; 也是6个,在12c这个版本里两个数据字典里的表空间名都是5个。当用scott用户登陆时因为权限比较低所以查询dba_tablespaces是查不到结果的。
  • dba_users、user_users数据字典

我们需要知道每个用户下面对应着默认表空间和临时表空间,那默认表空间呢就是你将来在这个用户登陆之后,在这个用户下面创建这些对象所存放的位置,那临时表空间呢?就是存放的是一些临时的信息,正常情况下我们只有一个临时表空间就是这个TEMP,如果你想使用其他的临时表空间,需要自己来创建。
我们来查看一下system的默认表空间是什么:SELECT DEFAULT_TABLESPACE,temporary_tablespace from dba_users where username='SYSTEM'答案肯定是system和temp。
如何更改设置用户的默认表空间和临时表空间呢?
ALTER USER username DEFAULT|TEMPORARY TABLESPACE tablespace_name
这里需要说明的是普通用户没有修改默认表空间的权限, 如果需要修改可以给它设置权限,或者使用管理员用户为其设置默认表空间
ALTER USER system DEFAULT TABLESPACE SYSTEM;

6.创建表空间

创建表空间的语法:

CREATE [TEMPORARY] TABLESPACE tablespace_name 
TEMPFILE|DATAFILE 'xx.dbf' SIZE xx

如果datafile后面没有指定,则它会存储到我们默认的oracle安装目录下。下面我们分别创建一个永久表空间和临时表空间。
永久表空间

CREATE TABLESPACE test1_tablespace DATAFILE 'test1file.dbf' SIZE 10M;

临时表空间

CREATE TEMPORARY TABLESPACE temptest1_tablespace TEMPFILE 'tempfile1.dbf' SIZE 10M;

此时创建好这些表空间之后,那么我们如何查看表空间当中文件的具体路径,如果我们不知道默认路径怎么来查。
永久表空间可以通过dba_data_files这个数据字典去查看,注意表空间的名字要大写。

desc dba_data_files   查看数据字典的结构
select FILE_NAME from dba_data_files WHERE tablespace_name='TEST1_TABLESPACE';查看该字典中的文件名,就可以查到数据文件存放的位置

临时表空间 dba_temp_files

select FILE_NAME from dba_temp_files WHERE tablespace_name='TEMPTEST1_TABLESPACE';

7.修改表空间

这里分为两部分来讲解一个是修改表空间的状态,另一个是修改表空间当中的数据文件。
修改表空间状态:

  • 设置联机或脱机状态,当我们创建完一个表空间之后,它默认的状态是联机状态,设置成脱机状态就不能使用它了。
    ALTER TABLESPACE tablespace_name ONLINE|OFFLINE;
    例子:ALTER TABLESPACE TEST1_TABLESPACE OFFLINE;
    此时就已经更改了,那么我们如何查看表空间的状态呢?我们仍然能使用之前讲述的数据字典dba_tablespaces,查看数组字典结构可以发现,有这样一个字段STATUS,就是状态。
    所以查看表空间的状态例子:SELECT STATUS FROM dba_tablespaces WHERE tablespace_name='TEST1_TABLESPACE';
    改成联机状态:`ALTER TABLESPACE TEST1_TABLESPACE ONLINE;
  • 设置只读或可读写状态,默认情况下我们的表空间是一个READ WRITE状态。如果要更改表空间必须是在线状态,也就是联机状态才能够是只读或读写的,脱机状态是不能更改读写状态的。语法结构是:
    ALTER TABLESPACE tablespace_name READ ONLY | READ WRITE如果是只读就是READ ONLY,如果是读写就是READ WRITE。
    例子:ALTER TABLESPACE TEST1_TABLESPACE READ ONLY;
    此时还可以用之前的查看表状态,可以看到已经变成只读了SELECT STATUS FROM dba_tablespaces WHERE tablespace_name='TEST1_TABLESPACE';

8.修改数据文件

这里主要讲两方面的内容,一个是如何向表空间增加数据文件,一个是如何来删除数据文件。
增加数据文件语法:
ALTER TABLESPACE tablespace_name ADD DATAFILE 'xx.dbf' SIZE xx;这里面与我们创建表空间里的数据文件是一样的,那么这里面文件名可以写路径也可以直接写它的名字,这样就设置到它的默认位置了。
例子:ALTER TABLESPACE TEST1_TABLESPACE ADD DATAFILE 'test2_file.dbf' SIZE 10M;这样就添加了一个数据文件,查询数据文件还是之前的数据字典dba_data_files。SELECT FILE_NAME FROM dba_data_files WHERE tablespace_name='TEST1_TABLESPACE';可以看到结果返回来两个地址,也就是刚才来添加的。
我们除了能够增加数据文件外,我们还可以删除数据文件。但是注意我们不能删除创建表空间时第一个数据文件,如果要删除就要把整个表空间都删掉。删除数据文件的语法如下所示:
ALTER TABLESPACE tablespace_name DROP DATAFILE 'filename.dbf'';
例子:ALTER TABLESPACE TEST1_TABLESPACE DROP DATAFILE 'test2.dbf';

9.删除表空间

DROP TABLESPACE tablespace_name [INCLUDING CONTENTS];如果仅仅是想删除表空间而不删除数据文件,不写中括号中的内容就可以,如果连同内容要删除就全部写上。
例子:DROP TABLESPACE TEST1_TABLESPACE INCLUDING CONTENTS; 这时表空间及其中的内容都被我们删除掉了。