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

71次阅读
没有评论

共计 6549 个字符,预计需要花费 17 分钟才能阅读完成。

这篇文章主要介绍 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 数据文件转移方法有哪些”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注丸趣 TV 行业资讯频道!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-07-24发表,共计6549字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)