oracle复制一个用户出来,oracle复制一个用户的对象给其他用户

本文介绍了如何在Oracle中查看用户对象,包括通过PL/SQL工具、SQL查询以及用户权限的管理。重点讲解了如何复制一个用户对象到另一个用户,并强调了schema的概念以及对象导出导入的必要性和注意事项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先要学会如何查看一个用户拥有的对象。

1,可以在plsql中一这个用户登陆,在object面板中就可以看到tables,Indexes等,这些都是oracle对象,属于这个用户的。

2,可以造object面板中找到users,然后再下面有Objects,Object privileges,System privileges,Role grants。这里面再点开Objects就能看到

属于这个用户的对象。

3,使用sql语句:

select owner,object_name,object_type from dba_objects t

where owner='CM'

order by t.OBJECT_TYPE

当我们创建一个新的用户时,这个用户没有自己的对象(在tables里没有任何表)。

/*-- Create the user

create user cognos

identified by cognos

default tablespace CC_DATA

temporary tablespace TEMP;

-- Grant/Revoke role privileges

grant connect to cognos;

grant dba to cognos;

grant resource to cognos;

-- Grant/Revoke system privileges

grant unlimited tablespace to cognos;*/

select owner,object_name,object_type from dba_objects t

where owner='COGNOS'

order by t.OBJECT_TYPE

从此看出,oracle每个用户有自己的对象(例如表,索引,触发器等),这样管理数据的。

比如,我们使用新用户创建一张表HAHA,然后再换个用户cm登陆,查询这张表,

就会报错:ORA-00942:表或视图不存在。

在同一个实例下,这个表肯定是存在的,为什么查询就说不存在呢?因为在查询表时,默认前面都会有schema。

(schema也就是方案,有的叫模式,

其实一个schema对应一个用户,但注意schema和用户不是一个概念。在逻辑上一个schema表示一个用户拥有的对象。

好比,我有的东西是一个schema,我自己是一个user。你想要看我的东西,就需要指明看“我”的东西)。

一个用户对其他用户的对象进行操作,是需要权限的。

那么cognos想要查cm的表,就需要指明schema。

select * from cognos.HAHA t

在以上理解了用户,对象,schema之后,我们开始解决问题:拷贝一个用户的对象给另外一个用户。

语法例子

导出: exp cm/cm owner=cm file=c:\usercm.dmp rows=n               ---    rows=n  表示不导出数据

导入: imp cm/cm fromuser=cm touser=cognos file=c:\usercm.dmp

实例打印:

C:\Users\Administrator>exp cm/cm owner=cm file=c:\usercm.dmp rows=n

Export: Release 11.1.0.6.0 - Production on 星期一 4月 1 16:24:51 2013

Copyright (c) 1982, 2007, Oracle. All rights reserved.

连接到: Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - Production

With the Partitioning, OLAP, Data Mining and Real Application Testing options

已导出 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集

注: 将不导出表数据 (行)

即将导出指定的用户...

. 正在导出 pre-schema 过程对象和操作

. 正在导出用户 CM 的外部函数库名

. 导出 PUBLIC 类型同义词

. 正在导出专用类型同义词

. 正在导出用户 CM 的对象类型定义

即将导出 CM 的对象...

. 正在导出数据库链接

. 正在导出序号

. 正在导出簇定义

. 即将导出 CM 的表通过常规路径...

. . 正在导出表 CDB_BAS_CUS

. . 正在导出表 CDB_BRANCH

. . 正在导出表 CDB_CUS_ACC

. . 正在导出表 CDB_MOBILE_TEL_AREA

. . 正在导出表 CDB_TEL_AREA

. . 正在导出表 CDB_TEL_FEE_SUM

. . 正在导出表 CDB_TEL_OPER_DIS

. . 正在导出表 CDB_TRA_RET

. . 正在导出表 IVR_CALL_LOG

. . 正在导出表 IVR_CALL_LOG_HIS

. . 正在导出表 IVR_NODE_NAME

. . 正在导出表 IVR_TRAN_CODE_TRANSLATE

. . 正在导出表 IVR_TRAN_LOG_HIS

. . 正在导出表 IVR_TRA_LOG

. . 正在导出表 LDBCOLS

. . 正在导出表 PCI_EXSYS_INFO

. . 正在导出表 PCI_PARAM_INFO

. . 正在导出表 SIF_IVR_MENU

. . 正在导出表 TRANS_PATCH_SUM

. . 正在导出表 T_AC_RECORD_INFO

. . 正在导出表 T_DIS_CODE_NAME

. 正在导出同义词

. 正在导出视图

. 正在导出存储过程

. 正在导出运算符

. 正在导出引用完整性约束条件

. 正在导出触发器

. 正在导出索引类型

. 正在导出位图, 功能性索引和可扩展索引

. 正在导出后期表活动

. 正在导出实体化视图

. 正在导出快照日志

. 正在导出作业队列

. 正在导出刷新组和子组

. 正在导出维

. 正在导出 post-schema 过程对象和操作

. 正在导出统计信息

成功终止导出, 没有出现警告。

C:\Users\Administrator>imp cm/cm fromuser=cm touser=cognos file=c:\usercm.dmp

Import: Release 11.1.0.6.0 - Production on 星期一 4月 1 16:28:03 2013

Copyright (c) 1982, 2007, Oracle. All rights reserved.

连接到: Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - Production

With the Partitioning, OLAP, Data Mining and Real Application Testing options

经由常规路径由 EXPORT:V11.01.00 创建的导出文件

已经完成 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集中的导入

. 正在将 CM 的对象导入到 COGNOS

成功终止导入, 没有出现警告。

C:\Users\Administrator>

这时新用户和老用户有的对象一样,但是是拷贝了另外一份,而不是共享通一份,各自的对象互不影响。

在倒数据的时候,大多情况都是导表,但是有些对象是必须也导入的,比如触发器,索引等。当然我们可以把原来的对象的sql拷出来,

在用新用户登陆后,把sql执行一遍就可以。效果也是一样的。但是如果对象很多,你就觉得工作量是个天文数字。

这样导用户的对象,直接就搞定了。是不是很方便?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值