100分求助:如何把服务器server1的oracle数据库db1,迁移到服务器server02的oracle上,并保持数据库同名,即db1。

skykevin 2009-08-05 05:41:35
注:两台服务器上的oracle版本均为:10.2.0.1.0

本人用下列方法没成功,现求成功方法。
(1) 在server01的db1中由sys创建一个表test1,然后执行如下导出命令:
1)C:>SQLPLUS sys/密码 as sysdba
2)SQL>CREATE DIRECTORY ldl_dump AS 'c:\ldl_backup';
3)SQL>GRANT READ,WRITE ON DIRECTORY ldl_dump to system;
4)SQL>host expdp system/密码 directory=ldl_dump dumpfile=ldlfull.dmp full=y
运行结果:成功。

(2)先把导出的文件夹'c:\ldl_backup'从服务器1拷到服务器2上并保持文件夹同名,用dca建一个空数据库db1,再执行如下导入指令:
1)C:>SQLPLUS sys/密码 as sysdba
2)SQL>CREATE DIRECTORY ldl_dump AS 'c:\ldl_backup';
3)SQL>GRANT READ,WRITE ON DIRECTORY ldl_dump to system;
4)SQL>host impdp system/密码 directory=dump_dir dumpfile=ldlfull.dmp full=y。
运行结果:成功但提示有很多错。

检查发现:在server02的db1中不论在sys用户下,还是在system用户下都找不到表test1,说明没有正确迁移。求高手指教!
...全文
143 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
yangyt 2009-08-13
  • 打赏
  • 举报
回复
[Quote=引用楼主 skykevin 的回复:]
注:两台服务器上的oracle版本均为:10.2.0.1.0

本人用下列方法没成功,现求成功方法。
[/Quote]

直接拷贝所有datafiles,tempfiles,redo files,parameter file,controlfiles,password files,and listener files
然后oradim新建实例,启动数据库
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 yangyt 的回复:]
引用楼主 skykevin 的回复:
注:两台服务器上的oracle版本均为:10.2.0.1.0

本人用下列方法没成功,现求成功方法。


直接拷贝所有datafiles,tempfiles,redo files,parameter file,controlfiles,password files,and listener files
然后oradim新建实例,启动数据库

[/Quote]
tempfiles不用copy
parameter file 需要改一下
oradim运行后,必须重建controlfiles,然后才能open
ojuju10 2009-08-13
  • 打赏
  • 举报
回复
迁移的时候,备份所有的脚步到另外一台机器上运行
ruild88 2009-08-13
  • 打赏
  • 举报
回复
强烈建议用RMAN来进行数据库迁移操作。
skykevin 2009-08-12
  • 打赏
  • 举报
回复
up
qq478086691 2009-08-12
  • 打赏
  • 举报
回复
学习了···
liuyi8903 2009-08-11
  • 打赏
  • 举报
回复
用DG直接迁移过去,多快呀,之后再switchover
  • 打赏
  • 举报
回复
10g中用导入导出泵进行全库迁移主要需要执行的用户具有以下角色:
imp_full_database或dba
emp_full_database或dba

SQL> select * from user_role_privs;

USERNAME GRANTED_ROLE ADM DEF OS_
------------------------------ ------------------------------ --- --- ---
SYSTEM AQ_ADMINISTRATOR_ROLE YES YES NO
SYSTEM DBA YES YES NO
SYSTEM MGMT_USER NO YES NO

因为system已经有dba的角色,所以可以进行全库导入或导出,但是即使full=y这个参数已经指定了,sys用户的很多对象也不会被导出,主要是很多数据字典之类的和数据库相关的对象.
所以我建议你别用sys用户做测试也是这个原因,用sys用户做测试根本就没意义.
skykevin 2009-08-10
  • 打赏
  • 举报
回复
up
metalsolid 2009-08-10
  • 打赏
  • 举报
回复
受教了
meditatorx 2009-08-08
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 kysstech 的回复:]
不要在sys和system里面建表,如果是其他用户的记得导出语句带上用户名
[/Quote]
mark
kysstech 2009-08-08
  • 打赏
  • 举报
回复
不要在sys和system里面建表,如果是其他用户的记得导出语句带上用户名
zzzzzyyy 2009-08-07
  • 打赏
  • 举报
回复
我感觉sys/system都可以吧,主要是FULL=Y
skykevin 2009-08-07
  • 打赏
  • 举报
回复
to:inthirties

用什么用户,才能把所有内容正确导出,导入。
skykevin 2009-08-06
  • 打赏
  • 举报
回复
to:jinxino_o

两台服务器都是:windows 2003server企业版
zzzzzyyy 2009-08-06
  • 打赏
  • 举报
回复
进来学习,很受用,哈哈
inthirties 2009-08-06
  • 打赏
  • 举报
回复
sys 不等于 system

你用sys创建的test表,当然是用system导不出来的。

不要把用户表,建立在sys和system的schema里。
  • 打赏
  • 举报
回复
同系统之间还一个更简单的方法:
用RMAN
1.先用RMAN备份一下server1的库
rman target sys/密码@tns nocatalog
RMAN>backup database include current controlfile plus archivelog format='你的路径';
2.在server2上建立相应的OS目录.并将rman的备份片copy到server2的相应目录下,必须和server1的路径

一样.
3.建立复制数据库的服务,你是windows,所以可以用
oradim -new -sid db1 -intpwd 密码
4.建立复制数据库的参数文件,你可以在server1上用create pfile from spfile生成一个copy过来改改就


5.在server2上启动实例
set ORACLE_SID=db1
sqlplus / as sysdba
SQL>startup nomunt
6.在server2上启动listener并在server1上配置tns
7.用RMAN复制
在server1上运行:
rman target sys/密码 auxiliary sys/密码@tns
RMAN>run {
set newname for datafile 1 to '新路径';(如果server1和server2路径完全一样,可以去掉这步)
......
set newname for tempfile 1 to '新路径';
duplicate target database to 'server1的实例名' logfile
'server2的新路径\redo01.log' size 10m,
... redo02.log ...
;
}
然后一切都自动进行了,O了吧,别说我这么讲你也不会!
mytesto 2009-08-05
  • 打赏
  • 举报
回复
路过
  • 打赏
  • 举报
回复
看了一下你的方法,你的方法其实也是可以的,只是测试的用户不对,sys用户在用导入导出泵的时候,很多东西都是不会被导过来的,况且应用程序是不可能用sys用户的,你建个别的用户建文件再试一下你的方法就O了
加载更多回复(2)

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