1、實驗目的
(1)掌握Oracle數據庫數據文件的管理。
(2)掌握Oracle數據庫控制文件的管理。
(3)掌握Oracle數據庫重做日志文件的管理。
(4)掌握Oracle數據庫歸檔管理。
2、實驗環境
Windows 7家庭普通版。
Oracle 11g
3、實驗要求
(1)完成數據文件的管理操作,包括數據文件的創建、修改、重命名、移植及查詢等操作。
(2)完成控制文件的管理操作,包括控制文件的添加、備份、刪除以有查詢操作。
(3)完成重做日志文件的管理操作,包括重做日志文件組及其成員文件的添加、刪除、查詢等操作,以及重做日志文件的重命名、移植、日志切換等操作。
(4)完成數據庫歸檔模式設置、歸檔路徑設置。
4、實驗內容
(1)向BOOKSALES數據庫的USERS表空間添加一個大小為10MB的數據文件users02.dbf。
(2)向BOOKSALES數據庫的TEMP表空間添加一個大小為10MB的臨時數據文件temp02.dbf。
(3)向BOOKSALES數據庫的USERS表空間中添加一個可以自動擴展的數據文件user03.dbf,大小5MB,每次擴展1MB,最大容量為100MB。
(4)取消BOOKSALES數據庫數據文件user03.dbf的自動擴展。
(5)將BOOKSALES數據庫數據文件users02.dbf更名為users002.dbf。
(6)查詢BOOKSALES數據庫當前所有的數據文件的詳細信息。
(7)為BOOKSALES數據庫添加一個多路復用的控制文件control03.ctl。
(8)以二進制文件的形式備份BOOKSALES數據庫的控制文件。
(9)將BOOKSALES數據庫的控制文件以文本方式備份到跟蹤文件中,並查看備份的內容。
(10)刪除BOOKSALES數據庫的控制文件control03.ctl。
(11)查詢BOOKSALES數據庫當前所有控制文件信息。
(12)向BOOKSALES數據庫添加一個重做日志文件組(組號為4),包含一個成員文件undo04a.log,大小為4MB。
(13)向BOOKSALES數據庫的重做日志組4中添加一個成員文件,名稱為undo04b.log。
(14)將BOOKSALES數據庫的重做日志組4中所有成員文件移植到一個新的目錄下。
(15)查詢BOOKSALES數據庫中所有重做日志文件組的狀態。
(16)查詢BOOKSALES數據庫中所有重做日志文件成員的狀態。
(17)刪除BOOKSALES數據庫的重做日志組4中的成員文件undo04b.log。
(18)刪除BOOKSALES數據庫的重做日志組4。
(19)查看BOOKSALES數據庫是否處於歸檔模式。
(20)將BOOKSALES數據庫設置為歸檔模式。
(21)為BOOKSALES數據庫設置3個歸檔目標,其中一個為強制歸檔目標。
(22)對BOOKSALES數據庫進行5次日志切換,查看歸檔日志信息。
5、實驗過程與結果
1) 向BOOKSALES數據庫的USERS表空間添加一個大小為10MB的數據文件users02.dbf。
ORACLE語句:
SQL> ALTER TABLESPACE USERS ADD DATAFILE
2 'C:\ORACLESQL\ORADATA\ORAL\USERS02.DBF' SIZE 10M;
查詢語句:
SQL> SELECT T.TABLESPACE_NAME, ROUND(SUM(BYTES / (1024 * 1024)), 0) TS_SIZE
2 FROM DBA_TABLESPACES T, DBA_DATA_FILES D
3 WHERE T.TABLESPACE_NAME = D.TABLESPACE_NAME
4 GROUP BY T.TABLESPACE_NAME;
修改前:
修改后:
2) 向BOOKSALES數據庫的TEMP表空間添加一個大小為10MB的臨時數據文件temp02.dbf。
ORACLE語句:
SQL> ALTER TABLESPACE TEMP ADD TEMPFILE
2 'C:\ORACLESQL\ORADATA\ORAL\TEMP02.DBF' SIZE 10M;
查詢語句:
SQL> SELECT TABLESPACE_NAME, FREE_SPACE/1024/1024 AS "FREE SPACE(M)"
2 FROM DBA_TEMP_FREE_SPACE
3 WHERE TABLESPACE_NAME = 'TEMP';
修改前:
修改后:
3) 向BOOKSALES數據庫的USERS表空間中添加一個可以自動擴展的數據文件user03.dbf,大小5MB,每次擴展1MB,最大容量為100MB。
ORACLE語句:
SQL> ALTER TABLESPACE USERS ADD DATAFILE
2 'C:\ORACLESQL\ORADATA\ORAL\USER03.DBF' SIZE 5M
3 AUTOEXTEND ON NEXT 1M MAXSIZE 100M;
查詢語句:
SQL> SELECT T.TABLESPACE_NAME, ROUND(SUM(BYTES / (1024 * 1024)), 0) TS_SIZE
2 FROM DBA_TABLESPACES T, DBA_DATA_FILES D
3 WHERE T.TABLESPACE_NAME = D.TABLESPACE_NAME
4 GROUP BY T.TABLESPACE_NAME;
截圖:
4) 取消BOOKSALES數據庫數據文件user03.dbf的自動擴展。
ORACLE語句:
SQL> ALTER DATABASE DATAFILE 'C:\ORACLESQL\ORADATA\ORAL\USER03.DBF' AUTOEXTEND OFF;
查詢語句:
SQL> SELECT FILE_NAME,AUTOEXTENSIBLE FROM DBA_DATA_FILES WHERE FILE_NAME='C:\ORACLESQL\ORADATA\ORAL\USER03.DBF';
修改前:
修改后:
5) 將BOOKSALES數據庫數據文件users02.dbf更名為users002.dbf。
ORACLE語句:
SQL> ALTER TABLESPACE USERS OFFLINE;
(然后手動去資源管理器修改其路徑下數據文件的名稱)
SQL> ALTER TABLESPACE USERS RENAME DATAFILE
2 'C:\ORACLESQL\ORADATA\ORAL\USERS02.DBF' TO
3 'C:\ORACLESQL\ORADATA\ORAL\USERS002.DBF';
SQL> ALTER TABLESPACE USERS ONLINE;
查詢語句:
SQL> SELECT FILE_NAME FROM DBA_DATA_FILES;
修改前:
修改后:
6) 查詢BOOKSALES數據庫當前所有的數據文件的詳細信息。
ORACLE語句:
SQL> SELECT * FROM DBA_DATA_FILES;
截圖:
7) 為BOOKSALES數據庫添加一個多路復用的控制文件control03.ctl。
ORACLE語句:
SQL> ALTER SYSTEM SET CONTROL_FILES=
2 'C:\ORACLESQL\ORADATA\ORAL\CONTROL01.CTL',
3 'C:\ORACLESQL\ORADATA\ORAL\CONTROL03.CTL' SCOPE=SPFILE;
SQL> CONN /AS SYSDBA
SQL> SHUTDOWN IMMEDIATE
SQL> HOST COPY C:\ORACLESQL\ORADATA\ORAL\CONTROL01.CTL C:\ORACLESQL\ORADATA\ORAL\CONTROL03.CTL
SQL> STARTUP
查詢語句:
SQL> SELECT * FROM V$controlfile;
截圖:
8) 以二進制文件的形式備份BOOKSALES數據庫的控制文件。
ORACLE語句:
SQL> alter database backup controlfile to 'C:\ORACLE_LOG\CONTROL01.BKP';
SQL> alter database backup controlfile to 'C:\ORACLE_LOG\CONTROL03.BKP';
截圖:
9) 將BOOKSALES數據庫的控制文件以文本方式備份到跟蹤文件中,並查看備份的內容。
ORACLE語句:
SQL> alter database backup controlfile to trace;
查詢語句:
SQL> SHOW PARAMETER USER_DUMP;
截圖:
10) 刪除BOOKSALES數據庫的控制文件control03.ctl。
ORACLE語句:
SQL> ALTER SYSTEM SET CONTROL_FILES='C:\ORACLESQL\ORADATA\ORAL\CONTROL01.CTL' SCOPE=SPFILE;
SQL> SHUTDOWN IMMEDIATE
SQL> HOST DEL C:\ORACLESQL\ORADATA\ORAL\CONTROL03.CTL
SQL> STARTUP
查詢語句:
SQL> SELECT * FROM V$controlfile;
截圖:
11) 查詢BOOKSALES數據庫當前所有控制文件信息。
ORACLE語句:
SQL> SELECT * FROM V$controlfile;
截圖:
12) 向BOOKSALES數據庫添加一個重做日志文件組(組號為4),包含一個成員文件undo04a.log,大小為4MB。
ORACLE語句:
SQL> alter database add logfile group 4('C:\ORACLESQL\ORADATA\ORAL\UNDO04A.LOG') SIZE 4M;
查詢語句:
SQL> SELECT * FROM v$logfile;
截圖:
13) 向BOOKSALES數據庫的重做日志組4中添加一個成員文件,名稱為undo04b.log。
ORACLE語句:
SQL> alter database add logfile member 'C:\ORACLESQL\ORADATA\ORAL\UNDO04B.LOG' TO GROUP 4;
查詢語句:
SQL> SELECT * FROM v$logfile;
截圖:
14) 將BOOKSALES數據庫的重做日志組4中所有成員文件移植到一個新的目錄下。
ORACLE語句:
SQL> HOST MOVE C:\ORACLESQL\ORADATA\ORAL\UNDO04A.LOG C:\ORACLE_LOG\UNDO04A.LOG
SQL> HOST MOVE C:\ORACLESQL\ORADATA\ORAL\UNDO04B.LOG C:\ORACLE_LOG\UNDO04B.LOG
截圖:
15) 查詢BOOKSALES數據庫中所有重做日志文件組的狀態。
ORACLE語句:
SQL> select group#, sequence#, members,archived,status from v$log;
截圖:
16) 查詢BOOKSALES數據庫中所有重做日志文件成員的狀態。
ORACLE語句:
SQL> select group#, status, member from v$logfile;
截圖:
17) 刪除BOOKSALES數據庫的重做日志組4中的成員文件undo04b.log。
ORACLE語句:
SQL> ALTER DATABASE DROP LOGFILE MEMBER 'C:\ORACLESQL\ORADATA\ORAL\UNDO04B.LOG';
查詢語句:
SQL> SELECT * FROM v$logfile;
截圖:
18) 刪除BOOKSALES數據庫的重做日志組4。
ORACLE語句:
SQL> alter database drop logfile group 4;
查詢語句:
SQL> SELECT * FROM v$logfile;
截圖:
19) 查看BOOKSALES數據庫是否處於歸檔模式。(因為第一次實驗時已經切換成了歸檔模式,所以這次操作實際上沒有改變什么)
ORACLE語句:
SQL> archive log list
截圖:
20) 將BOOKSALES數據庫設置為歸檔模式。
ORACLE語句:
SQL> SHUTDOWN IMMEDIATE
SQL> STARTUP MOUNT
SQL> ALTER DATABASE ARCHIVELOG;
SQL> ALTER DATABASE OPEN;
查詢語句:
SQL> archive log list
截圖:
21) 為BOOKSALES數據庫設置3個歸檔目標,其中一個為強制歸檔目標。
ORACLE語句:
SQL> alter system set log_archive_dest_1='location=C:\ORACLE_LOG\a\archive mandatory';
SQL> alter system set log_archive_dest_2='location=C:\ORACLE_LOG\b\archive mandatory';
SQL> alter system set log_archive_dest_3='service=standby1';
截圖:
22) 對BOOKSALES數據庫進行5次日志切換,查看歸檔日志信息。
ORACLE語句:
SQL> alter system switch logfile;
查詢語句:
SQL> select sequence#,first_change#,next_change# from V$archived_log;
截圖:
6、實驗遇到的問題及解決辦法
- 在對USER02.DBF重命名的時候提示錯誤,內容為未找到新文件。
解決方法:先將USERS表脫機后再操作文件,可以正常更改表空間。
- 在備份控制文件時輸入路徑后執行會報“操作將重用當前已裝載的控制文件的名稱”的錯誤。
解決方法:將備份路徑換到其他與oracle不相干的文件夾內可以正常備份。
- 在刪除重做日志組文件時輸入移動后的日志組文件路徑並刪除將提示錯誤為“非日志文件成員”。
解決方法:移動日志組文件不會改變Oracle內存儲的邏輯路徑,直接刪除原路徑即可。