oracle非系统用户

 新环境,新任务:
基于windows Oracle10g的原型环境,在linux下建一个测试库。库只有几十个G,但麻烦的是这个数据库中有将近700个用户。
怎么去创建这个测试库呢?首先想到的还是数据泵EXPDP/IMPDP

1. 在Linux下装一个与windos版本一致的oracle。
2. 用数据泵expdp在windows下导出所有数据。
3. 在linux上用impdp导入windos上导出的数据。

一条expdp/impdp就可以把所有用户的数据都导出/导入。

但麻烦的是现在有将近700个用户。如何确认那些用户需要在测试库上新建,以及如何给这些用户分配
对象权限,角色权限,系统权限,及表空间限额反倒是一个麻烦的问题。

首先确认一下oracle系统自带的用户。
SQL> SELECT CID, CNAME, NAME
  2    FROM (SELECT CID, CNAME, SCHEMA#
  3            FROM SYS.REGISTRY$
  4          UNION ALL
  5          SELECT A.CID, CNAME, B.SCHEMA#
  6            FROM SYS.REGISTRY$ A, SYS.REGISTRY$SCHEMAS B
  7           WHERE A.CID = B.CID) A,
  8         SYS.USER$ B
  9   WHERE A.SCHEMA# = B.USER#;

在DBA_USERS中排除oracle系统自带的用户,和一些默认表空间是SYSAUX,SYSTEM等表空间的用户后,

基本上就可以确定哪些是我们需要重建的用户。
一般我不会把业务用户建在USES表空间下,所以把USERS表空间也排除了。


SQL> SELECT USERNAME, CREATED, DEFAULT_TABLESPACE
  2    FROM DBA_USERS D
  3   WHERE USERNAME NOT IN
  4         (SELECT NAME
  5            FROM (SELECT SCHEMA#
  6                    FROM SYS.REGISTRY$
  7                  UNION ALL
  8                  SELECT B.SCHEMA#
  9                    FROM SYS.REGISTRY$ A, SYS.REGISTRY$SCHEMAS B
 10                   WHERE A.CID = B.CID) A,
 11                 SYS.USER$ B
 12           WHERE A.SCHEMA# = B.USER#)
 13  AND    D.default_tablespace NOT IN('SYSAUX','SYSTEM','USERS')
 14   ORDER BY 3, 2; 

确认了那些用户需要新建,就可以通过数据字典来生成新建用户及分配权限,角色的脚本了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值