千家信息网

ASM与File System数据文件转移方法有哪些

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这篇文章主要介绍ASM与File System数据文件转移方法有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1、环境介绍实验使用Oracle Linux环境,对应底层Or
千家信息网最后更新 2026年11月02日ASM与File System数据文件转移方法有哪些

这篇文章主要介绍ASM与File System数据文件转移方法有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

1、环境介绍

实验使用Oracle Linux环境,对应底层Oracle 11g单实例+ASM存储方案。

[root@SimpleLinux ~]# uname -r

2.6.18-128.el5

[root@SimpleLinux ~]# ps -ef | grep pmon

grid 3214 1 0 13:53 ? 00:00:00 asm_pmon_+ASM

oracle 3294 1 0 13:53 ? 00:00:00 ora_pmon_ora11g

root 3376 3107 0 13:53 pts/0 00:00:00 grep pmon

数据库使用11gR2版本。

SQL> select * from v$version;

BANNER

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

Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - Production

PL/SQL Release 11.2.0.3.0 - Production

CORE 11.2.0.3.0 Production

TNS for Linux: Version 11.2.0.3.0 - Production

NLSRTL Version 11.2.0.3.0 - Production

建立一个数据文件目录。

[oracle@SimpleLinux oracle]$ cd $ORACLE_HOME

[oracle@SimpleLinux db_1]$ mkdir oradata

[oracle@SimpleLinux db_1]$ ls -l | grep oradata

drwxr-xr-x 2 oracle oinstall 4096 Dec 27 13:56 oradata

数据库采用归档模式,注意:下述实验要求在归档模式才能实现。

SQL> archive log list;

Database log mode Archive Mode

Automatic archival Enabled

Archive destination USE_DB_RECOVERY_FILE_DEST

Oldest online log sequence 25

Next log sequence to archive 27

Current log sequence 27

创建一个实验文件表空间。

SQL> create tablespace test datafile '/u01/app/oracle/product/11.2.0/db_1/oradata/testtbl.dbf' size 100m

2 extent management local uniform size 1m

3 segment space management auto;

Tablespace created

SQL> select file_name, tablespace_name from dba_data_files;

FILE_NAME TABLESPACE_NAME

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

+DATA/ora11g/datafile/users.259.825944329 USERS

+DATA/ora11g/datafile/undotbs1.258.825944329 UNDOTBS1

+DATA/ora11g/datafile/sysaux.257.825944327 SYSAUX

+DATA/ora11g/datafile/system.256.825944325 SYSTEM

+DATA/ora11g/datafile/example.265.825944513 EXAMPLE

/u01/app/oracle/product/11.2.0/db_1/oradata/testtb TEST

l.dbf

6 rows selected

2、ASMCMD命令

ASMCMD是Oracle提供的管理ASM的命令行工具。进入11g之后,ASMCMD提供了cp命令,仿照Linux平台的cp命令。ASMCMD是我们事先拷贝的一种选择。

我们实验是将文件系统的TEST文件,转移到+DATA ASM DiskGroup中。

首先切换一下logfile。

SQL> alter system switch logfile;

System altered

--我们事先online移动,是进行offline之后才行;

SQL> alter database datafile '/u01/app/oracle/product/11.2.0/db_1/oradata/testtbl.dbf' offline;

Database altered

SQL> select file_name, online_status from dba_data_files where file_id=6;

FILE_NAME ONLINE_STATUS

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

/u01/app/oracle/product/11.2.0/db_1/oradata/testtb RECOVER

l.dbf

进入ASMCMD命令行进行处理。

--使用grid用户,注意这个过程是伴随着登录ASM实例过程的。

[oracle@SimpleLinux oradata]$ su - grid

Password:

[grid@SimpleLinux ~]$ asmcmd

ASMCMD> cp /u01/app/oracle/product/11.2.0/db_1/oradata/testtbl.dbf +DATA/ora11g/datafile/testtbl.dbf

copying /u01/app/oracle/product/11.2.0/db_1/oradata/testtbl.dbf -> +DATA/ora11g/datafile/testtbl.dbf

在ASM中,查看到文件的确保存在目录了。

ASMCMD> ls -l

Type Redund Striped Time Sys Name

DATAFILE UNPROT COARSE DEC 27 13:00:00 Y EXAMPLE.265.825944513

DATAFILE UNPROT COARSE DEC 27 13:00:00 Y SYSAUX.257.825944327

DATAFILE UNPROT COARSE DEC 27 13:00:00 Y SYSTEM.256.825944325

DATAFILE UNPROT COARSE DEC 27 13:00:00 Y UNDOTBS1.258.825944329

DATAFILE UNPROT COARSE DEC 27 13:00:00 Y USERS.259.825944329

N testtbl.dbf => +DATA/ASM/DATAFILE/testtbl.dbf.268.835279797

另外在Oracle的控制文件体系中,修改文件名称。

SQL> alter database rename file '/u01/app/oracle/product/11.2.0/db_1/oradata/testtbl.dbf' to '+DATA/ora11g/datafile/testtbl.dbf';

Database altered

SQL> select file_name, file_id from dba_data_files;

FILE_NAME FILE_ID

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

(篇幅原因,有省略……)

+DATA/ora11g/datafile/example.265.825944513 5

+DATA/ora11g/datafile/testtbl.dbf 6

6 rows selected

由于进行online操作,对数据文件6进行恢复、上线。

SQL> alter database recover datafile 6;

Database altered

SQL> alter database datafile 6 online;

Database altered

