共计 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 行业资讯频道!