標籤:
這是我的Oracle學習筆記系列的第一篇,主要總結了Oracle的體繫結構,要學好Oracle,就要先瞭解Oracle的運行機制和原理。把今天學習的內容整理了一個圖,備忘,點擊可放大。
另外,還有幾個語句(sql*plus):
SYS使用者登入
SQL> / as sysdba;
解鎖scott使用者
SQL> alter user scott identified by tiger account unlock;
切換到scott使用者
SQL> conn scott/tiger;
Null值參與列計算
SQL> select ename, sal, comm, (sal+nvl(comm,0)) as salary from emp;
sql*plus中用變數查詢
SQL> variable va number;SQL> declare :va:=7788;SQL> select empno,ename,sal from emp where empno = :va;
看記憶體中包含"select * from"的SQL語句
SQL> select sql_text from v$sqlarea where sql_text like ‘%select * from%‘;
看記憶體(SGA)資源情況
SQL> select * from v$sgastat;
刷記憶體共用池
SQL> alter system flush shared_pool;
強制重啟執行個體
SQL> startup force;
在會話中修改日期格式
SQL> alter session set nls_date_format=‘yyyy-mm-dd‘;
如果要永久修改,windows下可在註冊表中建立一個名為 nls_date_format 的DWORD值,UNIX/LINUX直接配置環境變數。
關於共用池和SQL語句同效能的關係:
由於共用池中緩衝最近SQL語句的特性,所以在構建SQL語句時要特別注意,大小寫不同、空格、順序不同都會被Oracle認為是不同的SQL語句,只有完全一樣的SQL語句才會從共用池中儲存的SQL語句中重複使用,而由於編寫SQL語句的不規範將會產生效能問題,所以要做到:
1、盡量規範SQL語句,用統一的格式,大小寫、順序、空格、縮排、變數名格式都有相應的規範並嚴格遵守;
2、在大量的同一格式的SQL語句查詢時(比如只有where條件的值不同),應盡量使用變數,否則共用池將被大量的垃圾查詢佔滿而使常用的SQL不被緩衝,影響效率;
3、PL/SQL或者是複雜的資料查詢,可以寫預存程序,用帶進參數的方式保證共用池中的SQL語句一致;
4、適當調整 shared_pool_size 的大小。
一句話觀點:備份和恢複資料庫應該用物理備份的方式而不要用匯出和匯入功能,除非你的資料庫資料量很少,而且都不太重要。
Oracle學習筆記(1)