Oracle中用户,表空间,模式的含义

avatar
作者
筋斗云
阅读量:12

Oracle11g安装包下载

链接:

提取码:s32i

对于习惯了MySQL的人来说,使用起Oracle,刚开始确实有点不太顺手,我简单分享一下我的适应过程,首先得搞清楚几个Oracle中的概念:

一、表空间(Tablespace)

1、字面上来看,表空间就是个表的存储容器,在对应的物理级别上,表空间的数据内容是存储在一个或者多个数据文件或者临时文件中,这部分在我们编码中基本体现不出来,需要建用户的时候设置参数。

2、表空间主要有Permanent Tablespaces(永久表空间)、Temporary Tablespaces(临时表空间)、Undo Tablespaces(撤销表空间)三种,Oracle Database 11g 在使用数据库管理助手创建数据库的时候,默认会创建三个永久表空间(SYSTEM、SYSAUX、USERS),一个临时表空间(TEMP),一个撤销表空间(UNDOTBS1)。

可以使用Navicat for Oracle,打开表空间,可以很直观的看到,该工具我的另一篇博客中有提供:

在这里插入图片描述

3、 Oracle数据库有几个缺省表空间,其中SYSTEM和SYSAUX 表空间是一个Oracle数据库必须有的。

4、表空间的模式,也可以称为状态,可以设置表空间的online(联机)或者offline(脱机),Read/write(读/写) 或者 Read-only(只读) ,在新建表空间的时候会有选项供选择。

使用SQL建立表空间:

CREATE TABLESPACE "PETER"                      --表空间名PETER
    LOGGING                                     --启动重做日志
    DATAFILE 'F:\app\oradata\orcl\PETER.DBF' 	--指定对应的数据文件,可以一个或者多个
    SIZE 100M                                   --数据文件大小
    AUTOEXTEND ON                               --数据文件自动扩展
    NEXT 1024K                                  --一次扩展的大小
    MAXSIZE UNLIMITED                           --数据文件最大容量:无限
    EXTENT MANAGEMENT LOCAL                     --表空间本地管理
    SEGMENT SPACE MANAGEMENT AUTO ;             --存储管理方式,AUTO为自动方式

永久表空间:

用于存储数据库中的持久性模式对象,如表、索引、视图等,其数据在物理上对应一个或者多个数据文件。永久表空间也是我们实际中用的最多的一个类型的表空间。我们也重点关注该类型,其余的大家可以自行了解。

二、用户(User)

Oracle 数据库中的用户,其实就是一个认证登录的东西,用来连接和访问数据库的。这个与我们的代码部分息息相关:

username对应的就是数据库中建立的用户,在代码中体现如下,“ZHANG”就是我自己建立的用户

 spring.datasource.jdbc-url=jdbc:oracle:thin:@127.0.0.1:1521:ORCL
    spring.datasource.username=ZHANG
    spring.datasource.password=zhang123
    spring.datasource.driver-class-name=oracle.jdbc.driver.OracleDriver

特别需要注意:Oracle中每个用户的密码有效期是180天,我如果想要让变成永久的,可以如下处理:

ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;

建立用户就需要设置该用户的表空间,我喜欢用客户端创建,较方便,也可以使用SQL:

CREATE USER "ZHANG"         --创建用户ZHANG
PROFILE "DEFAULT"            --忽略对profile中的一些资源限制(默认就好)
IDENTIFIED BY "zhang@123"       --密码为zhang@123
DEFAULT TABLESPACE "PETER"  --默认表空间PETER,即数据默认存此表空间,可以使用第一步自己建立的表空间
ACCOUNT UNLOCK;              --解锁用户
--建完用户后要给用户授予权限
Grant connect, resource to ZHANG;
 
--或者授予管理员权限
GRANT "DBA" TO "ZHANG" WITH ADMIN OPTION;  

三、模式(scheam)

数据库模式由一个数据库用户拥有,并与用户名具有相同的名称。

我们在创建用户的时候,Oracle会自动创建一个与用户名相同的数据库模式,然后,该用户下所有的对象(也称为模式对象,如表、序列、视图、同义词、存储过程等),都是归属到这个数据库模式。

如果我们在代码中要访问某一张表,则可以这样写:

 
        INSERT INTO 
        "ZHANG"."PRIUSERDATA"     
        VALUES 
        (#{id}, #{date}, 3, 0, 5, 2, '', 1) 
    

这就很好理解模式的作用了, "ZHANG"是模式,“PRIUSERDATA” 是表名,结构是这样的:

在这里插入图片描述

总结起来就是:表空间其实就是存储的仓库,用户代表权限信息,模式类似MySQL中的数据库,它管理该用户的所有对象。

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!