oracle exp 怎么导出所有用户

oracle exp 怎么导出所有用户,第1张

第一步我们要从一台windows服务器 A 上导出关于 Test1 这个用户的所有对象,然后导入到linux服务器 B 上的 Test2用户。(已知Test1密码为Test1passwd 或者用system用户导出也行)

2.B机器上Test2用户不存在,或Test2用户已经存在 两种情况(用户存在相对比较复杂)

如果Test2用户已经存在(数据没用,可以删除),级联删除用户及所有对象(有可能遇到有人正在连接,删除不掉的情况 方法参照下文),重新创建账号并赋权。

3.赋予适当的权限

*** 作步骤:

1.从 A 上导出数据文件到指定目录(目录名称自己定义,只要自己能找到就行,和用户名没有关系)

sqlplus /nolog conn / as sysdba exp Test1/Test1passwd owner=Test1 file=D:\files\Test1.dmp

2.在A机器上查看用户默认表空间,以便导入时创建一样的表空间

SQL>select username,default_tablespace from dba_users where username ='TEST1' USERNAME DEFAULT_TABLESPACE TEST1 CMIS

3.查看用户使用的表空间

SQL>select DISTINCT owner ,tablespace_name from dba_extents where owner like 'TEST1' OWNER TABLESPACE_NAME TEST1 XSL TEST1 CMIS

4.查看表空间对应的数据文件,以便在B上创建大小合适的数据文件。

SQL>select file_name,tablespace_name from dba_data_files where tablespace_name in ('CMIS','XSL') FILE_NAME BYTES TABLESPACE D:ORACLEPRODUCT10.2.0ORADATACMISDBCMIS 8728346624 CMIS D:ORACLEPRODUCT10.2.0ORADATACMISDBCMIS01.ORA 8204058624 CMIS D:ORACLEPRODUCT10.2.0ORADATACMISDBCMIS02.ORA 4194304000 CMIS D:ORACLEPRODUCT10.2.0ORADATACMISDBCMIS03.ORA 4194304000 CMIS D:ORACLEPRODUCT10.2.0ORADATACMISDBCMIS04.ORA 4194304000 CMIS D:ORACLEPRODUCT10.2.0ORADATACMISDBCMIS05.ORA 4194304000 CMIS D:ORACLEPRODUCT10.2.0ORADATACMISDBCMIS06.ORA 4194304000 CMIS D:ORACLEPRODUCT10.2.0ORADATACMISDBXSL.ORA 4194304000 XSL D:ORACLEPRODUCT10.2.0ORADATACMISDBXSL01.ORA 4194304000 XSL D:ORACLEPRODUCT10.2.0ORADATACMISDBXSL02.ORA 4194304000 XSL

5.检查B机器的表空间,看是否存在CMIS,XSL

select name from v$tablespace where name in ('XSL','CMIS')

查找不到,说明没有这个两个表空间,需要创建。

6.要导入数据的server没有xsl,cmis表空间。创建

create tablespace xsl logging datafile

'/opt/oracle/product/10.2.0/oradata/xsl.dbf'

size 15000M extent management local

create tablespace cmis logging datafile

'/opt/oracle/product/10.2.0/oradata/cmis.dbf' size 37000M extent management local

7.在服务器B上查找用户是否已经存在

SQL>select username from dba_users where username='TEST2'

接下来分为两种情况,如果不存在那么按照 [一] 方法,如果存在按照 [二]

创建用户

create user Test2 identified by Test2passwd default tablespace cmis temporary tablespace temp profile default

如果用户存在

drop user Test2 cascade

(删除用户及其拥有的所有对象)

此时如果这个用户在连接,drop会出错,必须先杀掉用户的session,然后再drop user

SELECT 'alter system kill session '''

||SID||','||SERIAL||''' immediate

' FROM V$SESSION WHERE USERNAME='TEST2'

(如果用户正在连接,构建命令并杀掉)

(上面的语句是构建出杀掉Test2用户session的语句)比如:

'ALTERSYSTEMKILLSESSION'''||SID||','||SERIAL||'''IMMEDIATE' alter system kill session '129,3570' immediate alter system kill session '131,2' immediate alter system kill session '133,572' immediate alter system kill session '135,1456' immediate alter system kill session '136,487' immediate alter system kill session '138,302' immediate alter system kill session '139,366' immediate

再复制这些语句,粘贴到sqlplus中执行,来杀掉Test2的session。

create user Test2 identified by Test2passwd default

tablespace cmis temporary tablespace temp profile default

(创建用户)

grant connect,resource to Test2

(授权)

8.把文件从A机器上拷贝到B机器上。假如拷贝过来放到tmp目录下/tmp/Test1.dmp

9.最后在A机器上按用户导入数据

一定注意执行imp时要退出sqlplus,在linux的shell下执行imp

[oracle@test2 ~]$ imp Test2/Test2passwd fromuser

=Test1 touser =test2 file=D:\xsldb.DMP log =app/oracle/file/log/DEV_PMODOC.log

以上的相关内容就是对Oracle数据库exp imp按用户导出导入实例的介绍,望你能有所收获。

1 将数据库TEST完全导出,用户名system 密码manager 导出到D:\daochu.dmp中\x0d\x0a exp system/manager@TEST file=d:\daochu.dmp full=y\x0d\x0a2 将数据库中system用户与sys用户的表导出\x0d\x0a exp system/manager@TEST file=d:\daochu.dmp owner=(system,sys)\x0d\x0a3 将数据库中的表table1 、table2导出\x0d\x0a exp system/manager@TEST file=d:\daochu.dmp tables=(table1,table2) \x0d\x0a4 将数据库中的表table1中的字段filed1以"00"打头的数据导出\x0d\x0a exp system/manager@TEST file=d:\daochu.dmp tables=(table1) query=\" where filed1 like '00%'\"\x0d\x0a \x0d\x0a 上面是常用的导出,对于压缩我不太在意,用winzip把dmp文件可以很好的压缩。\x0d\x0a 不过在上面命令后面 加上 compress=y 就可以了

你倒入时也用的是整个参数吗?如果是整个倒入,应该不会出这个问题的。是你的应用用户没有导过来么?如果应用用户没有,建议你再重新导入。

下面这个sql可以生成建用户有脚本,在源库执行,把执行结果放目标库里再执行:

select 'create user '||username||' identified by values '''||password||''' default tablespace '||default_tablespace||' temporary tablespace '||temporary_tablespace||'' from dba_users


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/9893961.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-03
下一篇2023-05-03

发表评论

登录后才能评论

评论列表(0条)

    保存