當前位置:首頁 » 數據倉庫 » oracle資料庫check
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

oracle資料庫check

發布時間: 2023-01-04 15:43:28

㈠ 性能調優:ORACLE性能初步調整

在User Schema 上 用人工指定方式指定 Tmp 的tablespace 換句話說要人工定義一個tmp 的tablespace 給user schema ——為colm v這個user單獨開一個臨時表空間 個人認為調整之後效果不會有很明顯的變化臨時表空間的作用是當sql語句中出現order by group by(也就是需要排序的時候) 如果排序的數據比較少 就會在內存中排序 排序的數據量很大時 oracle會把排序的任務放在臨時表空間中完成 內存中排序(邏輯排序)比在磁碟上排序(物理排序)理論上快 倍!所以臨時表空間很大並不是一件好事情 說明sql中存在大量排序的動作 sql語句需要優化! 所以深圳那裡需要看一下臨時表空間的大小!

當然johanna的意見也會有一定的作用 臨時表空間獨立出來之後 就不會和sys system等一系列oracle 內部使用臨時表空間的操作產生資源競爭!

請檢查SQL 使用到的where 條件是否均有定index 除此以外 檢查使用到的where 條件最好以index 之順序來寫——這部分比較復雜 也是性能最關鍵的地方 幾乎所有的oracle專家都認為 %以上的性能調整都和sql語句優化有關 需要check所有的sql語句where後面的條件是否有用到index的必要 工程量比較浩大!需要一個個小心謹慎的check!

把index 做一次 dbms_stats dbms stats 是oracle內部的api 可以對index table進行分析 收集統計信息 這樣oracle優化器就會有一個最佳的選擇 使性能達到最佳方法如下

SQL>select tt table_name tt num_rows tt blocks tt empty_blocks tt avg_row_len from dba_tables tt where tt owner= COLMTEST ; SQL > select ttt index_name ttt num_rows ttt distinct_keys ttt avg_leaf_blocks_per_key ttt clustering_factor from dba_indexes ttt where ttt owner= COLMTEST ;

執行上述兩條命令之後會發現除了table_name和index_name 其餘列的統計信息都是不完全的

SQL>execute dbms_stats gather_schema_stats(ownname => COLMTEST cascade=>true)

執行完dbms_stats 再調用上述兩句語句 會發現所有的列基本上都已經被填充!

PS 執行統計比較慢 相當於所有table index都掃描一遍的時間 COLMTEST 改一下另外 對單個表執行統計分析的語句如下

EXECUTE dbms_stats gather_table_stats (ownname=> citic tabname=> col_cust_id estimate_percent=> cascade=>true)

做過以上處理之後 再看情形 再依情況放參數

——參數暫時不用調整!

建議做一個STATSPACK通過Statspack我們可以很容易的確定Oracle資料庫的瓶頸所在 記錄資料庫性能狀態 迅速了解資料庫運行狀況

方法如下

安裝Statspack安裝Statspack擁有SYSDBA(connect / as sysdba)許可權的用戶登陸 需要在本地安裝或者通過telnet登陸到伺服器 ——客戶端登錄不可以

必要條件 先創建名稱為perfstat的表空間 至少 M

在那台oracle資料庫上用colmv 登錄SQL*PLUS 然後輸入SQL> connect sys/sys@(你們那裡的sid) as sysdba SQL> alter system set timed_statistics = true System altered——使用statspack收集統計信息時建議將該值設置為 TRUE 否則收集的統計信息大約只能起到 %的作用

SQL> @C oracleora dbmsadminspcreate sql 輸入 perfstat_password 的值 perfstat輸入default_tablespace的值 perfstat輸入temporary_tablespace 的值 temp

NOTE SPCPKG plete Please check spcpkg lis for any errors ——需要出現上述語句才算成功 否則請查看 lis文件並執行 進行重建SQL> @C oracleora dbmsadminspdrop sql SQL> @C oracleora dbmsadminspcreate sql

查看文件夾會產生三個文件C oracleora in spcpkg lis spctab lis spcusr lis

——從下面開始都可以在客戶端SQL_PLUS進行操作 手動執行STATSPACK收集統計信息SQL> show user USER為 PERFSTAT SQL> execute statspack snap ——快照

然後需要經過 個小時(跑批需要包含在裡面) 再執行SQL> execute statspack snap ——快照

最後生成STATSPACK調整報告

SQL> @C:oracleora dbmsadminspreport sql;

Current Instance ~~~~~~~~~~~~~~~~ DB Id DB Name Inst Num Instance COLM colm Instances in this Statspack schema ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ DB Id Inst Num DB Name Instance Host COLM colm STEVENHUANG Using for database Id Using for instance number Completed Snapshots Snap Snap Instance DB Name Id Snap Started Level Comment colm COLM 月 : 月 : Specify the Begin and End Snapshot Ids ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 輸入 begin_snap 的值: 輸入 end_snap 的值: End Snapshot Id specified: Specify the Report Name ~~~~~~~~~~~~~~~~~~~~~~~ The default report file name is sp_ _ To use this name press <return> to continue otherwise enter an alternative 輸入 report_name 的值: report txt End of Report

查看產生的report 文檔C oracleora in eport txt

lishixin/Article/program/Oracle/201311/17298

㈡ oracle check約束定義

oracle的check約束可以實現對欄位的內容輸入進行控制。

舉例如下:

createtabletest
(idintprimarykey,
namevarchar2(20),
sexvarchar2(2)check(sexin('男','女')));

如上邊語句,代表性別(sex)列只允許為男或女,如果輸入其他內容則會報錯。

如圖:

㈢ 如何關閉Oracle11g資料庫的審計功能

在oracle11g中,資料庫的審計功能是默認開啟的(這和oracle10g的不一樣,10g默認是關閉的),x0dx0aoracle11gR2的官方文檔上寫的是錯的,當上說default是none,而且是審計到DB級別的,這樣就會x0dx0a往aud$表裡記錄統計信息。x0dx0a x0dx0a1.如果審計不是必須的,可以關掉審計功能;x0dx0ax0dx0aSQL> show parameter audit_trail;x0dx0ax0dx0aNAME TYPE VALUEx0dx0a------------------------------------ ----------- ------------------------------x0dx0aaudit_trail string DBx0dx0ax0dx0aSQL> alter system set audit_trail=none scope=spfile;x0dx0aSQL> shut immediate;x0dx0aSQL>startupx0dx0a2.刪除已有的審計信息x0dx0a可以直接truncate表aud$,x0dx0atruncate table SYS.AUD$;x0dx0ax0dx0a3.或者將aud$表移到另外一個表空間下,以減少system表空間的壓力和被撐爆的風險。x0dx0a x0dx0a附:11g中有關audit_trail參數的設置說明:x0dx0aAUDIT_TRAILx0dx0aProperty Descriptionx0dx0aParameter type Stringx0dx0aSyntaxAUDIT_TRAIL = { none | os | db [, extended] | xml [, extended] }x0dx0aDefault valuenonex0dx0aModifiable Nox0dx0aBasic Nox0dx0aAUDIT_TRAIL enables or disables database auditing.x0dx0aValues:x0dx0anonex0dx0aDisables standard auditing. This value is the default if the AUDIT_TRAIL parameter was not set x0dx0ain the initialization parameter file or if you created the database using a method other than x0dx0aDatabase Configuration Assistant. If you created the database using Database Configuration x0dx0aAssistant, then the default is db.x0dx0aosx0dx0aDirects all audit records to an operating system file. Oracle recommends that you use the os x0dx0asetting, particularly if you are using an ultra-secure database configuration.x0dx0adbx0dx0aDirects audit records to the database audit trail (the SYS.AUD$ table), except for records x0dx0athat are always written to the operating system audit trail. Use this setting for a general x0dx0adatabase for manageability.x0dx0aIf the database was started in read-only mode with AUDIT_TRAIL set to db, then Oracle Database x0dx0ainternally sets AUDIT_TRAIL to os. Check the alert log for details.x0dx0adb, extendedx0dx0aPerforms all actions of AUDIT_TRAIL=db, and also populates the SQL bind and SQL text CLOB-type x0dx0acolumns of the SYS.AUD$ table, when available. These two columns are populated only when this x0dx0aparameter is specified.x0dx0aIf the database was started in read-only mode with AUDIT_TRAIL set to db, extended, then Oracle x0dx0aDatabase internally sets AUDIT_TRAIL to os. Check the alert log for details.x0dx0axmlx0dx0aWrites to the operating system audit record file in XML format. Records all elements of the x0dx0aAuditRecord node except Sql_Text and Sql_Bind to the operating system XML audit file.x0dx0axml, extendedx0dx0aPerforms all actions of AUDIT_TRAIL=xml, and populates the SQL bind and SQL text CLOB-type columnsx0dx0a of the SYS.AUD$ table, wherever possible. These columns are populated only when this parameter x0dx0ais specified.x0dx0aYou can use the SQL AUDIT statement to set auditing options regardless of the setting of this x0dx0aparameter.

㈣ ORACLE里的CHECK約束。。

oracle中的check約束是為了讓表中某欄位值能輸入固定的值。

如:

1、創建帶有check約束的表。

createtabletest
(idint,
namevarchar2(10),
sexvarchar2(10)check(sexin('男','女')));

以上語句說明輸入的sex只能為男或女。

2、插入測試數據:

insertintotestvalues(1,'badkano','男');
insertintotestvalues(2,'冷小月9','女');

以上兩個語句都能輸入成功。

如果輸入:

insertintotestvalues(3,'dongdng','不男不女');

則會報錯: