oracle复制数据库文件不动,复制数据库中需要注意的几点事项
任務(wù)簡(jiǎn)介:
此次復(fù)制的生產(chǎn)庫(kù)數(shù)文件為9.18TB,實(shí)際分配的數(shù)據(jù)大小為5.16TB,使用RMAN壓縮備份后為1.1TB。
復(fù)制端數(shù)據(jù)庫(kù)采用單實(shí)例ASM存儲(chǔ)方式管理,數(shù)據(jù)庫(kù)版本為11.2.0.4. 數(shù)據(jù)文件目錄為+DATA,14.5TB,歸檔日志目錄為+ARCH,2TB。
生產(chǎn)庫(kù)數(shù)據(jù)文件大小
SQL> select sum(bytes)/1024/1024/1024 GB from dba_segments;
GB
----------
5287.02454
生產(chǎn)庫(kù)實(shí)際分配的大小
SQL> select sum(bytes)/1024/1024/1024 GB from dba_data_files;
GB
----------
9402.70592
注意事項(xiàng)一: 避免set newname腳本中出現(xiàn)同名文件
在rman中使用set newname時(shí)候?yàn)榱吮3治募蜕a(chǎn)庫(kù)一致,可以采用手工命名的方式。例如:
set newname for datafile 1 to ‘+DATA/cmsdb/datafile/system01.dbf’;
這個(gè)方式出現(xiàn)了一個(gè)潛在的隱患,如果生產(chǎn)庫(kù)中存在相同名字的數(shù)據(jù)文件存放在不同的目錄中,在編寫腳本時(shí)候容易出現(xiàn)重名的情況,導(dǎo)致RMAN restore出錯(cuò)。
select name from v$datafile where name like ‘%DATA_P008.dbf%’;
/sgpmdb/oradata/u01/DATA_P008.dbf
/sgpmdb/oradata/u06/DATA_P008.dbf
當(dāng)我采用vi編輯命令將目錄/sgpmdb/oradata/u01 統(tǒng)一改成+DATA/sgpmdb/datafile 就會(huì)自己創(chuàng)造出重名的文件。在好幾百行的腳本中很難一眼看出這個(gè)問(wèn)題。
:%s#/sgpmdb/oradata/u01/#+DATA/cmsdb/datafile/#g
run{
...
set newname for datafile 1 to '+DATA/cmsdb/datafile/DATA_P008.dbf';
...
set newname for datafile 2 to '+DATA/cmsdb/datafile/DATA_P008.dbf';
…
}
執(zhí)行RMAN restore 錯(cuò)誤信息如下:
ORA-19504: failed to create file “+DATA/cmsdb/datafile/data_p008.dbf”
ORA-17502: ksfdcre:4 Failed to create file +DATA/cmsdb/datafile/data_p008.dbf
ORA-15005: name “cmsdb/datafile/data_p008.dbf”is already used by an existing alias
所以還是建議采用如下的方式讓oracle來(lái)定義alias,保持文件名唯一。
run{
set newname for datafile 1 to '+DATA';
set newname for datafile 2 to '+DATA';
set newname for datafile 3 to '+DATA';
…...
}
注意事項(xiàng)二: 后臺(tái)執(zhí)行nohup的進(jìn)程問(wèn)題
vi編輯好RMAN腳本后,建議使用nohup命令在后臺(tái)執(zhí)行,避免執(zhí)行過(guò)程中被以外干擾。
nohup ./rman_scripts.cmd &
rman在后臺(tái)執(zhí)行時(shí),屏幕沒(méi)有輸出,可以通過(guò)tail -f ./nohup.out的方式來(lái)監(jiān)控rman輸出。
也可以通過(guò)ps -ef | grep 的方式來(lái)觀察程序是否在后臺(tái)執(zhí)行。這里需要注意的是 ps -ef | grep 后要輸入的是什么?
容易犯的錯(cuò)誤是 ps -ef | grep nohup
這個(gè)命令是沒(méi)有返回結(jié)果的。如果錯(cuò)誤的認(rèn)為剛剛輸入的命令沒(méi)有起作用,而再次執(zhí)行 nohup. /rman_scripts.cmd的話,悲劇產(chǎn)生了。該腳本被執(zhí)行了2次!
如果是restore命令的話,并且采用了set newname for datafile 1 to '+DATA’;的寫法數(shù),+DATA磁盤組中就會(huì)存在兩份數(shù)據(jù)文件,最終將磁盤空間撐爆。
正確的用法是 ps -ef | greprman_scripts.cmd
以上總結(jié)都是在此次項(xiàng)目中出現(xiàn)的問(wèn)題。在漫長(zhǎng)的數(shù)據(jù)庫(kù)恢復(fù)過(guò)程中,每一個(gè)錯(cuò)誤都會(huì)耽誤大量的時(shí)間,一定要小心謹(jǐn)慎。
總結(jié)
以上是生活随笔為你收集整理的oracle复制数据库文件不动,复制数据库中需要注意的几点事项的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: php里的%是什么意思,大家帮小弟我看下
- 下一篇: 全国各省人均gdp排名 6大城市超10万