今天是8月8日。
倒数第三个星期了,今天上午开例会,罗总提了一下最后实习结束时全公司所有的实习生是会有统一的一次答辩的。到时每个人是得拿出一些产出物,而不仅仅是一些体会心得,不然如何能说明自己做了一些东西呢。
所以剩下半个多月的时间里,要静下心去多做一点事,起码让自己的工作是处于一种饱和的状态。
一、公司数据库框架结构介绍
**
**
之前在《关于Oracle中方案(schema)的 含义》中已经了解了数据库底层的一些框架构造,那么对应实际在公司中的情况是怎样的呢?
从上面的图中可以看到,实际上一个公司的所有的数据都是由最底层的一个DBA(也就是数据库管理员来管理的),DBA会建立不同的数据库,目前公司里的数据库主要有上面的三个:BGRAC、JYRAC、WEBRAC这三个库。这三个库的区别在如下:
JYRAC即交易RAC,RAC的概念在之前也已经介绍过了,这里只说说这个JYRAC中存储的数据。在以前的紫龙哥的培训中有讲到数据中心的数据来自客服,TA,直销等系统。这里JYRAC对应存储的是交易系统和TA系统中产生的数据。
同样,WBERAC对应会存储金证和直销系统中产生的数据。
而BGRAC就是之前一直所说的数据中心,数据中心中的数据是从OA系统以及JYRAC和WEBRAC镜像备份过来的。因为在JYRAC和WEBRAC中的数据是每天都不断在增加的,这些数据会被全部导入BGRAC中,那么BGRAC中也就是数据中心中的数据大致分为三类:营销数据、投研数据、OA数据。
二、现在讲到的数据库拆分和迁移又是怎么一回事呢?
**
**
从上面的介绍中知道现在数据中心里的数据逻辑上是有三类的,但在实际中并未将这三类数据分离出来。现在部门的想法是将BGRAC这个数据库拆分为两块,投研和营销数据为一块,OA数据为一块,分别迁移到两个对应的库中:BGRAC和DWRAC,然后将原来旧的BGRAC库清空进行资源回收。接下来问题就开始出现了。
我们知道,一个数据库可以对应多个用户(即schema),现在的BGRAC库中属于营销和投研的schema有下图中所示的8个:CRM、CRMREAD、DAS、ODS、ODSREAD、queryuser、LHJY、report。由于在一个库中,A用户是可以将自己拥有的表的一些操作权限(比如select,update等)授权给其他用户的。
那么我们直接将原有的这8个schema中所有的对象数据迁移到新的数据库中后,在其他的schema中就可能存在有一些函数或者存储过程引用了这8个schema中的数据,一旦这些数据被迁移走,其他与之有关联的应用可能就会全部报错。
三、怎样去解决出现的问题?
**
**
为了解决上述问题,就需要找出这八个用户(schema)中的表都被授权给了其他哪些用户使用,这里涉及到数据库的系统表:
**select * from user_tab_privs_made; 用于查看我们把哪些表—>分发—>哪些用户
select * from user_tab_privs_recd; 用于查看哪些用户把哪些表—>分发—>我们 **
user_tab_privs :当前用户的对象权限信息
此外还有一个表user_tab_privs_made,与user_tab_privs表基本一样,只是多了一个字段owner,用来标志该表的拥有者。
(当然还有很多其他系统表如all_objects :数据库所有的对象的信息,select * from all_objects 更多表的使用在后面有涉及时再去详细介绍)
以SYS这个数据库为例,查询出来的部分数据如下,
可以清楚看到对应,表的拥有者-表名-被授权者的数据。那么实际可以去BGRAC中找出使用了营销和投研8个schema中的表的用户,然后进行进一步沟通核对,如果数据库迁移对他们的业务产生了影响应该怎样去解决。
后续的操作过程会再慢慢补充。