How to move ASM database files from one diskgroup to another

ASM数据文件迁移

 

原来数据文件:
ASMCMD> pwd
+sysdg/UIMDB/datafile
ASMCMD> ls
SYSAUX.257.840633371
SYSTEM.256.840633371
TEST.263.843647081
UIMDB_DATA.264.843647213
UIMDB_DATA.265.843647325
UIMDB_DATA.266.843664683
UIMDB_DATA.267.843665385
UIMDB_DATA01
UIMDB_DATA02
UIMDB_DATA03
UIMDB_DATA04
UNDOTBS1.258.840633371
UNDOTBS2.261.840633651
USER01
USERS.259.840633373
USERS.268.843733425
test
ASMCMD> pwd

+sysdg/UIMDB/datafile
SQL> SELECT FILE_NAME FROM DBA_DATA_FILES;

FILE_NAME
--------------------------------------------------------------------------------
+SYSDG/uimdb/datafile/users.259.840633373
+SYSDG/uimdb/datafile/undotbs1.258.840633371
+SYSDG/uimdb/datafile/sysaux.257.840633371
+SYSDG/uimdb/datafile/system.256.840633371
+SYSDG/uimdb/datafile/undotbs2.261.840633651
+UIMDATA1/uimdb/datafile/data01.dbf
+UIMDATA1/uimdb/datafile/uimdb_data.268.850040055
+SYSDG/uimdb/datafile/uimdb_data02
+UIMDATA1/uimdb/datafile/uimdb_index01
+SYSDG/uimdb/datafile/uimdb_data03
+UIMDATA1/uimdb/datafile/uimdb_index02

FILE_NAME
--------------------------------------------------------------------------------
+SYSDG/uimdb/datafile/uimdb_data04
+UIMDATA1/uimdb/datafile/uimdb_index03
+SYSDG/uimdb/datafile/user01
+UIMDATA1/uimdb/datafile/itsm_data01.dbf

15 rows selected.


修改后:
ASMCMD> pwd
+UIMDATA1/UIMDB/datafile
ASMCMD> ls
JTITSM.266.844964315
UIMDB_DATA.268.850040055
UIMDB_DATA.269.850040495
UIMDB_DATA.270.850040577
UIMDB_DATA.271.850041291
UIMDB_INDEX.263.843647479
UIMDB_INDEX.264.843664795
UIMDB_INDEX.265.843686027
UIMDB_INDEX01
UIMDB_INDEX02
UIMDB_INDEX03
USERS.272.850041359
data01.dbf
itsm_data01.dbf

ASMCMD>

 

FILE_NAME
--------------------------------------------------------------------------------
+SYSDG/uimdb/datafile/users.259.840633373
+SYSDG/uimdb/datafile/undotbs1.258.840633371
+SYSDG/uimdb/datafile/sysaux.257.840633371
+SYSDG/uimdb/datafile/system.256.840633371
+SYSDG/uimdb/datafile/undotbs2.261.840633651
+UIMDATA1/uimdb/datafile/data01.dbf
+UIMDATA1/uimdb/datafile/uimdb_data.268.850040055
+UIMDATA1/uimdb/datafile/uimdb_data.269.850040495
+UIMDATA1/uimdb/datafile/uimdb_index01
+UIMDATA1/uimdb/datafile/uimdb_data.270.850040577
+UIMDATA1/uimdb/datafile/uimdb_index02

FILE_NAME
--------------------------------------------------------------------------------
+UIMDATA1/uimdb/datafile/uimdb_data.271.850041291
+UIMDATA1/uimdb/datafile/uimdb_index03
+UIMDATA1/uimdb/datafile/users.272.850041359
+UIMDATA1/uimdb/datafile/itsm_data01.dbf
+UIMDATA1/uimdb/datafile/uimdb_index04
+UIMDATA1/uimdb/datafile/uimdb_index05

17 rows selected.

SQL>

 

 

处理步骤:

1 把原来的datafile进行offline:

