程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle教程 >> oracle表空間數據文件的移動

oracle表空間數據文件的移動

編輯:Oracle教程

oracle表空間數據文件的移動


需求:把用戶的某一個表空間中的數據文件由於某種原因從一個路徑移動到裡一個路徑   原因:   (1)當前實例中的表空間文件及系統表空間文件全在一塊硬盤上,導致IO增加。裝數據庫表空間移走。減少IO。   (2)磁盤空間有限,這個磁盤空間太小了,隨著數據的增長,需要換一塊大的磁盤 可行性:linux的文件都是通過掛載,到一個目錄下,磁盤的移動就只是文件路徑的改變。   實現此方法有兩種方法   1.alter tablespace   (1)查看要改變的這個表空間所對應的數據文件信息 SQL> select tablespace_name,file_name from dba_data_files where tablespace_name='MAIL'; TABLESPACE_NAME                FILE_NAME ------------------------------ -------------------------------------------------------------------------------- MAIL                           /u01/app/oracle/oradata/orcl/mail.dbf   (2)使表空間脫機 SQL> alter tablespace mail offline;   表空間已更改。 SQL> select tablespace_name,file_name,online_status from dba_data_files where tablespace_name='MAIL'; TABLESPACE_NAME                FILE_NAME                                                                        ONLINE_STATUS ------------------------------ -------------------------------------------------------------------------------- ------------- MAIL                           /u01/app/oracle/oradata/orcl/mail.dbf                                            OFFLINE   (3)把原來的數據文件復制到新的路徑 SQL> host cp '/u01/app/oracle/oradata/orcl/mail.dbf' '/home/oracle/mail01.dbfdbf'   (4)修改數據文件名字,路徑。(注意:實際就是修改控制文件,告訴控制文件這個表空間的數據文件改變了) SQL> alter tablespace mail rename datafile '/u01/app/oracle/oradata/orcl/mail.dbf' to '/home/oracle/mail01.dbfdbf'; 表空間已更改。   (5)表空間在線 SQL> alter tablespace mail online;   (6) 查看表空間對應的數據文件狀態 SQL>  select tablespace_name,file_name,online_status from dba_data_files where tablespace_name='MAIL'; TABLESPACE_NAME                FILE_NAME                                                                        ONLINE_STATUS ------------------------------ -------------------------------------------------------------------------------- ------------- MAIL                           /home/oracle/mail01.dbfdbf                                                       ONLINE   注意:此方法僅適用於能offline的表空間,僅適用於普通的表空間,系統表空間不行。   而sysaux表空間可以用此方法實現 SQL> select tablespace_name,file_name from dba_data_files where tablespace_name='SYSAUX'; TABLESPACE_NAME ------------------------------ FILE_NAME -------------------------------------------------------------------------------- SYSAUX /u01/app/oracle/oradata/orcl/sysaux01.dbf SQL> alter tablespace sysaux offline;   表空間已更改。 SQL> host cp '/u01/app/oracle/oradata/orcl/sysaux01.dbf' '/home/oracle/test.dbf';   SQL> alter tablespace sysaux rename datafile '/u01/app/oracle/oradata/orcl/sysaux01.dbf' to '/home/oracle/test.dbf';   表空間已更改。 SQL> alter tablespace sysaux online;   表空間已更改。 SQL>  select tablespace_name,file_name from dba_data_files where tablespace_name='SYSAUX'; TABLESPACE_NAME ------------------------------ FILE_NAME -------------------------------------------------------------------------------- SYSAUX /home/oracle/test.dbf   2.alter database 適用於系統表空間,system,temp,undo   (1)一致性關閉數據庫並啟動到mount狀態 SQL> shutdown immediate SQL> startup mount   (2)復制數據文件 SQL> host cp '/u01/app/oracle/oradata/orcl/system01.dbf' '/home/oracle/test.dbf';   (3)修改控制文件。注意,只有在數據庫打開的情況下,才有tablespace的概念,所有此時操作database中的file。 SQL> alter database rename file '/u01/app/oracle/oradata/orcl/system01.dbf' to '/home/oracle/test.dbf'; 數據庫已更改。   (4)打開數據庫 SQL> alter database open;   (5)查看system表空間數據文件狀態 SQL>  select tablespace_name,file_name,online_status from dba_data_files where tablespace_name='SYSTEM'; TABLESPACE_NAME                FILE_NAME                                                                        ONLINE_STATUS ------------------------------ -------------------------------------------------------------------------------- ------------- SYSTEM                         /home/oracle/test.dbf                                                            SYSTEM

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved