oracle基礎

第一章:ORACLE的結構
一、ORACLE的SERVER
1、SERVER=DATABASE+INSTANCE(內存結構)
2、ORACLOE的連接方式:
A、直接登錄:UNIX主機,客戶端通過串口,TCP/IP直接登陸到主機,使用ORACLE
B、C/S方式:客戶端通過TCP/IP+NET8,做數據的存儲,調用,查詢。端口活動少,速度加快
C、三層結構:在C和S之間加一個應用服務器,C通過TCP/IP,PPP,RS232連到應用服務器上,調用業務程序,通過業務程序從應用服務器以TCP/IP+NET8訪問S端。適合大型業務。
二、如何連接數據庫
1、USER PROCESS:通過C端的應用程序(SQLPLUS,DEVELOPE 2000。。。),產生,運行C端,用於發出USER的請求。
2、SERVER PROCESS:響應一個特定的USERPROCESS,隨着USER PROCESS的請求,作相應的處理。SP 和UP數量相等,當UP終止,SP也會終止。同時SP所佔用的資源釋放,(內存)。一個SP佔用內存約18M-50M。內存:PGA

3、SESSION:會話,連接,從C到S的連接鏈路,從用戶登陸到數據庫開始,到用戶退出登陸終止。

三、ORACLE的INSTANCE;
1、INSTANCE:實例,內存結構,定義了ORACLE數據庫在啓動和工作過程中所使用的內存的大小,及分配方式。分配方法由INIT《SID》。ORA(參數文件)
2、INSTANCE的組成:
A、SGA區,共享內存區
B、後臺進程:
1、DBWR:定期將CACHE中的數據寫回硬盤
2、LGWR:記錄所有已提交數據的修改動作。
3、SMON:監控數據庫狀態,釋放臨時段,做數據一致性的恢復。
4、PMON:監控ORACLE進程的運行狀態。
2、SGA的組成
A、 SHARE POOL:LIB CACHE,存儲編譯後的執行代碼
DICTIONARY CACHE:數據字典 CACHE
SELECT * FROM EMP,只有數據字典可以將對象信息轉爲ORACLE自己看的懂的信息 。

共享池的大小:SHARED_POOL_SIZE
B、DATABASE BUFFER CACHE 存儲ORACLE常用數據大小=DB_BLOCK_SIZE*DB_BLOCK_BUFFERS
C、PGA的概念,獨佔內存區,只給一個特定SERVERPROCESS使用。當SP終止後,內存釋放。
D、REDO LOG BUFFER:回滾實現所使用。
四、ORACLE DATABASE的組成:
1、DATABASE:DATAFILE,REDOLOG,控制文件。
2、附加文件:參數文件(INIT), PASSWORD文件,備份的日誌文件。

第二章:如何管理ORACLE的INSTANCE(INTANCE的啓動與終止)
一、ORACLE的啓動過程
1、START AN INSTANCE:完成內存的初始化
2、MOUNT AN DATABASE:掛起數據庫,讀控制文件,仍然不允許普通用戶訪問數據庫,但數據庫管理員可以在這一級對庫的維護,RECOVERY,調整。
3、OPEN數據庫:允許正常訪問,對庫做數據操作。
二、ORACLE的終止:
1、CLOSE DATABASE
2、DISMOUNT DATABASE
3、RELEASE INSTANCE
三、ORACLE的數據庫管理員:
1、數據庫完成安裝後,有兩個自動生成的數據庫管理員,SYSTEM,SYS,都有DBA的權限
2、SYS:CHANGE_ON_INSTALL(password),SYS是數據字典的所有者。
3、SYSTEM:MANAGER(PASSWORD)是工具表的所有者(OEM管理器)
四、INIT文件
1、INIT文件:主要定義了INSTANCE的啓動的參數,所有對INIT參數的修改最終會影響到整個數據庫,所有的修改只對下一次數據庫的啓動生效。
2、參數=值(系統根據你的環境優化的結果)
3、所有的參數都可以修改,除了db_block_size:
4、在ORACLE的企業版中,參數文件的命名格式:init.ora,
ifile=......../init.ora
ifile表示連接文件,將參數的配置文件指定到另一個目錄下的文件中。
《SID》/PFILE/INIT.ORA
5、所有的文本編輯命令均可用於修改INIT文件
五、ORACLE的每一步啓動的過程
1、INSTANCE的啓動
A、讀INIT文件,
B、根據INIT的參數分配內存(INSTANCE)
C、開始做跟蹤,審記
D、後臺進程啓動
2、MOUNT DATABASE
A、對數據庫中的控制文件操作
B、爲數據文件定位。
C、控制文件的位置,數量由INIT文件定義
D、用於,數據恢復,維護,數據文件的重定位
3、OPEN DATABASE
A、允許用戶正常訪問
B、所有的在線數據文件,處於打開狀態
C、SMON,作一個一致性檢測
4、CLOSE DATABASE
A、回寫CACHE中的數據(DBWR)
B、關閉數據庫的數據文件
C、CONTROL文件還可以使用,INSTANCE沒有釋放。
5、DISMOUNT DATABASE
A、關閉控制文件
B、INSTANCE可以使用
6、RELEASE INSTANCE

