DB2的schema对象

熟悉Oracle的人都知道Oracle的schema和user是同一个概念;每一个Oracle user就是一个oracle schema。那么DB2的schema和user是不是也是同一个概念呢?
答案是否定的。

背景原因
Oracle数据库是数据库本身管理用户的,即每一个要访问Oracle的用户都必须先在Oracle数据库里创建用户;而DB2并没有自己的用户帐号,DB2使用的是操作系统的帐号,DB2只需要对相应的操作系统账户进行授权,则该操作系统账户就可以访问DB2数据库。

DB2数据库几个概念

  1. instance, 同一台机器上可以安装多个DB2 instance。
  2. database, 同一个instance下面可以创建有多个database。
  3. schema, 同一个database下面可以配置多个schema。

所有的数据库对象包括table、view、sequence,etc都必须属于某一个schema。

另外,database是一个connection的目标对象,也就是说用户发起一个DB2连接时,指的是连接到到一个database,而不是连接到一个instance,也不是连接到一个schema。

但是DB2的启动和关停是以instance为单位的。可以启动一个instance,或者关停一个instance。但不可以启动或者关停一个数据库或者一个schema。

DB2的schema对象和user对象

  • 每一个DB2授权用户都有一个对应的schema,其名字和用户名相同;当然也可以再创建新的schema;这样DB2中user和schema是一种一对多的关系,而Oracle中是一对一的关系。
  • 每一个schema都有一个属主(即所属用户),这个属主在创建scheme的时候指定,如果没有指定值,缺省即当前用户,也就是说谁创建了这个schema,那么这个schema就属于谁。

对于每一个数据库connection,缺省操作都是在其相同用户名的schema下面,除非用户显示的更改了当前schema。

DB2 schema相关SQL语句

  • CREATE SCHEMA <schema-name> [AUTHORIZATION <schema-owner-name>]
  • DROP SCHEMA <schema-name> RESTRICT
  • SELECT CURRENT SCHEMA FROM SYSIBM.SYSDUMMY1
  • SELECT CURRENT USER FROM SYSIBM.SYSDUMMY1
  • SET CURRENT SCHEMA = <schema-name>
    原文作者:CodingCode
    原文地址: https://www.jianshu.com/p/e1f38505f789
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