我是靠谱客的博主 犹豫导师,最近开发中收集的这篇文章主要介绍aix dd oracle数据文件,dd命令总结 - Oracle数据库管理 - ITPUB论坛-中国专业的IT技术社区...,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

1> SQL>create tablespace test datafile '/oracle/test_fs.dbf' size 8M;创建了一个8M的数据文件

2> 在操作系统上查看刚刚创建的数据文件:$ls -l /oracle/test_fs.dbf

-rw-r-----   1 oracle     dba    8396800 May 29 15:01 /oracle/test_fs.dbf

实际的OS文件大小为:8M+8K=(8*1024*1024)+(8*1024)

oracle的数据是从偏移量8K以后开始存储的。

如果数据库是关闭状态,那么用dd copy 数据文件从filesystem 到 raw logical volume:

$dd if=/oracle/test_fs.dbf of=/oracle/test_raw.dbf bs=8192

I/O error

1025+0 records in

1024+1 records out

报错是因为dd试图复制8M+8K 到8M的raw logical volume

应该在dd的时候跳过first block

$dd if=/oracle/test_fs.dbf of=/oracle/test_raw.dbf bs=8192 skip=1

然后在作mount database,rename datafile,open database

SQL>alter database rename file '/oracle/test_fs.dbf'

2> to '/oracle/test_raw.dbf';

SQL>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

这个错误的原因是从文件系统的dd到raw的时候虽然跳过了文件系统的第一块,可是将整个8M的datafile拷贝到raw logical volume的时候却没

有跳过raw logical volume的第一块,也就是偏移量的那一块被overwrite了。

那么将上面的dd命令改正为如下,其中seek=1保证了raw logical volume 的第一块被跳过。:

$dd if=/oracle/test_fs.dbf of=/oracle/test_raw.dbf bs=8192 skip=1

I/O error

1024+0 records in

1023+1 records out

然而还是报错,原因是整个raw logical volume一共8M(包括被跳过的偏移量8K),而datafile却是8M,所以失败了。如果创建了一个较大的raw

logical volume,比如12M,那么就不会报错了,如下:

%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

最后就可以打开数据库了:

SQL>alter database open;

Statement processed.

最后

以上就是犹豫导师为你收集整理的aix dd oracle数据文件,dd命令总结 - Oracle数据库管理 - ITPUB论坛-中国专业的IT技术社区...的全部内容,希望文章能够帮你解决aix dd oracle数据文件,dd命令总结 - Oracle数据库管理 - ITPUB论坛-中国专业的IT技术社区...所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(32)

评论列表共有 0 条评论

立即
投稿
返回
顶部