六、數據庫啓動的命令
1 STARTUP [NOMOUNT|MOUNT|OPEN] [PFILE=。。。。][RESTRICT]
A、STARTUP NOMOUNT:將數據庫啓動到INSTANCE啓動,但 不涉及數據文件
B、STARTUP MOUNT:啓動MOUNT狀態,控制文件打開
C、STARTUP OPEN(STARTUP): 將數據庫完全打開,允許用戶訪問
D、STARTUP RESTRICT: 將數據庫完全打開,允許有RESTRICT權限的用戶訪問。用於需要在OPEN狀態下作數據庫維護,而又不希望普通用戶登陸的時候。
E、STARTUP PFILE=當你希望數據庫啓動時,使用你新定義的INIT文件時。

七、數據庫的終止命令
1、SHUTDOWN [NORMAL|IMMEDIATE|ABORT|TRANSCATIONAL]
A I T N
允許新連接: N N N N
等待用戶退出: N N N Y
等待事物的結束: N N Y Y
關閉文件: N Y Y Y
八、動態視圖:
在ORACLE 裏提供大量的動態視圖包括,內存,磁盤的信息,連續反映數據庫的變化,所有的這類視圖,以v$開頭。V$INSTANCE.數據庫啓動每到一步的時候,相應的視圖會打開。STARTUP NOMOUNT,與內存
相關的視圖打開。

九、如何顯示參數的配置
1 SVRMGRL-->CONNECT INTERNAL-->SHOW PARAEMTER 參數名稱
2 v$parameter

十、如何終止一個SESSION
1、找到相關SESSION的信息
SELECT SID, SERIAL# FROM V$SESSION WHERE USERNAME='SCOTT'
2、終止該進程:
ALTER SYSTEM KILL SESSION '7,15'
3、所有以上操作不會影響數據庫的一致性, A、釋放資源
B、釋放鎖
C、回退當前會話。

第三章:建立數據庫
一、建立數據庫的準備
1、足夠權限的用戶
對於操作系統而言,是一個ADMIN
對於數據庫而言,DBA的權限
2、你的系統是否有足夠的內存,64M
3、有沒有硬盤空間:操作系統空間+數據庫系統空間+應用數據空間
二、如何規劃你的數據庫
1、至少在你的數據庫上有兩個控制文件。
2、儘量保證日誌組內部的成員數》2,且同一組內的成員間,處於不同硬盤。
3、對於同一表空間內的多個數據文件放在不同的硬盤上。主要是爲了保證數據安全和I/O併發。
4、對於不同用處的數據,放在不同的表空間上。
SYSTEM表空間
TEMP 表空間
USER 表空間
OEM 表空間
INDEX 表空間
V$TABLESPACE

