控制文件一個數據庫一個就行,但一般不止一個,因爲若那一個不慎壞了丟了那數據庫裏的數據也就差不多沒了,所以一般數據庫要有多個控制文件,他們都是一樣的,分別放在不同的地方
查看控制文件相關信息:
SQL> conn sys/orcl as sysdba
已連接。
SQL> select type,record_size,records_total,records_used from
2 v$controlfile_record_section
3 where type in('datafile','tablespace','redo log');
未選定行
record_size:每記錄字節數,records_total:記錄總數,records_used:使用的記錄個數
這裏未選定行是因爲後面where子句限制了,可能那些沒有任何東東,下面演示一個不限制的。
有錯誤,待會。暫定問題4.
用數據字典V$parameter或v$controlfile獲取控制文件的名字:
SQL> select value from v$parameter
2 where name='control_files';
VALUE
--------------------------------------------------------------------------------
C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\CONTROL01.CTL, C:\ORACLE\PRODUCT\10.2.0\OR
ADATA\ORCL\CONTROL02.CTL, C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\CONTROL03.CTL
或
SQL> col name for a55
SQL> select * from v$controlfile;
STATUS NAME IS_ BLOCK_SIZE
------- ------------------------------------------------------- --- ----------
FILE_SIZE_BLKS
--------------
C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\CONTROL01.CTL NO 16384
430
C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\CONTROL02.CTL NO 16384
430
C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\CONTROL03.CTL NO 16384
430
第一個僅僅是給出了控制文件的名字和位置,第二個明顯要詳細得多,大小一樣,存儲方式都不是BLOCK。
而且兩種方法都可以看的出控制文件都存在同一個目錄下,這是不必要也是非常危險的。
不過這個430是神馬東東?求指導!
下面開始複製控制文件:
準備工作在cmd中:
切換到控制文件所在的目錄:
C:\>cd c:\oracle\product\10.2.0\oradata\orcl
C:\oracle\product\10.2.0\oradata\orcl>dir *.ctl
驅動器 C 中的卷沒有標籤。
卷的序列號是 F858-0D2D
C:\oracle\product\10.2.0\oradata\orcl 的目錄
2012-04-25 14:07 7,061,504 CONTROL01.CTL
2012-04-25 14:07 7,061,504 CONTROL02.CTL
2012-04-25 14:07 7,061,504 CONTROL03.CTL
3 個文件 21,184,512 字節
0 個目錄 6,681,051,136 可用字節
C:\oracle\product\10.2.0\oradata\orcl>cd c:\
新建三個目錄:
C:\>mkdir disk3\orcl
C:\>mkdir disk6\orcl
C:\>mkdir disk9\orcl
查看:
C:\>dir
驅動器 C 中的卷沒有標籤。
卷的序列號是 F858-0D2D
C:\ 的目錄
2012-04-20 20:10 0 AUTOEXEC.BAT
2012-04-20 20:10 0 CONFIG.SYS
2012-04-25 14:53 <DIR> disk3
2012-04-25 14:53 <DIR> disk6
2012-04-25 14:53 <DIR> disk9
2012-04-20 20:15 <DIR> Documents and Settings
2012-04-20 21:43 <DIR> oracle
2012-04-23 22:45 <DIR> PerfLog
2012-04-25 14:05 <DIR> Program Files
2012-04-25 14:51 <DIR> TEMP
2012-04-20 20:20 <DIR> WINDOWS
2 個文件 0 字節
9 個目錄 6,681,042,944 可用字節
切換sqlplus窗口:
首先查看自己的數據庫系統使用的是正文初始化參數文件(pfile)還是服務器初始化參數文件(spfile):
SQL> show parameter pfile
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
spfile string C:\ORACLE\PRODUCT\10.2.0\DB_1\
DBS\SPFILEORCL.ORA
是後者。
SQL> select * from v$controlfile;
STATUS NAME IS_ BLOCK_SIZE
------- ------------------------------------------------------- --- ----------
FILE_SIZE_BLKS
--------------
C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\CONTROL01.CTL NO 16384
430
C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\CONTROL02.CTL NO 16384
430
C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\CONTROL03.CTL NO 16384
430
SQL> alter system set control_files=
2 'c:\disk3\orcl\control01.ctl',
3 'c:\disk6\orcl\control02.ctl',
4 'c:\disk9\orcl\control03.ctl'
5 scope=spfile;
系統已更改。
SQL> shutdown immediate
數據庫已經關閉。
已經卸載數據庫。
ORACLE 例程已經關閉。
SQL> host copy c:\oracle\product\10.2.0\oradata\orcl\control01.ctl c:\disk3\control01.ctl;(複製成功時會閃過一個命令提示符窗口)
SQL> host copy c:\oracle\product\10.2.0\oradata\orcl\control02.ctl c:\disk6\control02.ctl
SQL> host copy c:\oracle\product\10.2.0\oradata\orcl\control03.ctl c:\disk9\control03.ctl;
切換cmd查看:
C:\>dir disk3 disk6 disk9
驅動器 C 中的卷沒有標籤。
卷的序列號是 F858-0D2D
C:\disk3 的目錄
2012-04-25 15:01 <DIR> .
2012-04-25 15:01 <DIR> ..
2012-04-25 14:56 7,061,504 control01.ctl
2012-04-25 14:53 <DIR> orcl
1 個文件 7,061,504 字節
C:\disk6 的目錄
2012-04-25 15:02 <DIR> .
2012-04-25 15:02 <DIR> ..
2012-04-25 14:56 7,061,504 control02.ctl
2012-04-25 14:53 <DIR> orcl
1 個文件 7,061,504 字節
C:\disk9 的目錄
2012-04-25 15:02 <DIR> .
2012-04-25 15:02 <DIR> ..
2012-04-25 14:56 7,061,504 control03.ctl
2012-04-25 14:53 <DIR> orcl
1 個文件 7,061,504 字節
3 個目錄 6,637,502,464 可用字節
切回:
SQL> startup
ORACLE 例程已經啓動。
Total System Global Area 167772160 bytes
Fixed Size 1247900 bytes
Variable Size 88081764 bytes
Database Buffers 75497472 bytes
Redo Buffers 2945024 bytes
ORA-00205: ?????????, ??????, ???????
這裏出現了一個問題3,我就怕這個問題,上回就是這個練習折騰了好久說。。。這次不知會怎樣了又。。
好了,是因爲將新的控制文件名添加到參數文件的control_file參數中時出錯了,導致數據庫啓動時找不到控制文件而失敗。現改正如下:
啓用DOS窗口(我前面都是說cmd窗口,我說的是一個意思,只是忘了專有名詞了。。。)先登錄sqlplus /nolog
SQL> host copy c:\disk3\control01.ctl c:\disk3\orcl\control01.ctl
已複製 1 個文件。
SQL> host copy c:\disk6\control02.ctl c:\disk6\orcl\control02.ctl
已複製 1 個文件。
SQL> host copy c:\disk9\control03.ctl c:\disk9\orcl\control03.ctl
已複製 1 個文件。
再調用一個DOS窗口或先退出sql,查看一下:
C:\>dir disk3\orcl disk6\orcl disk9\orcl
驅動器 C 中的卷沒有標籤。
卷的序列號是 F858-0D2D
C:\disk3\orcl 的目錄
2012-04-25 19:50 <DIR> .
2012-04-25 19:50 <DIR> ..
2012-04-25 14:56 7,061,504 control01.ctl
1 個文件 7,061,504 字節
C:\disk6\orcl 的目錄
2012-04-25 19:51 <DIR> .
2012-04-25 19:51 <DIR> ..
2012-04-25 14:56 7,061,504 control02.ctl
1 個文件 7,061,504 字節
C:\disk9\orcl 的目錄
2012-04-25 19:51 <DIR> .
2012-04-25 19:51 <DIR> ..
2012-04-25 14:56 7,061,504 control03.ctl
1 個文件 7,061,504 字節
2 個目錄 6,603,849,728 可用字節
好了,正常。直接在硬盤上也可以找到的。
SQL> conn sys/ as sysdba
輸入口令:
已連接到空閒例程。
SQL> startup
ORACLE 例程已經啓動。
Total System Global Area 167772160 bytes
Fixed Size 1247900 bytes
Variable Size 88081764 bytes
Database Buffers 75497472 bytes
Redo Buffers 2945024 bytes
數據庫裝載完畢。
數據庫已經打開。
檢查一下:
SQL> col name for a55
SQL> select * from v$controlfile;
STATUS NAME IS_ BLOCK_SIZE
------- ------------------------------------------------------- --- ----------
FILE_SIZE_BLKS
--------------
C:\DISK3\ORCL\CONTROL01.CTL NO 16384
430
C:\DISK6\ORCL\CONTROL02.CTL NO 16384
430
C:\DISK9\ORCL\CONTROL03.CTL NO 16384
430
一切正常。
最後一步,把原來的、搞錯的控制文件刪除。可以手動,可以代碼。
代碼:
切換目錄:C:\Documents and Settings\Administrator>cd c:\oracle\product\10.2.0\oradata\or
查看:C:\oracle\product\10.2.0\oradata\orcl>dir
驅動器 C 中的卷沒有標籤。
卷的序列號是 F858-0D2D
C:\oracle\product\10.2.0\oradata\orcl 的目錄
2012-04-20 21:50 <DIR> .
2012-04-20 21:50 <DIR> ..
2012-04-25 14:56 7,061,504 CONTROL01.CTL
2012-04-25 14:56 7,061,504 CONTROL02.CTL
2012-04-25 14:56 7,061,504 CONTROL03.CTL
2012-04-25 20:09 104,865,792 EXAMPLE01.DBF
2012-04-25 20:09 52,429,312 REDO01.LOG
2012-04-25 20:09 52,429,312 REDO02.LOG
2012-04-25 20:09 52,429,312 REDO03.LOG
2012-04-25 20:09 251,666,432 SYSAUX01.DBF
2012-04-25 20:09 503,324,672 SYSTEM01.DBF
2012-04-23 22:20 22,028,288 TEMP01.DBF
2012-04-25 20:09 41,951,232 UNDOTBS01.DBF
2012-04-25 20:09 5,251,072 USERS01.DBF
12 個文件 1,107,559,936 字節
2 個目錄 6,601,113,600 可用字節
3個控制文件。刪除:
C:\oracle\product\10.2.0\oradata\orcl>del contro*
查看:
C:\oracle\product\10.2.0\oradata\orcl>dir
驅動器 C 中的卷沒有標籤。
卷的序列號是 F858-0D2D
C:\oracle\product\10.2.0\oradata\orcl 的目錄
2012-04-25 20:19 <DIR> .
2012-04-25 20:19 <DIR> ..
2012-04-25 20:09 104,865,792 EXAMPLE01.DBF
2012-04-25 20:09 52,429,312 REDO01.LOG
2012-04-25 20:09 52,429,312 REDO02.LOG
2012-04-25 20:09 52,429,312 REDO03.LOG
2012-04-25 20:09 251,666,432 SYSAUX01.DBF
2012-04-25 20:09 503,324,672 SYSTEM01.DBF
2012-04-23 22:20 22,028,288 TEMP01.DBF
2012-04-25 20:09 41,951,232 UNDOTBS01.DBF
2012-04-25 20:09 5,251,072 USERS01.DBF
9 個文件 1,086,375,424 字節
2 個目錄 6,622,322,688 可用字節
沒了
切換目錄,這回是搞錯的。。。:
C:\oracle\product\10.2.0\oradata\orcl>cd c:\disk3
C:\disk3>del contro*
C:\disk3>dir
驅動器 C 中的卷沒有標籤。
卷的序列號是 F858-0D2D
C:\disk3 的目錄
2012-04-25 20:20 <DIR> .
2012-04-25 20:20 <DIR> ..
2012-04-25 19:50 <DIR> orcl
0 個文件 0 字節
3 個目錄 6,629,384,192 可用字節
C:\disk3>cd orcl
C:\disk3\orcl>dir
驅動器 C 中的卷沒有標籤。
卷的序列號是 F858-0D2D
C:\disk3\orcl 的目錄
2012-04-25 19:50 <DIR> .
2012-04-25 19:50 <DIR> ..
2012-04-25 20:09 7,061,504 control01.ctl
1 個文件 7,061,504 字節
2 個目錄 6,629,384,192 可用字節
C:\disk3\orcl>cd disk6
系統找不到指定的路徑。
C:\disk3\orcl>del control*
手賤刪錯了。。。暫定問題5。。。
C:\disk3\orcl>dir
驅動器 C 中的卷沒有標籤。
卷的序列號是 F858-0D2D
C:\disk3\orcl 的目錄
2012-04-25 20:20 <DIR> .
2012-04-25 20:20 <DIR> ..
0 個文件 0 字節
2 個目錄 6,636,445,696 可用字節
C:\disk3\orcl>cd disk9
系統找不到指定的路徑。
C:\disk3\orcl>cd disk9
系統找不到指定的路徑。
C:\disk3\orcl>cd c:\disk9
C:\disk9>del contro*
C:\disk9>cd c:\disk6
C:\disk6>del contro*
C:\disk6>dir
驅動器 C 中的卷沒有標籤。
卷的序列號是 F858-0D2D
C:\disk6 的目錄
2012-04-25 20:29 <DIR> .
2012-04-25 20:29 <DIR> ..
2012-04-25 19:51 <DIR> orcl
0 個文件 0 字節
3 個目錄 6,649,733,120 可用字節
C:\disk6>cd orcl
C:\disk6\orcl>dir
驅動器 C 中的卷沒有標籤。
卷的序列號是 F858-0D2D
C:\disk6\orcl 的目錄
2012-04-25 19:51 <DIR> .
2012-04-25 19:51 <DIR> ..
2012-04-25 20:09 7,061,504 control02.ctl
1 個文件 7,061,504 字節
2 個目錄 6,649,667,584 可用字節
氣死我啦!!!
所以啊,手動吧親!!!
還有啊,備份啊備份啊親,很重要!!我居然漏了這一步。。。。我恨啊!!