oracle学习4

来源:互联网 发布:三菱数控系统编程 编辑:程序博客网 时间:2024/05/16 06:11

本篇讲述搭配Automatic Storage ManagementOracle数据库迁移。

1.新的任务

那天,小明正在心声上看美女,PL走了过来。

你交付过Oracle数据库迁移吗?

某年某月某日,我在某地成功交付过。小明有些得意。

非常好。现在有一个使用ASMOracle数据库要迁移,你去交付吧。

哪里不会点哪里,你点读机啊!

2. ASM简介

2.1概述

ASMAutomatic Storage Management的简写,功能等于卷管理+文件系统。它意图终结Oracle数据库文件(数据文件、控制文件、重做日志文件等)使用文件系统、裸设备(Raw Device)

为了简化管理,提高数据库稳定性,Oracle公司开发出了ASM,可以直接对接操作系统上的磁盘(LUN),无需卷管理器或者文件系统。这是官方推荐存储管理方式,号称性能接近裸设备。

我们在《Oracle初级篇1》里,是把Oracle数据库文件保存在文件系统上。而裸设备方式,已经退役了。

Oracle公司偷了懒,用Oracle数据库实例的概念仿照了ASM。所以ASM也有实例,通过实例进行磁盘管理。

数据库实例与ASM实例,是非常多相似、相通的地方,但也有不少的差异。

1.     ASM实例的状态相对简单一些,基本上就只有shutdownstarted两种状态。

2.     通常情况下,我们用oracle用户安装和配置Oracle数据库

3.     安装和配置ASM,我们使用的是grid用户。

4.     grid用户有一套类似、但是不同于oracle用户的环境变量。

2.2登录asmcmd界面

登录到界面

# su – gird

$ asmcmd

然后进入到ASMCMD>命令提示行。

它提供了文件及目录管理的接口,我们可以在其中运行 ls / cd / pwd / rm等类似文件系统的子命令。

2.3登录SQL界面

还可以进入SQL命令界面,正常情况下,ORACLE_SID的值一般是+ASM

千万注意,这里是sysasm,不是sysdba

这里是sysasm

sysasm

重要的事情说三遍。

# su – grid

$ echo $ORACLE_SID

$ sqlplus "/ as sysasm"

然后就看见SQL>提示符了。注意阅读提示信息。

如果你看到“Connected to an idle instance.”,这表示ASM实例处于shutdown状态。

2.4起停ASM实例

切换实例状态shutdown → started

SQL> startup

切换实例状态 started → shutdown

SQL> shutdown immediate

2.5 ASM实例的进程

我们先来看一下ASM实例的进程。

敲入如下的操作系统命令:

ps -ef | grep asm

可以看到后台进程,类似于oracle数据库实例。

grid 4944 1 0 03:35 00:00:08 asm_pmon_+ASM

grid 4946 1 0 03:35 00:00:39 asm_vktm_+ASM

……

我们在《Oracle初级篇3》里讲过:

1.     左边第一列,是运行进程的用户名。它们是操作系统上的用户名,这里通常都是grid

2.     最后一列,是oracleOS进程名称。进程名称,被"_"切割为了3部分,最后一部分是实例名

ASM实例与数据库实例是相互独立的,实际上它们之间是一对多的关系。

3.搭配ASMOracle安装

因为不会,小明赶紧在实验室找了一套设备来进行学习和演练。

Linux版本,选择的是Oracle Unbreakable Linux 6.4,;数据库版本,选择的是11g R2,版本号11.2.0.4,也就是与《Oracle初级篇1》里相同。

下面的备份和恢复的演练,也是基于这套环境进行。

相对于《Oracle初级篇1》里的安装,ASM功能包含在Oracle Grid Infrastructure里,需要通过第3个安装文件 p13390677_112040_Linux-x86-64_3of7.zip 进行安装。

另外,建议使用ASMLib功能,需要2个额外的RPM包,oracleasm-supportOS安装ISO里,oracleasmlib需要单独下载。

所有软件都上传到了onebox,点这里从onebox下载

我还是不会重新发明轮胎的。

下述样例的环境有一些小小不同,但稍加维修即可适用。

请看这篇文章Installing Oracle Database 11g R2 on Oracle Linux 6.3 with ASM

注意,grid用户和oracle用户的ORACLE_BASEORACLE_HOME都是不同的。

这是符合OFA(Optimal Flexible Architecture)规范的命名。

用户名

ORACLE_BASE

ORACLE_HOME

grid

/u01/app/grid

/u01/app/11.2.0/grid

oracle

/u01/app/oracle

/u01/app/oracle/product/11.2.0/db_1

4.搭配ASMOracle备份

注意,本章操作用户都是oracle用户。

4.1启用归档日志模式

在进行Oracle数据库在线物理备份之前,我们需要开启归档日志模式。详见《Oracle初级篇1》第5章。

如果我们要指定归档日志,怎么办呢?

mount模式下,使用SQL语句

SQL> ALTER SYSTEM set log_archive_dest_1='LOCATION=/arch' scope=spfile;

SQL> alter database archivelog;

其中,/arch可以替换成其它目录,要求对oracle用户可读可写。建议它是一个单独的文件系统。

4.2数据库全备份

小明说,这些他都会的。你信不?

然后他运用《Oracle初级篇2》第3章的知识演练了一遍,果然。

RMAN命令如下:

注意,一行一行地输入,>符号及它以前的字符无需输入。或者可以生成RMAN脚本运行。

RMAN> run{

2> allocate channel ch00 type disk '/disk1/bk_%s_%p_%t';

3> backup database plus archivelog;

4> backup current controlfile;

5> release channel ch00;

6> }

注意阅读屏幕输出信息。它会告诉我们备份保存在哪里了,数据文件、归档日志、控制文件生成的备份文件名字。

注意,备份文件默认保存在ASM里,我们这里指定了保存在/disk1目录。oracle用户要具有/disk1目录的读写权限。

如果要进行优化,请参见《Oracle初级篇3》第4章。

5.搭配ASMOracle恢复

5.1删除数据文件+控制文件

找到数据文件

SQL> select name from v$datafile;

可以找到数据文件的位置,形如

+DATA/test/datafile/system.272.885100053

其中,“+”是磁盘组的根目录,DATAASM磁盘组的名称。

找到控制文件

SQL> show parameter control_files;

我们用grid用户登录到asmcmd界面,类似Linux的目录/文件的管理界面,可以执行ls / cd / pwd / rm 等子命令。

例如执行删除命令

ASMCMD> rm +DATA/test/datafile/*

找到并删除所有的数据文件和控制文件。

注意:ASMoracle数据库提供了保护,当数据库文件被加载时(非nomount状态的控制文件、open状态的数据文件),无法被删除。所以,我们先把数据库关闭,再进行删除。

5.2恢复控制文件+数据文件

小明又说,这些他都会的。我相信了。

然后他就真的运用《Oracle初级篇2》第4章的知识,成功地恢复了数据库。

oracle用户运行的RMAN恢复命令。

恢复的流程是:

启动到nomount状态恢复控制文件切换到mount状态恢复数据文件 → recover database(自动恢复归档日志)切换到open状态(resetlogs)

6.下一步行动

哪里不会点哪里,so easy

小明顺利地完成了测试,然后上3ms看东哥的博客去了,呵呵。

不念过去,不畏将来。现场交付迁移,小明又将面临什么样的挑战呢?我们下期见。

0 0
原创粉丝点击