三、如何手工建庫:
1、在數據庫安裝的過程中,當安裝完成時,已經有一個庫,自動生成的。庫名稱,對應的INSTANCE的名稱(SID)在安裝過程中由用戶指定。實際上指定義了數據庫生成的最基本信息,其他選項按默認值配置。
2、手工生成數據庫
A、設置環境變量和核心參數(UNIX)
B、複製一個INIT文件。
使用一個OS的COPY命令
舉例:DB_NAME=OLM
SID_NAME=OLM
MAX_FILES=100
使用寫字板改:DB_NAME
SID_NAME
以及其他可選項:
MAX_FILES=100
SHARED_POOL_SIZE=10000
C、啓動數據庫到NOMOUNT:
因爲有了INIT文件,所以系統可以根據INIT的參數配置,初始化內存。'
SVRMGRL--》CONNECT INTERNAL--》STARTUP NOMOUNT PFILE=C:/WIN95/INITOLM.ORA
D、下命令手工建庫
CREATE DATABASE OLM
[ MAXLOGFILES 5]這個數據庫最大的日誌成員組的數量
[MAXLOGMEMBERS 4]定義了每組中成員的數量
[MAXDATAFILES 100]定義了最大的數據文件的數量 LOGFILE
GROUP 1 ('C:/WIN95/REDO1.LOG') SIZE 1M,
GROUP 2 ('C:/WIN95/REDO2.LOG') SIZE 1M
DATAFILE
'C:/ORACLE/ORADATA/SYSTEM01.DBF' SIZE 100M;

四、關於其他操作
1、數據字典視圖沒有生成
SVRMGRL》@CATALOG。SQL
@CATPROC。SQL
2、創建其他表空間,比如說排序表空間 ,ROLLBACK,TEMP
3、所有的數據文件可以不存在,但所有的路徑必須存在。
4、如果是選用自動建庫,四的步驟自動完成。
五、信息獲取
1、V$DATABASE
2 V$INSTANCE
3 V$TABLESPACE
六、ALTER DATABASE命令
1、啓動到NOMOUNT,STARTUP NOMOUNT
2、從NOMOUNT 啓動到MOUNT: ALTER DATABASE MOUNT
3、從MOUNT到OPEN : ALTER DATABASE OPEN

第四章:數據字典
一、數據字典的使用:
1、數據字典提供了:邏輯和物理上的數據庫結構信息:提供有多少個表空間提供了有多少個數據文件及位置
2、提供硬盤的分配信息
3、提供用戶信息,權限
二、組成
1、ORACLE在完成建庫已經建立了數據庫的基表。
A,編碼形式的,不可讀
B,是數據字典視圖的信息來源。
2、數據字典視圖,通過運行CATALOG。SQL,CATPROC。SQL產生的,可讀,專爲用戶提供信息的視圖。視圖是基表的上層,來源於基表。
3、數據字典視圖的分類:
DBA_XXX: dba_tables 數據庫管理員使用
all_xxx: all_tables 所有有權訪問這個對象的用戶
user_xxx:user_tables 該對象的屬主

第五章、控制文件的管理
一、控制文件的內容
1、數據庫名稱和SID名稱
2、所有的數據文件的分佈
3、TABLESPACE的名稱
4、日誌段的段號
二、如何可以獲取控制文件的信息
1、V$CONTROLFILE
SELECT * FROM V$CONTROLFILE
2 V$PARAMETER
3 INIT文件中定義
三、控制文件的管理
1、ORACLE中,控制文件數量不少於2爲好。當擁有兩個以上的控制文件時,控制文件之間是鏡像關係,當任意損壞一個的時候系統不至於崩潰。
2、如何維護:
A、SHUTDOWN 數據庫
B、用OS的COPY命令,將控制文件複製一個。
C、修改INIT文件中關於CONTROLFILE的選項。
D、STARTUP 數據庫

E、通過V$CONTROLFILE 查看信息
3、控制文件的內容,大小不可改
4、當修改數據庫以下參數時可能會改變控制文件大小
MAXLOGFILES
MAXLOGMEMBERS
MAXDATAFILES
5、SELECT * FROM V$CONTROLFILE
NAME
/DISK1/CONTROL1.DBF
/DISK2/CONTROL2.DBF

