Chinaunix首页 | 论坛 | 博客
  • 博客访问: 400154
  • 博文数量: 148
  • 博客积分: 3191
  • 博客等级: 中校
  • 技术积分: 1232
  • 用 户 组: 普通用户
  • 注册时间: 2011-08-11 15:25
文章分类

全部博文(148)

文章存档

2011年(148)

我的朋友

分类: Oracle

2011-08-17 15:20:48

更改数据文件名称

 

当表空间使用率快满时,增加数据文件是最常见的做法,而对于不是很熟练的DBA来说,很有可能一时错手,写错了数据文件的名称,或是放在了不恰当的位置,所以,更改数据文件路径及名称就很有必要了。本文主要讲述在不同结构下如何修改数据文件的路径及名称。主要分成单机数据库及standby数据库两种情况。另外还有RAC,由于是共用数据文件,所以大致可以参考单机的情况,在此就不详细讲述了。

 

单机数据库
 
一,关闭数据库
 
1,检查数据文件的存放路径

SQL> set linesize 1000

SQL> col file_name format a50

SQL> col tablespace_name format a30

SQL> select file_name,tablespace_name from dba_data_files;

FILE_NAME                                          TABLESPACE_NAME

-------------------------------------------------- ----------------------------

-

D:\ORACLE\ORADATA\ORA90\SYSTEM01.DBF               SYSTEM

D:\ORACLE\ORADATA\ORA90\UNDOTBS01.DBF              UNDOTBS1

D:\ORACLE\ORADATA\ORA90\CWMLITE01.DBF              CWMLITE

D:\ORACLE\ORADATA\ORA90\DRSYS01.DBF                DRSYS

D:\ORACLE\ORADATA\ORA90\INDX01.DBF                 INDX

D:\ORACLE\ORADATA\ORA90\ODM01.DBF                  ODM

D:\ORACLE\ORADATA\ORA90\TOOLS01.DBF                TOOLS

D:\ORACLE\ORADATA\ORA90\USERS01.DBF                USERS

D:\ORACLE\ORADATA\ORA90\XDB01.DBF                  XDB

 

已选择9行。

 

2关闭数据库

SQL> shutdown immediate

数据库已经关闭。

已经卸载数据库。

ORACLE 例程已经关闭。

 

3更改数据文件名

使用操作系统命令修改数据文件名USERS01.DBFUSERS02.DBFUNIX下可采用mv命令)。

 

4mount方式启动数据库

SQL> startup mount

ORACLE 例程已经启动。

 

Total System Global Area  252779340 bytes

Fixed Size                   453452 bytes

Variable Size             125829120 bytes

Database Buffers          125829120 bytes

Redo Buffers                 667648 bytes

数据库装载完毕。

 

5更改数据文件路径

SQL> alter database

  2  rename file 'D:\ORACLE\ORADATA\ORA90\USERS01.DBF'

  3  to 'D:\ORACLE\ORADATA\ORA90\USERS02.DBF';

 

数据库已更改。

 

SQL>

 

6启动数据库到open状态

SQL> alter database open

  2  ;

 

数据库已更改。

 

SQL>

 

7检查数据文件情况

SQL> select file_name,tablespace_name from dba_data_files;

 

FILE_NAME                                          TABLESPACE_NAME

-------------------------------------------------- -----------------

-

D:\ORACLE\ORADATA\ORA90\SYSTEM01.DBF               SYSTEM

D:\ORACLE\ORADATA\ORA90\UNDOTBS01.DBF              UNDOTBS1

D:\ORACLE\ORADATA\ORA90\CWMLITE01.DBF              CWMLITE

D:\ORACLE\ORADATA\ORA90\DRSYS01.DBF                DRSYS

D:\ORACLE\ORADATA\ORA90\INDX01.DBF                 INDX

D:\ORACLE\ORADATA\ORA90\ODM01.DBF                  ODM

D:\ORACLE\ORADATA\ORA90\TOOLS01.DBF                TOOLS

D:\ORACLE\ORADATA\ORA90\USERS02.DBF                USERS

D:\ORACLE\ORADATA\ORA90\XDB01.DBF                  XDB

 

已选择9行。

 

SQL>

 

8,备份数据库
 

在对数据库做任何结构性的改动后,注意要做一次完整的数据库备份。

 

二,使表空间offline
 
 
1,检查数据文件的存放路径

SQL> set linesize 1000

SQL> col file_name format a50

SQL> col tablespace_name format a30

SQL> select file_name,tablespace_name from dba_data_files;

FILE_NAME                                          TABLESPACE_NAME

-------------------------------------------------- ----------------------------

-

D:\ORACLE\ORADATA\ORA90\SYSTEM01.DBF               SYSTEM

D:\ORACLE\ORADATA\ORA90\UNDOTBS01.DBF              UNDOTBS1

D:\ORACLE\ORADATA\ORA90\CWMLITE01.DBF              CWMLITE

D:\ORACLE\ORADATA\ORA90\DRSYS01.DBF                DRSYS

D:\ORACLE\ORADATA\ORA90\INDX01.DBF                 INDX

D:\ORACLE\ORADATA\ORA90\ODM01.DBF                  ODM

D:\ORACLE\ORADATA\ORA90\TOOLS01.DBF                TOOLS

D:\ORACLE\ORADATA\ORA90\USERS02.DBF                USERS

D:\ORACLE\ORADATA\ORA90\XDB01.DBF                  XDB

 

已选择9行。

 

