資料庫檔案包括資料檔案、日志檔案、控制檔案和密碼檔案、參數檔案等,對于這些檔案的管理可以看作是增删改查的過程。
1.資料檔案管理
增:
新增表空間時增加資料檔案
create tablespace test_2016 datafile '/u01/app/Oracle/oradata/orcl/test_01.dbf' size 10M autoextend on next 10M maxsize 100M;
表空間增加資料檔案
alter tablespace test_2016 add datafile '/u01/app/oracle/oradata/orcl/test_02.dbf' size 10M;
alter tablespace test_2016 add datafile '/u01/app/oracle/oradata/orcl/test_03.dbf' size 10M;
删:
删除某一個資料檔案
alter tablespace test_2016 drop datafile 7;
alter tablespace test_2016 drop datafile '/u01/app/oracle/oradata/orcl/test_02.dbf';
資料檔案為空時才能删除。
删除表空間:
drop tablespace test_2016 including contents and datafiles;
改:改變實體檔案的位置
修改資料檔案的實體位置有兩種方法,一種是關機後修改實體位置,另一種offline後修改實體位置。
第一種方式:關機後修改實體檔案的位置
SQL> shutdown immediate;
[[email protected] orcl]$ mv test_0* ../
[[email protected] orcl]$ cd ..
[[email protected] oradata]$ ls
orcl test_01.dbf test_02.dbf
[[email protected] oradata]$
SQL> startup nomount;
SQL> alter database mount;
SQL> alter database rename file '/u01/app/oracle/oradata/orcl/test_01.dbf' to '/u01/app/oracle/oradata/test_01.dbf';
SQL> alter database rename file '/u01/app/oracle/oradata/orcl/test_02.dbf' to '/u01/app/oracle/oradata/test_02.dbf';
SQL> alter database open;
SQL> select file_name from dba_data_files where file_name like '%test%';
FILE_NAME
--------------------------------------------------------------------------------
/u01/app/oracle/oradata/test_01.dbf
/u01/app/oracle/oradata/test_02.dbf
第二種方式:表空間下線之後移動資料檔案
SQL>alter tablespace test_2016 offline;
作業系統中操作:
[[email protected] oradata]$ mv test_0* orcl/
[[email protected] oradata]$ cd orcl/
[[email protected] orcl]$ ls test_0*
test_01.dbf test_02.dbf
SQL> alter database rename file '/u01/app/oracle/oradata/test_01.dbf' to '/u01/app/oracle/oradata/orcl/test_01.dbf';
SQL> alter database rename file '/u01/app/oracle/oradata/test_02.dbf' to '/u01/app/oracle/oradata/orcl/test_02.dbf';
SQL> alter tablespace test_2016 online;
改變資料檔案大小:
alter database datafile '/u01/app/oracle/oradata/test_02.dbf' resize 5M;
查:
select file_name,file_id,online_status from dba_data_files;
2.聯機重做日志檔案管理
增:
增加日志成員:
alter database add logfile member '路徑' to group t;
SQL> alter database add logfile member '/u01/app/oracle/oradata/orcl/redo_11.log' to group 1;
日志檔案組增加:
alter database add logfile [group n] ('路徑') size 100M;
SQL> alter database add logfile '/u01/app/oracle/oradata/orcl/redo_04.log' size 50M;
SQL> alter database add logfile group 6 '/u01/app/oracle/oradata/orcl/redo_06.log' size 50M;#可以跨序列增加日志檔案組
删:
删除日志成員:
alter database drop logfile member '路徑'
SQL> alter database drop logfile member '/u01/app/oracle/oradata/orcl/redo_11.log';
删除日志組:
SQL>alter database drop logfile group 6;--隻能删除INACTIVE狀态的日志組
改:
與其關掉資料庫去修改日志檔案的位置,不如直接在資料庫中添加新的日志檔案組,再删除舊的檔案組。
查:
select * from v$log;
select * from v$logfile order by group#;
3.控制檔案管理
控制檔案中記錄着資料庫的名稱,資料庫的實體布局:包括資料檔案的位置、聯機日志檔案、備份檔案以及資料庫目前SCN等重要資訊,在資料庫啟動的第二階段會讀入控制檔案。
要求控制檔案有多個拷貝,以防單個檔案損壞後危害資料庫。當資料庫修改控制檔案時,所有拷貝都要同時被修改。
檢視方式:
select * from v$controlfile;
show parameter control_files;
建立控制檔案副本的步驟:
1)修改參數檔案
alter system set control_files = '/u01/app/oracle/oradata/orcl/control01.ctl','/u01/app/oracle/flash_recovery_area/orcl/control02.ctl' scope=spfile;
alter system set control_files = '/u01/app/oracle/oradata/orcl/control01.ctl'
2)停止資料庫
SQL> shutdown immediate;
3)複制控制檔案
[[email protected] yoon]$ cp /u01/app/oracle/oradata/orcl/control01.ctl /u01/app/oracle/flash_recovery_area/orcl/control02.ctl
4)啟動資料庫
SQL> statup
5)驗證,檢視v$controlfile
SQL> select name from v$controlfile;
删除控制檔案副本的步驟與建立的步驟相比,少了一步複制控制檔案。
4.密碼檔案管理:
詳見:密碼檔案總結
5.參數檔案管理
參數檔案分為靜态參數檔案(pfile)和動态參數檔案(Spile)兩種。pfile是文本文檔,spfile是二進制檔案。
參數修改:
alter system set parameter=value [scope=spfile|memory|both]
scope中,spfile表示修改在spile檔案中,不影響目前設定;memory是立即修改目前設定,不會修改spile;both是同時修改了spfile和目前設定。
對于靜态參數,隻能使用scope=spfile
Oracle啟動過程加載檔案順序: spfilesid.ora spfile.ora initsid.ora
參數檔案的位置:
show parameter spfile;
show parameter pfile;
參數檔案的建立:
create pfile='...';
create spile='...';
用指定的參數檔案啟動資料庫的方式:
startup pfile='...';
startup spfile='...';
: