久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

怎么掌握Oracle數(shù)據(jù)文件和臨時(shí)文件的管理

135次閱讀
沒有評論

共計(jì) 6921 個(gè)字符,預(yù)計(jì)需要花費(fèi) 18 分鐘才能閱讀完成。

這篇文章主要介紹“怎么掌握 Oracle 數(shù)據(jù)文件和臨時(shí)文件的管理”,在日常操作中,相信很多人在怎么掌握 Oracle 數(shù)據(jù)文件和臨時(shí)文件的管理問題上存在疑惑,丸趣 TV 小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”怎么掌握 Oracle 數(shù)據(jù)文件和臨時(shí)文件的管理”的疑惑有所幫助!接下來,請跟著丸趣 TV 小編一起來學(xué)習(xí)吧!

一、數(shù)據(jù)文件概述
在 Oracle 數(shù)據(jù)庫中,SYSTEM 和 SYSAUX 表空間至少需要包含一個(gè)數(shù)據(jù)文件,此外還將包含多個(gè)其他表空間及與其相關(guān)的數(shù)據(jù)文件和臨時(shí)文件。Oracle 的數(shù)據(jù)文件和臨時(shí)文件是操作系統(tǒng)文件,屬于數(shù)據(jù)庫物理結(jié)構(gòu)范疇,用于存儲數(shù)據(jù)庫中的邏輯結(jié)構(gòu)的數(shù)據(jù)。在創(chuàng)建表空間時(shí),必須明確的為每個(gè)表空間指定數(shù)據(jù)文件。

Oracle 通過兩種方式為文件分配編號:絕對文件號,用于唯一標(biāo)識數(shù)據(jù)庫中的數(shù)據(jù)文件,絕對文件號可以通過 v$datafile 或 v$tempfile 視圖的 FILE# 列查詢,也可以通過 DBA_DATA_FILES 或 DBA_TEMP_FILES 視圖的 FILE_ID 列查詢;相對文件號,用于唯一標(biāo)識表空間內(nèi)的數(shù)據(jù)文件。大多數(shù)情況下,絕對文件編號和相對文件編號都是相等的,但當(dāng)數(shù)據(jù)庫中的數(shù)據(jù)文件數(shù)量超出了一個(gè)閾值(比如 1023),那么他們就不再相等了。大文件表空間數(shù)據(jù)文件的相對文件號總為 1024。

查詢數(shù)據(jù)文件的絕對文件號和相對文件號:
select t.name tablespace_name,d.file#,d.rfile#,d.name file_name from v$tablespace t,v$datafile d where t.ts#=d.ts#;
TABLESPACE_NAME           FILE#     RFILE# FILE_NAME
——————– ———- ———- ————————————————–
SYSTEM                        1          1 /u01/app/oracle/oradata/stdb/system01.dbf
UNDOTBS1                      2          2 /u01/app/oracle/oradata/stdb/undotbs01.dbf
SYSAUX                        3          3 /u01/app/oracle/oradata/stdb/sysaux01.dbf
USERS                         4          4 /u01/app/oracle/oradata/stdb/users01.dbf
USERS                         8          8 /u01/app/oracle/oradata/stdb/user02.dbf
EXAMPLE                       5          5 /u01/app/oracle/oradata/stdb/example01.dbf
TEST                          7          7 /u01/app/oracle/oradata/stdb/test02.dbf
TEST                          6          6 /u01/app/oracle/oradata/stdb/test01.dbf
BIGTBS                        9       1024 /u01/app/oracle/oradata/stdb/bigfile01.dbf
9 rows selected.

數(shù)據(jù)庫所能夠創(chuàng)建的數(shù)據(jù)文件數(shù)量受 CREATE DATABASE … MAXDATAFILES 語句和 DB_FILES 參數(shù)的影響。另外,還應(yīng)注意操作系統(tǒng)在創(chuàng)建文件數(shù)量方面的強(qiáng)制限制。在實(shí)例啟動(dòng)過程中,Oracle 將根據(jù)初始化參數(shù) DB_FILES 分配 SGA 中用于保存數(shù)據(jù)文件信息的空間,實(shí)例可以根據(jù)這個(gè)參數(shù)值來決定所能創(chuàng)建的最大文件的數(shù)量。該參數(shù)可以修改,但必須重啟數(shù)據(jù)庫方可生效,該參數(shù)在實(shí)例的整個(gè)生命周期中有效。

表空間中包含的數(shù)據(jù)文件的數(shù)據(jù)量的多少,最終會(huì)影響到數(shù)據(jù)庫的性能。Oracle 允許的在線文件數(shù)量超過了操作系統(tǒng)的默認(rèn)限制,DBWn 進(jìn)程能夠打開所有的在線數(shù)據(jù)文件,并有能力緩存所有處理中的文件,當(dāng)打開文件數(shù)據(jù)量達(dá)到操作系統(tǒng)的默認(rèn)限制時(shí),Oracle 將自動(dòng)關(guān)閉文件。這可能會(huì)對性能產(chǎn)生負(fù)面的影響,建議調(diào)整操作系統(tǒng)的默認(rèn)限制值,使其大于數(shù)據(jù)庫的在線文件數(shù)量。

二、為表空間創(chuàng)建和添加文件
為表空間創(chuàng)建和添加數(shù)據(jù)文件的方法在之前已經(jīng)學(xué)習(xí)過了,這里僅簡要回顧一下。
1、在創(chuàng)建表空間的同時(shí)創(chuàng)建數(shù)據(jù)文件
create tablespae … datafile /xxx/xxxx/xxxx … size xx 
create temporary tablespace  datafile /xxx/xxxx/xxxx … size xx
2、為已存在的表空間添加數(shù)據(jù)文件
alter tablespace … add datafile   /xxx/xxxx/xxxx … size xx
alter tablespace … add tempfile /xxx/xxxx/xxxx … size xx

三、修改數(shù)據(jù)文件大小
使用自動(dòng)擴(kuò)展子句為表空間添加數(shù)據(jù)文件:
SQL create tablespace test_tbs
  2  datafile /u01/app/oracle/oradata/stdb/test03.dbf size 10m
  3  autoextend on
  4  next 1m
  5  maxsize 100m;
Tablespace created.

打開數(shù)據(jù)文件自動(dòng)擴(kuò)展:
SQL alter database datafile /u01/app/oracle/oradata/stdb/test02.dbf    
  2  autoextend on
  3  next 1m
  4  maxsize 100m;
Database altered.

關(guān)閉數(shù)據(jù)文件自動(dòng)擴(kuò)展:
SQL alter database datafile /u01/app/oracle/oradata/stdb/test02.dbf
  2  autoextend off;
Database altered.

手動(dòng) RESIZE 數(shù)據(jù)文件大小:
SQL alter database datafile /u01/app/oracle/oradata/stdb/test03.dbf resize 20m;
Database altered.

四、修改數(shù)據(jù)文件可用性
可以通過執(zhí)行數(shù)據(jù)文件的在線和離線操作修改數(shù)據(jù)文件的可用性,離線的數(shù)據(jù)文件不能被數(shù)據(jù)庫所訪問,直到它恢復(fù)在線狀態(tài)之前。只讀表空間中的數(shù)據(jù)文件也可以被離線或在線,只讀表空間內(nèi)的數(shù)據(jù)文件的在線或離線不影響表空間自身的狀態(tài),不管怎么樣,在表空間未處于讀寫狀態(tài)之前,這些文件都是不可寫的。

1、歸檔模式下的數(shù)據(jù)文件離線
SQL  alter database datafile /u01/app/oracle/oradata/stdb/test03.dbf offline;
Database altered.

SQL  alter database datafile /u01/app/oracle/oradata/stdb/test03.dbf online;
 alter database datafile /u01/app/oracle/oradata/stdb/test03.dbf online
*
ERROR at line 1:
ORA-01113: file 10 needs media recovery             //test03.dbf 文件離線時(shí)不觸發(fā)檢查點(diǎn)操作,所以該文件恢復(fù)在線時(shí)提示需要介質(zhì)恢復(fù)
ORA-01110: data file 10: /u01/app/oracle/oradata/stdb/test03.dbf

SQL archive log list
Database log mode              Archive Mode
Automatic archival             Enabled
Archive destination            /u02/arch_1
Oldest online log sequence     5
Next log sequence to archive   7
Current log sequence           7

