Oracle导出数据库具有不同的SID

时间:2013-07-30 08:37:47

标签: database oracle oracle11g export

我一直在使用oracle中的exp和imp命令导出和导入我的数据库。

我通常使用

exp My_DB/MyPass file=dump_My_DB_20130729.dmp

imp My_DB/MyPass file=/tmp/dump_My_DB_20130729.dmp fromuser=My_DB touser=My_DB

My_DB是hte user / db,MyPass是密码。

我的数据库一直使用SID = orcl

我们的基础架构团队现已克隆My_DB数据库并输入另一个SID(orcl2) users / databsae名称相同。 SID是唯一的区别

如何使用exp和imp导出和导入。我发现this link描述了设置全局sid变量,我认为它将更新我导出/导入的数据库。理想情况下,我希望切换命令,以便我不必更改环境变量。

我无法通过docs

看到任何方法

是否有一种简单的方法可以更改出口的SID?

由于

1 个答案:

答案 0 :(得分:4)

如果您的tnsnames.ora文件中有两个数据库的条目,则可以specify the TNS alias to use as part of the connection string

exp My_DB/MyPass@orcl2 file=dump_My_DB_20130729.dmp

假设别名设置的名称与SID相同,如:

orcl=
 (DESCRIPTION= 
   (ADDRESS=(PROTOCOL=tcp)(HOST=my.host)(PORT=1521)) 
   (CONNECT_DATA=(SID=orcl)))
orcl2=
 (DESCRIPTION= 
   (ADDRESS=(PROTOCOL=tcp)(HOST=my.host)(PORT=1521)) 
   (CONNECT_DATA=(SID=orcl2)))

如果您在同一台计算机上执行此操作,则数据库处于打开状态,那么DBA可能已在全局tnsnames.ora中对其进行了配置。如果它不存在,或者您想要覆盖它,则可以创建自己的文件并将环境变量TNS_ADMIN指向它所在的目录。

它更可能包含连接数据部分中的SERVICE_NAME,而不是SID,尽管它们可能是相同的。如果您知道服务名称,则可以根据需要绕过tnsnames.ora文件:

exp My_DB/MyPass@//my.host:1521/<service_name> file=...

您还应该考虑使用datapumpexpdpimpdp)而不是遗留expimp,因为您使用的是11g。