我一直在使用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?
由于
答案 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=...
您还应该考虑使用datapump(expdp
和impdp
)而不是遗留exp
和imp
,因为您使用的是11g。