上課內容:
表空間之增刪改(重點:修改數據文件爲自動增長)
打開和關閉數據庫的模式
上課準備/參考:
一、表空間之增刪改(重點:如何修改數據文件爲自動增長)
表空間分類:
系統表空間與非系統表空間
臨時表空間與永久表空間
表空間管理:
區管理(默認爲本地自動管理)(推薦“本地自動管理”)
——本地管理(local):支持 oracle 8i, oracle 9i,oracle 10g
<本地管理可細分爲:自動分配(默認)和統一分配>
——數據字典管理(dictionary):支持 oracle 7,oracle 8,oracle 8i,oracle 9.0.1
段管理
自動(默認)(推薦)
手動
創建表空間
create tablespace ——創建(永久)表空間
create temporary tablespace ——創建臨時表空間
create undo tablespace ——創建撤消表空間
注意:在撤銷表空間上不能建立永久方案對象(如表、索引等)
示例:
create tablespace myts01
datafile '路徑/myts01_1.dbf' size 2m
( 文件的大小不可省,擴展名必須是dbf;臨時表空間用 tempfile )
extent management local | dictionary ——區管理《默認爲本地,學生了解》
[uniform size 128k | autoallocate] ——區的分配方式《默認爲自動,學生了解》
segment space management auto ——段管理《默認爲手動,學生掌握》
刪除表空間(除了系統表空間,任何表空間都可以被刪除)
強烈建議:在刪除表空間前,對數據庫做一次完整備份,以便出錯時恢復
drop tablespace myts01 including contents
——只從數據字典中刪除表空間信息,而不刪除硬盤上的文件
drop tablespace myts01 including contents and datafiles
——連同數據字典中的表空間信息和硬盤上的文件一起刪除
修改表空間
1、修改表空間的名稱(10G特有的)
alter tablespace myts01 rename to myts01_new
2、修改表空間中數據文件的“位置和”名稱
步驟:表空間脫機----在OS中重命名數據文件----使用下面的RENAME語句,在“數據庫內部”重命名數據文件
alter tablespace myts01
rename datafile
'路徑/myts01_1.dbf', '路徑/myts01_2.dbf' --------必須來自於同一個表空間
to
'路徑/myts01_01.dbf', '路徑/myts01_02.dbf';
alter database
rename file
'路徑/myts01_01.dbf', '路徑/myts01_02.dbf' --------可以來自於不同的表空間
to
'路徑/myts01_1.dbf', '路徑/myts01_2.dbf';
2、使表空間只讀 | 可讀寫
alter tablespace myts01 read only | read write
3、使表空間脫機 | 聯機--------改變數據文件的可用性,處於脫機狀態的數據文件不可用(不能讀、也不能寫)
----改變表空間的可用性(表空間+所有數據文件):
alter tablespace myts01 offline [ normal ] | online
----改變表空間“所有數據文件”的可用性, 但是“表空間本身”的可用性不受影響《不講》
<** 此時必須處於“歸檔日誌模式(archivelog)”下 **>
alter tablespace myts01 datafile offline [ normal ] | online
----單獨改變某個數據文件的可用性《不講》
<** 此時必須處於“歸檔日誌模式(archivelog)”下 **>
alter database datafile '路徑/文件名' offline [ normal ] | online;
注意:脫機的方式有四種;
不能使“系統表空間”中的數據文件脫機
4、擴展表空間<重要>--------增加新的, 改變舊的
4.1 添加數據文件
alter tablespace myts01
add datafile '路徑/myts01_2.dbf' size 3m; <注意:size參數不可省>
autoextend on next 3m maxsize 50m;
注:若myts01是臨時表空間,則datafile應改爲tempfile
思考:能否alter database來增加數據文件?<提示:可在OEM中觀察>
*** 除了向表空間“添加新的數據文件”以外, 另一種“增加表空間的存儲空間”的方法是:
*** 改變該表空間已有數據文件的大小------- 1、設置數據文件爲自動增長 2、手工改變數據文件的大小
4.2 手工改變數據文件大小
alter database datafile '路徑/myts01_2.dbf'
resize 4m;
注意:也可利用RESIZE子句來縮小數據文件,不過必須保證縮小後的數據文件足夠容納其中已有的數據
4.3 使數據文件自動增長<重要>
----創建表空間時將數據文件設置爲自動增長
<互動>
----增加新的數據文件時設置爲自動增長
<互動>
----把已有數據文件設置爲自動增長
alter database datafile '路徑/myts01_2.dbf'
autoextend on next 1m maxsize 20m;
禁止數據文件自動增長
alter database datafile '路徑/myts01_2.dbf'
autoextend off;
5、當有多個臨時表空間時,默認臨時表空間爲TEMP 《不講》
修改數據庫默認“臨時”表空間(9.2版本 不能修改數據庫“默認表空間”)
alter database default temporary tablespace mytmpts01;
6、查詢表空間信息
6.1 使用dba_tablespaces視圖查詢表空間的基本信息
select * from dba_tablespaces;
6.2 查詢數據庫的數據文件及其所屬的表空間
select tablespace_name,file_name,blocks from dba_data_files;
二、打開和關閉數據庫的模式
回顧:
例 程-----內存中的部分
數據庫-----硬盤中的部分
啓動和關閉數據庫都是按三大步驟進行的, 每完成一個步驟,就進入一個模式
啓動數據庫的三大步驟:
1、創建並啓動例程 讀取初始化參數文件
(內存結構和服務進程得到分配、初始化和啓動)
2、裝載數據庫 由參數文件(參數control_files)找到並讀取控制文件
(讀取:數據庫名稱、數據文件的位置和名稱等關於數據庫物理結構的信息
此時,數據文件和日誌文件將處於聯機狀態)
3、打開數據庫 打開所有處於聯機狀態的數據文件和日誌文件
重要:
在啓動數據庫的過程中,文件的使用順序是:參數文件、控制文件、數據文件和日誌文件
只有這些文件都被正常讀取和使用後,數據庫才能正常啓動
關閉數據庫的三大步驟:
1、關閉數據庫
2、卸載數據庫
3、終止例程
啓動模式
startup nomount 完成啓動步驟的第1步(啓動) <適用:創建新庫、重建控制文件>
startup mount 完成啓動步驟的第1步和第2步(啓動、裝載)
<適用:重命名數據庫文件、完全恢復、改變歸檔模式>
startup [open] 默認 完成啓動步驟的第1步、第2步和第3步(啓動、裝載、打開)
startup pfile=路徑/參數文件名
轉換啓動模式
startup nomount (注意:nomount模式不能直接切換到open模式)
alter database mount (切換)
alter database open (切換)
啓動的FORCE選項
------若正常方式不能啓動,可以採用FORCE強制啓動
------原理: 首先異常關閉數據庫,然後重新啓動
------優點: 無論數據庫處於什麼模式,都可以使用該選項;不需要事先用SHUTDOWN語句關閉數據庫
啓動的PFILE選項
startup [force] pfile='e:/pfile*.ora'
create pfile='...' from spfile='...'
create spfile='...' from pfile='...'
注意:服務器初始化參數文件(spfile*.ora)是二進制文件
文本初始化參數文件(pfile*.ora或init.ora)是文本文件
2者在格式上是不同的
重要:
例程在啓動時,必須讀取一個初始化參數文件
執行startup時,如果沒有指定pfile選項,
oracle會首先讀取“默認位置的spfile”,如果沒有找到,
oracle將繼續讀取“默認位置的pfile”,如果沒有找到,
啓動就會失敗
關閉數據庫
——爲了執行脫機備份(即“冷備份”)或執行數據庫升級,DBA需要關閉數據庫
關閉數據庫的三大步驟:
1、關閉數據庫——將日誌緩存中的內容寫入日誌文件,將數據緩存中的“髒數據”寫入數據文件,
再關閉所有的數據文件和日誌文件,但是控制文件依然打開
2、卸載數據庫——控制文件被關閉,但例程依然存在
3、終止例程——終止所有的服務進程和後臺進程,回收SGA
關閉選項
shutdown normal(默認)——特點:阻止新的連接,“等待”用戶主動斷開現有連接
(因爲被動等待,所以耗時可能很長,關閉所耗時間完全取決於用戶主動斷開連接的時間)
shutdown transactional——特點:阻止新的連接和新的事務,“等待”所有未提交的活動事務提交
(可保證用戶不會丟失當前工作的信息)
shutdown immediate——特點:阻止新的連接和新的事務,立即回滾未提交的事務(“不用等待”)
(脫機備份、電力即將中斷、數據庫異常但無法通知用戶)