2,使表空间offline

SQL> alter tablespace users offline;

 

表空间已更改。

 

SQL>

 

3,更改数据文件名

使用操作系统命令修改数据文件名USERS02.DBFUSERS01.DBF

 

4,更改数据文件路径

SQL> alter tablespace users rename

  2   datafile 'D:\ORACLE\ORADATA\ORA90\USERS02.DBF'

  3   to 'D:\ORACLE\ORADATA\ORA90\USERS01.DBF'

  4  ;

 

表空间已更改。

 

SQL>

 

5,使表空间online

SQL> alter tablespace users online;

 

表空间已更改。

 

SQL>

 

6,检查数据文件情况

SQL> select file_name,tablespace_name from dba_data_files;

 

FILE_NAME                                          TABLESPACE_NAME

-------------------------------------------------- -----------------

-

D:\ORACLE\ORADATA\ORA90\SYSTEM01.DBF               SYSTEM

D:\ORACLE\ORADATA\ORA90\UNDOTBS01.DBF              UNDOTBS1

D:\ORACLE\ORADATA\ORA90\CWMLITE01.DBF              CWMLITE

D:\ORACLE\ORADATA\ORA90\DRSYS01.DBF                DRSYS

D:\ORACLE\ORADATA\ORA90\INDX01.DBF                 INDX

D:\ORACLE\ORADATA\ORA90\ODM01.DBF                  ODM

D:\ORACLE\ORADATA\ORA90\TOOLS01.DBF                TOOLS

D:\ORACLE\ORADATA\ORA90\USERS01.DBF                USERS

D:\ORACLE\ORADATA\ORA90\XDB01.DBF                  XDB

 

已选择9行。

 

SQL>

 

7,备份数据库

在对数据库做任何结构性的改动后,注意要做一次完整的数据库备份。

 

 

standy数据库
 
 一,主数据库的修改
 
1,检查数据文件的存放路径

SQL> select file_name,file_id,tablespace_name from dba_data_files;

...

FILE_NAME                                             FILE_ID TABLESPACE_NAME

-------------------------------------------------- ---------- ------------------------------

/u02/oradata_indx/indx01.dbf                               23 INDX_TS

/u04/oradata_cecflob/cecflob08.dbf                         24 CECFJS_TS

/u04/oradata_cecflob/cecflob09.dbf                         25 CECFJS_TS

/u01/oradata_sys/.dbf                                      26 CECFLOB_TBS

...

 

2,使表空间offline
SQL> ALTER TABLESPACE cecflob_tbs OFFLINE;
 
3,移动数据文件

# mv /u01/oradata_sys/.dbf  /u04/oradata_cecflob/cecflob10.dbf

 

4,更改数据文件路径

SQL> alter tablespace cecflob_tbs rename datafile '/u01/oradata_sys/.dbf' to

  2  '/u04/oradata_cecflob/cecflob10.dbf';

 

Tablespace altered.

 

SQL>

 

5,使表空间online

SQL> alter tablespace cecflob_tbs online;

 

Tablespace altered.

 

SQL>

 

至此完成主数据库的修改。

 

二,从数据库的修改
 
1,确认所有日志文件已applied
 

SQL> SELECT NAME, SEQUENCE#, ARCHIVED, APPLIED

  2> FROM V$ARCHIVED_LOG;

...

NAME                                                SEQUENCE# ARC APP

-------------------------------------------------- ---------- --- ---

/u05/archive2/arch1_4160.arc                             4160 YES YES

/u05/archive2/arch1_4161.arc                             4161 YES YES

/u05/archive2/arch1_4162.arc                             4162 YES YES

/u05/archive2/arch1_4163.arc                             4163 YES YES

/u05/archive2/arch1_4164.arc                             4164 YES YES

/u05/archive2/arch1_4165.arc                             4165 YES YES

 

699 rows selected.

 

SQL>

 

2,停止managed recovery操作

SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;

 

Database altered.

 

SQL>

 

3,关闭数据库

SQL> shutdown

 

ORA-01109: database not open

 

 

Database dismounted.

ORACLE instance shut down.

SQL>

 

4,移动数据文件

# mv /u01/oradata_sys/.dbf /u04/oradata_cecflob/cecflob10.dbf

 

5,启动数据库到mount状态

SQL> startup nomount

ORACLE instance started.

 

Total System Global Area 2103413064 bytes

Fixed Size                   743752 bytes

Variable Size            1040187392 bytes

Database Buffers         1056964608 bytes

Redo Buffers                5517312 bytes

SQL>

 

SQL> alter database mount standby database;

 

Database altered.

 

SQL>

 

6,更改数据文件路径

注意:该命令必须是STANDBY_FILE_MANAGEMENT参数为MANUAL时才可执行,故如果该参数为AUTO,请先修改为MANUAL

 

SQL> alter system set STANDBY_FILE_MANAGEMENT='MANUAL';

 

System altered.

 

SQL> alter database rename file '/u01/oradata_sys/.dbf'

  2   to '/u04/oradata_cecflob/cecflob10.dbf';

 

Database altered.

 

SQL> alter system set STANDBY_FILE_MANAGEMENT='AUTO';

 

System altered.

 

SQL>

 

7, 启动managed recovery操作

SQL> alter database recover managed standby database

  2  disconnect from session;

 

Database altered.

 

SQL>

 

8, 备份数据库

在对数据库做任何结构性的改动后,注意要做一次完整的数据库备份。

阅读(387) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~