1. 程式人生 > 實用技巧 >Oracle資料庫期末總結

Oracle資料庫期末總結

目錄

基礎內容-服務相關

  1. Sql分為

    1. DDL:(Data Definition Language) 修改資料庫物件,create,alter,drop,grant,revoke..
    2. DML:(Data Manipulation Language)資料操縱,insert,update,delete
    3. DQL:(Data Query Language)資料檢索,select
    4. 事務控制:commit,rollback,savepoint
  2. SID(Oracle服務識別符號):orcl

  3. 重要的服務:OracleserviceORCL(必開服務)/OracleOraDb11g_home1TNSListener(監聽)

  4. 網路配置:伺服器端監聽:listener.ora 客戶端本地網路配置tnsnames.ora

  5. 登入sqlplus /切換conn

  6. 檔案命令:save(儲存緩衝)/spool(儲存螢幕內容)

  7. 環境變數:linesize,pagesize,show linesize;set linesize 300 pagesize 15;

  8. 顯示錶結構:desc

  9. Oracle體系結構:

    圖1

  10. 物理結構:資料檔案,重做日誌檔案,控制檔案

  11. 邏輯結構:表空間>段>區>資料塊

  12. 資料塊->Oracle最小邏輯儲存單元,資料庫執行輸入輸出的最小單位,有一個或多個作業系統塊組成,塊預設8k

  13. 區->Oracle儲存空間分配的最小單位,預設64k

  14. 表空間與資料檔案之間的關係:

    圖二

  15. 記憶體結構(SGA ,PGA)

    1. SGA 快取記憶體區工作過程 圖三
    2. 重做日誌緩衝區:迴圈使用
    3. 共享池:庫快取和資料字典快取區
  16. Oracle後臺程式

    1. (使用者程式,伺服器程式,後臺程式)
    2. 後臺程式:DBWR(資料寫),LGWR(日誌寫),CKPT,SMON,PMON,ARCH(日誌歸檔)
  17. 資料字典

    1. 存於system表空間,屬於sys模式
    2. 靜態資料字典表和檢視(dba_tables,dba_data_files,user_tables)
    3. 動態(v$datafile,v$database,v$instance)
  18. 表空間概念:

    1. 資料庫可劃分為若干邏輯儲存單元稱為表空間
    2. 每個資料庫必有SYSTEM(系統表空間) && SYSAUX(輔助表空間)
  19. 表空間(大題)(tablespace)

    1. 建立

      Create  tablespace T_NAME Datafile 'location\F_NAME.dbf' size ?M
      Extent Management Local Uniform size ?M //區定製分配
      Segment Space Management Manual; //段手動
    2. 修改

      1. 新增資料檔案:

        Alter tablespace T_NAME Add Datafile 'F_NAME' size ?M;

      2. 自動拓展:

        Alter Database Datafile 'F_NAME' Autoextend On Next ?M Maxsize Unlimited;

      3. 修改資料檔案大小:

        Alter Database Datafile 'F_NAME' Resize ?M;

    3. 刪除,查詢

      1. drop tablespace T_NAME including contents and datafiles;
      2. v$tablespace,dba_tablespaces
  20. 資料檔案(大題)(.dbf)

    1. 改變資料檔名稱和內容(4步)

      1. 修改表空間可用性(離線):Alter tablespace T_NAME Offline;

      2. 作業系統修改檔名稱或位置:host copy

      3. 重新命名:

        Alter tablespace T_NAME Rename Datafile 'F_NAME1' to 'F_NAME2';

      4. 表空間聯機 Alter tablespace T_NAME online;

    2. 查詢資料檔案:v$datafile,dba_data_files

    3. 資料檔案可用性:alter database datafile 'F_NAME' offline|online

  21. 控制檔案,記錄和維護資料庫的物理結構 ()
    1. 多路複用控制檔案(4)

      1. 邏輯上增加控制檔案alter system set control_files=.. scope=spfile
      2. shutdwon immediate
      3. host copy
      4. startup
    2. Oracle資料庫啟動(startup)步驟:
      1. shutdown
      2. nomount:讀初始化引數檔案(init.ora),啟動例項(instance)SGA和後臺程式啟動
      3. mount:開啟控制檔案,可執行日誌歸檔,資料檔案聯機離線,資料庫介質恢復
      4. open:所有檔案開啟
  22. 重做日誌檔案(選擇)(redo.log)
    1. 預設三組,至少需2組,每組至少一個檔案,組內檔案不同盤,大小一致

    2. 查詢:v$log,v$logfile

    3. 重做日誌檔案切換 alter system switch logfile

    4. 建立重做日誌組

      alter database add logfile group 4 ('redo1.log','redo2.log') size 10m;

    5. 建立重做日誌檔案

      alter database add logfile member 'redo.log' to group 4;

  23. 歸檔檔案(選擇)

    1. archivelog/noarchivelog(非歸檔狀態)
  24. 模式(schema)

    1. 概念:是指一系列邏輯資料結構或物件的集合,在建立使用者時會生成一個同名模式。
    2. 在資料庫中一個物件的完整名稱為schema.object
  25. 建立表(table)

    create table table_name( rowname type key )

  26. 約束(constraint)
    1. primary key(主鍵約束),check(檢查約束),unique(唯一性約束),null/not null(空約束)

    2. primarykey,unique區別?

      1. primary key:

        1. 定義主鍵,起惟一標識作用,其值不能為NULL,也不能重複;
        2. 一個表只能定義一個主鍵約束
      2. unique:

        1. 定義為惟一性約束的某一列或多個列的組合的取值必須惟一;
        2. 如果某一列或多個列僅定義惟一性約束,而沒有定義非空約束,則該約束列可以包含多個空值;
      3. 相同點:

        1. 建立同時在該列上建立一個唯一性索引
        2. 可以是列級也可以是表級約束
      4. ※不同點:
        1. 在一個基本表中只能定義一個PRIMARY KEY約束,但可定義多個UNIQUE約束;
        2. 對於指定為PRIMARY KEY的一個列或多個列的組合,其中任何一個列都不能出現空值,而對於UNIQUE所約束的唯一鍵,則允許為空。
        3. 不能為同一個列或一組列既定義UNIQUE約束,又定義PRIMARY KEY約束。
  27. 修改表 alter

    1. alter table sub_emp2 add(phone varchar2(10))
    2. alter table sub_emp2 add(hiredate date default sysdate not null)
    3. alter table player add constraint p_ck1 check(sage between 20 and 30)
  28. 索引(選擇)(index)
    1. 索引作用:加快行的檢索,減慢更新
    2. 平衡樹索引和點陣圖索引
      1. 平衡樹索引(B-Tree):高基數,重複率低
      2. 點陣圖索引:適合索引值取值範圍小,重複率高,如性別。
    3. 建立索引:create index emp_name_index on emp(ename);
  29. 檢視

    1. 虛表,來自一個或多個基表
    2. 建立:create view emp_base_info_view (empno ... ) as select empno from emp;
  30. 序列(概念):產生唯一序號的資料庫物件,生成不重複連續整數

  31. 分割槽表(大題)

    1. 範圍分割槽

      Create Table student_range(
      sno number primary key
      score number )
      Partition by Range(score)
      ( Partition p1 values less than(60) tablespace tbs1
      partition p2 values less than(80) tablespace tbs2
      partition p3 values less than(MAXVALUE) tablespace tbs3
      );
    2. 列表分割槽

      Create table student_list(
      sno number primary key
      sex char(2) check(sex in('M','F')))
      Partition by List(sex)
      ( Partition stu_male values('M') tablespace tbs1
      Partition stu_female values('F') tablespace tbs2
      );
    3. 雜湊(瞭解一哈)by Hash(sno) (partition p1 tablespace tbs1)

  32. DML 增刪改

    1. insert
    2. update
    3. delete
  33. 事務處理:commit,rollback,savepoint

  34. 資料查詢(基本查詢,分組查詢,多表查詢,無關子查詢)
    1. 基本查詢:

      1. 空值判斷:select * from s where sno is (not) null
      2. 模糊查詢:where ename like '%s%' //含s
      3. 排序:order by
      4. 統計:select count(*) from s group by sno;
    2. 分組查詢:group by having
    3. 多表查詢:select from table1 a,table2 b where a.sno = b.sno;
    4. 子查詢(無關子查詢):select from where sno in (select sno from where)
  35. pl/sql語句(兩道)

    1. 執行部分必需,宣告與異常可選

    2. select ..into..(只能查一條記錄!)

    3. 控制結構:迴圈選擇(小題)

      1. if

        if condition1 then statement1
        elsif condition2 then statement2
        else statement3
        end if;
      2. case

        case
        when condition1 then state1
        else state2
        end case;
      3. Loop

        Loop
        statement
        EXIT when condition --Exit
        end loop;
      4. While

        while condition loop
        statement
        end loop;
      5. For

        for i in [reverse] 1..10 loop
        statement
        end loop;
  36. 遊標(定義,開啟,檢索,關閉)(必考)

    1. 定義:cursor c_emp IS select empno,sal from emp;

    2. 開啟:open c_emp;

    3. 檢索:

      loop
      fetch c_emp into v_emp; -- v_emp c_emp%ROWTYPE
      exit when c_emp%NOTFOUND
      do sth.
      end loop;
      1. 關閉:close c_emp;
    4. 顯示遊標的屬性(%isopen,%fount,%notfount,%rowcount)

      1. exit when c_emp%notfound
    5. 異常 exception

      raise user_define_exception

  37. 儲存過程(Procedure),函式(Function),觸發器(Trigger)(2題) (定義)

    1. DML觸發器(!!)

      Create or replace Trigger trigger_name [before|After]
      trigger_event[insert|update|delete] or trigger_event
      on table_name
      [for each row]
      Begin --Trigger body
      if to_char(sysdate,'DY','NLS_DATE_LANGUAGE=AMERIVAN')
      in ('SAT','SUN') then
      Raise application_error(-20001,'error');
      END if;
      END trigger_name;
    2. CREATE OR REPLACE TRIGGER trg_emp_update_row
      BEFORE UPDATE OF sal
      ON emp
      FOR EACH ROW -- get your attention here
      WHEN(new.sal<=old.sal)
      BEGIN
      RAISE_APPLICATION_ERROR(-20001,'The salary is lower! ');
      END trg_emp_update_row;
      /* old.field 修改前, new.field 修改後*/
    3. 語句級觸發器

  38. 安全過程

    1. 使用者管理

      1. 建立 :Create User user_name identified by user_passwd account lock;
      2. 修改:Alter User user_name identified by new_passwd account unlock;
    2. 許可權管理

      1. 系統許可權 grant creat session,create table to user_name;
      2. 物件許可權 grant update,select on scott.emp to user_name;
      3. 回收許可權 revoke create table from user_name;
    3. 概要檔案管理

      1. 建立

        create profile lock_account limit failed_login_attempts 3 password_lock_time 2;

        create profile password_1 limit password_life_time 10 password_grace_time 2 password_reuse_time 10;

      2. 分配

        Alter user user_name profile lock_acount;

        Create User user_name identified by password profile password_1;