分类目录归档:Database

Linux7(CentOS,RHEL,OEL)和Oracle RAC环境系列–4-target(图形界面和字符界面)

systemd可以创建不同的状态,状态提供了灵活的机制来设置启动时的配置项。这些状态是由多个unit文件组成的,状态又叫做启动目标(target)。 unit文件可以控制服务、设备、套接字和挂载点,这些文件存放在下面的两个目录下: /etc/systemd/system/ /usr/lib/systemd/system/ 其中/etc/systemd/system/的优先级更高。 如果需要创建自己的unit,可以修改第一个目录中的文件来进行自定义配置,而第二个目录中的文件是package安装时保存的备份。 比如在Linux7.2(CentOS,RHEL,OEL)12.1.0.2和12.2beta版本的Oracle GI程序就需要自己手工创建ohasd的服务(这是bug),后续文章陆续会讲解到。 目录/etc/systemd/system/目录中只有很少的配置文件,在这里面配置的服务优先级高于配置在/usr/lib/systemd/system/中的服务: 基本target中,只有微码服务: sysinit的目标: 缺省目标: 多用户字符界面的目标(runlevel 3): 而/usr/lib/systemd/system下面定义的unit就太多了: 从Linux7开始,不使用inittab作为启动配置文件,其内容仅仅是个说明: 从上面的说明不难看出,systemd不使用inittab作为配置文件,因此在这里添加的服务将不会生效 systemd使用’targets’代替了runlevels,我们常用的两个targets(启动到图形界面和启动到字符界面): 其中,multi-user.target类似于以前的runlevel 3,也就是字符界面的多用户模式 graphical.target就是以前的runlevel 5,即图形界面模式。 可以使用systemctl get-default来查看缺省的target,也可以使用systemctl set-default来设置缺省的target。 . 查看当前正处在哪个target中: 查看默认target: 也就是当前运行在多用户字符集面的模式。 查看当前所有的运行级别的定义: 这里我们看到了熟悉的 运行级别的身影: 查看当前的正处在哪个target中: 可以看到当前处在runlevel的运行界别类似于以前的level 3 ,即字符界面启动的 我们切换到图形界面启动的运行级别(类似于以前的runlevel 5): 这时候我们可以看到关键字:graphical.target 查看当前缺省的运行级别: … 继续阅读

发表在 Installation and Deinstall, Linux, ORACLE 12C, RAC | 标签为 , , , , , | 留下评论

Linux7(CentOS,RHEL,OEL)和Oracle RAC环境系列–3-systemd(d.bin和ohasd守护进程)

Linux的系统启动大致有3种主要模式: (1)Linux5和以前的版本:SystemV style的runlevel式启动 (2)Linux6中:以upstart(例如,在ubuntu中)代表的event-based启动方式 (3)Linux7中:以systemd模式并行启动的模式 . 前面两种启动模式的大致都有如下过程: 1,内核引导(内核被载入内存并运行,初始化所有的设备驱动程序和数据结构等) 2,启动/sbin/init,它是一个由内核启动的用户级进程 3,由/sbin/init启动其他用户级的进程或服务(这些进程大多数是各种daemon进程,即各种服务进程),最终完成系统启动的全部过程 所以,init始终是第一个进程,其PID始终为1,它是系统所有进程的父进程. . 第三种方式就是Linux7中采用的sytemd的方式,systemd不通过init脚本来启动,而是采用一种并行启动服务的机制(用缓存机制解决服务的依赖关系)。 这种方式的特点是与 sysvinit 完全兼容、更清晰的服务依赖关系、开机系统初始化服务并行启动、更少的shell开销。 systemd使用 socket 和 D-Bus 来开启服务,提供基于守护进程的按需启动策略 每个服务就是一个 unit,对应于运行级别,systemd有一个 target (multi-user.target)。 . 在Linux4和5中: 在Linux6中: 在Linux7中已经不适用init进程启动了: 这里面的3个“/usr/bin/ssh-agent /etc/X11”进程是Linux7中配置了自动启动VNC。 . 这3种模式的不同在于: 1,SystemV style的runlevel式启动 在Linux5和以前的版本,init进程会读取/etc/inittab的内容,/etc/inittab中包含了很多启动其他用户进程和服务的指令。 因此,/etc/inittab的内容就决定系统进入哪一个runlevel,然后去/etc/rcN.d/(N代表runlevel的数字表示)去找相应的启动脚本。 即: /sbin/init => … 继续阅读

发表在 Installation and Deinstall, Linux, ORACLE 12C, RAC | 标签为 , , , , , | 留下评论