SQL>  ALTER DATABASE DATAFILE '+SYSDG/uimdb/datafile/uimdb_data02' offline;
Database altered.
SQL>   ALTER DATABASE DATAFILE '+SYSDG/uimdb/datafile/uimdb_data03' offline;
2 用rman进行cp
rman:copy datafile '+SYSDG/uimdb/datafile/user01' to '+UIMDATA1';
RMAN> copy datafile '+SYSDG/uimdb/datafile/uimdb_data02' to '+UIMDATA1';

Starting backup at 12-JUN-14
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=5796 instance=uimdb1 device type=DISK
channel ORA_DISK_1: starting datafile copy
input datafile file number=00008 name=+SYSDG/uimdb/datafile/uimdb_data02

output file name=+UIMDATA1/uimdb/datafile/uimdb_data.269.850040495 tag=TAG20140612T102134 RECID=3 STAMP=850040564
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:01:15
Finished backup at 12-JUN-14

Starting Control File and SPFILE Autobackup at 12-JUN-14
piece handle=+FRADG/uimdb/autobackup/2014_06_12/s_850040570.411.850040571 comment=NONE
Finished Control File and SPFILE Autobackup at 12-JUN-14

3 用rman进行改路径:
run {
set newname for datafile '+SYSDG/uimdb/datafile/user01'  to '+UIMDATA1/uimdb/datafile/users.272.850041359';
switch datafile all;
             }

RMAN> run {
2> set newname for datafile '+SYSDG/uimdb/datafile/uimdb_data03'  to '+UIMDATA1/uimdb/datafile/uimdb_data.270.850040577';
3> switch datafile all;
4>              }

executing command: SET NEWNAME
datafile 10 switched to datafile copy
input datafile copy RECID=4 STAMP=850040646 file name=+UIMDATA1/uimdb/datafile/uimdb_data.270.850040577
            
注释:
新位置文件名称从如下outputfile中新取得:
RMAN> copy datafile '+SYSDG/uimdb/datafile/uimdb_data03' to '+UIMDATA1';

Starting backup at 12-JUN-14
using channel ORA_DISK_1
channel ORA_DISK_1: starting datafile copy
input datafile file number=00010 name=+SYSDG/uimdb/datafile/uimdb_data03
output file name=+UIMDATA1/uimdb/datafile/uimdb_data.270.850040577 tag=TAG20140612T102256 RECID=4 STAMP=850040646
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:01:15
Finished backup at 12-JUN-14

Starting Control File and SPFILE Autobackup at 12-JUN-14
piece handle=+FRADG/uimdb/autobackup/2014_06_12/s_850040652.394.850040653 comment=NONE
Finished Control File and SPFILE Autobackup at 12-JUN-14
            
3 sqlplus进行恢复:
SQL>  RECOVER DATAFILE  '+UIMDATA1/uimdb/datafile/uimdb_data.268.850040055';
Media recovery complete.
SQL>
4 sqlplus进行online:
SQL> ALTER DATABASE DATAFILE '+UIMDATA1/uimdb/datafile/uimdb_data.268.850040055' online;
Database altered.
SQL> SELECT FILE_NAME FROM DBA_DATA_FILES;

5 最后到进入asm,删除原来的datafile:
ASMCMD> rm UIMDB_DATA0*
You may delete multiple files and/or directories.
Are you sure? (y/n) y
ASMCMD> ls
SYSAUX.257.840633371
SYSTEM.256.840633371
TEST.263.843647081
UNDOTBS1.258.840633371
UNDOTBS2.261.840633651
USER01
USERS.259.840633373
USERS.268.843733425


reference:
How to move ASM database files from one diskgroup to another ? (文档 ID 330103.1)

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/13750068/viewspace-1181137/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/13750068/viewspace-1181137/

