2.5.4.4 外鍵值可用null的問題
外鍵列如沒有明確說明not null,可插入null記錄(而null是在外部表的記錄中沒有的),如無可插null記錄的想法,要對外鍵字段加not null約束。
2.5.4.5 序列 sequence 跳號的問題
sequence 因回滾,系統(tǒng)崩潰(使用cache 內(nèi)的值將認為已用),多表引用都將使其跳號,所以不能用于為連續(xù)序號 utl_row.cast_to_row
2.5.4.6 unicn\ intersect\ minus 使用ordey by的注意事項
以上語句進行連表操作,而表同表的字段順序的類型相同但字段標題名可不同,使用ordey by時后面如果是字段名,要求所有的表的字段標題名相同,否則用字段的順序號
select id,name,year from user1
union
select no,name,to_number(null) year from user2
order by 1,name,year
2.5.5 安全性
2.5.5.1 Where 條件
無論在使用Select,還是使用破壞力極大的Update和Delete語句時,一定要檢查Where條件判斷的完整性,不要在運行時出現(xiàn)數(shù)據(jù)的重大丟失。如果不確定,最好先用Select語句帶上相同條件來果一下結(jié)果集,來檢驗條件是否正確。
2.5.6 完整性
有依賴關(guān)系的表,例如主外鍵關(guān)系表,在刪除父表時必須級聯(lián)刪除其子表相應(yīng)數(shù)據(jù),或則按照某種業(yè)務(wù)規(guī)則轉(zhuǎn)移該數(shù)據(jù)。9I中表中字段縮小及變類型,字段為空或表空,varchar和char長度不變可任意改,字段名和表名可字段可用 ALTER TABLE table SET UNUSED (column) 設(shè)定為不可用,注意無命令再設(shè)為可用
3 備份恢復設(shè)計原則
3.1 數(shù)據(jù)庫exp/imp備份恢復
Oracle數(shù)據(jù)庫的Exp、Imp提供了數(shù)據(jù)快速的備份和恢復手段,提供了數(shù)據(jù)庫級、用戶級和表級的數(shù)據(jù)備份恢復方式。這種方法一般作為數(shù)據(jù)庫輔助備份手段。
3.1.1 數(shù)據(jù)庫級備份原則
在數(shù)據(jù)庫的數(shù)據(jù)量比較小,或數(shù)據(jù)庫初始建立的情況下采用。不適合7*24的在線生產(chǎn)環(huán)境數(shù)據(jù)庫備份。
3.1.2 用戶級備份原則
在用戶對象表數(shù)據(jù)容量比較小、或則用戶對象初始建立的情況下使用。
3.1.3 表級備份原則
主要在以下場合采用的備份方式:
參數(shù)表備份
靜態(tài)表備份
分區(qū)表的分區(qū)備份。
3.2 數(shù)據(jù)庫冷備份原則
數(shù)據(jù)庫冷備份必須符合以下原則:
數(shù)據(jù)庫容量比較小。
數(shù)據(jù)庫允許關(guān)閉的情況。
3.3 Rman備份恢復原則
這種方式適用于7*24環(huán)境下的聯(lián)機熱備份情形。
3.3.1 Catalog數(shù)據(jù)庫
單獨建立備份恢復用的數(shù)據(jù)庫實例,盡可能與生產(chǎn)環(huán)境的數(shù)據(jù)庫分開,確保catalog與生產(chǎn)數(shù)據(jù)庫的網(wǎng)絡(luò)連接良好。在9I系統(tǒng)使用良好的備份策略以可,支持完全使用控制文件保存catalog信息,備份策略如下:
backup spfile format '/data/backup/%d_SPFILE_%T_%s_%p.bak';
sql "alter system archive log current";
backup archivelog all format '/data/backup/%d_ARC_%T_%s_%p.bak' delete all input;
backup current controlfile format '/data/backup/%d_CTL_%T_%s_%p.bak';
在spfile、控制文件、數(shù)據(jù)庫全丟的情況下可通過下面的方式恢復
RMAN> connect target
connected to target database (not started)
RMAN> startup
RMAN> restore spfile from '/data/backup/COMMDB_SPFILE_20030411_9_1.bak';
SQL> startup
ORA-00205: error in identifying controlfile, check alert log for more info
RMAN> restore controlfile from 'd:\DB92_CTL_20031113_9_1.BAK';
Mout database:
RMAN> recover database;
RMAN> alter database open resetlogs;
注意:對數(shù)據(jù)庫設(shè)定控制文件保存?zhèn)浞菪畔?65天,具體語句如下。
alter system set control_file_record_keep_time=365 SCOPE=BOTH;
3.3.2 Archive Log
設(shè)置Archive Log 的位置,確保存儲介質(zhì)有足夠的空間來保留指定時間內(nèi)archive log的總量。建設(shè)定期對RMAN進行全備份,刪除冗余歸檔日志文件。
3.3.3 全備份策略
對于小容量數(shù)據(jù)庫,可以采用全備份策略。對于大容量數(shù)據(jù)庫,必須制定全備份策略方案,備份時對archive log進行轉(zhuǎn)儲,同時冷備份catalog 數(shù)據(jù)庫。
3.3.4 增量備份策略
對于大容量數(shù)據(jù)庫,必須制定增量備份、累積備份和全備份的周期,備份時對archive log進行轉(zhuǎn)儲,同時冷備份catalog 數(shù)據(jù)庫。
3.3.5 恢復原則
采用Rman腳本進行數(shù)據(jù)庫恢復。數(shù)據(jù)庫恢復有以下幾種:
3.3.5.1 局部恢復
主要用于恢復表空間、數(shù)據(jù)文件,一般不影響數(shù)據(jù)庫其他操作。
3.3.5.2 完全恢復
數(shù)據(jù)庫恢復到故障點,由catalog當前數(shù)據(jù)庫決定。
3.3.5.3 不完全恢復
恢復到數(shù)據(jù)庫的某一時間點或備份點。
恢復catalog數(shù)據(jù)庫。
恢復數(shù)據(jù)庫control file 。
恢復到數(shù)據(jù)庫某一時間點。
重設(shè)日志序列。
3.4 備用數(shù)據(jù)庫原則
數(shù)據(jù)庫系統(tǒng)在以下情況下可以考慮采用備用數(shù)據(jù)庫data guard原則:
數(shù)據(jù)庫容量適中。
數(shù)據(jù)庫嚴格要求7*24不間斷,或間斷時間要求控制在最小范圍內(nèi)。
數(shù)據(jù)庫要求有異地備份冗余。
3.5 一些小經(jīng)驗
使用oemc的oms時,首選項要求是節(jié)點和數(shù)據(jù)庫分別加入系統(tǒng)用戶(如:administrator)和數(shù)據(jù)庫DBA用戶(system)。節(jié)點的系統(tǒng)用戶必須有批處理作業(yè)登錄的權(quán)限
agent 不能啟動,lisnter修改后都要手動刪除oracle\ora9\network\agent 中的*.q文件
oracle\admin\my9i\bdump 中是用戶的出錯日志
改變表的空間的方式alter table hr.ssss move TABLESPACE example(要重建索引); 或用imp導入時,設(shè)定導入用戶只有某一表空間的使用權(quán),無RESOURCE角色和UNLIMITED TABLESPACE權(quán)限
aleter system set log_checkpoint_to_alter=true,后可報警文件發(fā)現(xiàn)checkpoint的起動和結(jié)束時間。
3.6 系統(tǒng)調(diào)優(yōu)知識
3.6.1.1 生成狀態(tài)報表(statspack的使用)
使用(存放位置@?\rdbms\admin\)的文件生成報表用戶
@?\rdbms\admin\Spcreate.sql建表
將timed_statistics設(shè)定true
使用生成的perfstat用戶登錄,執(zhí)行以下語句手動收集信息
Exex statspack.snap
Exec statspack.snap(I_SNAP_LEVEL=>0,I_MODEFY_PRAMETER=>TRUE) 0級,最少10最大
使用下面的語句生成狀態(tài)報表
@?\rdbms\admin\Spreport.sql
其他相關(guān)文件
delete stats$snapshot ;清原來記錄數(shù)據(jù)
@?\rdbms\admin\Saputo.sql
select job from user_jobs 取用戶作業(yè)號
exec dbms_remove(作業(yè)號)
timed_statistics=true要求
@?\rdbms\admin\spdrop.sql ;
3.6.1.2 sql追蹤
設(shè)定全部用戶跟蹤
alter system set sql_trace=true;
用戶級別跟蹤
alter session set sql_trace=true;
用戶的跟蹤文件生成在 admin\{pid}\udump\{pid} _ora_{ SPID}.trc 中,spid從下面語句得到
SELECT b.name bkpr, s.username, p.spid,s.sid,s.serial# FROM v$bgprocess b, v$session s, v$process p WHERE p.addr = b.paddr(+) AND p.addr = s.paddr and s.username=user;
DBA對特定用戶跟蹤
exec dbms_system_set_Sql_trace_in_session(sid,serial#,true)
信息從下面得到
SELECT b.name bkpr, s.username, p.spid,s.sid,s.serial#,osuser,s.program
FROM v$bgprocess b, v$session s, v$process p
WHERE p.addr = b.paddr(+)
AND p.addr = s.paddr;
/*p.spid用于sql_trace時日志編號,dbms_system.set_sql_trace_in_session(sid,erial#,true)*/
用戶的跟蹤文件生成在 admin\{pid}\udump 中
系統(tǒng)的跟蹤文件生成在admin\{pid}\bdump\alert_{pid}.log
tkprof.exe將log文件生成格式化文本
在av Rd(ms) 20以上說明表空間使用過用頻繁,考慮將表分開其他表空間上
系統(tǒng)變量fast_start_mttr_target的值要大到不產(chǎn)生log等待,當然也可通過加log組使其不等待
reao log大小應(yīng)為每30分鐘切換一次
建議表空間的利用率不超80%
buffer hit 要達80%以上為好
3.6.1.3 內(nèi)存調(diào)整
一般的內(nèi)存分配原則
SGA 50%(其中80% DATA BUFFER,15% SHARE POOL,5其他)
PGA30%
OS 20%
例如:2G的WINDOWS的平臺,OS 300M,SAG 1.2G,PGA 500M
內(nèi)存
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請
點擊舉報。