Oracle DBA & All IT » Database, DBA, Oracle » วิธีการย้ายที่หรือเปลี่ยนชื่อ Oracle file
วิธีการย้ายที่หรือเปลี่ยนชื่อ Oracle file
วันนี้ขอเสนอตอนว่า "วิธีการย้ายที่หรือเปลี่ยนชื่อ Oracle file" หรือ "Renaming or Moving Oracle Files" อิอิ วันนี้จะไม่เกริ่นไรมากมายเข้าเรื่องกันเลย โดยเราจะแยกแต่ละชนิดของ file เพื่อให้ง่ายแก่ความเข้าใจ ^^
Control File
1. อย่างแรกเลยหา path เดิมที่ control file ของเราอยู่ก่อน โดย ดูได้จาก view V$CONTROLFILE
view ตามตัวอย่างด้านล่าง
SQL> select name from v$controlfile; NAME ------------------------------------------------------------- C:\ORACLE\PRODUCT\10.1.0\ORADATA\DB10G\CONTROL01.CTL C:\ORACLE\PRODUCT\10.1.0\ORADATA\DB10G\CONTROL02.CTL C:\ORACLE\PRODUCT\10.1.0\ORADATA\DB10G\CONTROL03.CTL 3 rows selected. SQL>
2. การที่เราจะเปลี่ยนชื่อ หรือ ย้ายที่ไฟล์ เราจะต้องทำการ Alter ค่าใน parameter control_files
SQL> show parameter control_files NAME TYPE VALUE ------------------------------------ -------------------------------- ------------------------------ control_files string C:\ORACLE\ORADATA\DB10G\CONTRO L01.CTL, C:\ORACLE\ORADATA\DB1 0G\CONTROL02.CTL, C:\ORACLE\OR ADATA\DB10G\CONTROL03.CTL SQL>
3. ขึ้นตอนสำหรับการเปลี่ยนชื่อ หรือ ย้ายที่ Controlfile ดูได้ตามด้านล่าง
- Alter the
control_files
parameter โดยใช้คำสั่งALTER SYSTEM
- Shutdown the database.
- เปลี่ยนชื่อไฟล์บน Server
- Start the database.
ลองมาดูตัวอย่างด้านล่างกัน ซึ่งเป็นการทำกับ Database ที่ใช้ SPFILE สำหรับ Database ที่ใช้ PFILE สามารถทำตาม Step ของ SPFILE ได้เลย โดยเปลี่ยนแค่ขั้นตอนการ ALTER SYSTEM ไปแก้ตรงๆในไฟล์ init.ora ได้เลย
SQL> ALTER SYSTEM SET control_files= < 'C:\ORACLE\PRODUCT\10.1.0\ORADATA\DB10G\RENAME_CONTROL01.CTL', > 'C:\ORACLE\PRODUCT\10.1.0\ORADATA\DB10G\CONTROL02.CTL', > 'C:\ORACLE\PRODUCT\10.1.0\ORADATA\DB10G\CONTROL03.CTL' SCOPE=SPFILE; System altered. SQL> SHUTDOWN IMMEDIATE Database closed. Database dismounted. ORACLE instance shut down. SQL> HOST MOVE C:\ORACLE\ORADATA\DB10G\CONTROL01.CTL C:\ORACLE\ORADATA\DB10G\RENAME_CONTROL01.CTL SQL> STARTUP ORACLE instance started. Total System Global Area 167772160 bytes Fixed Size 787968 bytes Variable Size 61864448 bytes Database Buffers 104857600 bytes Redo Buffers 262144 bytes Database mounted. SQL>
หลังจาก Startup DB ขึ้นมาแล้วลอง query ดูจาก v$controlfile จะพบว่าได้เปลี่ยนไปอยู่ที่ใหม่แล้ว
SQL> select name from v$controlfile; NAME ------------------------------------------------------------- C:\ORACLE\PRODUCT\10.1.0\ORADATA\DB10G\RENAME_CONTROL01.CTL C:\ORACLE\PRODUCT\10.1.0\ORADATA\DB10G\CONTROL02.CTL C:\ORACLE\PRODUCT\10.1.0\ORADATA\DB10G\CONTROL03.CTL 3 rows selected. SQL>
LogFiles
1. หา path ปัจจุบันโดยดูจาก view V$LOGFILE
ตามตัวอย่างด้านล่าง
SQL> SELECT member FROM v$logfile;
MEMBER
-------------------------------------------------
C:\ORACLE\PRODUCT\10.1.0\ORADATA\DB10G\REDO03.LOG
C:\ORACLE\PRODUCT\10.1.0\ORADATA\DB10G\REDO02.LOG
C:\ORACLE\PRODUCT\10.1.0\ORADATA\DB10G\REDO01.LOG
3 rows selected.
SQL>
2. ขั้นตอนการย้ายที่หรือเปลี่ยนชื่อ Logfile
- Shutdown database.
- เปลี่ยนชื่อไฟล์บน Server
- Start database ในโหมด mount
- ใช้คำสั่ง
ALTER DATABASE RENAME FILE
เพื่อทำการเปลี่ยนชื่อใน Oracle dictionary - เปลี่ยนโหมด Database จาก Mount เป็น Open
ตัวอย่างขั้นตอนการทำ
SQL> SHUTDOWN IMMEDIATE Database closed. Database dismounted. ORACLE instance shut down. SQL> HOST MOVE C:\ORACLE\PRODUCT\10.1.0\ORADATA\DB10G\REDO01.LOG C:\ORACLE\PRODUCT\10.1.0\ORADATA\DB10G\RENAME_REDO01.LOG SQL> STARTUP MOUNT ORACLE instance started. Total System Global Area 167772160 bytes Fixed Size 787968 bytes Variable Size 61864448 bytes Database Buffers 104857600 bytes Redo Buffers 262144 bytes Database mounted. SQL> ALTER DATABASE RENAME FILE > 'C:\ORACLE\PRODUCT\10.1.0\ORADATA\DB10G\REDO01.LOG' - > TO 'C:\ORACLE\PRODUCT\10.1.0\ORADATA\DB10G\RENAME_REDO01.LOG'; Database altered. SQL> ALTER DATABASE OPEN; Database altered. SQL>
ลองเช็คดูอีกครั้งจะพบว่า Logfile ถูกเปลี่ยนชื่อใน data dictionary เรียบร้อยแล้ว
SQL> SELECT member FROM v$logfile;
MEMBER
-------------------------------------------------
C:\ORACLE\PRODUCT\10.1.0\ORADATA\DB10G\REDO03.LOG
C:\ORACLE\PRODUCT\10.1.0\ORADATA\DB10G\REDO02.LOG
C:\ORACLE\PRODUCT\10.1.0\ORADATA\DB10G\RENAME_REDO01.LOG
3 rows selected.
SQL>
Datafiles
1. หา Path ปัจจุบันของ file ที่เราต้องการจะแก้ไขเปลี่ยนแปลงโยกย้ายได้จาก view V$DATAFILE
ตามตัวอย่างด้านล่าง
SQL> SELECT name FROM v$datafile;
NAME
---------------------------------------------------------
C:\ORACLE\PRODUCT\10.1.0\ORADATA\DB10G\SYSTEM01.DBF
C:\ORACLE\PRODUCT\10.1.0\ORADATA\DB10G\UNDOTBS01.DBF
C:\ORACLE\PRODUCT\10.1.0\ORADATA\DB10G\SYSAUX01.DBF
C:\ORACLE\PRODUCT\10.1.0\ORADATA\DB10G\USERS01.DBF
4 rows selected.
SQL>
2. ขั้นตอนการย้ายที่หรือเปลี่ยนชื่อ Datafile ทำให้ตามด้านล่าง
- Shutdown database.
- เปลี่ยนชื่อไฟล์บน Server
- Start database ในโหมด mount
- ใช้คำสั่ง
ALTER DATABASE RENAME FILE
เพื่อทำการเปลี่ยนชื่อใน Oracle dictionary. - เปลี่ยนโหมด Database จาก Mount เป็น Open
ตัวอย่างขั้นตอนการทำ
SQL> SHUTDOWN IMMEDIATE Database closed. Database dismounted. ORACLE instance shut down. SQL> HOST MOVE C:\ORACLE\PRODUCT\10.1.0\ORADATA\DB10G\USERS01.DBF C:\ORACLE\PRODUCT\10.1.0\ORADATA\DB10G\RENAME_USERS01.DBF SQL> STARTUP MOUNT ORACLE instance started. Total System Global Area 167772160 bytes Fixed Size 787968 bytes Variable Size 61864448 bytes Database Buffers 104857600 bytes Redo Buffers 262144 bytes Database mounted. SQL> ALTER DATABASE RENAME FILE > 'C:\ORACLE\PRODUCT\10.1.0\ORADATA\DB10G\USERS01.DBF' > TO 'C:\ORACLE\PRODUCT\10.1.0\ORADATA\DB10G\RENAME_USERS01.DBF'; Database altered. SQL> ALTER DATABASE OPEN; Database altered. SQL>
ลองเช็คดูอีกครั้งจะพบว่า Datafile ถูกเปลี่ยนชื่อใน data dictionary เรียบร้อย
SQL> SELECT name FROM v$datafile; NAME --------------------------------------------------------- C:\ORACLE\PRODUCT\10.1.0\ORADATA\DB10G\SYSTEM01.DBF C:\ORACLE\PRODUCT\10.1.0\ORADATA\DB10G\UNDOTBS01.DBF C:\ORACLE\PRODUCT\10.1.0\ORADATA\DB10G\SYSAUX01.DBF C:\ORACLE\PRODUCT\10.1.0\ORADATA\DB10G\RENAME_USERS01.DBF 4 rows selected. SQL>
แถมท้ายให้กับการ เปลี่ยนชื่อ Tablespace (ใช้ได้กับ Oracle10g ขึ้นไป) โดยสามารถใช้คำสั่งได้ตามด้านล่าง
ALTER TABLESPACE old_name RENAME TO new_name;
แค่นี้เราก็จะได้ชื่อ Tablespace ใหม่สมใจแล้ว
.. Preview : 8745
Filed under: Database, DBA, Oracle · Tags: alter system, alter table, controlfile, datafile, host, logfile, mv, pfile, redo, rename controlfile, rename datafile, rename file, rename logfile, rename tablespace, spfile, tablespace, V$CONTROLFILE, v$datafile, v$logfile
Pingback: [A] วิธีการย้ายที่หรือเปลี่ยนชื่อ Oracle file | Oracle in Thai | Oracle in Thai | Oracle User Group in Thailand |()