<think>好的,用户现在的问题是想查找未被数据库记录的文件列表,也就是那些存在于文件系统中但未被数据库跟踪的文件。我需要结合之前的引用内容来给出合适的解决方案。 首先,引用[1]提到FBDA存储修改前的行数据到归档中,并维护元数据。这可能涉及到数据库如何跟踪文件,但用户的问题是关于未被跟踪的文件,所以可能需要对比数据库记录和实际文件系统。 引用[2]提到了/etc/oratab文件列出多个ASM实例,以及ORA-12157错误,这可能与Oracle的存储管理有关。ASM(自动存储管理)用于管理数据库文件,如果用户使用ASM,可能需要通过ASM实例来检查管理的文件,未被ASM管理的文件可能不在数据库记录中。 引用[3]是关于Oracle Real Application Testing的参考资料,可能不直接相关,但其中提到的Oracle文档可能有帮助,比如《Oracle Database SQL Language Reference》或RAT Testing Guide,但用户的问题更偏向于文件管理。 接下来,用户需要找出未被数据库跟踪的文件。可能的步骤包括: 1. **确定数据库文件目录**:数据库通常有特定的数据文件目录,比如Oracle的datafiles、redo logs等,这些在参数文件中配置,如通过`SELECT name FROM v$datafile;`查询。 2. **对比文件系统文件列表**:使用操作系统命令(如`find`或`ls`)列出指定目录下的所有文件,然后排除数据库记录中的文件。 3. **处理ASM实例**:如果使用ASM,可能需要通过ASMCMD工具来查看管理的文件,未被ASM管理的文件可能位于其他位置。 4. **检查归档和日志文件**:引用[1]中的FBDA归档文件可能属于数据库跟踪的一部分,但用户可能想排除这些。 需要注意权限问题,比如访问ASM需要特定权限,或者操作系统文件的读取权限。此外,临时文件或日志文件可能未被正式记录,需要根据具体情况处理。 可能的相关问题包括如何处理ASM管理的文件,如何确保文件系统与数据库记录一致,或者如何清理未跟踪的文件。需要建议用户谨慎操作,避免删除重要文件,并在生产环境中备份。</think>要查找未被数据库跟踪的文件列表,需结合数据库的文件管理机制和操作系统的文件系统进行对比分析。以下是具体步骤: --- ### **1. 确定数据库跟踪的文件范围** 数据库通常通过以下方式记录文件: - **数据文件**:存储表空间数据,路径记录在`v$datafile`视图中 ```sql SELECT name FROM v$datafile; -- Oracle示例 ``` - **日志文件**:如重做日志、归档日志(参考FBDA的归档机制[^1]) - **控制文件**:记录数据库结构,路径在参数文件中定义 - **ASM管理的文件**:若使用自动存储管理(ASM),文件由ASM实例统一管理[^2] --- ### **2. 获取操作系统文件列表** 在数据库服务器上,通过命令列出存储路径中的文件: ```bash find /oracle/data -type f # 假设数据库文件存储在/oracle/data目录 ``` --- ### **3. 对比差异** 将数据库记录的文件名与操作系统文件列表进行对比,筛选出未被记录的文件。例如: ```sql -- 生成数据库文件列表导出到文件 SPOOL /tmp/db_files.txt SELECT name FROM v$datafile; SELECT member FROM v$logfile; SPOOL OFF ``` ```bash # 使用grep对比差异 grep -vFf /tmp/db_files.txt /tmp/os_files.txt > /tmp/untracked_files.txt ``` --- ### **4. 特殊场景处理** - **ASM环境**:通过`asmcmd`工具查询ASM实例管理的文件 ```bash asmcmd ls '+DATA/orcl' # 列出ASM磁盘组中的文件 ``` - **OCFS2文件系统**:注意共享存储权限问题(参考ORA-12157错误场景[^2]) --- ### **5. 注意事项** - **临时文件**:如`tempfile`可能动态创建,需检查`v$tempfile` - **外部表文件**:通过`CREATE DIRECTORY`定义的外部路径需单独分析 - **备份/归档文件**:FBDA归档的旧版本数据可能单独存储[^1] ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值