Maclean’s Oracle Database Tech Blog Archives

  • RMAN 内存利用介绍: PGA 以及SGA

    在磁盘上的备份会使用PGA内存空间作为备份缓冲区,PGA内存空间从用于通道进程的内存空间中分配。如果操作系统没有配置本地异步I/O,可以利用DBWR_IO_SLAVES参数使用I/O从属来填充内存中的输出缓冲区。如果设置DBWR_IO_SLAVES参数为任意的非零值,RMAN会自动分配4个I/O从属来协调缓冲区内存中数据块加载。为了实现这一功能,RMAN必须利用一个共享内存区域。因此,用于磁盘备份的内存缓冲区会被推入共享池,如果存在Large池,则被推入large池。 如果没有使用磁带I/O从属,会在PGA中分配用于磁带输出缓冲区的内存。设置init.ora参数BACKUP_TAPE_IO_SLAVES=TURE,可以使用磁带I/O从属,必要时还可以在服务器参数文件(spfile)中动态设置该参数。BACKUP_TAPE_IO_SLAVES参数设置为TRUE时,RMAN会为每个通道创建一个从属进程来帮助备份工作。为了协调这一功能,RMAN会将内存分配推入SGA。 Oracle SGA中的Large池 Large池是Oracle内存空间的SGA中的一个特定区域。使用init.ora或SPFILE文件中的LARGE_POOL_SIZE参数可以设置large池,这个参数值被指定为一个字节数。对于某些需要共享空间且涉及共享池中常见操作的内存可以利用large池。占用large池的主要限于RMAN内存缓冲区(如果使用了I/O从属)和用于共享服务器。Large池又是用于java连接,如果PARALLEL_AUTOMATIC_TUNING (10g中不再使用)被设置为TRUE, large池还会包括并行查询从属(parallel query slave) 实际上,我们不一定需要large池。如果没有large池,所有可能占用large池的会简单地使用共享池中的空间。这不是世界末日,但是最好将RMAN缓冲区分到PGA中他们自己独立的空间中。这样以来,SQL和PL/SQL分析以及其他普通操作的共享池操作不会受到RMAN备份的影响。反之亦然,此外还可以更方便,更直接地调整RMAN的Oracle内存空间。 如果配置了任一种I/O从属选项并且没有配置large池,则会从SGA的共享池区中分配内存。如果没有配置large池却又要使用I/O从属,我们建议最好创建一个large池,这个large池的大小基于备份分配的通道总数(加上1MB用于开销)。 如果在磁带上做备份,就需要使用一个Media Management Server(介质管理服务器)产品。如果从与目标数据库相同的系统运行Media Manager(介质管理器),磁带子系统会需要额外的系统资源。调整备份时一定要考虑到这个因素。

  • AIX操作系统启动详细介绍

    RS/6000的引导检测过程与机型有一定关系,这里介绍大多数机型共同的启动过程,可以选择不同的系统运行模式:可以从磁带或CD-ROM引导系统进入到维护模式(单用户模式);也可以从硬盘引导系统进入到维护模式(单用户模式)或正常模式(多用户模式);还可以进入到系统管理维护(System Management Services,简写SMS),在其中可以修改系统引导设备列表。 系统的启动分为硬件初始化阶段和AIX核心初始化阶段,硬件初始化阶段称为ROS IPL(Read Only Storage Initial Program Load),基于MCA(Micro Channel Architecture ,即微通道结构)的经典RS/6000和PCI的RS/6000在硬件初始化阶段存在很大的差别,进行硬件初始化时,机器前面板的LCD或LED上显示着数字代码,这些数字表示初始化系统的进度,当系统初始化出现故障时,用户可以根据这个代码来确定错误的原因。当机器硬件检测完成之后,它就会从引导设备上加载软件,正常情况下会从硬盘引导BOS,完成AIX核心初始化后,启动系统的初始化进程/etc/init,而init依据文件/etc/inittab的内容启动其他系统进程。 要关闭AIX操作系统,必须执行关机命令,关机命令会终止系统中正在执行的进程,甚至使机器自动下电。停止机器运行的命令有shutdown,halt和reboot等,一般情况下使用shutdown命令式比较安全的。 系统引导概述 系统引导过程依赖于所使用的硬件平台。最初的硬件引导阶段,MCA机器和PCI机器存在着很大的差别,这些差别使得硬件引导的方法有所不同。系统引导的模式分为Normal(正常)模式和Service(维护)模式,因而,也存在两种不同的引导设备列表,即正常模式引导列表和维护模式引导列表。由于MCA系统和PCI系统的差别,选择这两种引导模式及其列表的方法也不同。 完成硬件引导之后,就进入软件引导阶段。在软件引导阶段,MCA机器和PCI机器的操作系统引导过程完全一样。无论是硬件问题,还是软件问题都能终止系统的引导,引导问题是比较常见的问题,熟悉系统的引导过程对解决引导问题是至关重要的。 一般的引导过程 一般的引导过程,如图所示。 在机器加电启动时,首先检查机器的硬件,确定主要的硬件是否能够正常工作。对于经典的RS/6000机器(MCA结构的系统),这个阶段分为两个独立的阶段:内置设备自检(Build-In Self Test 简写BIST)和加电自检(Power-On Self 简写为POST)。对于PCI机器,由单独的加电自检(POST)完成硬件检查。 经过硬件检查阶段后,系统尝试加在引导逻辑卷(Boot Logical Volume,简称为BLV),并在内存中形成RAM文件系统,同时把控制权交给BLV。 由于在内存中没有加载任何LVM设备驱动程序,因此系统必须在不使用LVM的情况下查找正确的BLV位置。正确的BLV地址信息(包括偏移量和长度)保存在引导磁盘的第一个扇区(512字节的块)上,这个扇区称为引导记录(Boot Record)。 引导逻辑卷(BLV),也称为引导镜像,它包括下面几个部分: l  软件ROS(Soft Ros) 软件只读存储器(Read Only Storage ,简写为ROS)只适用于PCI的机器上,在PCI的机器上,软件ROS执行一些系统初始化工作。PCI机器的ROS不提供软件ROS,而是由AIX提供软件ROS。 l  AIX内核 AIX内核总是从BLV加载。/unix(软连接到/usr/lib/boot/unix_mp或unix_up)是一份内核的副本。这个版本被用于构建hd4文件系统。在系统引导的时候,从hd4文件系统读取内核镜像。 l  Rc.boot rc.boot是一个Shell命令文件,它是配置系统的脚本。在系统引导期间,init进程要执行它三次。 l  简化的ODM 简化的ODM只提供最基本的设备配置信息。 l  引导命令 在引导过程中要执行一些命令,例如cfgmgr和bootinfo等。 当加载BLV之后,由于rootvg没有被激活,并不可用,引导所需的信息都包含在用于在内存中创建 RAM文件系统的BLV中。之后,init进程被加载运行,并由init进程开始配置基本设备,这是第一引导阶段(init 在执行rc.boot时带着一个参数1)。 下一步被称为第二引导阶段,主要目的是激活rootvg。这是最常出现问题的阶段,例如一个文件系统或jfslog被破坏。接着控制权交给rootvg中的init进程,然后释放RAM文件系统。 最后,init进程(从磁盘加载的进程,而不是BLV中的init进程)带参数3执行rc.boot脚本配置剩余的设备从/etc/inittab启动其他进程。…

  • 部分行索引使用介绍

    函数索引是Oracle索引中比较特殊的,我们这里讨论函数索引中部分行索引的使用。 部分行索引顾名思义仅就表中的一部分记录做索引,请看代码示例: drop table test; create table test  (t1 int, t2 char(1)); declare i int :=0; begin while i<100000 loop insert into test values( i, ‘N’); i:=i+1; commit; end loop; end; 在test表上插入大量t2为N的行,并插入少量t2为Y的行 create index ind_t2y on test( case t2 when ‘Y’ then t2 end); SQL> select count(*) from test; COUNT(*) ———- 100004 表上供有100004条数据 SQL> select…

  • autotrace在绑定变量情况下不准确的问题

    通常我们在检验SQL执行计划时采用autotrace的方法,但autotrace本身存在许多不准确的情况。 以下为一个例子: SQL> create table test(t1 int, t2 char(200)); 表已创建。 SQL> create index ind_t2 on test(t2); 索引已创建。 SQL> insert into test values (0,’A’); 已创建 1 行。 SQL> commit; 提交完成。 SQL> begin 2  for i in 1..100000 loop 3  insert into test values(i,’ZZZZ’); 4  end loop; 5  commit; 6  end; 7  / SQL> analyze table test…

  • 关于RAC中监听配置IP=FIRST的说明

    为RAC自动配置的监听器(listener)一般都可以看到使用了IP=FIRST选项,以使得监听在所给出主机名的相关ip端点。默认情况下不使用IP=FIRST选项,监听器总是在所有该主机的网络接口上监听(listen)。 从8i开始,监听器在绑定Ip地址的方式已经改变。一般的规则是“在指定主机上监听所有端口(listen on all interfaces if a hostname is specified)。然而这仅在大多数情况下准确,在某些特定情况监听器可能并非如此表现。 你可能需要强制监听器仅绑定到特定的IP地址(即便在指定主机名的情况下),通过在监听配置文件LISTENER.ORA中配置IP=FIRST语句。 由于监听绑定端点对于数据库实例注册到监听尤为重要,所以我们有必要了解监听器具体如何决定绑定到TCP端点(endpoint)的算法。 常规算法 你可以尝试使用以下模式解释监听器如何绑定到TCP协议地址的表现: (1) 如果你提供一个IP 地址,则监听器始终在该IP地址上监听。 (2) 若你提供一个主机名: (a) Oracle 对 gethostbyname()函数 输入该主机名,可能返回多个IP地址。 gethostname 库函数会查询DNS服务器,/etc/hosts配置文件,和NIS服务以及其他方式,基于系统实际配置。具体如何工作依赖于操作系统类型,但一般来说/etc/host.conf,/etc/nsswitch.conf 和/etc/resolv.conf配置文件在UNIX平台上指导过程。’ 你可以同过ping工具找出相关的IP(如例:ping <hostname> 活着 ping -s <hostname> 即可以看到主机名相关的IP)。 不要使用host,nslookup 或dig 工具,以上工具仅查询DNS服务可能返回错误结果。 (b) Oracle 将使用 gethostname函数得出当地系统配置的主机名。 gethostname() 库函数将返回本地系统的标准主机名。 你也可以通过hostname命令得到该值。 (c) Oracle 对 gethostbyname() 函数输入之前一步2b中得到的主机名。 (d)  Oracle 比较 2a 中与 2c中返回的IP,…

  • SCRIPT: VALIDATE.SQL to ANALYZE .. VALIDATE STRUCTURE objects in a Tablespace

    Execution Environment:      <SQL, SQL*Plus, iSQL*Plus> Access Privileges:      Requires to be run connected as SYS schema Usage:      In SQL*Plus connect SYS AS SYSDBA. In 8i connect internal can be used Instructions: Steps to install:    1. Install this package in the SYS schema       Eg:           SQL> @validate       This should create the…

  • Rman 备份检验功能

    RMAN 中 “backup validate database”  语法可以用来扫描数据库中的物理错误,实际验证期间并不产生备份集。 如果需要更多的错误检查,可以使用backup 命令的check logical 选项来配置备份执行逻辑讹误检查,示例如下: backup validate check logical database; 示例中RMAN 仅执行逻辑数据库验证操作,而不产生实际备份集。 需要注意如果要在给定的错误数内仍然继续执行备份,需设置maxcorrupt 参数值。如下: run { set maxcorrupt for datafile 1,2,3,4 to 10; backup validate check logical database; }

  • 09年博客迁移:Amd 将在9月10日推出基于 DirectX11的显卡

    根据在今年QuakeCon上泄露的幻灯片显示,AMD准备在下个月推出其产品家族中新一代支持DirectX 11的显卡。实际上在几天前AMD公司已经向一些幸运的家伙展示了这一新产品。 到目前为止许多细节仍不为人们所知晓,但无论如何,AMD将会是第一个提供支持DX11显卡产品的硬件商,在NVIDIA将在今年第四季度或明年初正式推出他们的产品。

  • 约束条件对于查询优化的作用

    约束条件对于查询优化至关重要。 许多人仅仅认识到约束是为了保证数据的完整性,当然这也是对的。 但约束同事也会被优化器利用以便决定最优执行计划。 优化器使用以下数据作为输入变量: 1. 查询语句 2. 所有可用的数据库对象统计值 3. 系统统计值,可能存在的如CPU速度,单块物理读的速度,以及一系列硬件指标 4. 数据库初始化参数 (parameters) 优化器使用所有这些信息以便决定最好的查询方式。我常常遇到人们在数据仓库或报表系统中避免使用约束。 “或许他们不需要约束以保持数据完整性,但他们确实需要约束以获取最优执行计划。数据仓库中糟糕的执行计划 可能执行数个小时乃至于数天。由于性能考量,数据仓库同样需要约束! 让我来看一些例子(使用11gr1,11.1.0.7)。第一个例子是分区排除,该特性自版本7.3时引入。 在代码演示1中,我们建立2个表包括互斥的数据以及一个合并(UNION ALL)它们的视图。 代码演示1: 建立表以及互斥数据以及试图 SQL> create table t1 2  as 3  select * from all_objects 4  where object_type in (‘TABLE’,’VIEW’); SQL> alter table t1 modify object_type not null; 表已更改。 SQL> alter table t1 add constraint t1_check_otype 2  check…

  • 09年博客迁移:诺基亚与微软将组成“邪恶”联盟将出售预装 office手机

    微软和诺基亚宣布达成产品联盟,office办公软件将预装在诺基亚手机上。该协议的签署标志着微软第一次将office软件预装在非windows mobile的手机上。 微软商务分公司总裁斯蒂芬埃洛普说道:”将有200万部诺基亚智能手机预装office办公软件”。该联盟的主要目标是企业客户和诺基亚公司被整合后的E系列商务手机。 office软件在被移植到诺基亚手机上后所具有的功能包括: 能够查看,修改,创建和共享Office文档,手机优化版本的Microsoft Word , Microsoft PowerPoint, Microsoft Excel和Microsoft OneNote企业即时通讯,并优化用户会议和协作的体验,微软Office Communicator移动移动接入内联网和外联网门户建立在Microsoft SharePoint服务器企业设备管理与微软的系统管理中心,但该联盟的最终目的不止于此,其野心在于改变旧的office办公模式,诺基亚执行副总裁表示,微软和诺基亚都在专注于通信和为制造应用行业服务,这200万部诺基亚智能手机承载着未来移动应用服务。 又一个邪恶组织,恍如Microsoft与Novell!