oracle ocp笔记(1)
第一課?
第5章 觸發(fā)器介紹
創(chuàng)建數(shù)據(jù)庫
創(chuàng)建數(shù)據(jù)字典
catproc.sql? 用于創(chuàng)建oracle的內(nèi)置過程
ddl觸發(fā)器舉例:
create or replace trigger log_logon
? after logon on database
? when (user='SYS' OR user like 'OPS$%')
BEGIN
? insert into sys.event_log values('Logon '|| user ||' at '||to_char(sysdate,'yyyy-mm-dd HH24:mi:ss'));
? commit;
end;
??
$ORACLE_HOME\rdbms\admin下的一些常用腳本說明
--存儲(chǔ)了oracle系統(tǒng)表的創(chuàng)建語句及注釋說明,例如bootstrap$、props$、tab$、user$等等
D:\oracle\ora92\rdbms\admin\sql.bsq
--創(chuàng)建數(shù)據(jù)字典視圖
D:\oracle\ora92\rdbms\admin\catalog.sql
--創(chuàng)建審計(jì)用的數(shù)據(jù)字典視圖
D:\oracle\ora92\rdbms\admin\cataudit.sql
--創(chuàng)建關(guān)于locks的視圖,包括DBA_KGLLOCK、DBA_LOCKS、DBA_LOCK_INTERNAL、DBA_DML_LOCKS、DBA_DDL_LOCKS、DBA_WAITERS、DBA_BLOCKERS
D:\oracle\ora92\rdbms\admin\catblock.sql
--建立EXP和IMP所需的數(shù)據(jù)字典視圖
D:\oracle\ora92\rdbms\admin\catexp.sql
--解決不同版本EXP問題
D:\oracle\ora92\rdbms\admin\catexp7.sql
--建立PL/SQL功能的使用環(huán)境
D:\oracle\ora92\rdbms\admin\catproc.sql
--創(chuàng)建關(guān)于job的視圖
D:\oracle\ora92\rdbms\admin\catjobq.sql
http://www.wzsky.net/html/Program/DataBase/101416.html? Oracle 10g手工創(chuàng)建數(shù)據(jù)庫個(gè)人經(jīng)驗(yàn)
http://database.51cto.com/art/201002/184885.htm???????? 詳解Oracle手動(dòng)創(chuàng)建數(shù)據(jù)庫幾大步驟
第6章 控制文件
控制文件使用:
?1.小的二進(jìn)制文件
?2.要求書庫啟動(dòng)到mountzhuangtai
?3.連接到一個(gè)實(shí)例
?4.控制文件鏡像
?5.控制文件恢復(fù)
控制文件的內(nèi)容:
?數(shù)據(jù)庫的名字和標(biāo)識(shí)符?? 環(huán)境變量--》初始化參數(shù)文件--》啟動(dòng)實(shí)例--》找到控制文件--》打開數(shù)據(jù)庫
??????? 數(shù)據(jù)庫創(chuàng)建日期
?數(shù)據(jù)文件、redo log的位置
??????? 表空間名稱
??????? log 歷史信息
?備份恢復(fù)信息
?當(dāng)前的序列號(hào)(日志)
?checkpoint 信息
Multiplexing the Control File
?control_file= 指定控制文件的位置????? 建議三個(gè)控制文件不要放在同一個(gè)盤符中
控制文件的原則
?多個(gè)控制文件的拷貝
?control_files
?備份控制文件
?備份控制大小
?重用
控制文件的信息:
?V$controlfile
?v$controlfile_record_section
?v$datafile
?v$tempfile
?v$tablespace
?v$log
?other$
?v$是動(dòng)態(tài)視圖,數(shù)據(jù)庫在mount狀態(tài)時(shí)就可以使用
備份控制文件:
?shutdown;??????? 關(guān)閉數(shù)據(jù)庫
?復(fù)制任意一組(個(gè))控制文件到另一個(gè)目錄,
?修改初始化參數(shù)文件init.ora,在control_files中添加第4個(gè)控制文件
?startup force;?? 重啟數(shù)據(jù)庫?
?
第7章 redo log files 重做日志文件
使用redo log files?
?redo log Groups and members
?dml(iud)語句都會(huì)被記錄在redo log files中
?log switch? 指在redo log Groups中間切換
?archive log list;
?members 即組內(nèi)的成員,組內(nèi)的成員互為鏡像
oracle 架構(gòu)
?dbwr --datafiles
?lgwr-- redo log files
??????? arch -- archived log files
?ckpt -- control files 和 data files
??ckpt的發(fā)生時(shí)機(jī) log switch
非歸檔方式
?數(shù)據(jù)庫恢復(fù)時(shí)備份文件(點(diǎn))至當(dāng)前數(shù)據(jù)庫(點(diǎn))之間的內(nèi)容會(huì)丟失
歸檔模式
?通過備份文件恢復(fù)到備份點(diǎn),在通過歸檔的redo log 恢復(fù)到日志切換點(diǎn),在通過在線日志文件恢復(fù)到數(shù)據(jù)庫的崩潰點(diǎn)
archive log list; 當(dāng)發(fā)生日志切換時(shí),舊的redolog文件將被覆寫,所以在非歸檔模式下舊的redolog文件的內(nèi)容將丟失
v$database;
v$instance;
V$thread;
v$log;
v$logfile;
alter system switch logfile;? 進(jìn)行日志切換的命令
alter database add logfile ('disk3/log3a.rdo','disk4/log3b.rdo') size 1M;增加日志文件組
?新加的組處于unuser狀態(tài),進(jìn)行日志切換時(shí),改組被使用
alter database add logfile member 'disk4/log1b.rdo' to group 1,'disk4/log2b.rdo' to group 2;? 給組增加成員
?新加的日志文件處于invalid 狀態(tài),當(dāng)發(fā)生日志切換時(shí)(改組成為當(dāng)前組),該文件會(huì)被使用
alter database rename file '原始的redolog文件' to '新的redolog文件'; 注意:當(dāng)前有效的日志組不能夠更名。
alter database drop logfile group 3;刪除組? 注意:當(dāng)前有效的日志組不能夠刪除
alter database drop logfile member 'disk4/log1b.rdo';? 刪除成員? 注意:當(dāng)前有效的日志組不能夠刪除成員
alter database clear logfile 'disk4/log1b.rdo';? 清除日志文件
?
log_checkpoint_interval??? 多少bolck,設(shè)一次checkpoint?
log_checkpoint_timeout????? 多長時(shí)間設(shè)一次checkpoint
fast_start_io_target??????? 規(guī)定了下一次數(shù)據(jù)庫(崩潰后)啟動(dòng)的時(shí)間
怎樣重命名、重定位在線的redo log files
?shutdown;
?拷貝日志文件到其他路徑
?startup mount ; 例程已經(jīng)啟動(dòng)
?alter database rename file '原始的redolog文件' to '新的redolog文件';?? 注意:當(dāng)前有效的日志組不能夠更名。
?alter database open ;? 打開數(shù)據(jù)庫
redo log 配置
?組要求一樣大,
?組中至少(應(yīng)該有兩個(gè)成員)
?組中成員要求分布在不同的磁盤空間
logminer
?創(chuàng)建目錄 utl_fife_dir --定義一個(gè)目錄 如:'C:\temp
?創(chuàng)建文件字典
?execute dbms_logmnr_d.build('dict.ora','C:\temp');//注意:區(qū)分大小寫
?select * from v$logfile;
?添加日志文件
?execute dbms_logmnr.add_logfile('C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORACLE\REDO01.LOG',dbms_logmnr.new);
?execute dbms_logmnr.add_logfile('C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORACLE\REDO02.LOG',dbms_logmnr.addfile);
?分析
?execute dbms_logmnr.start_logmnr(dictfilename=>'C:\temp\dict.ora');
?查看內(nèi)容:
?select * from v$logmnr_contents
?SQL> desc v$logmnr_contents;
?Name Type Nullable Default Comments
?---- ---- -------- ------- --------
?關(guān)閉
?execute dbms_logmnr.end_logmnr;
?試圖:
?v$logmnr_dictionary
?v$logmnr_parameters
?v$logmnr_contents
第三課
第8章 表空間和數(shù)據(jù)文件
?數(shù)據(jù)庫邏輯結(jié)構(gòu)
?臨時(shí)段的問題
?創(chuàng)建表空間及調(diào)整表空間的大小及狀態(tài)改變
?臨時(shí)段空間的分配
?改變表空間的儲(chǔ)存設(shè)置及重定位表空間
oracle存儲(chǔ)體系
?邏輯層次database-->tablespace-->segment-->extent-->oracle block
?物理層次?????????? ??datafile-->OS block
?含義:一個(gè)數(shù)據(jù)庫(實(shí)例)包含多個(gè)表空間,...包含多個(gè)segment(segment是指可增長的對(duì)象,如:表、索引),...包含多個(gè)擴(kuò)展,...包含多個(gè)數(shù)據(jù)庫塊,
?????? 一個(gè)表空間包含多個(gè)數(shù)據(jù)文件,一個(gè)數(shù)據(jù)文件包含多個(gè)擴(kuò)展,一個(gè)數(shù)據(jù)文件包含多個(gè)操作系統(tǒng)塊,一個(gè)數(shù)據(jù)庫塊包含多個(gè)操作系統(tǒng)塊。
?????? segment與datafile之間是多對(duì)多的關(guān)系,即一張表的數(shù)據(jù)可以同時(shí)存放在多個(gè)數(shù)據(jù)文件上并且一個(gè)數(shù)據(jù)文件可以存放多張表的數(shù)據(jù),所以需要抽象出表空間的概念作為segment與datafile的上級(jí)層次。
?????? 為什么不將segment與datafile做成一對(duì)一呢?是因?yàn)椴僮飨到y(tǒng)對(duì)自身的文件大小都是有限制的,不同的操作系統(tǒng)數(shù)據(jù)文件的大小限制也不同,如:2G、4G、32G等,
?????? 如果segment增加過大超過操作系統(tǒng)的文件限制,將導(dǎo)致溢出。extent是指表超出空間后,每次擴(kuò)展的空間大小。
系統(tǒng)表空間和非系統(tǒng)表空間
系統(tǒng)表空間:由數(shù)據(jù)庫創(chuàng)建、包含數(shù)據(jù)字典和系統(tǒng)回滾段。
非系統(tǒng)表空間:由管理員創(chuàng)建、由用戶申請(qǐng)、用于存放用戶數(shù)據(jù)。
8.1創(chuàng)建表空間
create tablespace app_data
datafile 'disk4/app_data_01.dbf' size 100M,
???????????????? 'disk5/app_data_02.dbf' size 100M
minimun extent 500k????????????????????????? 表空間extent大小的設(shè)置(最小化的extent)
default storage ( initial 500k???????????????????????? 表的默認(rèn)存貯設(shè)置,初始化500k(一個(gè)extent)
next 500k?????????????????????????每次擴(kuò)展的空間大小(即一個(gè)extent的大小)
maxextents 500???????????????? 表最大的extent數(shù)量
pctincrease 0);???????????????? 空間擴(kuò)展指數(shù),現(xiàn)已經(jīng)不使用。
本地管理表空間和數(shù)據(jù)字典管理的表空間
數(shù)據(jù)字典管理的表空間:表空間的擴(kuò)展記錄在數(shù)據(jù)字典表中,為系統(tǒng)默認(rèn)設(shè)置。
本地管理表空間:通過位圖管理表空間的擴(kuò)展,用位圖的值記錄塊是否可用。注意:10個(gè)數(shù)據(jù)庫的表空間默認(rèn)是本地管理。
8.2創(chuàng)建本地管理表空間
create tablespace user_data
datafile 'disk2/user_data_01.dbf' size 100M
extent management local??????????????? 本地管理表空間?????
uniform size 10m;?????????????????????????? 統(tǒng)一的大小(extent大小統(tǒng)一)
優(yōu)點(diǎn):不產(chǎn)生遞歸的空間管理(不寫數(shù)據(jù)字典,不占用額外空間);
?????????不產(chǎn)生數(shù)據(jù)字典表的爭用(使用位圖,減輕了數(shù)據(jù)字典的訪問量);不產(chǎn)生回滾段(不寫系統(tǒng)回滾段);不需要聚合(即extent大小一致,不需要合并)。
?8.3臨時(shí)表空間
臨時(shí)表空間用于排序,使用本地管理以減少碎片。uniform size=排序區(qū)的n倍(sort_area_size * n)
create temporary tablespace temp
tempfile 'disk2/temp_01.dbf' size 500m
extent management local
uniform size 10M;
數(shù)據(jù)庫關(guān)閉臨時(shí)表空間被刪除,當(dāng)有排序需求是在創(chuàng)建臨時(shí)表空間。
速度比較慢,現(xiàn)已不使用。
擴(kuò)大排序區(qū)不能有效提高系統(tǒng)速度。
8.4 修改存貯設(shè)置
alter tablespace app_data minimum extent 2M;
alter tablespace app_data default storage (initial 2M next 2m maxextents 1000?); 修改不影響已經(jīng)創(chuàng)建的表,在下次申請(qǐng)擴(kuò)展時(shí)才受影響。
8.5表空間的狀態(tài)
表空間有 在線、離線兩種狀態(tài)。
離線狀態(tài)時(shí)表空間無效,其下數(shù)據(jù)不能被訪問。
系統(tǒng)表空間、帶有活動(dòng)回滾段表空間不能被離線。
alter tablespace APTS online;
alter tablespace APTS offline;
8.6表空間只讀
表空間只讀即:不允許用戶修改,可以drop表空間下的對(duì)象。
alter tablespace APTS read only;
alter tablespace APTS rename datafile??
表空間只讀是表空間必須在線;不能包含有活動(dòng)回滾段;不能轉(zhuǎn)入在線備份。
8.7 刪除表空間
表空間從數(shù)據(jù)字典中刪除,表空間下的對(duì)象從數(shù)據(jù)字典中刪除,操作系統(tǒng)文件不刪除。
drop tablespace app_data including contents;
8.8 重新設(shè)置表空間大小
數(shù)據(jù)文件可以自動(dòng)擴(kuò)展(缺點(diǎn):導(dǎo)致系統(tǒng)速度慢);可以手工擴(kuò)展,還可以增加數(shù)據(jù)文件。
alter tablespace app_data add datafile 'disk6/app_data_04.dbf' size 200M autoextend on next 10m maxsize 500m;
alter tablespace datafile? 'disk5/app_data_02.dbf' resize 200m;
8.9移動(dòng)數(shù)據(jù)文件
表空間下的限制:表空間必須離線(offline);目標(biāo)數(shù)據(jù)文件必須存在。離線后可以拷貝數(shù)據(jù)文件到新的磁盤空間并作為目標(biāo)數(shù)據(jù)文件。
alter tablespace app_data rename datafile 'disk4/app_data_01.dbf' to 'disk5/app_data_01.dbf';
數(shù)據(jù)庫下的限制:數(shù)據(jù)庫啟動(dòng)到mounted狀態(tài);拷貝數(shù)據(jù)庫控制文件到新的目錄作為存在的目標(biāo)文件。
alter tablespace rename file '/disk1/system_01.dbf' to '/disk2/system_01.dbf';
8.10 表空間信息(視圖)
?????? 靜態(tài)試圖:dba_tablesoaces,dba_data_files,dba_temp_files
?????? 動(dòng)態(tài)視圖:v$tablespace,v$datafile,v$tempfile
8.11表空間管理原則
?????? 使用多個(gè)表空間;
?????? 為表空間指定默認(rèn)的存貯參數(shù)(存貯子句);
?????? 用戶配額(quotas),限制用戶對(duì)空間的占用;
???????數(shù)據(jù)文件使用全路徑;
?????? 使用最小的extent數(shù);
???????使用本地管理的表空間(效率高);
?????? 表空間下最多1023個(gè)數(shù)據(jù)文件。
8.12 總結(jié)
??????? 可以收縮表空間的大小。
????????建議使用本地管理的表空間,不推薦使用臨時(shí)表空間。
??????? 用位圖索引管理extent。位圖索引只能針對(duì)列的取值固定且數(shù)量較少時(shí)使用(如列是性別,取值只有男、女兩種);位圖索引修改麻煩,查詢的速度很快(位運(yùn)算效率高)。
第四課
第9章 Storage Structure and Relationships? 存貯結(jié)構(gòu)和關(guān)系
描述了數(shù)據(jù)庫的邏輯結(jié)構(gòu)
segment的類型和用法
block空間的使用
數(shù)據(jù)字典中存貯結(jié)構(gòu)的視圖信息
segment的分配原則(segment與tablespace的存放關(guān)系)
9.1 segment(可增長對(duì)象)的類型
segment有:table,table partition(分區(qū)表的每個(gè)分區(qū)),cluster(分為索引cluster和哈希cluster),index,index-organized table(索引組織的表,增刪改慢,查詢快,不適合大表),index partition(分區(qū)索引的每個(gè)分區(qū)),rollback segment(回滾段),temporary segment(臨時(shí)段),LOB segment (大對(duì)象段),LOB index(大對(duì)象索引),Nested table(嵌套表),Bootstrap segment(系統(tǒng)啟動(dòng)段)。
主要的是:table,index,rollback segment
9.2存貯子句(extent的使用規(guī)格)定義(使用)順序
segment-->tablespace-->oracle default?? (默認(rèn) 5個(gè)db block,目前oracle的block為8k)
??????建議在tablespace中統(tǒng)一定義。
9.3 extent Allocation and Deallocation 擴(kuò)展的分配和回收
??????擴(kuò)展extent的分配:在segment的創(chuàng)建(created)、擴(kuò)展(extended)、改變(altered)時(shí)被分配。
??????擴(kuò)展extent的回收:在segment的注銷(dropped)、改變(altered)、截?cái)?Truncated,重新初始化,只保留一個(gè)extent)、回滾段的自動(dòng)收縮(rollback segment Automatically resized)時(shí)被回收。
9.4 extent的使用和空置
data file包括:file header,used extent,free extent
小的extent不會(huì)自己合并。
9.5 database block (dbblock 數(shù)據(jù)塊)概念
????? 最小的i/o單元;
????? 是os block(操作系統(tǒng)塊)的倍數(shù);
????? 通過參數(shù) DB_BLOCK_SIZE 進(jìn)行設(shè)置(目前dbblock設(shè)置為8k);
????? 在數(shù)據(jù)庫創(chuàng)建時(shí)就已經(jīng)起效(如果要調(diào)整dbblock的大小必須要重新創(chuàng)建數(shù)據(jù)庫實(shí)例)。
9.6 dbblock組成
??????組成:header(頭部),free space(空閑空間,用于update操作),data(數(shù)據(jù))。
????? 參數(shù):initrans(初始化開辟的事務(wù)槽),maxtrans(最大的事務(wù)槽限制),pctfree(用來定義空閑空間的大小),pctused(用來定義數(shù)據(jù)空間的最大使用率)。
??????????????事務(wù)需要占用一個(gè)事務(wù)槽,事務(wù)槽就是在header頭部對(duì)事物的管理,事務(wù)槽越多,可并行訪問的事務(wù)就越多,就有可能產(chǎn)生沖突(死鎖)。事務(wù)槽要占用header頭部的空間。
pctfree? =20%? 空余空間定義
pctused? =40%? 使用空間底線
對(duì)不足pctused的dbblock則認(rèn)為是空閑的塊,空閑塊則被連接到freelist鏈表中;共下次insert使用;對(duì)已滿足pctused的dbblock則認(rèn)為是該塊已滿,不可繼續(xù)插入。
pctfree定義的空閑用于update操作,對(duì)于update操作比較多的表pctfree應(yīng)該定義大一些,負(fù)責(zé)會(huì)導(dǎo)致在update操作時(shí)發(fā)現(xiàn)已沒有空閑空間,將在更新行的為產(chǎn)生一個(gè)指針,指向其他的dbblock進(jìn)行更新操作,即一行數(shù)據(jù)遷移至多個(gè)dbblock塊,影響系統(tǒng)效率。
9.7 數(shù)據(jù)字典中的相關(guān)視圖
??????????? dba_tablespaces (tablespace)
????? dba_segments???? (segment)???? dba_data_files (data_file)
????? dba_extents??(used extents) dba_free_space (free_extents)
?????? (從上到下都是一對(duì)多的關(guān)系)
9.8 表空間的碎片問題
????? system? 數(shù)據(jù)字典????????????????????????????? ? 碎片率 0
??????Tools???? Applications?(用于oracle程序)非常低
?????? Data?????數(shù)據(jù)段 (用于業(yè)務(wù)數(shù)據(jù))?????????? 低
???????Index??? 索引段?(用于業(yè)務(wù)數(shù)據(jù)索引)?????低
?????? Rbs?????? 回滾段?(用于事務(wù)尚未提交)?????高
?????? temp???? 臨時(shí)段(用于排序)?????????????????非常高
9.10 總結(jié)
?????? extent,dbblock的存貯。
第5課???
第10章 Managing Rollback Segments 回滾段的管理
?????? 創(chuàng)建、維護(hù)回滾段;
????????計(jì)劃回滾段的大小和數(shù)量;
??????? 計(jì)算數(shù)據(jù)字典視圖;
??????? 排除回滾段對(duì)大小數(shù)據(jù)dml操作量的錯(cuò)誤。
10.1 回滾段的作用
????? 在進(jìn)行dml操作時(shí)需要將舊的信息(old image)寫到回滾段中。
????? 讀一致性(Read consistency):A執(zhí)行update操作,尚未commit之前,A可以看到new image,其余人員只能看到old image,old image 存貯在回滾段中。
????? 事務(wù)的回滾(Transaction rollback):A執(zhí)行update操作,尚未commit之前,有進(jìn)行rollback操作,old image 從rollback segment中更新到物理表中。
????? 事務(wù)的恢復(fù)(Transaction recovery):數(shù)據(jù)庫崩潰后,再次啟動(dòng)時(shí)系統(tǒng)進(jìn)程先做前滾操作,再數(shù)據(jù)庫open,最后做回滾操作。
10.2 回滾段的類型
????? 系統(tǒng)回滾段:用于system tablespace下的對(duì)象的dml操作。
????? 非系統(tǒng)回滾段:由系統(tǒng)管理員創(chuàng)建,供所有用戶使用。
??????非系統(tǒng)回滾段分為:私有回滾段(單個(gè)實(shí)例使用)和公有回滾段(所有實(shí)例使用)。
注意 :41分鐘 從第10章跳到了第12章
第12章 索引的管理 managing indexes
??? 回滾段和索引由系統(tǒng)控制使用。
??? 索引的類型;
??? B-tree(普通索引)和bitmap(位圖索引);
??? 重組索引(Reorganize indexes);
??? 刪除索引 drop index
??? 數(shù)據(jù)字典中索引相關(guān)的視圖
12.1 索引分類
??? 邏輯分類
?????????????? 單列索引和組合索引
???????????????唯一索引和非唯一索引
???????????????基于函數(shù)的索引:可以對(duì)列的運(yùn)算建索引
??? 物理分類
?????????????? 分區(qū)索引和非分區(qū)索引
??????????????? B-tree(二叉樹)索引:葉子節(jié)點(diǎn)包括:索引頭、列字段、列的值、rowid。
????????????????Normal(正常索引)和reverse key(反鍵索引):將索引字段的值反寫(左右對(duì)調(diào))后建b-tree索引,目的是擴(kuò)大索引列的取值范圍,構(gòu)造大的樹形結(jié)構(gòu),以便于后期插入操作。
??????????????? Bitmap(位圖)索引:根據(jù)索引列的取值建立位圖,每種取值都需要建立位圖索引,對(duì)于dml操作很困難,對(duì)查詢操作性能很好。
12.2 B-tree 和Bitmap索引比較
???????Bitmap適用于列的取值少,dml操作少,select操作多(與、或運(yùn)算速度快),多用于數(shù)據(jù)倉庫。
?????? B-tree適用于列的取值多,dml操作多,select操作少,多用于OLTP。
第6課
13章 Constraint? 約束
??? 13.1約束的類型
?????????? not null :
???????????unique:
?????????? primary key:
?????????? foreign key:
?????????? check:
??????13.2 約束的狀態(tài)
???????????? disable
?????????????enable
?????????????validate
?????????????novalidate
disable??????? enable??? 約束(對(duì)已有數(shù)據(jù))是否啟用
novalidate???? validate? 約束是否檢查已有數(shù)據(jù)
????? 13.3 約束的延時(shí)
???????????? dml statement-->check nondeferred constraints(非延時(shí)約束)-->commit-->check deferred constraints(檢查延時(shí)約束)
????? 13.4 定義立即約束和延時(shí)約束
??????????????需要在語句定義時(shí)是否可以延時(shí),在session中設(shè)置是否可以延時(shí)。
????????????? alter session set constraint[s] = {immediate|deferred|default}
??????13.5 主鍵和唯一鍵
???????13.6 外鍵約束
????????????? Drop 父表 Cascade constraints (刪除父表時(shí)需要級(jí)聯(lián)刪除約束);
??????????????Truncate 父表 時(shí),需要提前使外鍵失效或刪掉外鍵。
??????????????drop 包含父表的表空間?Cascade constraints (刪除包含父表的表空間時(shí)需要級(jí)聯(lián)刪除約束,注意:父子表可以不在同一個(gè)表空間,但必須在同一個(gè)數(shù)據(jù)庫。)
????????????? 在對(duì)父表進(jìn)行dml操作時(shí)會(huì)鎖定子表,為了避免鎖定,可以給外鍵建索引。
??????????????在對(duì)子表進(jìn)行dml操作時(shí)需要確保父表的索引在online狀態(tài)。
??????? 13.7 表創(chuàng)建的約束定義
create table summit.employee (
id number(7) constraint empoyee_id_pk primary key deferrable --可延時(shí)的
???????????????????????? using index storage (initial 100k next 100k) tablespace index,
???? last_name varchar2(25) constraint employee_last_name_nn not null,
???? dept_id number(7))
tablespace data;
??????? 13.8 定義約束的規(guī)則
??????????? 將主鍵、唯一鍵的索引放在指定的表空間中;
??????????? 在加載大量數(shù)據(jù)時(shí)使用非唯一的索引,即將將主鍵、唯一鍵的索引定義成延時(shí)索引,或者將主鍵、唯一鍵約束刪掉、將主鍵、唯一鍵索引disable或刪掉。
?????????? 自引用外鍵索引在初始化數(shù)據(jù)加載完成之后定義或啟用,并定義延時(shí)的約束檢查。
???????13.9 啟用約束 enable
?????????? enable novalidate條件:不鎖定表;主鍵和唯一鍵必須使用非唯一索引;?對(duì)以前的數(shù)據(jù)不檢查,對(duì)以后的數(shù)據(jù)檢查。
?????????? alter table summit.department enable novalidate constraint dept_pk;?
????????? enable validate條件:鎖定表;可以使用唯一索引、非唯一索引;?對(duì)以前的數(shù)據(jù)檢查(數(shù)據(jù)必須滿足約束),對(duì)以后的數(shù)據(jù)檢查。
?????????? alter table tt.rightcert enable validate constraint rightcert_certid_pk;?
??????? 13.10 使用exceptions表(例外表)?
??????? alter table...enable validate... 可以加上exceptions子句,將不滿足約束的數(shù)據(jù)記錄記錄在exception表中,等將數(shù)據(jù)調(diào)整到滿足約束時(shí),在進(jìn)行alter table...enable validate操作。
??????? 13.11 drop 約束
??????????? alter table summit.employee drop constraint emp_ln_uk;
????????????drop table department cascade constraints;
??????? 13.12 約束的視圖
????????????dba_constraints
??????????? dba_cons_columns
第7課
14章? load data 加載數(shù)據(jù)
?? export inport
?? direct-load inserts? 直接路徑插入
?? sql * loader
?? 14.1直接路徑插入
exp:
insert /*+APPEND */ into scott.emp nologging
?select * from scott.old_emp;
?nologging表示不寫redo日志,/*+APPEND */是一個(gè)提示,提示系統(tǒng)將數(shù)據(jù)插入在高水點(diǎn)之后(高水點(diǎn)是連續(xù)空間,這樣可以提高插入速度)
create table tt1 as select empno,ename ,sal from emp where 1=2;?
alter session enable parallel DML;
insert /*+parallel(scott.emp,2) */ into scott.emp nologging select * from scott.old_emp;? 并行插入,起用2個(gè)并行進(jìn)程
???? 14.2 sql * loader
sql*loader?? 作用:將少量文本型數(shù)據(jù)加載到數(shù)據(jù)庫中
?? Conventional Load 普通路徑的加載,轉(zhuǎn)換為insert,需要commit進(jìn)行提交,記redo日志,對(duì)所有約束有效,可以觸發(fā)trigger,使用clustered tables,不鎖定tables。
?? Direct Path Load? 直接路徑的加載,使用data saves技術(shù)(直接將數(shù)據(jù)文件遷移到數(shù)據(jù)庫的數(shù)據(jù)文件中),不需要commit進(jìn)行提交,不記redo日志,只支持所主鍵、唯一鍵和not null約束,不觸發(fā)trigger,不能使用clustered tables,鎖定tables。
exp:
sqlldr scott/tiger control=ulcase6.ctl log=ulcase6.log direct=true;? ulcase6.ctl是控制文件,需要手工編寫,大體如下:
??? load data
??? infile 'ulcase6.dat'
??? insert into table emp
???? (empno position(01:04) integer external nullif empno=blanks,...)
? bindsize? 普通路徑的加載時(shí)數(shù)組的大小設(shè)置。
控制文件舉例:
??? load data
??? infile *
??? insert into table scott.dept?
???? fields terminated by ',' optionally enclosed by '"'
???? (deptno,dname,loc)
??? begindata
???? 10,account,new york
???? 20,research,dallas
???? 30,sales,chigago
15章 reorganize tables 重組數(shù)據(jù)
??? export import
??? 可傳輸?shù)谋砜臻g
????15.1 export import
???????? 重組表
???????? 在不同用戶下移動(dòng)數(shù)據(jù)
?????????不同數(shù)據(jù)庫下移動(dòng)數(shù)據(jù)
???????? 不同操作系統(tǒng)下移動(dòng)數(shù)據(jù)
???????? 不同版本的數(shù)據(jù)庫下移動(dòng)數(shù)據(jù)
????????? 邏輯備份
導(dǎo)出表? (table data index trigger constraints Grants AnalyzeMethod)
exp scott/tiger@orcl tables=(dept,emp) file=c:\emp.dmp log=c:\exp.log compress=n direct=y
compress 壓縮
direct?? 直接導(dǎo)出
imp scott/tiger tables=(dept,emp) file=emp.dmp log=exp.log ignore=y
ignore? 忽略錯(cuò)誤
導(dǎo)入順序 table-->data-->B-tree indexes-->constraints,triggers,bitmap,indexes? 相同表空間『默認(rèn)表空間』
consistent=y? 在回滾段中鏡像所有導(dǎo)出表 (保持了一致性,只能用于小表),默認(rèn)consistent=n
compress=y??? 可以使用在連續(xù)的,沒有刪除操作的表上,能夠提高速度。對(duì)于被刪除的行,compress=y 時(shí)則被導(dǎo)出,從而不能重組數(shù)據(jù),所以默認(rèn)>compress=n
導(dǎo)入導(dǎo)出字符集的問題:
?? 1.導(dǎo)入導(dǎo)出字符集一致即可;2.如果不一致,默認(rèn)低字節(jié)向高字節(jié)轉(zhuǎn)換。oracle自帶有7位單字節(jié)、8位單字節(jié)、16位雙字節(jié)、24位三字節(jié)字符集。
??????? 15.2 可傳輸表空間
可傳輸表空間:
?1.使表空間只讀 alter tablespace sales_ts read only;
??????? 2.將表空間的定義信息導(dǎo)成操作系統(tǒng)文件????? exp sys/... file=xxx.dmp transport_tablespace=y tablespaces=sales_ts triggers=n constraints=n
?3.將表空間的數(shù)據(jù)文件拷貝到目標(biāo)機(jī)器
?4.將表空間的定義信息文件拷貝到目標(biāo)機(jī)器???? (導(dǎo)入導(dǎo)出的路徑要求是全路徑)
?5.將表空間的定義信息文件導(dǎo)入到目標(biāo)數(shù)據(jù)庫? imp sys/... file=xxx.dmp transport_tablespace=y datafiles=(/disk1/sales01.dbf,/disk2/sales02.dbf)
??????? 6.將表空設(shè)置為可讀寫 alter tablespace sales_ts read write;
?7.限制:相同的操作系統(tǒng),oracle的版本在8i以上,數(shù)據(jù)塊大小一致(8192),相同的字符集,表空間中的對(duì)象必須全部屬于本表空間(自包含),嵌套表、位圖索引不能被導(dǎo)出
????????? 驗(yàn)證自包含的方法: exec DBMS_TTS.TRANSPORT_SET_CHECK(ts_list =>'sales_ts',incl_constraints=>TRUE);
第8課
16章 數(shù)據(jù)庫安全
???? 表空間限(配)額
???? 缺省表空間
???? 排序表空間的使用
???? 賬號(hào)鎖定??????? account locking
???? 資源的限制
???? 直接權(quán)限
???? 角色權(quán)限 role
???? 操作系統(tǒng)驗(yàn)證數(shù)據(jù)庫驗(yàn)證
?參數(shù):failed_login_attempts? 密碼嘗試登陸次數(shù)的設(shè)定
????????????? password_lock_time???? 密碼鎖定的天數(shù)
????????????? password_life_time???? 密碼生命期(天數(shù))
????????????? password_grace_time??? 優(yōu)雅時(shí)間:密碼過期后,用戶第一次登陸后,修改密碼的時(shí)間
????????????? password_reuse_time??? 密碼重用間隔天數(shù)
??????????????password_reuse_max???? 密碼重用次數(shù)
????????????? password_verify_function? 密碼校驗(yàn)函數(shù)
? 密碼管理:
???? alter user hanne identified by rue account lock; 給用戶加鎖解鎖
???? alter user hanne identified by rue account unlock;
第9課? 直接跳到了18章
20章 (11課 36分) 字符集與國際語言字符集
單字節(jié) 7-bit,8-bit
雙字節(jié) 16-bit
三字節(jié) 24-bit
unicode (utf8,al24utffss)
字符集的定義層次:
?? 會(huì)話層???????? session(級(jí)別最高)
?? 環(huán)境變量?????? nls_lang=<language>_<territory>.<charset>?? charset 字符集? SIMPLIFIED CHINESE_CHINA.ZHS16GBK
?? 初始化參數(shù)
?? nls_language?
?? nls_date_language
?? nls_sort
?? nls_territory??????
?? nls_currency??????? $
?? nls_iso_currency??
?? nls_date_format???? yyyy-mm-dd
?? nls_numeric_characters
?create database ... character set <charset> national character set <ncharset> ... 創(chuàng)建數(shù)據(jù)庫時(shí)設(shè)置字符集
??????? alter session set nls_date_format='yyyy-mm-dd';????? 設(shè)置會(huì)話的日期格式
??????? dbms_session.set_nls('nls_date_format',"'yyyy-mm-dd'");
??????? alter session set nls_sort=Eanglish;?? 設(shè)置按什么語言排序
12課 9分鐘??? 開始講 sql
17課? 12分鐘? 開始講 oracle網(wǎng)絡(luò)知識(shí)? (2天 10章)
21課? oem 備份與恢復(fù)
????? 備份策略:商務(wù)需求,硬件環(huán)境
????? fast_start_io_target=10000??????????? 系統(tǒng)崩潰后,下次啟動(dòng)后要讀寫多少個(gè)塊,設(shè)大恢復(fù)慢,設(shè)小影響速度。
???? 影響checkpoint的因素:
??????? 達(dá)到 fast_start_io_target設(shè)定的數(shù)據(jù)塊
??????? 達(dá)到最小的redo log 的90%
??????? log_checkpoint_timeout
??????? log_checkpoint_interval blocks
??? archived 歸檔
??????? 歸檔到本地磁盤
??????? 歸檔到遠(yuǎn)程數(shù)據(jù)庫(standby site)
?? 各種類型的失敗:
?????? 語句類型的失敗(語法錯(cuò)誤)
?????? 用戶進(jìn)程失敗()
?????? 用戶可能的錯(cuò)誤操作(用戶錯(cuò)誤刪除表中數(shù)據(jù))
?????? instance失敗 (系統(tǒng)自動(dòng)恢復(fù)操作)
?????? 媒體(物理介質(zhì))的失敗
?? fast_start_parallel_rollback 并行回滾
歸檔模式 archivelog
??? log_archive_start 是否啟用歸檔; log_archive_dest_n 歸檔的目錄(n是歸檔路徑的路徑個(gè)數(shù),即支持多路徑歸檔);? log_archive_format 歸檔文件的名字;
scott/tiger 下的emp表的創(chuàng)建語句
create table EMP
(
? EMPNO??? NUMBER(4) not null,
? ENAME??? VARCHAR2(10),
? JOB????? VARCHAR2(9),
? MGR????? NUMBER(4),
? HIREDATE DATE,
? SAL????? NUMBER(7,2),
? COMM???? NUMBER(7,2),
? DEPTNO?? NUMBER(2)
)
tablespace SYSTEM
? pctfree 10
? pctused 40
? initrans 1
? maxtrans 255
? storage
? (
??? initial 64K
??? minextents 1
??? maxextents unlimited
? );
-- Create/Recreate primary, unique and foreign key constraints
alter table EMP
? add constraint PK_EMP primary key (EMPNO)
? using index
? tablespace SYSTEM
? pctfree 10
? initrans 2
? maxtrans 255
? storage
? (
??? initial 64K
??? minextents 1
??? maxextents unlimited
? );
alter table EMP
? add constraint FK_DEPTNO foreign key (DEPTNO)
? references DEPT (DEPTNO);
startup force;?? 重啟數(shù)據(jù)庫
shutdown;??????? 關(guān)閉數(shù)據(jù)庫
shutdown abort;? 例程已經(jīng)關(guān)閉
startup mount ; 例程已經(jīng)啟動(dòng)??? mount啟動(dòng)后動(dòng)態(tài)試圖就可以查看了
alter database open ;? 打開數(shù)據(jù)庫
alter system switch logfile;? 切換logfile
EXECUTE DBMS_LOGMNR_D.BUILD('merrydict.ora','C:\redo');
EXECUTE dbms_logmnr.start_logmnr(DICTFILENAME=>'c:\redo\REDO03.LOG')
drop tablespace APTS oncluding contents;? 注銷表空間
alter tablespace APTS add datafle '' size 200M autoextend on next 10M maxsiza 500M;
alter tabl resize
alter tablespace APTS rename datafile '' to '';
alter database rename file '' to '';
dba_tablespaces
v$tablespace
v$instance
轉(zhuǎn)載于:https://www.cnblogs.com/BradMiller/archive/2010/09/24/1834205.html
總結(jié)
以上是生活随笔為你收集整理的oracle ocp笔记(1)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 字符串的方法、注释及示例1.
- 下一篇: 暑假集训考试反思+其它乱写