-
何良磊 初学数据Lv2
发表于2018-6-14 09:39
悬赏1
已解决
需要有创建表的权限显而易见,为什么还要有触发器和序列的权限?
因为部分系统表的主键字段是个自增长字段,如日志表,oracle中自增长字段由序列+触发器实现,所以,需要创建序列和触发器的权限,但不是所有数据库都需要这2权限,如db2、sql server、mysql等,这些数据库创建表时能添加自增长列,不需要序列+触发器实现,所以,不需要这2权限。
看到这里大家估计有疑问了,对于存放主题表和维表数据的库不是只要有表的查看权限就行了吗,为什么还要有其它权限?
我们来看看通过BI的维表管理能做哪些事情:
- 根据数据库表建维表——这需要有表的查看(select)权限
- 修改维表的字段设置,保存时会同步到对应的数据库表中——这需要有修改表结构(alter)的权限 . 值得注意的是,即使我们没有做任何修改,点击保存依然会按现在的维表结构去修改对应的数据库表结构。因为程序不知道目前的维表结构和数据库表结构是否一致。
- 通过编辑内容能插入或者修改表中数据——这需要有表的插入(insert)、修改(update)、删除(delete)权限
- BI既能根据已有数据库表创建维表,也能在创建维表时指定一个不存在表名,根据维表中的字段设置在数据库中自动创建一张数据库表——这需要用户有创建表(table)的权限
不过,如果我们只是从数据库表创建维表和主题表,不会通过维表和主题表功能创建数据库表、修改表结构或者表中数据,那么只有表的查看(select)权限足够了。
综上,主题表和维表所在数据库最小权限要求为有相关表的查看(select)权限。但有些数据库比较特别,如Sybase,我们访问用户A创建的表T1,不是select * from A.T1,而是先要搞清楚T1表放在哪个schema下,假设是aa,则select * from aa.T1。在数据库连接池没有指定schema的情况下(一般不会指定),BI默认在该用户的默认schema下查找,而Sybase中,BI是通过在这个库中创建一张表以获取当前连接用户的默认schema的,这意味着用户需要有创建表的权限。
i相对单纯些,只有一个数据库连接池,存放机构用户权限等系统表以及任务表等。对于这个连接池的数据库用户,要求有创建表(table)、视图(view)、序列(sequence)、触发器(trigger)的权限。
i中每一个任务都会对应了一套数据库表和视图。数据库表中的字段名是根据报表表元单元格代号来的,形如A1,A2,B1,B2等(从i5.1开始,数据库表中的字段也可是报表中有业务涵义的字段名),而视图中的字段名则来自报表中有业务涵义的字段名。
- 如果这个用户需要存储过程用于主题表和维表数据的抽取,那么还需要创建存储过程(procedure)的权限;
- 如果源数据来自其它库而用到了数据链路,则还需要创建数据链路(database link)的权限;
- 如果还需要创建同义词则需要有创建同义词(synonym)的权限等等。这些额外的权限要求要视项目的实际情况而定。
方案一:
grant connect to TEST;
grant resource to TEST;
grant create view to TEST;(BI41之前的BI版本不需要)
方案二:
grant connect to TEST;
grant create table to TEST;
grant create view to TEST;(BI41之前的BI版本不需要)
grant create sequence to TEST;
grant create trigger to TEST;
alter user TEST quota unlimited on 默认表空间名。
5个回答
数据库是Oracle 11g吗?如果是Oracle 11g,我们给BI用户赋了connect和resource角色之外,还要单独赋create view权限。如果需要创建数据链路,或同义词,那就还要单独赋create dblink和create synonym之类的。
[size=13.3333px]
需要有创建表的权限显而易见,为什么还要有触发器和序列的权限?
因为部分系统表的主键字段是个自增长字段,如日志表,oracle中自增长字段由序列+触发器实现,所以,需要创建序列和触发器的权限,但不是所有数据库都需要这2权限,如db2、sql server、mysql等,这些数据库创建表时能添加自增长列,不需要序列+触发器实现,所以,不需要这2权限。
看到这里大家估计有疑问了,对于存放主题表和维表数据的库不是只要有表的查看权限就行了吗,为什么还要有其它权限?
我们来看看通过BI的维表管理能做哪些事情:
不过,如果我们只是从数据库表创建维表和主题表,不会通过维表和主题表功能创建数据库表、修改表结构或者表中数据,那么只有表的查看(select)权限足够了。
综上,主题表和维表所在数据库最小权限要求为有相关表的查看(select)权限。但有些数据库比较特别,如Sybase,我们访问用户A创建的表T1,不是select * from A.T1,而是先要搞清楚T1表放在哪个schema下,假设是aa,则select * from aa.T1。在数据库连接池没有指定schema的情况下(一般不会指定),BI默认在该用户的默认schema下查找,而Sybase中,BI是通过在这个库中创建一张表以获取当前连接用户的默认schema的,这意味着用户需要有创建表的权限。
i相对单纯些,只有一个数据库连接池,存放机构用户权限等系统表以及任务表等。对于这个连接池的数据库用户,要求有创建表(table)、视图(view)、序列(sequence)、触发器(trigger)的权限。
i中每一个任务都会对应了一套数据库表和视图。数据库表中的字段名是根据报表表元单元格代号来的,形如A1,A2,B1,B2等(从i5.1开始,数据库表中的字段也可是报表中有业务涵义的字段名),而视图中的字段名则来自报表中有业务涵义的字段名。
方案一:
grant connect to TEST;
grant resource to TEST;
grant create view to TEST;(BI41之前的BI版本不需要)
方案二:
grant connect to TEST;
grant create table to TEST;
grant create view to TEST;(BI41之前的BI版本不需要)
grant create sequence to TEST;
grant create trigger to TEST;
alter user TEST quota unlimited on 默认表空间名。