第六章:日誌的管理
一、日誌的組和成員
1、ORACLE中,記錄不同數據庫操作的稱爲日誌組
2、ORACLE中,同一日誌組內的不同日誌文件稱爲日誌成員。
二、歸檔模式和非歸檔模式
1、非歸檔模式:日誌文件的內容不經過備份直接被覆蓋
2、歸檔模式:日誌文件的內容經過備份,再被覆蓋
3、如何知道:歸檔方式
A、ARCHIVE LOG LIST《SVRMGRL》
B、V$DATABASE
C V$INSTANCE
4、如何知道有幾個組,日誌段的段號
V$THREAD
V$LOG ********
幾個組,每組幾個成員,大小,狀態
5、如何知道有多少個日誌文件,位置,屬於哪個組。 v$logfile
三、如何修改(增加)日誌組
ALTER DATABASE ADD LOGFILE
('C:/WIN95/REDO11.LOG','C:/WIN95/REDO12.LOG') SIZE 1M;
四、如何加一個日誌成員:
ALTER DATABASE ADD LOGFILE MEMBER
'C:/REDO13.LOG' TO GROUP 1,
'C:/REDO14.LOG' TO GROUP 2;
五、如何重定位日誌文件
1、SHUTDOWN
2、COPY 一個到新目錄下
3、STARTUP MOUNT;
A、修改文件位置最終記錄到 CONTROLFILE
B、如果到OPEN下,可以做,但是不一定好用,用戶可以訪問,一旦對庫操作,日誌改變,內容會不一致。

4、ALTER DATABASE RENAME
DATAFILE 'C:/REDO13.LOG' TO 'E:/ORACLE/REDO13.LOG' ;
5、ALTER DATABASE OPEN

六、刪除日誌組:
ALTER DATABASE DROP LOGFILE GROUP 組號;
1、CURRENT狀態不能DROP
2、ACTIVITY不可以DROP

七、刪除日誌成員:
1、ALTER DATABASE DROP LOGFILE MEMBER 'C:/REDO12.LOG'
八、日誌的設置:
1、組的數量不少於2組,4組夠了。
2、每一個成員的大小:1M-2M,也可以多一些,如10M,成員最好兩個以上
3、日誌組數量增多,日誌成員空間大,可以有效的提升運行速度但是一旦系統不正常關機,下次重啓動時,速度很慢。

九、錯誤
1、非當前日誌組,一個成員損壞,系統正常運行
2、當非當前日誌組所有成員損壞,系統自動DOWN機
3、當前組所有成員損壞,數據庫崩潰,做全庫恢復


第七章:表空間和數據文件的管理
一、ORACLE的邏輯結構
1、DATABASE--》TABLESPACE(表空間)--》SEGMENT(段)--》EXTENT(區)--》DB BLOCK
二、邏輯結構
1、TABLESPACE:
A、一個表空間只屬於一個數據庫
B、一個表空間中含有多個數據文件
C、表空間作用提供:用戶數據的存儲空間,空間大小=所包含的數據文件的大小的總和。

2、段(SEGMENT)
A、段是存儲在表空間中的具有不同特性的存儲結構
B、段在物理上,只屬於一個表空間
C、組成是由一些EXTENT組成的
D、當一個表空間有多個數據文件時,段可以跨越多個數據文件。
3、區(EXTENT)
A、EXTENT是由一些連續的DB BLOCK 組成的,
B、EXTENT是段的組成單位,一個段可以包含一個或多個EXTENT
4、DB BLOCK:是ORACLE空間分配和建庫是的最小分配單位

三、表空間分類:
1、SYSTEM 表空間:
A、建庫自動創建的,只包含數據字典,和系統回滾段
B、SYSTEM表空間是ORACLE的庫的所有操作所必須訪問的,因爲操作最終都要通過數據字典進行翻譯或更新數據字典。
C、SYSTEM表空間只包含系統數據,但用戶也可以將自己的應用數據建在SYSTEM表空間中,但ORACLE 不建議這樣做。
2、用戶數據表空間(非系統表空間)
A、由用戶自己建的表空間,保存用戶數據的。
B、在結構上與SYSTEM表空間,一致。
C、表空間中可以放:TABLE,INDEX,臨時,回滾
四、如何建立表空間
1、命令
CREATE TABLESPACE 表空間名稱
DATAFILE 'C:/WIN95/ZT.DBF' SIZE 1OM DEFAULT STORAGE (INITIAL 100K NEXT 100K MAXEXTENTS 1000 PCTINCREASE 0);
2、DEFAULT STORAGE的參數
A、MINEXTENTS
B、單位可以是:[K|M]