SQL recover datafile 10;
Media recovery complete.

SQL alter database datafile /u01/app/oracle/oradata/stdb/test03.dbf online;
Database altered.

2、非歸檔模式下的數(shù)據(jù)文件離線
在非歸檔模式下使用 alter database … offline for drop 語句離線數(shù)據(jù)文件。offline 關(guān)鍵字標(biāo)記該數(shù)據(jù)文件離線,不論其是否損壞,所以可以打開數(shù)據(jù)庫;for drop 關(guān)鍵字標(biāo)記該數(shù)據(jù)文件隨后被刪除,該數(shù)據(jù)文件不能再次恢復(fù)到在線狀態(tài)。(實(shí)際上,在在線日志組還未發(fā)生切換之前,還是可以恢復(fù)到在線狀態(tài)的)

SQL alter database datafile D:\app\Manganese\oradata\orcl\test01.dbf offline for drop;
數(shù)據(jù)庫已更改。

SQL alter system switch logfile;
系統(tǒng)已更改。

SQL alter system switch logfile;
系統(tǒng)已更改。

SQL alter system switch logfile;
系統(tǒng)已更改。

SQL alter database datafile D:\app\Manganese\oradata\orcl\test01.dbf online;
alter database datafile D:\app\Manganese\oradata\orcl\test01.dbf online
*
第 1 行出現(xiàn)錯(cuò)誤:
ORA-01113: 文件 7 需要介質(zhì)恢復(fù)
ORA-01110: 數(shù)據(jù)文件 7: D:\APP\MANGANESE\ORADATA\ORCL\TEST01.DBF

SQL recover datafile 7;
ORA-00279: 更改 1108304 (在 03/19/2014 15:44:41 生成) 對于線程 1 是必需的
ORA-00289: 建議:
D:\APP\MANGANESE\FLASH_RECOVERY_AREA\ORCL\ARCHIVELOG\2014_03_19\O1_MF_1_9_%U_.ARC
ORA-00280: 更改 1108304 (用于線程 1) 在序列 #9 中
指定日志: {RET =suggested | filename | AUTO | CANCEL}
auto
ORA-00308: 無法打開歸檔日志
D:\APP\MANGANESE\FLASH_RECOVERY_AREA\ORCL\ARCHIVELOG\2014_03_19\O1_MF_1_9_%U_.ARC
ORA-27041: 無法打開文件
OSD-04002: 無法打開文件
O/S-Error: (OS 2) 系統(tǒng)找不到指定的文件。
ORA-00308: 無法打開歸檔日志
D:\APP\MANGANESE\FLASH_RECOVERY_AREA\ORCL\ARCHIVELOG\2014_03_19\O1_MF_1_9_%U_.ARC
ORA-27041: 無法打開文件
OSD-04002: 無法打開文件
O/S-Error: (OS 2) 系統(tǒng)找不到指定的文件。

3、修改表空間內(nèi)所有數(shù)據(jù)文件和臨時(shí)文件的可用性
alter tablespace … datafile  {online | offline }
alter tablespace … tempfile {online | offline}

五、重命名(修改存儲位置)數(shù)據(jù)文件
1、將包含數(shù)據(jù)文件的表空間離線。
2、使用操作系統(tǒng)命令修改數(shù)據(jù)文件名。
3、使用 alter database … rename datafile … 語句改變數(shù)據(jù)庫中的數(shù)據(jù)文件名。
4、備份數(shù)據(jù)庫。

示例一:重命名同一表空間內(nèi)的數(shù)據(jù)文件
SQL alter tablespace test_tbs offline normal;
Tablespace altered.

[oracle@stdb stdb]$ mv test03.dbf test04.dbf

SQL alter tablespace test_tbs                
  2  rename datafile /u01/app/oracle/oradata/stdb/test03.dbf
  3  to /u01/app/oracle/oradata/stdb/test04.dbf
Tablespace altered.

SQL alter tablespace test_tbs online;
Tablespace altered.

示例二:重命名不同表空間中的數(shù)據(jù)文件
SQL select status from v$instance;
STATUS
————
MOUNTED        // 該操作必須在 mount 下進(jìn)行

