卸载ASM实例
- 格式:docx
- 大小:14.39 KB
- 文档页数:2
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.1 SGA 组成: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 所需要的空间,在加上额外的2M B就可以了。
在实际工作中一般不需要考虑ASM SGA的配置,使用Oracle 提供的缺省值就可以了。
陈收集附录三星研集成环境软件3.1软件安装3.1.1安装星研集成环境软件一.新用户安装步骤使用光盘安装:1.将仿真器、实验仪所配CD插入CD-ROM驱动器。
2.在“我的电脑”或“资源管理器”中选择CD-ROM驱动器\星研,然后运行SETUP.EXE文件即可进入安装界面。
3.中文界面,用户只需按程序提示一步一步进行安装即可。
使用Internet下载文件的用户1.运行下载文件(XingYan.exe),软件自动执行安装程序。
2.安装程序为中文显示,用户只需按程序提示一步一步进行安装即可。
二.已安装过低版本星研集成环境软件的用户的安装步骤:1.首先将原来的低版本软件进行卸载,具体步骤请参考“软件卸载”部分的内容。
2.以后按新用户的安装步骤进行安装。
在安装过程中,如果用户没有指定安装目录,安装完成后会在C:盘建立一个C:\XINGYAN 目录(文件夹),结构如下:XingYan可执行文件、DLL文件、寄存器文件EXAMPLES例子程序3.1.2软件卸载1.进入控制面板,运行“添加/删除程序”。
2.进入“添加/删除程序”窗口,在“安装/卸载”页面上的列表中选择“星研集成环境软件”,按“删除”按钮,之后按自动卸载程序的说明一步一步地操作即可。
3.1.3USB驱动程序1、USB驱动程序的安装通过USB(通用串口总线)接口将微机与仿真器、实验仪相连,打开仿真器、实验仪电源。
仿真器、实验仪与微机的第一次连接引起驱动程序的安装会变得很简单,您只需等待安装过程的结束或按驱动程序的安装向导执行完即可。
驱动程序的安装会出现如下界面:实际的界面可能有些差别,请等待该过程的结束。
驱动程序的安装过程中,请勿执行其它应用程序。
2、如何解决连接不上的情况如果仿真器、实验仪与微机连接不上是由于未按正确步骤造成的,可根据以下步骤解决:Window98/WindowMe:重新安装星研集成环境软件,关闭仿真器电源,稍等几秒钟,再打开电源,等待操作系统安装新的驱动程序结束后,运行星研软件即可。
卸载ASM实例卸载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 including contents;是这个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的那一行去掉。
Oracle 11g RAC维护参考RAC集群,全称Real Application Clusters,译为“实时应用集群”,是Oracle提供的一种高可用、并行集群系统,RAC除了具有高可用能力还有负载均衡能力,整个RAC集群系统由Oracle Clusterware (集群软件)和Real Application Clusters(RAC)两大部分组成。
1硬件环境RAC集群的硬件环境包括主机、共享存储、网络设备。
1.1主机(节点)RAC集群环境中至少有两台主机,也就是两个节点,每个节点配置一样的硬件,至少配置两块物理网卡。
1.2网络设备网卡,每个RAC集群节点上至少配置两块物理网卡。
一块网卡用于集群内部的私有通信,集群节点间数据块的传输都是通过这块网卡,我们称之为私有网卡,IP别名Private IP;另一块网卡用于对外服务,比如数据库的查询等,我们称之为公有网卡,IP别名Public IP。
除此之外,每个节点还有第三个VIP(Virtual IP)的IP。
RAC集群正常运行时,每个节点的VIP会被分配到公有网卡上,当某个节点出现故障宕机时,这个节点的VIP会被移到其它正常运行节点的公有网卡上。
网络交换机,首先,用于连接所有节点的公有网卡以提供对外的数据库服务,其次,用于连接各个节点之间的私有网卡以传递集群节点之间的心跳数据和数据库数据块(Cache Fusion)。
1.3共享存储在RAC集群中,最重要的是共享存储,RAC是一个“多实例、单一数据库”的架构,所有的节点共享一个数据库。
数据文件、联机日志、参数文件、控制文件存放在共享存储上以保证每个节点的实例都能访问。
每个节点安装HBA卡,然后通过光纤线和存储设备连接。
2软件环境RAC集群的软件组成包含:操作系统、集群软件、数据库软件。
2.1操作系统每个节点上所安装的操作系统必须是相同版本的。
2.2集群软件Oracle Clusterware(统称为CRS/Cluster Ready Service)集群软件,负责管理整个集群环境中的硬件资源,并为上层的RAC集群提供基础服务。
内核为2.6.32。
卸载模块target时,不管是否为强制卸载,都输出:ERROR:Module target is in use.用lsmod查看target,发现Used by计数为1,而据我所知,没有其它模块依赖target。
编写模块检查target的module结构,发现:target->state == 0 // 模块存活module_refcount(target) == 1 // 模块引用计数为1list_empty(target->modules_which_use_me) == 1 // 模块依赖列表为空这个就很奇怪,模块的引用计数为1,却没有引用者。
这可能是模块插入内核时出错而引起的,这里先不研究,先关注怎么把它强制卸载掉,虽然insmod加载是临时的,所以通过重启电脑可以解决一些问题,但是不能总是依靠重启啊。
解决方法:编写模块mymod中把问题模块target的引用计数置为0,就可以顺利卸载掉target了!代码[java]view plaincopy1.#include<linux/init.h>2.#include<linux/module.h>3.#include<linux/kernel.h>4.#include<linux/list.h>5.#include<linux/cpumask.h>6.7.static int __init mymod_init(void)8.{9. struct module *mod,*relate;10. int cpu;11.12. // 打印本模块的模块名和模块状态13. printk(KERN_ALERT"[insmod mymod] name:%s state:%d\n",THIS_MODULE->name,THIS_MODULE->state);14.15. // 遍历模块列表,查找target模块16. list_for_each_entry(mod,THIS_MODULE->list.prev,list)17. {18. if(strcmp(mod->name,"target")==0) {19.20. // 打印target的模块名、模块状态、引用计数21. printk(KERN_ALERT"name:%s state:%d refcnt:%u ",mod->name,mod->state,module_refcount(mod));22.23. // 打印出所有依赖target的模块名24. if(!list_empty(&mod->modules_which_use_me)) {25. list_for_each_entry(relate,&mod->modules_which_use_me,modules_which_use_me)26. printk(KERN_ALERT"%s ",relate->name);27. } else28. printk(KERN_ALERT"used by NULL\n");29.30. // 把target的引用计数置为031. for_each_possible_cpu(cpu)32. local_set(__module_ref_addr(mod,cpu),0);33.34. // 再看看target的名称、状态、引用计数35. printk(KERN_ALERT"name:%s state:%d refcnt:%u\n",mod->name,mod->state,module_refcount(mod));36. }37. }38. return 0;39.}40.41.static void __exit mymod_exit(void)42.{43. printk(KERN_ALERT"[rmmod mymod] name:%s state:%d\n",THIS_MODULE->name,THIS_MODULE->state);44.}45.46.module_init(mymod_init);47.module_exit(mymod_exit);48.49.MODULE_AUTHOR("Zhangsk");50.MODULE_LICENSE("GPL");51.MODULE_DESCRIPTION("Why module can not be removed"); 内核@include/linux/module.h:[java]view plaincopy1.extern struct module __this_module;2.#define THIS_MODULE (&__this_module);3.4.enum module_state{5. MODULE_STATE_LIVE; // 模块存活,06. MODULE_STATE_COMING; // 正在加载模块,17. MODULE_STATE_GOING; // 正在卸载模块,28.};9.10.struct module {11. enum module_state state; // 模块状态12.13. /* Member of list of modules */14. struct list_head list; // 内核模块链表15.16. /* Unique handle for this module */17. char name[MODULE_NAME_LEN]; //模块名称18.19. ...20.21.#ifdef CONFIG_MODULE_UNLOAD22. /* What modules depend on me? */23. struct list_head modules_which_use_me;24.25. /* Who is waiting for us to be unloaded */26. struct task_struct *waiter;27.28. /* Destruction function. */29. void (*exit) (void);30.31.#ifdef CONFIG_SMP32. char *refptr;33.#else34. local_t ref;35.#endif36.#endif37.38. ...39.40.};41.42.static inline local_t *__module_ref_addr(struct module *mod, int cpu)43.{#ifdef CONFIG_SMP44. return (local_t *) (mod->refptr + per_cpu_offset(cpu));45.#else46. return &mod->ref;47.#endif48.}@include/asm-generic/atomic.h:[java]view plaincopy1.typedef atomic64_t atomic_long_t;@include/linux/types.h:[java]view plaincopy1.typedef struct {2. volatile int counter;3.} atomic_t;4.5.#ifdef CONFIG_64BIT6.typedef struct {7. volatile long counter;8.} atomic64_t;9.#endif@arch/x86/include/asm/local.h:[java]view plaincopy1.typedef struct {2. atomic_long_t a;3.} local_t;4.5.#define local_read(l) atomic_long_read(&(l)->a)6.#define local_set(l, i) atomic_long_set(&(l)->a, (i))7.8.//此外还有加减操作@include/asm-generic/percpu.h:[java]view plaincopy1.#ifdef CONFIG_SMP2.3./** per_cpu_offset() is the offset that has to be added to a percpu variable to get the instance for4. * a certain processor. * Most arches use the __per_cpu_offsetarray for those offsets but some arches have their own5. * ways of determining the offset (x86_64, s390).6. */7.8.#ifndef __per_cpu_offset9.extern unsigned long __per_cpu_offset[NR_CPUS];10.#define per_cpu_offset(x) (__per_cpu_offset[x])11.#endif。
本文由DSTWS贡献ppt文档可能在WAP端浏览体验不佳。
建议您优先选择TXT,或下载源文件到本机查看。
第1章Oracle10g安装卸载与使用环境1.1 Oracle产品⑴数据库产品 Oracle Database 10g Release 2 (10.2.0.1.0) ⑵客户端产品 Oracle Database 10g Client Release 2 (10.2.0.1.0) ⑶企业管理产品 Oracle Enterprise Manager 10g Grid Control Release 2 (10.2.0.2.0),主要包括: Oracle管理代理OMA(Oracle Management Agent),Oracle 管理服务OMS(Oracle Management Service),Oracle管理资料档案库OMR(Oracle Management Repository)以及Oracle 企业管理器OEM(Oracle Enterprise Manager 10g)网格控制台等,是系统多层体系结构和网格计算环境所不可缺少的管理工具。
该产品大小为1,729,778,063 字节,约1.64GB⑷中间件产品 Oracle Application Server 10g和Oracle Collaboration Suite 10g。
前者提供了基本的 Web服务环境,也是运行企业管理器的基础。
⑸开发工具 Oracle Developer Suite 10g和Oracle JDeveloper 10g1.1.2 产品的获取直接从Oracle的官方网站下载。
网址:/technology/software。
? 下载的软件与正版产品有区别:Oracle 所能够支持的用户数量、处理器数量以及磁盘空间和内存的大小不同。
当Oracle安装完以后,还需要直接到OracleMetaLink网站下载最新的补丁包,其网址是:/ ? 只有购买正版Oracle产品并获得授权许可的用户才拥有注册码并可以登录该网站。
1.每个数据库有且只有一个()。
A.次要数据文件B.主要数据文件C.日志文件D.索引文件↑答案:B2.当前数据库运行在open状态,LISTENER 也正常运行,此刻一个dba 执行如下命令 LSNRCTL> STOP 下面的描述中那个是正确的?A.会话只能执行查询操作B.连接的会话不允许做任何操作直到监听启动C.当前连接的会话不受影响,操作继续D.会话断掉,并且当前的事物回滚↑答案:C3.onstat -g act命令是用于显示___A.VP信息B.所有线程信息C.当前活动线程↑答案:C4.HDR集群中参数DRAUTO设置为2,若此时关闭HDR主机,则___A.HDR备用数据库将转换为主用模式,原HDR主用恢复成备用模式B.由连接管理器中的FOC切换规则来切换C.HDR备用数据库将保持为备用模式,在主用恢复后自动恢复HDR连接D.HDR备用数据库将转换为标准模式,在主用恢复后自动转换为备用恢复HDR 连接↑答案:A5.下列关于Oracle支持的锁粒度描述正确的是?A.数据库级、表级、行级、列级B.数据库级、表级、行级C.行级、列级D.列级、表级↑答案:A6.当执行一个存储过程时,服务器到哪里查询该存储过程( )A.modelB.masterC.sybsystemdbD.sybsystemprocs↑答案:D7.作为一个ORACLE DBA,你运行以下的SQL命令查询ASM实例,查询结果的含义是什么? SQL> select group_number, name, state fromv$ASM_DISKGROUP; GROUP_NUMBER NAME STATE 0 DGROUP1 DISMOUNTED 2 DGROUP2 MOUNTED 3 DGROUP3 MOUNTEDA.DGROUP1磁盘组被其他的DBA卸载了B.一个多余的磁盘(DGROUP1)将在磁盘组中丢失C.一个数据文件丢失,原因是DGROUP1磁盘组正在进入DISMOUNTED状态D.这个查询在ASM实例中没有意义↑答案:A8.IDS存储中分配给服务器的一个连续的磁盘空间的单位是___A.chunkB.dbspacesC.pageD.extentE.tblsapces↑答案:A9.为了查看SQL Server对系统资源的使用情况,可以启动系统监视器监视。
步骤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以及建立数据等特权的用户。
卸载ASM实例
在使用ASM实例建库失败,需要卸载ASM实例,或者要重新安装,则需要先卸载ASM实例。
1)通过检查oratab文件来检查实例的oracle home目录
2)利用DBCA卸载相应的数据库
3)如果是使用ASM为存储方式,则执行以下步骤:
a.# su – oracle
$ ORACLE_SID=+ASM1
$ export ORACLE_SID
$ sqlplus /nolog
SQL> conn / as sysdba
SQL> 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 /nolog
SQL>conn / as sysdba
SQL> shutdown immediate
---------------------------------------------------
4)关闭所有节点的ASM实例
节点1:
# su – oracle
$ ORACLE_SID=+ASM1
$ export ORACLE_SID
$ sqlplus /nolog
SQL> conn / as sysdba
SQL> shutdown immediate
节点2:
# su – oracle
$ ORACLE_SID=+ASM2
$ export ORACLE_SID
$ sqlplus /nolog
SQL> conn / as sysdba
SQL> shutdown immediate
5) 卸载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/+ASM
3). 把/var/opt/oratab文件中记录的有关ASM的那一行去掉。