五、如何建立臨時表空間:
CREATE TABLESPACE 表空間名稱
DATAFILE 'C:/WIN95/OLM.DBF' SIZE 1OM DEFAULT STORAGE (INITIAL 100K NEXT 100K MAXEXTENTS 1000 PCTINCREASE 0) TEMPORARY;

六、如何加一個數據文件給一個表空間
1、空間不夠
2、ALTER TABLESPACE 表空間名稱 ADD DATAFILE 'C/WIN95/123.DBF' SIZE 100M;
3、路徑必須存在,路徑下沒有同名文件。

七、自動增長
ALTER TABLESPACE 名字 ADD DATAFILE
'C:/WIN95/222.DBF' SIZE 10M AUTOEXTEND ON NEXT 10M MAXSIZE 100M;

八、如何修改DEFAULT STORAGE 參數
ALTER TABLESPACE 名字 DEFAULT STORAGE (INITIAL 12OK NEXT 120K MAXEXTENTS 1200);

九、OFFLINE狀態
1、對數據的存取,僅限於ONLINE狀態的表空間所含數據。
2、當表空間爲OFFLINE時、數據不可用,用戶不可訪問
3、在表空間重定位,需要將表空間設成OFFLINE。
4、ALTER TABLESPACE 名稱 [OFFLINE|ONLINE]
5、SYSTEM表空間不可OFFLINE

十、移動數據文件

1、當因爲硬盤過舊,不安全,空間不夠,需要移動到更大的硬盤時,需要移動數據文件
2、執行過程
A、先改爲OFFLINE,
B、OS 的COPY ,將數據文件複製到新的硬盤上
C、ALTER TABLESPACE 名稱 RENAME DATAFILE '。。。。。' TO '。。。。'
D、ALTER TABLESPACE 名稱 ONLINE;
3、執行過程(2)
A、SHUTDOWN DATABASE
B、STARTUP MOUNT
C、OS 的COPY ,將數據文件複製到新的硬盤上
D、ALTER DATABASE RENAME FILE '老路徑+文件名' TO '新路徑+文件名'
E、ALTER DATABASE OPEN;

十一、如何讓一個TABLESPACE 只讀
1、命令:
ALTER TABLESPACE 名稱 READ ONLY
變爲可讀可寫:
ALTER TABLESPACE 名稱 READ WRITE
2、表空間必須ONLINE
3、沒有訪問
4、沒有激活狀態的回滾段
5、只讀只需要備份一次就夠了。

十二、DROP 表空間
1、命令:DROP TABLESPACE 名稱:
適合於新的表空間,在這個表空間中沒有任何用戶數據。
[INCLUDING CONTENTS]
數據文件中包含了用戶表和索引的 表空間必須加參數
2、注意事項
A、SYSTEM表空間不能DROP
B、DROP命令在ORACLE中,只是在邏輯上解除了數據文件和數據庫間的關係,文件本身仍然存在於硬盤上,DOS的DEL刪實際的數據文件

十三、如何獲取信息:
1、V$DATAFILE:顯示所有的數據文件名,路徑,狀態,及所屬表空間號,只讀與否
2、V$TABLESPACE: TS#,NAME
做組合查詢 :TS#
SELET D.NAME,T.NAME FROM V$DATAFILE D, V$TABLESPAE T
WHERE T.TS#=D.TS#;

3 DBA_DATA_FILES;
顯示文件名,表空間名,大小,是否自動擴展,
4、DBA_TABLESPACES
tablespace_name,以及建立該表空間時的所有的參數


第八章:臨時表空間
一、臨時表空間的使用:
1、臨時表空間是用於排序命令:在這個表空間內部不能存放任何永久性的段,不能放TABLE,INDEX,
ROLLBACK,只能放臨時段。
2、臨時表空間的使用方法:
A、排序的時候,首先用到內存,內存的排序空間的大小:SORT_AREA_SIZE
B、當內存空間不足以排序時,用到臨時表空間
C、哪些命令可能引起排序:
SELECT .... FROM EMP ORDER BY
SELECT .....FROM EMP GROUP BY
SELECT .....DISTINCT
CREATE INDEX
D、臨時段最好設在臨時表空間中,如果建用戶時沒有特別指定,將用 SYSTEM 表空間排序。這類現象應該避免
E、臨時段在排序時產生空間分配, SHUTDOWN空間回收,SMON進程負責