SQL alter database
  2  rename file /u01/app/oracle/oradata/stdb/test01.dbf , 
  3               /u01/app/oracle/oradata/stdb/test02.dbf ,
  4               /u01/app/oracle/oradata/stdb/test04.dbf
  5           to
  6               /u01/app/oracle/oradata/stdb/test1.dbf ,
  7               /u01/app/oracle/oradata/stdb/test2.dbf ,
  8               /u01/app/oracle/oradata/stdb/test3.dbf

Database altered.

SQL alter database open;
Database altered.

六、刪除數(shù)據(jù)文件

從表空間內(nèi)刪除數(shù)據(jù)文件:
alter tablespace … drop datafile … ;
alter tablespace … drop tempfile … ;

從數(shù)據(jù)庫中刪除數(shù)據(jù)文件:
alter database tempfile /xxx/xxxx/…. drop including datafiles;

SQL alter database tempfile /u01/app/oracle/oradata/stdb/temp03.dbf drop including datafiles;
Database altered.

SQL alter database datafile /u01/app/oracle/oradata/stdb/test1.dbf drop including datafiles;    // 注意:數(shù)據(jù)文件不能以這樣的方式刪除
alter database datafile /u01/app/oracle/oradata/stdb/test1.dbf drop including datafiles
                                                                 *
ERROR at line 1:
ORA-01916: keyword ONLINE, OFFLINE, RESIZE, AUTOEXTEND or END/DROP expected

注意:
1、從字典管理遷移到本地管理的只讀表空間內(nèi)的數(shù)據(jù)文件時(shí)不能被刪除的。除此之外,其他的只讀表空間內(nèi)的數(shù)據(jù)文件可以刪除。
2、系統(tǒng)表空間內(nèi)的數(shù)據(jù)文件無法被刪除。
3、如果一個(gè)本地管理的表空間被離線,則其內(nèi)的數(shù)據(jù)文件無法被刪除。
SQL alter tablespace test_tbs drop datafile /u01/app/oracle/oradata/stdb/test4.dbf
alter tablespace test_tbs drop datafile /u01/app/oracle/oradata/stdb/test4.dbf
*
ERROR at line 1:
ORA-03264: cannot drop offline datafile of locally managed tablespace
4、如果表空間內(nèi)僅包含一個(gè)數(shù)據(jù)文件,該數(shù)據(jù)文件無法被刪除。
SQL alter tablespace test_tbs drop datafile /u01/app/oracle/oradata/stdb/test3.dbf
alter tablespace test_tbs drop datafile /u01/app/oracle/oradata/stdb/test3.dbf
*
ERROR at line 1:
ORA-03261: the tablespace TEST_TBS has only one file
5、如果數(shù)據(jù)文件不為空,該數(shù)據(jù)文件無法被刪除。
6、刪除數(shù)據(jù)文件必須保證數(shù)據(jù)塊處于打開狀態(tài)。

到此,關(guān)于“怎么掌握 Oracle 數(shù)據(jù)文件和臨時(shí)文件的管理”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識,請繼續(xù)關(guān)注丸趣 TV 網(wǎng)站,丸趣 TV 小編會(huì)繼續(xù)努力為大家?guī)砀鄬?shí)用的文章!

正文完
 
丸趣
版權(quán)聲明:本站原創(chuàng)文章,由 丸趣 2023-07-20發(fā)表,共計(jì)6921字。
轉(zhuǎn)載說明:除特殊說明外本站除技術(shù)相關(guān)以外文章皆由網(wǎng)絡(luò)搜集發(fā)布,轉(zhuǎn)載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 怀来县| 中超| 丽水市| 黄平县| 仁怀市| 石河子市| 琼海市| 呼玛县| 通州市| 绿春县| 武平县| 定西市| 扬州市| 武夷山市| 神木县| 商河县| 桓台县| 邵阳县| 德清县| 镇沅| 铁力市| 兴业县| 历史| 社旗县| 原阳县| 柞水县| 马边| 融水| 滦平县| 宣恩县| 韶山市| 泸西县| 牡丹江市| 成武县| 新兴县| 壶关县| 梅州市| 古田县| 青田县| 晋州市| 延川县|