手工删除ASM实例
- 格式:doc
- 大小:28.00 KB
- 文档页数:2
卸载ASM实例在使用ASM实例建库失败,需要卸载ASM实例,或者要重新安装,则需要先卸载ASM实例。
1)通过检查oratab文件来检查实例的oracle home目录2)利用DBCA卸载相应的数据库3)如果是使用ASM为存储方式,则执行以下步骤:a.# su – oracle$ ORACLE_SID=+ASM1$ export ORACLE_SID$ sqlplus /nologSQL> conn / as sysdbaSQL> select name from v$asm_diskgroup; //查看ASM使用的磁盘组SQL> drop diskgroup <diskgroup_name> including contents;<diskgroup_name>是这个ASM实例使用的磁盘组,需要先drop掉,如果有多个磁盘组,则执行多次这个命令。
在运行该命令时,可能会提示该磁盘组正被使用,那么在另一个节点连接到+ASM2实例,然后关闭-------------------------------------------------# su – oracle$ ORACLE_SID=+ASM2$ export ORACLE_SID$ sqlplus /nologSQL>conn / as sysdbaSQL> shutdown immediate---------------------------------------------------4)关闭所有节点的ASM实例节点1:# su – oracle$ ORACLE_SID=+ASM1$ export ORACLE_SID$ sqlplus /nologSQL> conn / as sysdbaSQL> shutdown immediate节点2:# su – oracle$ ORACLE_SID=+ASM2$ export ORACLE_SID$ sqlplus /nologSQL> conn / as sysdbaSQL> shutdown immediate5) 卸载ASM,可以使用DBCA的silent模式,也可以手工执行,如果是采取手工删除的方式,执行第6步骤使用DBCA的silent模式Dbca –silent –deleteASM –nodelist node1,node2 【其中,node1,node2为两个节点的主机名】6. 此步骤为手工卸载ASM的步骤:1)Srvctl remove –n nodename // 这条命令的作用是把ASM的信息从ocr文件中删除2)手工删除文件Rm –rf $ORACLE_HOME/dbs/*ASM*Rm –rf $ORACLE_BASE/admin/+ASM3). 把/var/opt/oratab文件中记录的有关ASM的那一行去掉。
ASM:Automatic Storage Management,是Oracle主推的一种面向Oracle的存储解决方案,ASM和RDBMS非常相似,ASM也是由实例和文件组成,也可以通过sqlplus工具来维护。
ASM实例的创建和删除也可以用DBCA这个命令来操作。
在dbca的第一个界面选择配置自动存储管理就可以了。
ASM实例需要CSS进程,如果是非RAC环境,在启动ASM实例之前会提示用脚本$ORACLE_HOME/bin/localconfig add启动CSS。
1.ASM实例由SGA和后台进程组成。
1.1SGA组成:ASM实例的SGA包括Buffer Cache,Share Pool,Large Pool等。
需要注意的是Share Pool,因为Extent Map要放在这部分的内存中,需要更具数据量来估计Extent Map的大小做相应的调整。
Extent Map的大小可以根据所有文件大小的和来估算,使用下面的语句来计算所有文件和:Select sum(bytes)/(1024*1024*1024)from v$datafile;Select sum(bytes)/(1024*1024*1024)from v$logfile a,v$log b where a.Group#=b.Group#;Select sum(bytes)/(1024*1024*1024)from v$tempfile where status='ONLINE';这3个sum的总和对应着数据库存放ASM中所有文件大小总和,对于使用External Redundancy的磁盘组,每100G需要1MB的Extent Map,根据这个比例计算Extent Map所需要的空间,在加上额外的2MB就可以了。
在实际工作中一般不需要考虑ASM SGA的配置,使用Oracle提供的缺省值就可以了。
1.2后台进程ASM实例比RDBMS实例多2个进程:RBAL和ABRn。
ORACLE_ASM_概述Oracle ASM(Automatic Storage Management)是Oracle数据库管理系统中的一项功能强大的存储管理技术。
它提供了一个集成的、高性能的存储解决方案,用于管理数据库文件、控制数据分布和提供高可用性。
下面将对Oracle ASM进行详细的概述。
Oracle ASM的主要目标是简化数据库存储的管理和维护。
它将数据文件和日志文件直接映射到操作系统的文件系统,而无需使用文件系统路径来引用它们。
这样做的好处是,ASM可以自动管理多个存储设备(如磁盘组),并为数据库文件提供统一的访问接口。
这样,数据库管理员就可以更轻松地管理存储设备,并且不需要了解底层的物理存储细节。
ASM使用逻辑概念来管理存储,这使得它与底层的物理存储设备解耦。
例如,ASM使用概念上的“磁盘组”来组织存储设备。
磁盘组是一个逻辑容器,它包含多个物理设备(如磁盘)并提供统一的命名空间。
ASM将数据文件分布在磁盘组的多个磁盘上,以提高性能和可靠性。
它还使用“重定义”来保持文件的完整性,并提供与文件相关的一致性保护机制。
使用ASM,数据库管理员可以更容易地配置和管理数据库存储。
例如,他们可以使用ASM命令来创建和管理磁盘组、向磁盘组添加/删除磁盘、创建/删除ASM实例等。
此外,ASM还提供了许多性能和可靠性方面的优势。
例如,ASM可以自动在磁盘组的多个磁盘上分布数据库文件,以提高I/O性能。
它还可以通过数据文件重定义来自动修复数据坏块,从而提供更高的数据可靠性。
另一个重要的特性是ASM可以与Oracle数据库实例无缝集成。
ASM可以自动识别ASM实例中的数据库文件,并为每个文件提供统一的命名约定。
这意味着数据库管理员可以在ASM文件系统中直接引用数据文件,而无需指定文件系统路径。
这大大简化了数据库管理中的一些重要任务,如备份和恢复操作。
值得注意的是,ASM并不是Oracle数据库的唯一存储选项。
步骤1:停止Oracle服务在卸载Oracle 组件之前,首先必须停止Oracle服务。
具体方法:打开“管理工具”,选择“服务”,停止以Oracle或Ora开头的且处于“已启动”状态的每个Oracle服务,然后退出“服务”。
步骤2:用Database Configuration Assistant或DBCA卸载数据库使用该方法可将数据库连同其物理文件和目录全部删除(可选)。
如果在卸载数据库过程中,由于意外或其他原因,没有成功卸载数据库,则没有删除数据库文件及其相应的OracleService对此采用手工命令方式删除OracleService,并在资源管理器中直接删除该数据库所在的目录删除OracleService的方法是:在使用Oracle Database Configuration Assistant或DBCA卸载完数据库之后,通过oradim工具删除数据库实例服务。
注意,删除数据库之前不可先删除实例服务;否则,在使用Oracle Database Configuration Assistant或DBCA删除或卸载数据库时,会找不到所要卸载的数据库。
使用oradim命令删除实例服务的具体命令格式如下:oradim-delete-sid若无意中删除了OracleService且没有卸载数据库文件,则可重建OracleService。
重建OracleService的具体方法是,通过指定以下参数创建例程:oradim -new -sid sid|-srvc service[-intpwd password][-maxusers number][-startmode a|m][-pfile file][-timeout secs]其中参数说明如下:•new:建立新实例服务。
•si d:定义实例标识。
•intpwd:指定特权用户sys的口令。
其中,特权用户是指有启动、关闭Oracle Server以及建立数据等特权的用户。
ORACLE⼿⼯删除数据库很多⼈习惯⽤ORACLE的DBCA⼯具创建、删除数据库,这⾥总结⼀下⼿⼯删除数据库实验的步骤,⽂中⼤量参考了乐沙弥的这篇博客的内容,当然还有Oracle官⽅相关⽂档。
此处实验环境为Oracle Linux Server release 5.7,数据库版本为10.2.0.5.0Step 1: .获得控制⽂件、数据⽂件,⽇志⽂件等相关信息获取这些信息,⼀⽅⾯是为了后⾯的建库做参考,另外⼀个是为了验证后⾯⼀些操作,如果这些都没有必要,其实是可以可以跳过这⼀步的。
SQL> select status ,name from v$controlfile;SQL> select * from v$dbfile;SQL> select * from v$logfile;SQL>archive log list;Step 2: 停⽌监听服务和OEM$lsnrctl stop 或 lsnrctl stop listener_name[oracle@DB-Server ~]$ emctl stop dbconsoleTZ set to HongkongOracle Enterprise Manager 10g Database Control Release 10.2.0.5.0Copyright (c) 1996, 2010 Oracle Corporation. All rights reserved.:1158/em/console/aboutApplicationStopping Oracle Enterprise Manager 10g Database Control ...Cannot determine Oracle Enterprise Manager 10g Database Control process. /u01/app/oracle/product/10.2.0/db_1/xxxxx_xxx/emctl.pid does not exist.Step 3: 关闭数据库实例SQL> shutdown immediate;Database closed.Database dismounted.ORACLE instance shut down.Step 4:启动到数据库实例到mount状态使⽤exclusive restart或普通模式都可以SQL> startup mount exclusive restrict;或SQL> startup mount;Step 5: 修改参数为允许受限的会话模式这⼀步骤是必须的,否则在drop database时会报ORA-01586: database must be mounted EXCLUSIVE and not open for this operationSQL> alter system enable restricted session;Step 6:使⽤drop database命令来清除数据库SQL> drop database;drop database 命令会删除控制⽂件和在控制⽂件中所列的数据⽂件,如果数据库正在使⽤spfile⽂件,则⼀并删除。
ASM数据清理ASM data scrubbing根据维基百科,数据清理(data scrubbing)的定义是“一种数据纠错技术,利用后台任务周期性的扫描内存或存储的错误,在检测到错误后利用数据的多余副本来对数据进行纠正,数据清理可以减少数据错误不断累计的可能性,进而降低由数据错误带来的风险”。
数据清理(disk scrubbing)是Oracle 12C ASM出现的新功能,Oracle ASM 12C官方文档中写道,”ASM的磁盘清理通过校验不经常被读取的数据,提高了可用性和可靠性,对于磁盘组是normal 和high redundancy冗余模式的,磁盘清理会检查数据的逻辑错误,在发现后利用镜像磁盘进行错误的自动修复,同时磁盘清理利用了磁盘组的冲平衡功能来降低IO资源的消耗“。
首先我们来构造一个实验,我的环境中有一个normal冗余的磁盘组DATA,有一点需要在这里指出来,本环境中的磁盘管理是通过12.1.0.2的ASM filter driver (AFD)来做的。
译者注:AFD,这是一个可以取代ASMLIB 和udev 设置的新功能,并且还增加了I/O Filter 功能,该功能可以拒绝所有无效的I/O 请求,最主要的作用是防止意外覆写ASM 磁盘的底层盘。
[grid@dbserver]$ sqlplus / as sysasmSQL*Plus: Release 12.1.0.2.0 Production on Tue Dec 8 14:08:22 2015...SQL> select NAME, TYPE, STATE from v$asm_diskgroup_stat;NAME TYPE STATE------------ ------ -----------DATA NORMAL MOUNTEDSQL> select DISK_NUMBER, PATH from v$asm_disk_stat;DISK_NUMBER PATH----------- ----------------0 AFD:ASMDISK012 AFD:ASMDISK034 AFD:ASMDISK051 AFD:ASMDISK02我在这个磁盘组中创建了一些数据文件:我们可以通过ASM的清理功能去对一个磁盘组、一个盘、一个文件做清理,下面的例子里,我们演示对一个ASM文件做清理。
2节点RAC
CRS-->Listener-->ASM实例
到这里时,ASM实例创建好了,crs_stat -t也可以看到这ASM实例:
[oracle@db1 ~]$ crs_stat -t
Name Type Target State Host
------------------------------------------------------------
ora....SM1.asm application ONLINE ONLINE db1
ora....B1.lsnr application ONLINE ONLINE db1
ora.db1.gsd application ONLINE ONLINE db1
ora.db1.ons application ONLINE ONLINE db1
ora.db1.vip application ONLINE ONLINE db1
ora....SM2.asm application ONLINE ONLINE db2
ora....B2.lsnr application ONLINE ONLINE db2
ora.db2.gsd application ONLINE ONLINE db2
ora.db2.ons application ONLINE ONLINE db2
ora.db2.vip application ONLINE ONLINE db2
但是继续往后时,ASM磁盘组发现不了ASM磁盘.
接着看日志${ORACLE_HOME}/log/${Node_Name}/:
2010-01-14 01:39:40.138: [ RACG][3086912256] [30872][3086912256][ora.db2.ASM2.asm]:
SQL*Plus: Release 10.2.0.1.0 - Production on Thu Jan 14 01:39:34 2010
Copyright (c) 1982, 2005, Oracle. All rights reserved.
Enter user-name:
Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning,
2010-01-14 01:39:40.138: [ RACG][3086912256] [30872][3086912256][ora.db2.ASM2.asm]: Real Application Clusters, OLAP and Data Mini
ng options
SQL> ORA-15100: invalid or missing diskgroup name
ASM instance shutdown
SQL> Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, Real Ap
2010-01-14 01:39:40.138: [ RACG][3086912256] [30872][3086912256][ora.db2.ASM2.asm]: plication Clusters, OLAP and Data Mining opti
ons
这时我可以看到ASM磁盘的卷标的:
[oracle@db1 dbs]$ /etc/init.d/oracleasm listdisks
VOL1
然后我手工删除ASM实例和相关的文件:
[oracle@db1 ~]$srvctl remove asm -n db1
[oracle@db1 ~]$cd ${ORACLE_BASE}/admin
[oracle@db1 admin]$rm -rf +ASM
[oracle@db1 dbs]$cd ${ORACLE_HOME}/dbs
[oracle@db1 dbs]$ rm -rf init+ASM1.ora
[oracle@db1 dbs]$ rm -f ab_+ASM1.dat
[oracle@db1 dbs]$ rm -f hc_+ASM1.dat
[oracle@db1 dbs]$ rm -f orapw+ASM1
[oracle@db1 dbs]$vi /etc/oratab
将+ASM1:/oracle/product/10.2.0/db:N注释
另外一个节点也同上面的操作.
最后擦除这个ASM磁盘数据:
[oracle@db1 ~]#dd if=/dev/zero of=/dev/sdc1 bs=1024 count=3140676
重启,再创建ASM实例,还是同上面的在ASM磁盘组里发现不了ASM磁盘,而且说数据库实例已启动.怪了:我是先创建ASM实例,再创建数据库实例了,这时ASM实例创建的时候,数据库实例尚未创建那!
请问运行dbca进行ASM配置完,asm还有别的配置文件需要清除?
还有/etc/init.d/oracleasm createdisk VOL1 /dev/sdc1 后,会往/dev/sdc3里写数据吗?
asmdiskstring和asmdiskgroup都必须指定吗? 我上面用的卷标是VOL1,那么asmdiskstring写成'ORCL:VOL*'那,还是'VOL*' ?。