二、信息的獲取:
1 V$SORT_SEGMENT
TABLESPACE,SIZE,STATUS
2 V$SORT_USAGE


第九章:回滾段
一、回滾段的作用
1、用於回退事物:保留舊值,在提交之前,一旦事物放棄提交,舊值恢復回來。
2、保持數據的一致性,在提交之前,將訪問所修改數據的用戶,引導到舊值的存放地。
3、事物的恢復


二、回滾段的類型
1、SYSTEM
2、非系統回滾段(用戶自己建的回滾段,用於自己的業務)
三、回滾段的增長
1、從本章開始,所有的對象的創建,不會再有SIZE的定義。只有EXTENT的數量定義。
2、回滾段有激活的和非激活的之分,對於那些含有既沒有提交,又沒有回退的事物的信息
的EXTENT成爲激活狀態。反之則爲非激活狀態。
3、回滾段的EXTENT的分配和使用:是循環的自動的。
4、增加的時候,最大數量由MAXEXTENTS來決定。
5、ROLLBACK,可以自動回收空間,回收到多少可以由OPTIMAL指定,回收以EXTENT爲單位,在EXTENT切換時開始回收,停止:=OPTIMAL值,遇到ACT的EXTENT止。
四、ORACLE的回滾段的設置:
1、OLTP:(在線事物處理系統)事物量很大,但是每個事物對數據改動很小。火車定票,設回滾段的時候:數量多(1RBS/4TRAN),但每個回滾不需要太大。
2、 BATCH:(批處理)事物少,每個事物改動量大, 工資代發
RBS:少
SIZE: 大

五、如何建立一個回滾段:
1、命令:
A、在作之前,先建立一個RBS的專用表空間
B、CREATE ROLLBACK SEGMENT 回滾段名稱 TABLESPACE 專用表空間名稱
STORAGE (INITIAL 100K NEXT 100K MINEXTENTS 20 MAXEXTENTS 100 OPTIMAL 4M);
MINEXETENTS 》=2
MAXEXTENTS 不要設爲 UNLIMITE

六、如何將ROLLBACK設爲ONLINE
1、手工設置:
ALTER ROLLBACK SEGMENT 名稱 ONLINE;
2、修改INIT文件:
ROLLBACK_SEGMENTS=(名字)
最多可以設多少個ONLINE的回滾段:MAX_ROOLBACK_SEGMENTS

七、修改ROLLBACK的STORAGE參數
ALTER ROLLBACK SEGMENT 名稱 STORAGE(MAXEXTENTS 200);

八、手工回收空間
ALTER ROLLBACK SEGMENT 名稱 SHRINK TO 4M[4K]
1、手工回收,也是遇到ACT的停止
2、ALTER ROLLBACK SEGMENT 名稱 SHRINK ,沒有指定值,回收到OPTIMAL值,
3、當你的指定值比實際值大的時候,整個語句不執行。

九、設爲OFFLINE:
ALTER ROLLBACK SEGMENT 名稱 OFFLINE
十、DROP ROLLBACK

DROP ROLLBACK SEGMENT 名稱
DROP之前,必須先OFFLINE

十一、信息的獲取:
1、DBA_ROLLBACK_SEGS
SEGMENT_NAME,OWNER,STATUS,TABLESAPCE_NAME
2、查OPTIMAL值
A、V$ROLLNAME
B V$ROLLSTAT(OPTSIZE)
連接字段,USN

十二、錯誤分析:
1、ORA-01628:ROLLBACK的增長已經達到MAXEXTENTS的值,修改MAXEXTENTS的值,
2、ORA-01562+ORA-01560:是TABLESPACE的空間不夠了,加數據文件,
3、ORA-01555:數據一致性被破壞,ROLLBACK太小,加大MAXEXTENTS 加大EXTENT的大小 OPTIMAL加大

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章