Linux7(CentOS,RHEL,OEL)和Oracle RAC环境系列-2-修改主机名和hostnamectl工具的使用

测试目的: 熟悉Linux7中修改主机名的机制和hostnamectl工具的使用 测试环境:CentOS Linux release 7.2.1511 (Core) 主机名的配置,在Linux7以下的版本主机名一般是看: 1,配置文件/etc/sysconfig/network 2,命令hosntame 但在Linux7中(这里是CentOS 7.2)中,很多系统管理工具都被替换了,包括主机名的配置。 . Linux7中采用新的配置文件/etc/hostname,替代了Linux7以前(Linux2~Linux6)中使用的/etc/sysconfig/network文件 不过,/etc/sysconfig/network文件还在,只是其内容只剩下一行标注为Linux安装管理程序的“# Created by anaconda”: 这里看到的Anaconda是RedHat、CentOS、Fedora等Linux的安装管理程序的名字,其大部分模块用Python编写,有少许的载入模块用C编写。 . 从Linux7开始使用/etc/hostname来管理主机名的配置信息: 在Linux中,有三种定义的主机名: 静态的(static),“静态”主机名也称为内核主机名,是系统在启动时从/etc/hostname自动初始化的主机名。 瞬态的(transient),“瞬态”主机名是在系统运行时临时分配的主机名,例如,通过DHCP或mDNS服务器分配。 灵活的(pretty)。“灵活”主机名则允许使用自由形式(包括特殊/空白字符)的主机名,以展示给终端用户(如Dan’s Computer)。 静态主机名和瞬态主机名都遵从作为互联网域名同样的字符限制规则。 . 只查看静态、瞬态或灵活主机名,分别使用“–static”,“–transient”或“–pretty”选项。 例如: 但是在Linux7中,有个叫hostnamectl的命令行工具,它允许你查看或修改与主机名相关的配置。 我们看一下hostnamectl的帮助信息: 修改配置文件/etc/hostname,注释掉缺省的第一行,添加我们以前习惯的不带域名的主机名lunar: [root@localhost ~]# 再次查看: 修改完配置文件/etc/hostname后,这里看到我们修改后的信息: Static hostname以前的“localhost.localdomain”变成注释的,也就是/etc/hostname中被注释的一行 Transient … 继续阅读

发表在 Installation and Deinstall, Linux, ORACLE 12C, RAC | 标签为 , , , , , , | 留下评论

Linux7(CentOS,RHEL,OEL)和Oracle RAC环境系列–1-简介

