因為喜歡新的東西,所以基本上電腦的開發工具都是最新的,oracle也裝了11g R2,但是同事同學不是11g R1就是10G的,從我這裡匯出去的dmp檔案在他們那邊導進去,都顯示:
IMP-00010:不是有效匯出檔案,頭部驗證失敗
為了這個問題一直苦惱,差點就想卸掉11g然後裝10g了,後來想想,頭部驗證,那麼頭部到底是什麼,用Notepad++查看了dmp檔案,發現頭部真的顯示一些東西:
11g R2:V11.02.00
11g R1:V11.01.00
10g:V10.02.01
把版本改成對方機子資料庫版本,執行imp就不再報錯了。
考慮到如果檔案過大,可能打不開導致死機,做個小程式。(C# WINFORM)
2個按鈕的事件:
private void button1_Click(object sender, EventArgs e)
{
OpenFileDialog file = new OpenFileDialog();
file.InitialDirectory = Application.ExecutablePath;
if (file.ShowDialog() == DialogResult.OK)
{
String path =label11.Text= file.FileName;
FileStream fs = File.OpenRead(path);
fs.Seek(0, SeekOrigin.Begin);
byte[] byData = new byte[100];
fs.Read(byData, 0, 50);
string charData = new UTF8Encoding(true).GetString(byData, 0, byData.Length);
string[] da = System.Text.RegularExpressions.Regex.Split(charData, @":V", RegexOptions.IgnoreCase);
Regex r = new Regex(@":V\d{2}\.\d{2}\.\d{2}");
Match m = r.Match(charData);
label9.Text = m.Index.ToString ();
label10.Text = m.Length.ToString();
textBox1.Text = System.Text.RegularExpressions.Regex.Split(m.Value, @":V", RegexOptions.IgnoreCase)[1];
fs.Close();
}
}
private void button2_Click(object sender, EventArgs e)
{
Regex r = new Regex(@"\d{2}\.\d{2}\.\d{2}");
Match m = r.Match(textBox1.Text);
if (m.Success)
{
FileStream fs = File.OpenWrite(label11.Text);
fs.Seek(int.Parse(label9.Text.ToString())+2, SeekOrigin.Begin);
Byte[] info = new UTF8Encoding(true).GetBytes(textBox1.Text);
fs.Write(info, 0, info.Length);
fs.Close();
MessageBox.Show("版本修改成功。");
}
else
MessageBox.Show("版本格式錯誤。");
}
http://files.cnblogs.com/alxc/AlxcTools.rar