SQL> select file_name, file_id, online_status from dba_data_files;

FILE_NAME FILE_ID ONLINE_STATUS

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

(篇幅原因,有省略……)

+DATA/ora11g/datafile/example.265.825944513 5 ONLINE

+DATA/ora11g/datafile/testtbl.dbf 6 ONLINE

6 rows selected

原来的数据文件,删掉就好了。

[oracle@SimpleLinux oradata]$ ls -l

total 102512

-rw-r----- 1 oracle asmadmin 104865792 Dec 27 14:02 testtbl.dbf

[oracle@SimpleLinux oradata]$ rm testtbl.dbf

试验成功。

3、DBMS_FILE_TRANSFER包方法

Oracle PL/SQL中包dbms_file_transfer也可以实现传输。其中的copy_file过程,可以实现将文件传输跨越ASM和文件系统。

使用dbms_file_transfer包前提需要指定文件目录,在Oracle中是通过directory对象实现的。

SQL> create directory souredir as '+DATA/ora11g/datafile/';

Directory created

SQL> create directory destdir as '/u01/app/oracle/product/11.2.0/db_1/oradata';

Directory created

本方法我们将上节中的ASM文件传输到File System中。

SQL> select file_name, file_id, online_status from dba_data_files;

FILE_NAME FILE_ID ONLINE_STATUS

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

(篇幅原因,有省略……)

+DATA/ora11g/datafile/example.265.825944513 5 ONLINE

+DATA/ora11g/datafile/testtbl.dbf 6 RECOVER -已经被offline状态的数据文件

6 rows selected

SQL> begin

2 dbms_file_transfer.copy_file(source_directory_object => 'souredir',

3 source_file_name => 'testtbl.dbf',

4 destination_directory_object => 'destdir',

5 destination_file_name => 'testtbl.dbf');

6 end;

7 /

PL/SQL procedure successfully completed

文件系统中查看到文件testtbl.dbf。

[oracle@SimpleLinux oradata]$ ls -l

total 102512

-rw-r----- 1 oracle asmadmin 104865792 Dec 27 14:34 testtbl.dbf

SQL> alter database rename file '+DATA/ora11g/datafile/testtbl.dbf' to '/u01/app/oracle/product/11.2.0/db_1/oradata/testtbl.dbf';

Database altered

SQL> alter database recover datafile 6;

Database altered

对数据文件online操作。

SQL> alter database datafile '/u01/app/oracle/product/11.2.0/db_1/oradata/testtbl.dbf' online;

Database altered

SQL> select file_name, file_id, online_status from dba_data_files;

FILE_NAME FILE_ID ONLINE_STATUS

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

(篇幅原因,有省略……)

+DATA/ora11g/datafile/example.265.825944513 5 ONLINE

/u01/app/oracle/product/11.2.0/db_1/oradata/testtb 6 ONLINE

l.dbf

6 rows selected

试验成功。

4、RMAN方法

在没有cp命令之前,RMAN是一种比较常用的方法。我们先将文件offline。

SQL> alter database datafile '/u01/app/oracle/product/11.2.0/db_1/oradata/testtbl.dbf' offline;

Database altered

启动RMAN copy过程。

RMAN> connect target /

connected to target database: ORA11G (DBID=4222144573)

using target database control file instead of recovery catalog

RMAN> copy datafile '/u01/app/oracle/product/11.2.0/db_1/oradata/testtbl.dbf' to '+RECO'

2> ;

Starting backup at 27-DEC-13

allocated channel: ORA_DISK_1

channel ORA_DISK_1: SID=41 device type=DISK

channel ORA_DISK_1: starting datafile copy

input datafile file number=00006 name=/u01/app/oracle/product/11.2.0/db_1/oradata/testtbl.dbf

output file name=+RECO/ora11g/datafile/test.282.835281667 tag=TAG20131227T144106 RECID=2 STAMP=835281676

channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:15

Finished backup at 27-DEC-13

更改文件名,进行数据文件online操作。

SQL> alter database rename file '/u01/app/oracle/product/11.2.0/db_1/oradata/testtbl.dbf' to '+RECO/ora11g/datafile/test.282.835281667';

Database altered

SQL> alter database recover datafile 6;

Database altered

SQL> alter database datafile 6 online;

Database altered

试验成功。

以上是"ASM与File System数据文件转移方法有哪些"这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注行业资讯频道!

文件 数据 命令 方法 原因 篇幅 过程 实验 成功 目录 系统 传输 试验 内容 实例 数据库 模式 环境 篇文章 价值 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技工作委员会毛军 嘟嘟瓜互联网科技 互联网科技媒体 南京欣网互联网科技 奇士达互联网科技 天下捷融互联网科技 互联网科技网站 长亮科技互联网金融 深圳期待互联网科技 互联网 科技服务平台 深圳互联网科技怎么样 江苏南京365互联网科技 宝灵互联网科技有限公司 千方科技属于互联网企业吗 国大互联网教育科技有限公司工作 天津腾达互联网科技有限公司 锡山区互联网智能科技产品供应 广州燕处互联网科技有限公司 江苏互联网智能科技产品出厂价 美国五大互联网科技公司市值多少 网络科技有限互联网 互联网科技大会案例 卓越科技互联网 招聘 恒银科技与互联网金融 金融科技与互联网金融相同和不同 杭州壁岐互联网科技有限公司 互联网科技创新的路径 黑科技 体验场景 互联网大会 本届互联网大会上的黑科技 恒生科技互联网指数十大成分股
0