DB2的schema对象

作者: CodingCode | 来源:发表于2017-05-14 22:08 被阅读214次

    熟悉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>

    相关文章

      网友评论

        本文标题:DB2的schema对象

        本文链接:https://www.haomeiwen.com/subject/mdtcxxtx.html