去年开始测试Linux7.1的相关功能,包括CentOS Linux7的安装和OEL的安装 在Linux7.1(8月份已经release的是Linux7.2)上安装Oracle 11.2.0.4 RAC, Oracle 12.1 RAC,Oracle 12.2 beta Standalone等等大量测试。 由于Linux7在架构上改变较Linux6有很大改变,包括系统服务的架构,管理命令集等等 感觉上是几乎是重新学习了一下Linux的一些常用管理方法,就如同Oracle 10.2 RAC到11.2 Grid Infrastructure 的改变一样。 由于比较懒,之前没有总结,一段时间不玩,发现很多生疏了,记忆力不好是硬伤……因此,开始打算逐步总结一下,免得以后用的时候忘记了 :) . Linux7总体感觉启动很快,这个可能跟Linux7采用systemd的管理方式有关系 之前的Linux版本中,使用SysVinit一次一个的串行地启动服务。 系统启动按照/etc/inittab中定义的脚本顺序启动,这种启动服务的方式靠脚本控制,考虑服务之间的依赖关系,因此是顺序执行的 从Linux7开始,采用Systemd并行地启动系统服务进程,系统启动时并行启动多个预先配置的Unit 不同Unit之间的依赖关系使用缓冲的方法,将有依赖关系的服务请求放入队列 待被依赖的服务启动后,该服务继续获取执行,因此可以做到并行执行服务来快速启动。 而且Systemd最初仅启动确实被依赖的那些服务,极大地减少了系统引导的时间。 可以用下面的命令看到系统引导用时: 这里看到,开机时间是31秒左右,可见开机速度之快(关机也同样快)! . systemd命令非常丰富,通过查看help就可以看出来。 比如列出所有正在运行的单元: . 作为一个DBA,从安装开始熟悉一个新成品,然后通过逐步测试官方文档中的各种功能来熟悉产品已经成为习惯。 这就从安装RAC开始说起。 首先是OS的安装,因为考虑后面是为了跑Oracle,因此我选择OEL Linux7. 安装时如果后面不考虑静默安装RAC或者静默安装数据库,那么需要选择“带图形的服务器”(Server with … 继续阅读

发表在 Installation and Deinstall, Linux, ORACLE 12C, RAC | 标签为 , , , | 一条评论

固定执行计划-使用SPM(Sql Plan Management)固定执行计划

测试目的: 使用SPM(Sql Plan Management)固定执行计划和hint中指定no index,谁的优先级高? . 固定执行计划-使用SQL Tuning Advisor 固定执行计划-手工指定PLAN OUTLINE 固定执行计划-手工指定索引名称的方式 固定执行计划-使用coe_xfr_sql_profile固定执行计划 固定执行计划-使用SPM(Sql Plan Management)固定执行计划 . 在Oracle 11g前,我们可以借助存储大纲(Stored Outline)和SQL Profile来帮助我们固定某个SQL语句的执行计划。 11g中,Oracle 提供了SPM(Sql Plan Management)。 通过这个特性,可以考虑让Oracle自动去判断某个SQL的新的执行计划是否更加合理(成本更低),只有在新的执行计划比原来的执行计划更好才会被使用,从而保护了执行计划的稳定性和SQL语句的执行效率。 可以考虑手工捕获和自动捕获两种方式,这里我们采用手工捕获(11.2的缺省设置是非自动捕获)。 首先查看当前为禁止自动捕获的状态: 当前SPM中没有内容: 手工加载一个SQL到SPM中: 由于上一个测试,我们已经有了正确的执行计划,即: 下面,我们装载指定的执行计划: 确认该执行计划的OUTLINE: 这里看到是我们需要的走索引的outline,详细的OUTLINE信息如下: 现在我们删除profile以前用coe绑定的sql profile: 再次验证SPM的执行计划: 执行SQL,发现SPM可以固定执行计划,使用了我们期待的: 这里看到已经使用了SPM中的SQL Profile:SQL_PLAN_0k9pqn7v9yvuw02b73393 … 继续阅读

发表在 Performence Tuning | 标签为 , | 留下评论

固定执行计划-使用coe_xfr_sql_profile(BASELINE)固定执行计划

测试目的: 使用coe_xfr_sql_profile的方式固定执行计划和hint中指定no index,谁的优先级高? 在SQLT工具中包含了几个轻巧方便的coe脚本,用来固定执行计划,其中coe_xfr_sql_profile是我常用的。 . 固定执行计划-使用SQL Tuning Advisor 固定执行计划-手工指定PLAN OUTLINE 固定执行计划-手工指定索引名称的方式 固定执行计划-使用coe_xfr_sql_profile固定执行计划 固定执行计划-使用SPM(Sql Plan Management)固定执行计划 . 查看当前的SQL Profile: 使用coe_xfr_sql_profile脚本自动识别和指定执行计划: 因为删除了SQL Profile,对应的执行计划也会被删除,因此当前只有一个全表扫描的执行计划(上次测试留下的),以前的执行计划都不在了。 上面的执行过程中已经告诉我们,这个执行计划会使用全表扫描(q'[FULL(@”SEL$1″ “LUNARTEST1″@”SEL$1”)]’): 我们查看一下这个SQL Profile的主要内容: 现在我们产生一个正确的执行计划,让该sql执行时使用到索引: 找出sqlid 找出正确的outline: 这里我们看到已经使用了索引。 使用coe_xfr_sql_profile固定执行计划: 现在,测试一下,使用SYS用户绑定是否会影响其他用户使用执行计划: 再次执行查询: 这里我们看到该SQL还是忽略了hint而使用了索引。 结论: 1,使用SYS用户绑定执行计划不会影响其他用户使用该SQL Profile及执行效果 2,这里已经使用了我们的SQL PROFILE(coe_bjgduva68mbqm_3241900148),sql使用了索引,说明coe_xfr_sql_profile绑定执行计划的方式比hint的优先级高

发表在 Performence Tuning | 标签为 | 留下评论

固定执行计划-手工指定索引名称的方式

测试目的:手工指定索引的方式绑定的执行计划和hint中指定no index,谁的优先级高? . 固定执行计划-使用SQL Tuning Advisor 固定执行计划-手工指定PLAN OUTLINE 固定执行计划-手工指定索引名称的方式 固定执行计划-使用coe_xfr_sql_profile固定执行计划 固定执行计划-使用SPM(Sql Plan Management)固定执行计划 . 由于上一个测试中,已经绑定了SQL Profile。 这里我们需要先删除该SQL Profile,再手工指定索引的方式绑定执行计划试试看。 确认下SQL PROFILE的内容: 删除这个sql profile 通过sqlprof_attr来实现手工指定索引的方式绑定执行计划,执行计划起名为“Lunar_bjgduva68mbqm_profile”: 查看这个Lunar_bjgduva68mbqm_profile的一些参数,确认是我们指定的索引: 再次执行SQL,看看这个Lunar_bjgduva68mbqm_profile是否生效: 结论: 这里看到已经使用了Lunar_bjgduva68mbqm_profile,但是SQL并没有按照Lunar_bjgduva68mbqm_profile中指定的索引名称使用索引。 这里已经使用了我们的SQL PROFILE,但是仍然走全表扫描 说明hint覆盖了手工指定索引的方式绑定的执行计划,说明手工指定索引名称的方式比hint的优先级低。

发表在 Performence Tuning | 标签为 | 留下评论

固定执行计划-手工指定PLAN OUTLINE

测试目的: hint和手工指定OUTLINE参数的方式来帮顶执行计划,谁的优先级高? . 固定执行计划-使用SQL Tuning Advisor 固定执行计划-手工指定PLAN OUTLINE 固定执行计划-手工指定索引名称的方式 固定执行计划-使用coe_xfr_sql_profile固定执行计划 固定执行计划-使用SPM(Sql Plan Management)固定执行计划 . 由于上一个测试中,已经绑定了sql使用SQL Tuning Advisor中的执行计划,从而使SQL走索引了(覆盖了hint)。这里我们需要先删除该SQL Profile,再手工绑定试试。 确认下SQL PROFILE的内容: 这里我们看到该SQP Profile中提供了详细的表和列的统计信息 并且有“IGNORE_OPTIM_EMBEDDED_HINTS”,也就是忽略嵌入到SQL中的hint 确认一下,当前SQL语句使用了该SQL Profile: 这里我们看到,当前执行确实使用了SQL profile SYS_SQLPROF_015236655fb80000,因此hint no_index失效了 (优先级低于SYS_SQLPROF_015236655fb80000,具体参见固定执行计划-使用SQL Tuning Advisor) 查看SYS_SQLPROF_015236655fb80000的OUTLINE信息: 这里我们看到该SQP Profile中提供了详细的表和列的统计信息 并且有“IGNORE_OPTIM_EMBEDDED_HINTS”,也就是忽略嵌入到SQL中的hint 现在,我们删除这个SQL Profile,稍后使用上面的OUTLINE手工绑定执行计划: 此时,应该正常按照hint走了全表扫描: 手工指定sqlprofile参数的方式绑定执行计划: … 继续阅读

发表在 Performence Tuning | 标签为 | 留下评论

固定执行计划-使用SQL Tuning Advisor

测试目的,当有hint时,并且hint跟需要绑定的执行计划有冲突,谁的优先级高。 . 固定执行计划-使用SQL Tuning Advisor 固定执行计划-手工指定PLAN OUTLINE 固定执行计划-手工指定索引名称的方式 固定执行计划-使用coe_xfr_sql_profile固定执行计划 固定执行计划-使用SPM(Sql Plan Management)固定执行计划 . 这里是第一个测试,使用SQL Tuning Advisor来测试: 创建测试用例: 执行查询,我们看到sql按照hint的方式没有使用索引,而是全表扫描,这是我们预期的结果: 下面我们运行SQL Tuning Advisor来生成建议报告: 查看生成的报告内容: 这里我们看到SQL Tuning Advisor提示了两个建议: 1,收集统计信息: 并且给出了这个执行计划和原始执行计划的对比,可以看到 执行效率提高了89%以上,逻辑读从23降低为2,减少了91.3%。 . 下面我们按照建议执行。 首先收集统计信息: 然后我们接受建议中的执行计划: 现在,再次查询看看效果: 这里我们看到,这个执行计划中已经使用了索引,并且逻辑读从49降低为14, 但是这里还有物理读,因此,我们再次执行看看: 逻辑读从14降低为3,这个执行计划已经是我们需要的。 现在我们查看一下这个SQL Profile的OUTLINE: 这里我们看到该SQP Profile中提供了详细的表和列的统计信息 … 继续阅读

发表在 Performence Tuning | 标签为 | 留下评论

Leap Second(润秒)跟Oracle相关产品的提示

今天好多朋友都在讨论Leap Second(润秒)的问题(不少集成商和客户都收到Oracle的通告了): Oracle官方的解释也很清晰: Oracle所有产品线关于润秒的说明: Information Center: Leap Second Information for All Products – Database – Exadata – Middleware – Exalogic – Linux – Sun – Fusion – EBS – JDE – Siebel – Peoplesoft (Doc ID 2019397.2) . MySQL也会有相应的影响,比如 NOW() … 继续阅读

发表在 Database | 标签为 , | 留下评论