由于安全性考虑,需要把原先建在linux文件系统下的oracle系统数据文件
/opt/oracle/oradata/orcl1/users01.dbf
/opt/oracle/oradata/orcl1/sysaux01.dbf
/opt/oracle/oradata/orcl1/undotbs01.dbf
/opt/oracle/oradata/orcl1/system01.dbf,迁移到裸设备上,请问在不重建数据库的情况下,可以实现吗? 如果可以,请教如何实现,谢谢各位大虾的指教!
环境: linux as4 + oracle 10g
网上找到的都是 非系统数据文件的迁移 ,是用 $ dd if=/oradata/test.dbf of=/dev/raw/raw1 bs=1024k ,
然后 recover datafile , 这方法可以用在 系统数据文件上吗、??
/opt/oracle/oradata/orcl1/users01.dbf
/opt/oracle/oradata/orcl1/sysaux01.dbf
/opt/oracle/oradata/orcl1/undotbs01.dbf
/opt/oracle/oradata/orcl1/system01.dbf,迁移到裸设备上,请问在不重建数据库的情况下,可以实现吗? 如果可以,请教如何实现,谢谢各位大虾的指教!
环境: linux as4 + oracle 10g
网上找到的都是 非系统数据文件的迁移 ,是用 $ dd if=/oradata/test.dbf of=/dev/raw/raw1 bs=1024k ,
然后 recover datafile , 这方法可以用在 系统数据文件上吗、??
解决方案 »
- 为什么 dblinks 无效!!
- 基干表 T500是什么东西
- 安装VS2005会导致oracle11G无法登陆本地数据库,原因是监听配置问题?
- 求不用rownum的分页sql语句
- 看到升星星的希望了,庆祝一下(快乐有分)
- update t1 set CTNP= '" & vsCTNP & "' where recid='000001",更新失败,提示“字符串太长”
- 视图创建是可以用group by语句吗?我建立的视图涉及较多的计算(含有sum),使得我的查询速度效率很低,我应该怎么办?视图可以建立索引
- oracle 中,怎么在字符串中指定的位置插入一个字符
- 请教;关于利用数据链路建表等待的问题
- Oracle form6i神奇的事情
- oracle 10g 在oracle网站上下载以后,是否要某些注册号,CD-KEY才能正常使用?
- 有问题求教
你只能先把数据文件备份出来,再通过恢复的方式还原数据库
如果想尝试下可以参考下这个文章
http://www.ixpub.net/viewthread.php?tid=706503&highlight=HP-UX3.1 文件系统到raw逻辑卷
---------------------
a. 在文件系统上创建一个8M的数据文件
SVRMGR> create tablespace test datafile '/oracle/test_fs.dbf' size 8M;
b. 检查他的大小
%ls -la /oracle/test_fs.dbf -rw-r----- 1 hpsupp support 8396800 May 29 15:01 /oracle/test_fs.dbf
实际大小是8396800 =(8M + 8k) = (8*1024*1024) + (8*1024) ,oracle存储数据是从db_block_size=8k的偏移量开始的
c. 假定数据库没有打开,使用dd从文件系统到raw逻辑卷拷贝数据文件
%dd if=/oracle/test_fs.dbf of=/oracle/test_raw.dbf bs=8192
I/O error
1025+0 records in
1024+1 records out
(注意:/oracle/test_fs.dbf大小8396800,/oracle/test_raw.dbf大小8380416,dd试着去拷贝8M+8k 的文件到8M的 raw逻辑卷)
正确的方法是让dd跳过第一个数据块
%dd if=/oracle/test_fs.dbf of=/oracle/test_raw.dbf bs=8192 skip=1
1024+0 records in
1024+0 records out
d. mount数据库, 重命名datafile, 然后open database
SVRMGR> alter database rename file '/oracle/test_fs.dbf'
2> to '/oracle/test_raw.dbf';
SVRMGR> alter database open;
ORA-01122: database file 2 failed verification check
ORA-01110: data file 2: '/oracle/test_raw.dbf'
ORA-01251: Unknown File Header Version read for file number 2
错误的原因是oracle认为数据再raw逻辑卷中从db_block_size的偏移后开始,这确保保留的第一个数据块不被覆盖。
但与此同时,dd命令不支持这样(c例),所以要使用seek选项来跳过第一个保留块
%dd if=/oracle/test_fs.dbf of=/oracle/test_raw.dbf bs=8192 skip=1 seek=1
这个命令确保dd从8192bytes后开始读取文件系统数据文件,并从8192bytes后开始写raw逻辑卷当然由于数据文件raw逻辑卷大8k,dd命令还是会失败
%dd if=/oracle/test_fs.dbf of=/oracle/test_raw.dbf bs=8192 skip=1 seek=1
I/O error
1024+0 records in
1023+1 records out
如果裸设备卷大小增加到更大,如12MB,那样命令就开始工作了
%dd if=/oracle/test_fs.dbf of=/oracle/test_raw.dbf bs=8192 skip=1 seek=1
1024+0 records in
1024+0 records out
SVRMGR> alter database open;
Statement processed.
注意 dd拷贝整个文件系统数据文件到raw逻辑卷,如果count选项没被指定的话
不过没试过系统用的 只迁过非系统的.