熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Oracle >> 正文

Oracle 9i 數據庫設計指引全集(4)

2022-06-13   來源: Oracle 

   外鍵值可用null的問題
  
  外鍵列如沒有明確說明not null可插入null記錄(而null是在外部表的記錄中沒有的)如無可插null記錄的想法要對外鍵字段加not null約束
  
   序列 sequence 跳號的問題
  
  sequence 因回滾系統崩潰(使用cache 內的值將認為已用)多表引用都將使其跳號所以不能用於為連續序號 utl_rowcast_to_row
  
   unicn\ intersect\ minus 使用ordey by的注意事項
  
  以上語句進行連表操作而表同表的字段順序的類型相同但字段標題名可不同使用ordey by時後面如果是字段名要求所有的表的字段標題名相同否則用字段的順序號
  
  select idnameyear from user
  union
  select nonameto_number(null) year from user
  order by nameyear
  
   安全性
  
   Where 條件
  
  無論在使用Select還是使用破壞力極大的Update和Delete語句時一定要檢查Where條件判斷的完整性不要在運行時出現數據的重大丟失如果不確定最好先用Select語句帶上相同條件來果一下結果集來檢驗條件是否正確
  
   完整性
  
  有依賴關系的表例如主外鍵關系表在刪除父表時必須級聯刪除其子表相應數據或則按照某種業務規則轉移該數據I中表中字段縮小及變類型字段為空或表空varchar和char長度不變可任意改字段名和表名可字段可用 ALTER TABLE table SET UNUSED (column) 設定為不可用注意無命令再設為可用
  
   備份恢復設計原則
   數據庫exp/imp備份恢復
  Oracle數據庫的ExpImp提供了數據快速的備份和恢復手段提供了數據庫級用戶級和表級的數據備份恢復方式這種方法一般作為數據庫輔助備份手段
  
   數據庫級備份原則
  
  在數據庫的數據量比較小或數據庫初始建立的情況下采用不適合*的在線生產環境數據庫備份
  
   用戶級備份原則
  
  在用戶對象表數據容量比較小或則用戶對象初始建立的情況下使用
  
   表級備份原則
  
  主要在以下場合采用的備份方式
  
  參數表備份
  
  靜態表備份
  
  分區表的分區備份
  
   數據庫冷備份原則
  數據庫冷備份必須符合以下原則
  
  數據庫容量比較小
  
  數據庫允許關閉的情況
  
   Rman備份恢復原則
  這種方式適用於*環境下的聯機熱備份情形
  
   Catalog數據庫
  
  單獨建立備份恢復用的數據庫實例盡可能與生產環境的數據庫分開確保catalog與生產數據庫的網絡連接良好I系統使用良好的備份策略以可支持完全使用控制文件保存catalog信息備份策略如下
  
  backup spfile format /data/backup/%d_SPFILE_%T_%s_%pbak;
  
  sql alter system archive log current;
  
  backup archivelog all format /data/backup/%d_ARC_%T_%s_%pbak delete all input;
  
  backup current controlfile format /data/backup/%d_CTL_%T_%s_%pbak;
  
  在spfile控制文件數據庫全丟的情況下可通過下面的方式恢復
  
  RMAN> connect target
  
  connected to target database (not started)
  
  RMAN> startup
  
  RMAN> restore spfile from /data/backup/COMMDB_SPFILE___bak;
  
  SQL> startup
  
  ORA: error in identifying controlfile check alert log for more info
  
  RMAN> restore controlfile from d:\DB_CTL___BAK;
  
  Mout database:
  
  RMAN> recover database;
  
  RMAN> alter database open resetlogs;
  
  注意對數據庫設定控制文件保存備份信息為具體語句如下
  
  alter system set control_file_record_keep_time= SCOPE=BOTH;
  
   Archive Log
  
  設置Archive Log 的位置確保存儲介質有足夠的空間來保留指定時間內archive log的總量建設定期對RMAN進行全備份刪除冗余歸檔日志文件
  
   全備份策略
  
  對於小容量數據庫可以采用全備份策略對於大容量數據庫必須制定全備份策略方案備份時對archive log進行轉儲同時冷備份catalog 數據庫
  
   增量備份策略
  
  對於大容量數據庫必須制定增量備份累積備份和全備份的周期備份時對archive log進行轉儲同時冷備份catalog 數據庫
  
   恢復原則
  
  采用Rman腳本進行數據庫恢復數據庫恢復有以下幾種
  
   局部恢復
  
  主要用於恢復表空間數據文件一般不影響數據庫其他操作
  
   完全恢復
  
  數據庫恢復到故障點由catalog當前數據庫決定
  
   不完全恢復
  
  恢復到數據庫的某一時間點或備份點
  
  恢復catalog數據庫
  
  恢復數據庫control file
  
  恢復到數據庫某一時間點
  
  重設日志序列
  
   備用數據庫原則
  數據庫系統在以下情況下可以考慮采用備用數據庫data guard原則
  
  數據庫容量適中
  
  數據庫嚴格要求*不間斷或間斷時間要求控制在最小范圍內
  
  數據庫要求有異地備份冗余
  
   一些小經驗
  使用oemc的oms時首選項要求是節點和數據庫分別加入系統用戶(如administrator)和數據庫DBA用戶(system)節點的系統用戶必須有批處理作業登錄的權限
  
  agent 不能啟動lisnter修改後都要手動刪除oracle\ora\network\agent 中的*q文件
  
  oracle\admin\myi\bdump 中是用戶的出錯日志
  
  改變表的空間的方式alter table hrssss move TABLESPACE example(要重建索引); 或用imp導入時設定導入用戶只有某一表空間的使用權無RESOURCE角色和UNLIMITED TABLESPACE權限
  
  aleter system set log_checkpoint_to_alter=true後可報警文件發現checkpoint的起動和結束時間
  
   系統調優知識
   生成狀態報表(statspack的使用)
  
  使用(存放位置@?\rdbms\admin\)的文件生成報表用戶
  
  @?\rdbms\admin\Spcreatesql建表
  
  將timed_statistics設定true
  
  使用生成的perfstat用戶登錄執行以下語句手動收集信息
  
  Exex statspacksnap
  
  Exec statspacksnap(I_SNAP_LEVEL=>I_MODEFY_PRAMETER=>TRUE) 最少最大
  
  使用下面的語句生成狀態報表
  
  @?\rdbms\admin\Spreportsql
  
  其他相關文件
  
  delete stats$snapshot ;清原來記錄數據
  
  @?\rdbms\admin\Saputosql
  
  select job from user_jobs 取用戶作業號
  
  exec dbms_remove(作業號)
  
  timed_statistics=true要求
  
  @?\rdbms\admin\spdropsql ;
  
   sql追蹤
  
  設定全部用戶跟蹤
  
  alter system set sql_trace=true;
  
  用戶級別跟蹤
  
  alter session set sql_trace=true;
  
  用戶的跟蹤文件生成在 admin\{pid}\udump\{pid} _ora_{ SPID}trc 中spid從下面語句得到
  
  SELECT bname bkpr susername pspidssidsserial# FROM v$bgprocess b v$session s v$process p WHERE paddr = bpaddr(+) AND paddr = spaddr and susername=user;
  
  DBA對特定用戶跟蹤
  
  exec dbms_system_set_Sql_trace_in_session(sidserial#true)
  
  信息從下面得到
  
  SELECT bname bkpr susername pspidssidsserial#osusersprogram
  
  FROM v$bgprocess b v$session s v$process p
  
  WHERE paddr = bpaddr(+)
  
  AND paddr = spaddr;
  
  /*pspid用於sql_trace時日志編號dbms_systemset_sql_trace_in_session(siderial#true)*/
  
  用戶的跟蹤文件生成在 admin\{pid}\udump 中
  
  系統的跟蹤文件生成在admin\{pid}\bdump\alert_{pid}log
  
  tkprofexe將log文件生成格式化文本
  
  在av Rd(ms) 以上說明表空間使用過用頻繁考慮將表分開其他表空間上
  
  系統變量fast_start_mttr_target的值要大到不產生log等待當然也可通過加log組使其不等待
  
  reao log大小應為每分鐘切換一次
  
  建議表空間的利用率不超%
  
  buffer hit 要達%以上為好
  
   內存調整
  
  一般的內存分配原則
  
  SGA %(其中% DATA BUFFER% SHARE POOL其他)
  
  PGA%
  
  OS %
  
  例如G的WINDOWS的平台OS MSAG GPGA M
  
  內存
From:http://tw.wingwit.com/Article/program/Oracle/201311/17223.html
    推薦文章
    Copyright © 2005-2022 電腦知識網 Computer Knowledge   All rights reserved.