我一直在使用 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) 用户/数据库名称相同。 SID 是唯一的区别
如何使用 exp 和 imp 导出和导入。我找到了 this link它描述了设置全局 sid 变量,我认为它会更新我导出/导入的数据库。理想情况下,我希望打开命令,这样我就不必去更改环境变量。
我看不到通过 docs 执行此操作的任何方式虽然
是否有一种简单的方法来更改导出的 SID?
谢谢
最佳答案
如果您的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。
关于database - 具有不同 SID 的 Oracle 导出数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17942115/