ICode9

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

DB2(LUW)等效于Oracle“drop user cascade”

2019-08-06 14:50:51  阅读:242  来源: 互联网

标签:linux oracle instance db2 schema


此问题与为在LUW上运行数据库的应用程序创建和初始化测试和开发数据库有关(linux-unix-windows)

在oracle,我们有

>一个名为oracle的os用户(在linux上),
>一个名为sys或system的admin oracle用户
>作为应用程序对象的固定预定义oracle用户
老板,让我们称之为appowner
>作为应用程序用户的oracle用户,即有限制
对appowner拥有的对象的优先权,我们称之为
APPUSER

无论何时需要初始化数据库,即从头开始,我们首先使用sys或system oracle用户连接到oracle,然后发出以下命令:

DROP USER appowner CASCADE;

然后我们开始重新创建用户及其从头开始拥有的对象.我们还向appuser授予了appowner创建的对象的一些优先权

除非要对数据库执行任何管理任务,否则应用程序始终以appuser而不是appowner身份登录.

现在我们将这个应用程序移植到db2,这就是我们陷入困境的地方.

对于初学者,db2创建这些os用户,这也是db2用户:

dasusr1
db2inst1
db2fenc1

这三个用户如何映射到sys / system,appowner和appuser?

我相信dasusr1是sys / system的粗略等价物,
db2inst1粗略等同于appowner,和
db2fenc1是appuser的粗略等价物

(如果我错了,请纠正我,我完全理解映射不完全正确)

既然如此,如果我必须删除db2inst1拥有的所有对象,我是否以dasusr1身份登录并删除用户db2inst1?

oracle用户和db2用户之间并没有真正的一对一映射,因为

> db2inst1可以创建多个数据库,而appuser映射到oracle中的一个数据库
>在db2数据库中,可以有多个模式,而在oracle中,一个用户映射到一个模式

所以这有点令人困惑.如果有从oracle到db2移植应用程序经验的人可以对db2和oracle用户之间的等效性有所了解,这将有助于最终导致找到oracle drop user cascade的db2等价物.

解决方法:

@Chris Aldrich给出了一个很好的解释.我将在这里添加一些内容.

1)DB2中没有“数据库用户”的概念.所有身份验证都发生在操作系统中的数据库或实例之外.此外,与Oracle不同,用户ID和架构名称之间没有直接关系.在DB2中,模式只是对象的逻辑分组,它没有任何特殊的安全功能.任何用户都可以创建任何架构.例如,当以mustaccio身份登录时,我运行语句create table foo(id int …),并创建一个模式MUSTACCIO(如果它还没有),并在其中创建一个表.如您所见,架构名称解析默认为我的授权ID.但是,我不妨运行语句create table alok.foo(id char(3)…),在这种情况下创建一个模式ALOK及其中的表. mustaccio将是两个表的所有者.

2)关于用户ID映射,我可能会说DAS所有者dasusr1和受防护用户db2fenc1不映射到Oracle数据库中的任何内容.实例所有者db2inst1映射到oracle用户标识.创建数据库的人(例如,可能是db2inst1或其他授权通过SYSADM组中的成员身份执行此操作的用户)在该数据库中获取DBADM和SECADM权限,这有点类似于系统和/或sys(我是不确定Oracle数据库中两者之间的区别是什么.如果您需要拥有数据库对象的功能ID,则可以在操作系统中创建应用程序,为其授予适当的权限,并在创建对象时连接到该用户.同样,您在操作系统中创建appuser,授予对象访问权限,并让您的应用程序以该用户身份进行连接.

3)由于DB2中没有数据库用户,因此您无法删除用户.要删除特定模式中的对象,可以使用ADMIN_DROP_SCHEMA() procedure.

标签:linux,oracle,instance,db2,schema
来源: https://codeday.me/bug/20190806/1600326.html

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

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

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

ICode9版权所有