千家信息网

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

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

2ASMCMD命令

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

试验成功。

3DBMS_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

试验成功。

4RMAN方法

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

0