ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

15.Oracle的用户、Schema、数据库、表空间、数据文件的相互关系

2021-10-23 17:34:24  阅读:165  来源: 互联网

标签:profile 15 数据文件 数据库 用户 user Oracle Schema schema


1.前言

  今天彻底搞懂Oracle的用户、Schema、数据库、表空间、数据文件的相互关系

2.开始

  在进入抽象的概念之前,可以先看一下网上的这段比喻:

  “我们可以把Database(这里应该是指某一个sid对应的数据库)看做一个大仓库,仓库分了很多很多房间,Schema就是其中的房间,一个schema代表一个房间,table可以看做是每个schema中的床,table(床)被放入每个房间中,不能放置在房间外,user就是每个schema的主人,所以schema包含的是object,而不是user,user和schema是一一对应的,每个user在没有特别指定下只能使用自己schema(房间)的东西,如果一个user想要使用其他schema(房间)的东西,那就要看那个schema(房间)的user(主人)有没有给你这个权限了,或者看这个仓库的老大(DBA)有没有给你这个权限了。换句话说,如果你是某个仓库的主人,那么这个仓库的使用权和仓库中的东西都是你的(包括房间),你有完全的操作权,可以扔掉不用的东西从每个房间,也可以放置一些有用的东西都某一个房间,你还可以给每个user分配具体的权限,也就是他到某一个房间能做写什么,是只能看(read-only),还是可以像主人一样有所有的控制权(R/W).这个就要看这个user所对应的角色role了。

3.具体介绍

  (1)数据库:

  Oracle数据库时数据的物理存储。这就包括(数据文件ORA或者DBF、控制文件、联机日志、参数文件)。其实Oracle数据库的概念和其它数据库不一样,这里的数据库是一个操作系统只有一个库。可以看做是oracle就只要一个大数据库。

  (2)实例

  一个oracle实例(Oracle instance)有一系列的后台进程(Backgroud processes)和内存结构(Memory Structures)组成,一个数据库可以有n个实例。

  (3)用户(user)

  用户是在实例下建立的。不同实例可以建立相同名字的用户。  

-- 创建新用户时,同时要指明表空间和临时表空间(建立创建时就指定表空间名)
 create user testuser
         #profile "default"
         identified by "password123"
         default tablespace ts_test     ##这里要指定默认表空间
         temporary tablespace tmp_ts_test  ##这里指定了临时表空间
         quota 500m on ts_test             ##用户在表空间的限额
         account unlock;                   ##解锁用户

   *关于profile的说明(使用profile文件实现用户口令限制与资源限制)

  profile是口令限制,资源限制的命令集合,建立oracle数据库时,oracle会自动建立命为default的profile,初始化的default没有进行任何口令和资源限制,使用profile有以下一些注意事项:

  1.建立profile时,如果只设置了部分口令或者资源限制选项,其他选项会自动使用默认值(default的相应选项)

  2.建立用户时,如果不指定profile选项,oracle会自动将default分配给相应的数据库用户

  3.一个用户只能分配一个profile。如果要同时管理用户的口令和资源,那么在建立profile时应该同时指定口令和资源选项。

  4.使用profile管理口令时,口令管理选项总是处于被激活状态,但如果使用profile管理资源,必须要激活资源限制。

  *关于profile使用实践

  1)查看当前存在的profile文件 

select distinct profile from dba_profiles;
--查看指定profile文件中各资源的限制情况:
select resouce_name,limit from dba_profiles where profile='DEFAULT';

  2)修改现在profile文件中资源选项: 

1 alter profile default limit FAILED_LOGIN_ATTEMPTS 1 password_lock_time 3;

  3)创建一个新的profile文件

1 create profile lock_accout limit failed_login_attempts 3 password_lock_time 10;

  4)让用户使用新的profile文件:

1 alter user testuser profile lock_accout;

  5)查看用户当前使用的profile文件 

select username,profile from dba_users;

  6)使用profile文件限制用户对资源的使用;

1 --必须先激活资源限制:
2 alter system set resource_limit=TRUE scope=memory;
3 --对资源限制做修改:
4 alter profile lock_accout limit cpu_per_session 5000;

  7)删除profile

1 drop profile lock_accout;

  8)删除profile并将使用当前profile的用户profile改为default

1 drop profile lock_accout cascade;

  9)以下列出所有profile相关参数内容以便参考: 

FAILED_LOGIN_ATTEMPTS:用于指定联系登陆的最大失败次数.
 
PASSWORD_LOCK_TIME:用于指定帐户被锁定的天数.
PASSWORD_LIFE_TIME:用于指定口令有效期
PASSWORD_GRACE_TIME:用于指定口令宽限期.
PASSWORD_REUSE_TIME:用于指定口令可重用时间.
PASSWORD_REUSE_MAX;用于指定在重用口令之前口令需要改变的次数.
PASSWORD_VERIFY_FUNCTION;是否校验口令(校验将值改为VERIFY_FUNCTION)
CPU_PER_SESSION:用于指定每个会话可以占用的最大CPU时间.
LOGICAL_READS_PER_SESSON:用于指定会话的最大逻辑读取次数.
PRIVATE_SGA:用于指定会话在共享池中可以分配的最大总计私有空间.需要注意,该选项只使用与共享服务器模式.
COMPOSITE_LIMIT:用于指定会话的总计资源消耗(单位:服务单元).
CPU_PER_CALL:限制每次调用(解析,执行或提取数据)可占用的最大CPU时间(单位:百分之一秒)
LOGICAL_READS_PER_CALL:用于限制每次调用的最大逻辑I/O次数.
SESSIONS_PER_USER:用于指定每个用户的最大并发会话个数.
CONNECT_TIME:用于指定会话的最大连接时间.
IDLE_TIME:用于指定会话的最大空闲时间.

  (4)schema

  在Oracle中,一般一个用户就对应一个schema,该用户的schema名等于用户名,并作为该用户缺省schema,用户是不能创建schema的,schema在创建用户的时候创建,并可以指定用户的各种表空间(这点与pg是不同,pg是可以创建schema并指派给某个用户)。当前连接到数据库上的用户创建的所有数据库对象都默认数据这个schema(在不指明schema的情况下),比如若用户scott连接到数据库,然后create table test(id int null)创建表,那么这个表被创建在了scott这个schema中;但若这样create table testuser.test(id int not null)的话,这个表被创建在了testuser这个schema中,当前前提是权限允许(即testuser用户给scott用户在其schema下创建数据表的权限)。由此看来,schema是一个逻辑概念。

  但一定要注意一点:schema并不是在创建user时就创建的,而是在该用户创建了第一个对象之后才将schema真正创建的,只有user下存在对象,他对应的schema才会存在,如果user下不存在任何对象了,schema也就不存在了。

  (5)表空间

  表空间是一个用来管理数据存储逻辑概念,表空间只是和数据文件(ORA或者DBF文件)发生关系,数据文件是物理的,一个表空间可以包含多个数据文件,而一个数据文件只能隶属一个表空间。

  (6)数据文件(dbf、ora)

  数据文件是数据库的物理存储单位,数据库的数据在逻辑上是存储在表空间中的,但真正落地是在某一个或者多个数据文件中。而一个表空间可以由一个或者多个数据文件组成,一个数据文件只能属于一个表空间。一旦数据文件被加入到某个表空间后,就不能删除这个文件,如果要删除某个数据文件,只能删除其所属于的表空间才行。

  

 

 

  

  

 

 

  

  

标签:profile,15,数据文件,数据库,用户,user,Oracle,Schema,schema
来源: https://www.cnblogs.com/zmc60/p/15449052.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有