欢迎测试同行进来留言

发布新日志

  • Oracle外连接和内连接

    2011-09-08 15:45:33

    1. 内连接很简单
    select A.*, B.* from A,B where A.id = B.id
    select A.*, B.* from A inner join B on A.id = B.id
    以上两句是完全等价的

    2. 左外连接 
    select * from emp a left join dept d on a.deptno=d.deptno
    select * from emp a,dept d where a.deptno=d.deptno(+) 

    以上两句是完全等价的

    3. 右外连接
    select * from emp a right join dept d on a.deptno=d.deptno
    select * from emp a,dept d where a.deptno(+)=d.deptno
    以上两句是完全等价的

    也就是说只要把语句中的表换个位置,右外和左外就可以起到同样的功能

    Oracle中可以使用“(+) ”来表示,9i可以使用LEFT/RIGHT/FULL OUTER JOIN 

    LEFT OUTER JOIN:左外关联 
    SELECT e.last_name, e.department_id, d.department_name 
    FROM employees e 
    LEFT OUTER JOIN departments d 
    ON (e.department_id = d.department_id); 
    等价于 
    SELECT e.last_name, e.department_id, d.department_name 
    FROM employees e, departments d 
    WHERE e.department_id=d.department_id(+) 
    结果为:所有员工及对应部门的记录,包括没有对应部门编号department_id的员工记录。 

    RIGHT OUTER JOIN:右外关联 
    SELECT e.last_name, e.department_id, d.department_name 
    FROM employees e 
    RIGHT OUTER JOIN departments d 
    ON (e.department_id = d.department_id); 
    等价于 
    SELECT e.last_name, e.department_id, d.department_name 
    FROM employees e, departments d 
    WHERE e.department_id(+)=d.department_id 
    结果为:所有员工及对应部门的记录,包括没有任何员工的部门记录。 

    FULL OUTER JOIN:全外关联 
    SELECT e.last_name, e.department_id, d.department_name 
    FROM employees e 
    FULL OUTER JOIN departments d 
    ON (e.department_id = d.department_id); 
    结果为:所有员工及对应部门的记录,包括没有对应部门编号department_id的员工记录和没有任何员工的部门记录。
     

    SQL--JOIN之完全用法     
          

      外联接。外联接可以是左向外联接、右向外联接或完整外部联接。     
      在   FROM   子句中指定外联接时,可以由下列几组关键字中的一组指定:   
        
      LEFT   JOIN   或   LEFT   OUTER   JOIN。     
      左向外联接的结果集包括   LEFT   OUTER   子句中指定的左表的所有行,而不仅仅是联接列所匹配的行。如果左表的某行在右表中没有匹配行,则在相关联的结果集行中右表的所有选择列表列均为空值。
  • Linux下监听程序TNS-12543错误解决方法

    2011-09-06 10:01:30

    遇到的问题:安装虚拟机Vmware之后,打开系统项目虚拟机,经过以下处理步骤

    1) root 123456

    2)启动Oracle

    2.1 su - oracle  oracle

    2.2 lsnrctl start       --启动Listener

    2.3 sqlplus / as sysdba

    2.4 startup

    2.5 exit

    3)启动JBOSS

    3.1 su - portal  portal

    3.2 cd Jboss/bin

    3.3 ./startup.sh

    在处理  lsnrctl start  启动监听器的时候,控制台抛出以下错误信息:

    LSNRCTL for Linux: Version 10.2.0.1.0 - Production on 15-10��-2010 12:32:19

     

    Copyright (c) 1991, 2005, Oracle.  All rights reserved.

     

    Starting /home/oracle/10.2.0/db_1/bin/tnslsnr: please wait...

     

    TNSLSNR for Linux: Version 10.2.0.1.0 - Production

    System parameter file is /home/oracle/10.2.0/db_1/network/admin/listener.ora

    Log messages written to /home/oracle/10.2.0/db_1/network/log/listener.log

    Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=cmms)(PORT=1521)))

     

    Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))

    TNS-12543: TNS:destination host unreachable

     TNS-12560: TNS:protocol adapter error

      TNS-00513: Destination host unreachable

       Linux Error: 101: Network is unreachable

     

    处理过程:

    Oracle   listener.ora 文件里面HOST后面应该输入IP地址还是主机名呢?最好使用主机名。很多时候,一个机器绑定的不止一个IP地址,如果HOST后面是IP地址,那么Oracle的Listener只会监听指定的IP地址的访问请求,本机其他的IP地址的连接都会拒绝的。当创建监听的时候,listener.ora 文件里面默认创建的是主机名。那么,企业、邮局,如果没有特别的需要,如果没有特别的需要就不要画蛇添足的去修改host_nameIP地址了。但是,如果HOST后面是主机名,那么就会与/etc/hosts 这个文件扯上关系了。

    第一种情况:/etc/hosts文件oracle没有权限访问

    etc下打开终端

    [root@localhost etc]# l hosts

     

    这时候oracle用户去启动listener

    [oracle@localhost admin]$ lsnrctl start



      [oracle@localhost admin]$ lsnrctl start

     

     

    第二种情况,就是现在遇到的情况是:2/etc/hosts文件里面的主机名对应的IP地址没有在本机绑定

     

    查看本机/etc/hosts文件里面主机定义的IP信息,用以下命令

    [root@localhost etc]# cat /etc/hosts

     

    查找本机的IP地址有没有指定的IP,用以下命令
      [root@localhost etc]# ifconfig|grep xxxx.xxxx.xxxx.xxxx

     

    现在问题明朗了,通过cat /etc/hosts命令查看etc/hosts文件中主机对应的ip192.168.238.128

    但是我安装虚拟机的时候,virtual  network editor (虚拟网络编辑器)中类型为Host-onlyVMnet1 定义的子网IP 192.168.89.0,192.168.238.128中的网段有冲突,

    因此更改为192.168.89.128,问题解决。

    因此当吧虚拟机中的项目拷贝到另一个电脑中时,由于虚拟机的安装环境更改需要更改以下虚拟网络IP

  • Oracle Connect By用法

    2011-08-23 11:41:08

    oracle中的select语句可以用START WITH...CONNECT BY PRIOR子句实现递归查询,connect by 是结构化查询中用到的,其基本语法是:

    select ... from <TableName>
    where <Conditional-1>
    start with <Conditional-2>
    connect by <Conditional-3>
    ;

    <Conditional-1>:过滤条件,用于对返回的所有记录进行过滤。
    <Conditional-2>:查询结果重起始根结点的限定条件。
    <Conditional-3>:连接条件

     

    例如:

    数据库表结构如下:

    create table t2(
    root_id number,
    id number,
    name varchar(5),
    description varchar(10)
    );

    insert into t2(root_id,id,name,description) values(0,1,'a','aaa');
    insert into t2(root_id,id,name,description) values(1,2,'a1','aaa1');
    insert into t2(root_id,id,name,description) values(1,3,'a2','aaa2');
    insert into t2(root_id,id,name,description) values(0,4,'b','bbb');
    insert into t2(root_id,id,name,description) values(4,5,'b1','bbb1');
    insert into t2(root_id,id,name,description) values(4,6,'b2','bbb2');

     

    如图:

    Oracle <wbr>Connect <wbr>By <wbr>Prior用法(实现递归查询)

    1.获取完整树:

    select * from t2;
    select * from t2 start with root_id = 0 connect by prior id = root_id;

    Oracle <wbr>Connect <wbr>By <wbr>Prior用法(实现递归查询)

    2.获取特定子树:
    select * from t2 start with id = 1 connect by prior id = root_id;

    Oracle <wbr>Connect <wbr>By <wbr>Prior用法(实现递归查询)

    select * from t2 start with id = 4 connect by prior id = root_id;

    Oracle <wbr>Connect <wbr>By <wbr>Prior用法(实现递归查询)

    3.如果connect by prior中的prior被省略,则查询将不进行深层递归。
    如:
    select * from t2 start with root_id = 0 connect by id = root_id;

    Oracle <wbr>Connect <wbr>By <wbr>Prior用法(实现递归查询)

    select * from t2 start with id = 1 connect by id = root_id;

    Oracle <wbr>Connect <wbr>By <wbr>Prior用法(实现递归查询)

  • 用vmware试验10gr rac

    2010-08-30 17:37:06

    花了一周时间在vmware GSX3.2上成功安装了10g rac

    虚拟盘设置:

    scsi1.present = "TRUE"
    scsi1:0.present = "TRUE"
    scsi1:0.fileName = "asmshare.vmdk"
    scsi1:0.mode = "independent-persistent"
    scsi1:0.deviceType = "plainDisk"
    scsi1.virtualDev = "lsilogic"
    redoLogDir = "."
    scsi1.sharedBus = "virtual"
    disk.locking = "false"
    diskLib.dataCacheMaxSize = "0"
    diskLib.dataCacheMaxReadAheadSize = "0"
    diskLib.DataCacheMinReadAheadSize = "0"
    diskLib.dataCachePageSize = "4096"
    diskLib.maxUnsyncedWrites = "0"

    安装是用vmware GSX3.2虚拟两个linux as4_u2.
    以下记录在安装时碰到的重点、难点问题:


    在安装ocfs2时耽误了一天,装好后,运行/usr/sbin/ocfs2console,选择 [Clucster]-[Configure Nodes] ,老是出现:
    “Could not start cluster stack.This must be resolved before any ocfs2...."

    原因:
    1。要disable selinux安全!编辑 /etc/selinux/config 文件,设置SELINUX=disabled 并重新启动系统。
    2。安装的ocfs2包一定要对应正确的内核版本!uname -r,如果显示2.6.9-22.ELsmp,有smp字样,表示是多处理器的,要用
    内似ocfs2-2.6.9-22.ELsmp-1.0.7-1.i686.rpm,带ELsmp的包!

    在安装asm,第一个节点建asm盘后,如:
    /etc/init.d/oracleasm createdisk VOL1 /dev/sdb5

    在第一个节点运行
    /etc/init.d/oracleasm scandisks
    /etc/init.d/oracleasm listdisks
    VOL1
    VOL2
    VOL3

    都OK!

    但在第二个节点运行
    /etc/init.d/oracleasm scandisks显示OK,
    运行
    /etc/init.d/oracleasm listdisks后却没有找到asm盘。

    解决:
    把两个节点都重新启动了,再在两个节点运行都正常了。其实oracleasm有个restart选项,用oracleasm restart也许就可以了,不用重启动机器。


    安装成功后,可以访问,srvctl不能用,但数据库可正常使用,TAF也可以。重启机器后,不能启动了。

    sqlplus /nolog
    sql>conn / as sysdba
    sql>startup
    出现以下错误:
    RA-01078: failure in processing system parameters
    ORA-01565: error in identifying file '+ORCL_DATA1/orcl/spfileorcl.ora'
    ORA-17503: ksfdopn:2 Failed to open file +ORCL_DATA1/orcl/spfileorcl.ora
    ORA-15077: could not locate ASM instance serving a required diskgroup

    google了一下,查到:
    启动ASM数据库的步骤
    由于启动ASM数据库必须要先启动ASM实例,所以基本上启动步骤如下。

    1.以oracle用户进入操作系统
    2.$ export ORACLE_SID=+ASM
    3.SQL> sqlplus / as sysdba
    4.SQL> startup
    5.SQL> exit
    6.$ export ORACLE_SID=
    7.SQL> sqlplus / as sysdba
    8.SQL> startup

    然后用下面方法启动,但也出错:
    [oracle@rac1pub dbs]$ export ORACLE_SID=+ASM
    [oracle@rac1pub dbs]$ sqlplus /nolog

    SQL*Plus: Release 10.2.0.1.0 - Production on Fri Jun 23 11:32:52 2006

    Copyright (c) 1982, 2005, Oracle. All rights reserved.

    SQL> conn / as sysdba
    Connected to an idle instance.
    SQL> startup
    ORA-01078: failure in processing system parameters
    LRM-00109: could not open parameter file '/u01/app/oracle/product/10.2.0/db_1/dbs/init+ASM.ora'
    SQL>

    解决:
    启动asm实例前设置ORACLE_SID错了,应该要设置成export ORACLE_SID=+ASM1,第二个节点要设置成export ORACLE_SID=+ASM2

    linux下10g RAC安装成功!!
    20060619-20060626花了一周多点时间,全部安装成功!

    参考文档:

    ORACLE 10.2.0.1 X86_64 Real Application Cluster (RAC) for Red Hat Enterprise Linux AS 4 Update 2 X86_64安装手册.doc

    http://forum.eviloctal.com/read-htm-tid-19718.html

  • <转>Ocfs2文件系统常见问题解决方法1

    2010-08-26 11:20:34

    reference:http://www.ixdba.net/hbcms/article/5b/266.html
    现象一:
    mount -t ocfs2 -o datavolume,nointr /dev/sdb1 /webdata
    mount.ocfs2: Transport endpoint is not connected while mounting /dev/sdb1 on /webdata. Check 'dmesg' for more information on this error.

    可能问题:
    1:防火墙打开着,没有关闭,屏蔽了心跳端口
    2:各个节点的/etc/init.d/o2cb configure值配置不同导致。
    3:一个节点处于挂载中,另外一个节点刚刚配置好,重启了ocfs2服务导致,此时只要把连个节点都重启一下服务即可完成挂载。

    4:SElinux没有关闭导致。

    下面是一个案例:

    [root@test02 ~]# mount -t ocfs2 /dev/vg_ocfs/lv_u02 /u02
    mount.ocfs2: Transport endpoint is not connected while mounting /dev/vg_ocfs/lv_u02 on /u02. Check 'dmesg' for more information on this error.
    出现这个错误是由于配置OCFS时O2CB_HEARTBEAT_THRESHOLD各节点的值不一样导致的。我用/etc/init.d/o2cb configure时其实各个节点的值已经都一样了,不过第一个节点忘了重启o2cb,结果查了好久才发现。接下当然是把已经MOUNT的OCFS目录UMOUNT掉,结果又出错了:
    [root@test01 u02]# umount -f /u02
    umount2: Device or resource busy
    umount: /u02: device is busy
    umount2: Device or resource busy
    umount: /u02: device is busy
    这时候应该用/etc/init.d/ocfs2 stop和/etc/init.d/o2cb stop停掉OCFS2和O2CB再UMOUJNT才行,然后把OCFS2和O2CB启动以后其他节点就可以顺利MOUNT OCFS了。
    现象二:
    # /etc/init.d/o2cb online ocfs2

    Starting cluster ocfs2: Failed

    Cluster ocfs2 created

    o2cb_ctl: Configuration error discovered while populating cluster ocfs2. None of its nodes were considered local. A node is considered local when its node name in the configuration maches this machine's host name.

    Stopping cluster ocfs2: OK

    主机名问题,检查more /etc/ocfs2/cluster.conf以及/etc/hosts文件信息,修改相应的主机名即可

    注意:为了保证开机能自动挂载ocfs2文件系统,需要在/etc/fstab加入自动启动选项后,必须在/etc/hosts中加入两个节点的主机名和ip的对应解析,主机名和 /etc/ocfs2/cluster.conf配置的主机名一定要相同。

    现象三

    1: Starting O2CB cluster ocfs2: Failed
    在安装完ocfs2 后,配置o2cb 出错:
    [root@rac1 ocfs2]# /etc/init.d/o2cb configure
    Configuring the O2CB driver.

    This will configure the on-boot properties of the O2CB driver.
    The following questions will determine whether the driver is loaded on
    boot. The current values will be shown in brackets ('[]'). Hitting
    <ENTER> without typing an answer will keep that current value. Ctrl-C
    will abort.

    Load O2CB driver on boot (y/n) [y]:
    Cluster to start on boot (Enter "none" to clear) [ocfs2]:
    Specify heartbeat dead threshold (>=7) [7]:
    Writing O2CB configuration: OK
    Starting O2CB cluster ocfs2: Failed
    Cluster ocfs2 created
         o2cb_ctl: Configuration error discovered while populating cluster ocfs2. None of its nodes were considered local. A node is considered local when its node name in the configuration matches this machine's host name.
    Stopping O2CB cluster ocfs2: OK
    出现这中情况,应该是OCFS没有配置,可以看一下,有一个图形ocfs配置命令,首先要配置他,而且最好 用IP地址,不要用主机名!
    也就是说,在启动ocfs2时,ocfs节点配置文件一定要配置好,如果没有配置正确,就会报错,同时在用图形界面配置的时候,/etc/ocfs2/cluster.conf文件最好是空文件,要不然也会报错!
    现象四
    挂载ocfs2文件系统遇到
    mount.ocfs2: Error when attempting to run /sbin/ocfs2_hb_ctl: "Operation not permitted"
    mount -t ocfs2 -o datavolume /dev/sdb1 /u02/oradata/orcl
    ocfs2_hb_ctl: Bad magic number in superblock while reading uuid
    mount.ocfs2: Error when attempting to run /sbin/ocfs2_hb_ctl: "Operation not permitted"
    这个问题是由于ocfs2文件文件系统分区没有格式化引起的错误,在挂载ocfs2文件系统之前,用于这个文件系统的分区一定要进行格式化.
    现象五:
    Configuration assistant "Oracle Cluster Verification Utility" failed
    10g rac 安装请教 oracle 10.2.0.1 solaris 5.9 双机 安装crs最后一步有错,不知如何解决?

    LOG 信息:
    INFO: Configuration assistant "Oracle Cluster Verification Utility" failed
    -----------------------------------------------------------------------------
    *** Starting OUICA ***
    Oracle Home set to /orabase/product/10.2
    Configuration directory is set to /orabase/product/10.2/cfgtoollogs. All xml files under the directory will be processed
    INFO: The "/orabase/product/10.2/cfgtoollogs/configToolFailedCommands" script. contains all commands that failed, were skipped or were cancelled. This file may be used to run these configuration assistants outside of OUI. Note that you may have to update this script. with passwords (if any) before executing the same.
    -----------------------------------------------------------------------------
    SEVERE: OUI-25031:Some of the configuration assistants failed. It is strongly recommended that you retry the configuration assistants at this time. Not successfully running any "Recommended" assistants means your system will not be correctly configured.
    1. Check the Details panel on the Configuration Assistant Screen to see the errors resulting in the failures.
    2. Fix the errors causing these failures.
    3. Select the failed assistants and click the 'Retry' button to retry them.
    INFO: User Selected: Yes/OK

    是vip地址没有启动造成的,建议在执行完orainstRoot.sh和root.sh命令后新开个窗口执行vipca,把crs服务都起来后再执行最后的verify步骤,可以尝试一下。

    去crs的bin目录下执行crs_stat -t 看看服务是不是都起了,这种情况应该是vip没起来。
    现象六:
    Failed to upgrade Oracle Cluster Registry configuration
    在安装CRS时,在第二个节点执行./root.sh时,出现如下提示,我在第一个节点执行正常.请大虾指点一些,不胜感激!谢谢!
    [root@RACtest2 crs]# ./root.sh
    WARNING: directory '/app/oracle/product/10.2.0' is not owned by root
    WARNING: directory '/app/oracle/product' is not owned by root
    WARNING: directory '/app/oracle' is not owned by root
    WARNING: directory '/app' is not owned by root
    Checking to see if Oracle CRS stack is already configured

    Setting the permissions on OCR backup directory
    Setting up NS directories
    PROT-1: Failed to initialize ocrconfig
    Failed to upgrade Oracle Cluster Registry configuration
    错误原因:

    是因为安装crs的设备权限有问题,例如我的设备用raw来放置ocr和vote,此时要设置好这些硬件设备以及连接的文件的权限,下面是我的环境:
    [root@rac2 oracrs]#
    lrwxrwxrwx 1 root root 13 Jan 27 12:49 ocr.crs -> /dev/raw/raw1
    lrwxrwxrwx 1 root root 13 Jan 26 13:31 vote.crs -> /dev/raw/raw2
    chown root:oinstall /dev/raw/raw1
    chown root:oinstall /dev/raw/raw2
    chmod 660 /dev/raw/raw1
    chmod 660 /dev/raw/raw2
    其中/dev/sdb1放置ocr,/dev/sdb2放置vote.
    [root@rac2 oracrs]# service rawdevices reload
    Assigning devices:
               /dev/raw/raw1 -->   /dev/sdb1
    /dev/raw/raw1: bound to major 8, minor 17
               /dev/raw/raw2 -->   /dev/sdb2
    /dev/raw/raw2: bound to major 8, minor 18
    Done

    然后再次执行就ok了.

    [root@rac2 oracrs]# /oracle/app/oracle/product/crs/root.sh
    WARNING: directory '/oracle/app/oracle/product' is not owned by root
    WARNING: directory '/oracle/app/oracle' is not owned by root
    Checking to see if Oracle CRS stack is already configured
    Setting the permissions on OCR backup directory
    Setting up NS directories
    Oracle Cluster Registry configuration upgraded successfully
    WARNING: directory '/oracle/app/oracle/product' is not owned by root
    WARNING: directory '/oracle/app/oracle' is not owned by root
    clscfg: EXISTING configuration version 3 detected.
    clscfg: version 3 is 10G Release 2.
    assigning default hostname rac1 for node 1.
    assigning default hostname rac2 for node 2.
    Successfully accumulated necessary OCR keys.
    Using ports: CSS=49895 CRS=49896 EVMC=49898 and EVMR=49897.
    node <nodenumber>: <nodename> <private interconnect name> <hostname>
    node 1: rac1 priv1 rac1
    node 2: rac2 priv2 rac2
    clscfg: Arguments check out successfully

  • rac安装过程中 error while loading shared libraries libpthread.so.0 问题的解决

    2010-08-26 11:18:22

    rac安装过程中 error while loading shared libraries libpthread.so.0 问题的解决
    2010年08月10日 下午 05:34

    在CentOS 5上安装Oracle 10.2.0.1 RAC的cluster software的时候,在最后一步,第二个节点,执行root.sh的时候,报告error while loading shared libraries: libpthread.so.0的错误,详细错误信息如下:

    [root@rac2 crs]# /u01/crs/oracle/product/10.2.0/crs/root.sh
    WARNING: directory '/u01/crs/oracle/product/10.2.0' is not owned by root
    WARNING: directory '/u01/crs/oracle/product' is not owned by root
    WARNING: directory '/u01/crs/oracle' is not owned by root
    WARNING: directory '/u01/crs' is not owned by root
    WARNING: directory '/u01' is not owned by root
    Checking to see if Oracle CRS stack is already configured
    /etc/oracle does not exist. Creating it now.

    Setting the permissions on OCR backup directory
    Setting up NS directories
    Oracle Cluster Registry configuration upgraded successfully
    WARNING: directory '/u01/crs/oracle/product/10.2.0' is not owned by root
    WARNING: directory '/u01/crs/oracle/product' is not owned by root
    WARNING: directory '/u01/crs/oracle' is not owned by root
    WARNING: directory '/u01/crs' is not owned by root
    WARNING: directory '/u01' is not owned by root
    clscfg: EXISTING configuration version 3 detected.
    clscfg: version 3 is 10G Release 2.
    assigning default hostname rac1 for node 1.
    assigning default hostname rac2 for node 2.
    Successfully accumulated necessary OCR keys.
    Using ports: CSS=49895 CRS=49896 EVMC=49898 and EVMR=49897.
    node :
    node 1: rac1 rac1-priv rac1
    node 2: rac2 rac2-priv rac2
    clscfg: Arguments check out successfully.

    NO KEYS WERE WRITTEN. Supply -force parameter to override.
    -force is destructive and will destroy any previous cluster
    configuration.
    Oracle Cluster Registry for cluster has already been initialized
    Startup will be queued to init within 90 seconds.
    Adding daemons to inittab
    Expecting the CRS daemons to be up within 600 seconds.
    CSS is active on these nodes.
    rac1
    rac2
    CSS is active on all nodes.
    Waiting for the Oracle CRSD and EVMD to start
    Waiting for the Oracle CRSD and EVMD to start
    Waiting for the Oracle CRSD and EVMD to start
    Oracle CRS stack installed and running under init(1M)
    Running vipca(silent) for configuring nodeapps
    /u01/crs/oracle/product/10.2.0/crs/jdk/jre//bin/java: error while loading shared libraries: libpthread.so.0: cannot open shared object file: No such file or directory





    解决这个问题,需要三个步骤来完成:


    1、在每个节点上,修改$CRS_HOME/bin目录下的srvctl和vipca文件,在vipca文件ARGUMENTS=""行之前和srvctl文件的export LD_ASSUME_KERNEL行之后增加 unset LD_ASSUME_KERNEL 语句
    2、使用$CRS_HOME/bin目录下的oifcfg工具配置pub ip和pri ip
    3、在任意一个节点上,用root用户,手动运行vipca,配置完正确的prvip和vip 信息之后,crs就可以安装完成,操作过程如下:






    1.1、修改vipca文件,增加标记为红色的那一行:

    [root@rac2 crs]# pwd
    /u01/crs/oracle/product/10.2.0/crs
    [root@rac2 crs]# cd bin/
    [root@rac2 bin]# cp vipca vipca.bak
    [root@rac2 bin]# vi vipca

    #!/bin/sh
    #
    # $Header: vipca.sbs 10-dec-2004.15:30:55 khsingh Exp $
    #
    # vipca
    #
    # Copyright (c) 2001, 2004, Oracle. All rights reserved.
    #
    # NAME
    # vipca - Node Apps and VIPs Configuration Assistant
    #
    # DESCRIPTION
    # Oracle Cluster Node Applications Configuration Assistant is
    # used to configure the Node Applications and the virtual IPs.
    #
    # MODIFIED (MM/DD/YY)
    # khsingh 12/10/04 - fix LINUX workaround for bug 4054430
    # khsingh 11/22/04 - remove obsolete files
    # rxkumar 11/29/04 - fix bug4024708
    # khsingh 10/07/04 - add workaround for bug (3937317)
    # khsingh 09/27/04 - changes for PLE (3914991)
    # khsingh 09/13/04 - add orahome arg back
    # khsingh 08/16/04 - remove orahome arg
    # khsingh 12/07/03 - change oembase to oemlt
    # khsingh 10/31/03 - fix ice browser
    # khsingh 10/29/03 - add jewt var
    # khsingh 08/08/03 - fix ==
    # jtellez 06/10/03 - change to srvm_trace
    # rdasari 06/02/03 - set LD_LIBRARY_PATH appropriately for 32 and 64 bit solaris platforms
    # jtellez 11/15/02 - change SRVM_DEFS to SRVM_PROPERTY_DEFS
    # jtellez 11/04/02 - Add srvm_defs
    # jtellez 10/10/02 - fix srvmhas
    # jtellez 10/04/02 - srvmhas to jlib
    # jtellez 09/24/02 - add tracing
    # jtellez 09/09/02 - add versions to jars
    # rdasari 08/07/02 - use java instead of jre
    # jtellez 08/08/02 - enhance comment
    # jtellez 08/06/02 - add GUI jars
    # rdasari 08/01/02 - use jdk131
    # jtellez 07/26/02 - add srvmhas.jar to classpath
    # jtellez 07/29/02 - add gui jars
    # jtellez 07/24/02 - jtellez_vipca
    # jtellez 7/24/02 - creation
    #
    #!/bin/sh

    # Properties to pass directly to java
    if [ "X$SRVM_PROPERTY_DEFS" = "X" ]
    then
    SRVM_PROPERTY_DEFS=""
    fi

    # Check for tracing
    if [ "X$SRVM_TRACE" != "X" ]
    then
    SRVM_PROPERTY_DEFS="$SRVM_PROPERTY_DEFS -DTRACING.ENABLED=true -DTRACING.LEVEL=2"
    fi

    # External Directory Variables set by the Installer
    JREDIR=/u01/crs/oracle/product/10.2.0/crs/jdk/jre/
    ORACLE_HOME=/u01/crs/oracle/product/10.2.0/crs
    export ORACLE_HOME;
    /export
    EMBASE_FILE=oemlt-10_1_0.jar

    # GUI jars
    EWTJAR=$JLIBDIR/$EWT_FILE
    JEWTJAR=$JLIBDIR/$JEWT_FILE
    ICEJAR=$JLIBDIR/$ICE_BROWSER5_FILE
    EMBASEJAR=$JLIBDIR/$EMBASE_FILE
    SHAREJAR=$JLIBDIR/$SHARE_FILE
    HELPJAR=$JLIBDIR/$HELP_FILE
    GUIJARS=$EWTJAR:$JEWTJAR:$SHAREJAR:$EMBASEJAR:$HELPJAR:$ICEJAR

    # Set Classpath for Net Configuration Assistant
    CLASSPATH=$JREJAR:$JRECLASSES:$OPSMJAR:$SRVMHASJAR:$VIPCAJAR:$GUIJARS

    #Used for specifying any platforms specific Java options
    JRE_OPTIONS=""

    # Set the shared library path for JNI shared libraries
    # A few platforms use an environment variable other than LD_LIBRARY_PATH
    PLATFORM=`uname`
    case $PLATFORM. in
    HP-UX) SHLIB_PATH=$ORACLE_HOME/lib32:$ORACLE_HOME/srvm/lib32:$SHLIB_PATH
    export SHLIB_PATH
    ;;
    AIX) LIBPATH=$ORACLE_HOME/lib32:$ORACLE_HOME/srvm/lib32:$LIBPATH
    export LIBPATH
    ;;
    Linux) LD_LIBRARY_PATH=$ORACLE_HOME/lib:$ORACLE_HOME/srvm/lib:$LD_LIBRARY_PATH
    export LD_LIBRARY_PATH

    #Remove this workaround when the bug 3937317 is fixed
    arch=`uname -m`
    if [ "$arch" = "i686" -o "$arch" = "ia64" ]
    121 LD_ASSUME_KERNEL=2.4.19
    122 export LD_ASSUME_KERNEL
    123 fi
    124 #End workaround
    125 ;;
    126 SunOS) MACH_HARDWARE=`/bin/uname -i`
    127 case $MACH_HARDWARE in
    128 i86pc)
    129 LD_LIBRARY_PATH=$ORACLE_HOME/lib:ORACLE_HOME/srvm/lib:$LD_LIBRARY_PATH
    130 export LD_LIBRARY_PATH
    131 ;;
    132 *)
    133 LD_LIBRARY_PATH_64=$ORACLE_HOME/lib:$ORACLE_HOME/srvm/lib:$LD_LIBRARY_PATH_64
    134 export LD_LIBRARY_PATH_64
    135 JRE_OPTIONS="-d64"
    136 ;;
    137 esac
    138 ;;
    139 OSF1) LD_LIBRARY_PATH=$ORACLE_HOME/lib:$ORACLE_HOME/srvm/lib:$LD_LIBRARY_PATH
    140 export LD_LIBRARY_PATH
    141 ;;
    142
    143 Darwin) DYLD_LIBRARY_PATH=$ORACLE_HOME/lib:$ORACLE_HOME/srvm/lib:$DYLD_LIBRARY_PATH
    144 export DYLD_LIBRARY_PATH
    145 ;;
    146 *) if [ -d $ORACLE_HOME/lib32 ];
    147 then
    148 LD_LIBRARY_PATH=$ORACLE_HOME/lib32:$ORACLE_HOME/srvm/lib32:$LD_LIBRARY_PATH
    149 else
    150 LD_LIBRARY_PATH=$ORACLE_HOME/lib:$ORACLE_HOME/srvm/lib:$LD_LIBRARY_PATH
    151 fi
    152 export LD_LIBRARY_PATH
    153 ;;
    154 esac
    155
    156 unset LD_ASSUME_KERNEL
    157
    158 ARGUMENTS=""
    159 NUMBER_OF_ARGUMENTS=$#
    160 if [ $NUMBER_OF_ARGUMENTS -gt 0 ]; then
    161 ARGUMENTS=$*
    162 fi
    163
    164 # Run Vipca
    165 exec $JRE $JRE_OPTIONS $SRVM_PROPERTY_DEFS -classpath $CLASSPATH oracle.ops.vipca.VipCA -orahome $ORACLE_HOME $ARGUME NTS
    "vipca" 167L, 5034C written





    1.2、修改srvctl文件,增加标记为红色的那一行:

    [root@rac2 bin]# ls -l srvctl*
    -rwxr-xr-x 1 oracle oinstall 5554 Dec 2 17:17 srvctl
    [root@rac2 bin]# cp srvctl srvctl.bak
    [root@rac2 bin]# vi srvctl

    #!/bin/sh
    #
    # $Header: srvctl.sbs 29-nov-2004.11:56:24 rxkumar Exp $
    #
    # srvctl
    #
    # Copyright (c) 2000, 2004, Oracle. All rights reserved.
    #
    # NAME
    # srvctl - Oracle Server Control Utility
    #
    # DESCRIPTION
    # Oracle Server Control Utility can be used to administer a RAC database,
    # i.e., to modify the configuration information of a RAC
    # database server as well as to do start/stop/status operations on the
    # instances of the server.
    #
    # MODIFIED (MM/DD/YY)
    # rxkumar 11/29/04 - fix bug4024708
    # dliu 11/18/04 - replace OH
    # khsingh 10/07/04 - add workaround for bug (3937317)
    # khsingh 09/27/04 - update case statement (3914991)
    # gdyoung 09/17/04 - ;;
    # gdyoung 08/20/04 - ple/st script. merging
    # dliu 08/04/04 - get them work on linux
    # dliu 11/20/03 - support for trace
    # dliu 11/12/03 - unset ORA_CRSDEBUG
    # bhamadan 09/18/03 - replacing s_jre131Location with s_jreLocation
    # khsingh 06/25/03 - remove policy file
    # rxkumar 06/03/03 - add srvmasm.jar
    # rdasari 06/02/03 - set LD_LIBRARY_PATH appropriately for 32 and 64 bit solaris platforms
    # dliu 02/21/03 - add i18n.jar
    # dliu 11/13/02 - use ORA_CRS_UI_FMT to turn on output capture
    # dliu 10/17/02 - turn on output capture
    # jtellez 10/04/02 - make policy ==
    # surchatt 09/06/02 - puttint policy file location
    # rdasari 08/07/02 - use java instead of jre
    # rdasari 08/01/02 - use jdk131
    # jtellez 07/26/02 - add srvmhas.jar to classpath
    # rdasari 05/09/01 - changing the header information
    # rdasari 03/22/01 - changing to ops to srv.
    # dliu 03/02/01 - use "$@" for argument list. this iscritical for correct interpretation of arguments with spaces in them..
    # dliu 02/26/01 - fix bug #1656127: SHLIB_PATH change.
    # dliu 02/23/01 - replace $ORACLE_HOME in classpath with an install variable..
    # jcreight 11/08/00 - define OPSMJAR, not OPSJAR
    "srvctl" 171L, 5554C
    126 JRE_OPTIONS="-d64"
    127 ;;
    128 esac
    129 ;;
    130 OSF1) LD_LIBRARY_PATH=$ORACLE_HOME/lib:$ORACLE_HOME/srvm/lib:$LD_LIBRARY_PATH
    131 export LD_LIBRARY_PATH
    132 ;;
    133 Darwin)
    134 DYLD_LIBRARY_PATH=$ORACLE_HOME/lib:$ORACLE_HOME/srvm/lib:$DYLD_LIBRARY_PATH
    135 export DYLD_LIBRARY_PATH
    136 ;;
    137 *) if [ -d $ORACLE_HOME/lib32 ];
    138 then
    139 LD_LIBRARY_PATH=$ORACLE_HOME/lib32:$ORACLE_HOME/srvm/lib32:$LD_LIBRARY_PATH
    140 else
    141 LD_LIBRARY_PATH=$ORACLE_HOME/lib:$ORACLE_HOME/srvm/lib:$LD_LIBRARY_PATH
    142 fi
    143 export LD_LIBRARY_PATH
    144 ;;
    145 esac
    146
    147
    148 # turn off crs debug flag that would otherwise interfere with crs profile
    149 # modification
    150 ORA_CRSDEBUG=0
    151 export ORA_CRSDEBUG
    152
    153 # environment variable to turn on trace: set SRVM_TRACE to turn it on.
    154 if [ "X$SRVM_TRACE" != "X" ]
    155 then
    156 TRACE="-DTRACING.ENABLED=true -DTRACING.LEVEL=2"
    157 else
    158 TRACE=
    159 fi
    160
    161 if [ "X$SRVM_TRACE" != "X" ]
    162 then
    163 echo $JRE $JRE_OPTIONS -classpath $CLASSPATH $TRACE oracle.ops.opsctl.OPSCTLDriver "$@"
    164 fi
    165
    166 #Remove this workaround when the bug 3937317 is fixed
    167 LD_ASSUME_KERNEL=2.4.19
    168 export LD_ASSUME_KERNEL
    169 unset LD_ASSUME_KERNEL
    170
    171 # Run ops control utility
    "srvctl" 173L, 5578C written




    2、在任意一个节点上使用oifcfg配置public和vip网络


    [root@rac1 bin]# ./oifcfg setif -global eth0/192.168.2.0:public
    [root@rac1 bin]# ./oifcfg setif -global eth1/192.168.0.0:cluster_interconnect
    [root@rac1 bin]# ./oifcfg getif
    eth0 192.168.2.0 global public
    eth1 192.168.0.0 global cluster_interconnect

    ./oifcfg iflist




    3、用root用户身份手动执行$CRS_HOME/bin/vipca工具,配置IP信息。


    [root@rac1 bin]# export DISPLAY=192.168.0.1:0.0
    [root@rac1 bin]# xclock
    Warning: Missing charsets in String to FontSet conversion
    [root@rac1 bin]# ./vipca



    vipca工具配置成功后,检查crs状态,两个节点的crs都已正常运行

    [root@rac1 bin]# ./crs_stat -t
    Name Type Target State Host
    ------------------------------------------------------------
    ora.rac1.gsd application ONLINE ONLINE rac1
    ora.rac1.ons application ONLINE ONLINE rac1
    ora.rac1.vip application ONLINE ONLINE rac1
    ora.rac2.gsd application ONLINE ONLINE rac2
    ora.rac2.ons application ONLINE ONLINE rac2
    ora.rac2.vip application ONLINE ONLINE rac2



  • 关于PRKC-1002问题的解决办法

    2010-08-25 16:47:42

    在VMWare Server 1.0.8中安装Oracle RAC时, 碰到到了PRKC-1002错误:

    WARNING: Error while copying directory /u01/oracle/product/10.2.0/db_1 with exclude file list 'null' to nodes 'rac2'. [PRKC-1002 : All the submitted commands did not execute successfully]

    到Oracle技术支持找到了问题的原因如何解决:

    Cause

    This is because the date on the local node is higher than the date on the remote node(s). 

    Solution

    To fix this, set the times of the nodes to be the same.  You can do this with "ntpupdate <nodename>" to sync the dates.

    就是解决时间同步后即可. 尽管我安装VMWare的tools之后,并勾选vmware-toolbox的Miscellaneous Options选项,但节点1的时间还是比节点2的快十几秒. 参考了一下《大话Oracle RAC》这本书, 决定选用NTP服务来使时间同步. 刚开始我是用节点1来做NTP服务的,但做完后发现节点1的时间还是比节点2的快几秒,为了保守起见, 我用节点2来做NTP服务.

    在节点2用root用记编辑/etc/ntp.conf,加入下面这段

    ## add for rac
    server 127.127.1.0 
    fudge  127.127.1.0 stratum 11
    driftfile /var/lib/ntp/drift
    broadcastdelay 0.008

    然后在节点1用root用记编辑/etc/ntp.conf,加入下面这段

    ## add for rac
    server 192.168.1.131 prefer
    driftfile /var/lib/ntp/drift
    broadcastdelay 0.008

    #注意是127.127.1.0而不是127.0.0.1,还有就是192.168.1.131 是节点一的IP地址

    然后在两个节点执行下面的命令使NTP服务启动

    /etc/init.d/ntpd start

    若这样还不可以,那就要把安装数据库的节点1的时间调得比节点2慢点

  • rhel5+oracle10g+asm+vm虚拟机(oracle集群)

    2010-08-24 17:52:23

    一.安装前准备

    1.使用VM自带工具划分共享磁盘 (VM虚拟机版本6.0)

    进入VM所在目录使用以下工具划分共享磁盘空间

    vmware-vdiskmanager.exe -c -s 1GB -a lsilogic -t 2 "盘符:\文件夹\文件名.vmdk"

    分别创建三个1G.两个2G

    2.创建,配置虚拟机

    创建虚拟机时候注意删除软驱,添加一块网卡,(选择仅和主机通信)

    在虚拟机配置文件中添加以下(是把刚才创建的磁盘添加近来,双节点都必须添加)

    scsi1.present = "TRUE"

    scsi1.virtualDev = "lsilogic"

    scsi1.sharedBus = "virtual"

    scsi1:1.present = "TRUE"

    scsi1:1.mode = "independent-persistent"

    scsi1:1.filename = "盘符:\文件夹\文件名.vmdk"

    scsi1:1.deviceType = "plainDisk"

    scsi1:2.present = "TRUE"

    scsi1:2.mode = "independent-persistent"

    scsi1:2.filename = "盘符:\文件夹\文件名.vmdk"

    scsi1:2.deviceType = "plainDisk"

    scsi1:3.present = "TRUE"

    scsi1:3.mode = "independent-persistent"

    scsi1:3.filename = "盘符:\文件夹\文件名.vmdk"

    scsi1:3.deviceType = "plainDisk"

    scsi1:4.present = "TRUE"

    scsi1:4.mode = "independent-persistent"

    scsi1:4.filename = "盘符:\文件夹\文件名.vmdk"

    scsi1:4.deviceType = "plainDisk"

    scsi1:5.present = "TRUE"

    scsi1:5.mode = "independent-persistent"

    scsi1:5.filename = "盘符:\文件夹\文件名.vmdk"

    scsi1:5.deviceType = "plainDisk"

    disk.locking = "FALSE"

    diskLib.dataCacheMaxSize = "0"

    diskLib.dataCacheMaxReadAheadSize = "0"

    diskLib.dataCacheMinReadAheadSize = "0"

    diskLib.dataCachePageSize = "4096"

    diskLib.maxUnsyncedWrites = "0"

    3.安装系统 (rhel5)

    采用默认安装,因为asm和ocfs2都需要图形化的配置,所以必须要有图形化界面. 关闭SELINUX,防火墙,配置系统只开机启动ssh.syslog,network,xfs服务。另外一个系统也做同样设置.(分区时,不要给共享磁盘分区,让他保持free状态)

    4.安装所需包

    #rpm -ivh compat-db-4.2.52-5.1.i386.rpm

    #rpm -ivh libstdc++-devel-4.1.1-52.el5.i386.rpm

    #rpm -ivh libgomp-4.1.1-52.el5.i386.rpm

    #rpm -ivh glibc-headers-2.5-12.i386.rpm

    #rpm -ivh glibc-devel-2.5-12.i386.rpm

    #rpm -ivh gcc-4.1.1-52.el5.i386.rpm

    #rpm -ivh gcc-c++-4.1.1-52.el5.i386.rpm

    #rpm -ivh compat-gcc-34-3.4.6-4.i386.rpm

    #rpm -ivh compat-gcc-34-c++-3.4.6-4.i386.rpm

    #rpm -ivh compat-libgcc-296-2.96-138.i386.rpm

    #rpm -ivh compat-libstdc++-33-3.2.3-61.i386.rpm

    #rpm -ivh cpp-4.1.1-52.el5.i386.rpm

    #rpm -Uvh glibc-2.5-12.i386.rpm

    #rpm -ivh libaio-0.3.106-3.2.i386.rpm

    #rpm -ivh libXmu-1.0.2-5.i386.rpm

    #rpm -ivh libXp-1.0.0-8.i386.rpm

    #rpm -ivh make-3.81-1.1.i386.rpm

    #rpm -ivh openmotif22-2.2.3-18.i386.rpm

    #rpm -ivh openmotif-2.3.0-0.3.el5.i386.rpm

    #rpm -ivh setarch-2.0-1.1.i386.rpm

    #rpm -ivh sysstat-7.0.0-3.el5.i386.rpm

    5.创建oracle用户,建立SSH信任,编辑参数和变量  (以下没注明的都是双节点实现)

    #vi /etc/sysctl.conf

    kernel.sem = 250 32000 100 128

    kernel.shmmni = 4096

    kernel.shmall = 2097152

    kernel.shmmax = 278396928

    fs.file-max = 65536

    net.ipv4.ip_local_port_range = 1024 65000

    net.core.rmem_default=262144

    net.core.rmem_max=1048576

    net.core.wmem_default=262144

    net.core.wmem_max=1048576

    注销原有kernel.shmmax, kernel.shmall (以上数值有待改变)

    #sysctl -p

    #vi /etc/security/limits.conf

    oracle soft nproc 2047

    oracle hard nproc 16384

    oracle soft nofile 1024

    oracle hard nofile 65536

    #vi /etc/pam.d/login

    session required /lib/security/pam_limits.so

    #vi /etc/modprobe.conf

    options hangcheck-timer hangcheck_tick=30 hangcheck_margin=180

    #vi /etc/rc.d/rc.local

    /sbin/modprobe hangcheck_timer

    #modprobe hangcheck_timer

    #grep hangcheck /var/log/messages | tail -2

    #vi /etc/hosts

    127.0.0.1               localhost

    192.168.0.243           rac1

    192.168.0.245           rac2

    192.168.0.143           v-rac1

    192.168.0.145           v-rac2

    10.0.0.243              int-rac1

    10.0.0.245              int-rac2

    #ping -c 3 rac1

    #ping -c 3 rac2

    #ping -c 3 int-rac1

    #ping -c 3 int-rac2

    #groupadd oinstall

    #groupadd dba

    #useradd -u 200 -g oinstall -G dba -d /home/oracle -r oracle -m

    #passwd oracle

    #id oracle

    #su - oracle

    #mkdir ~/.ssh

    #chmod 700 ~/.ssh

    #ssh-keygen -t rsa   (一路回车)

    #ssh-keygen -t dsa   (一路回车)

    使用节点1执行

    #cd ~/.ssh

    #cat id_rsa.pub >>authorized_keys

    #cat id_dsa.pub >>authorized_keys

    #scp authorized_keys rac2:/home/oracle/.ssh/

    #ssh rac2

    #cd .ssh

    #cat id_rsa.pub >>authorized_keys

    #cat id_dsa.pub >>authorized_keys

    #exit

    使用节点2执行

    #cd ~/.ssh

    #scp authorized_keys rac1:/home/oracle/.ssh/

    双节点实现

    #ssh-agent $SHELL

    #ssh-add

    #ssh rac1 date

    #ssh rac2 date

    #vi /home/oracle/.bash_profile

    umask 022

    export ORACLE_BASE=/u01/app/oracle

    export ORACLE_HOME=$ORACLE_BASE/10.2.0/rac_db

    export ORA_CRS_HOME=$ORACLE_BASE/10.2.0/crs

    export ORACLE_PATH=$ORACLE_BASE/common/oracle/sql:.:$ORACLE_HOME/rdbms/admin

    export ORACLE_SID=orcl1  (节点2为oracl2)

    export NLS_LANG=AMERICAN_AMERICA.zhs16gbk

    export NLS_DATE_FORMAT="YYYY-MM-DD HH24:MI:SS"

    export PATH=.:${PATH}:$HOME/bin:$ORACLE_HOME/bin:$ORA_CRS_HOME/bin

    export PATH=${PATH}:/usr/bin:/bin:/usr/bin/X11:/usr/local/bin

    export PATH=${PATH}:$ORACLE_BASE/common/oracle/bin

    export ORACLE_TERM=xterm

    export TNS_ADMIN=$ORACLE_HOME/network/admin

    export ORA_NLS10=$ORACLE_HOME/nls/data

    export LD_LIBRARY_PATH=$ORACLE_HOME/lib

    export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:$ORACLE_HOME/oracm/lib

    export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/lib:/usr/lib:/usr/local/lib

    export CLASSPATH=$ORACLE_HOME/JRE

    export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/jlib

    export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/rdbms/jlib

    export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/network/jlib

    export THREADS_FLAG=native

    export TEMP=/tmp

    export TMPDIR=/tmp

    export DISPLAY=192.168.0.244:0.0

    6.切换root用户创建安装目录,分配权限

    mkdir -p /u01/app/oracle/10.2.0/rac_db

    mkdir -p /u01/app/oracle/10.2.0/crs

    chown -R root.oinstall /u01/

    chmod -R 775 /u01/

    mkdir -p /u02/oradata/orcl

    chown -R oracle.dba /u02/

    chmod -R 775 /u02/

    7.节点1给磁盘分区

    # fdisk /dev/sdb  (同样方法格式/dev/sdc /dev/sdd/ dev/sde/ dev/sdf/)

             n>p>1>回车>回车>w

    重新启动两台计算机,让另外一台机器能认到被格式化过的磁盘

    8.安装ocfs2,配置ocfs2  (双节点)

    #rpm -ivh ocfs2-tools-1.2.6-1.el5.i386.rpm

    #rpm -ivh ocfs2-2.6.18-8.el5-1.2.6-6.el5.i686.rpm    (根据不同的内核打不同的包)

    #rpm -ivh ocfs2console-1.2.6-1.el5.i386.rpm

    #ocfs2console         X下使用

    #vi /etc/init.d/o2cb

    删除以下行

    ### BEGIN INIT INFO

    ## Provides: o2cb

    ## Required-Start: $network

    ## Should-Start:

    ## Required-Stop:

    ## Default-Start: 2 3 5

    ## Default-Stop:

    ## Description: Load O2CB cluster services at system boot.

    ### END INIT INFO

     

     

    #/etc/init.d/o2cb offline ocfs2

    #/etc/init.d/o2cb unload

    #/etc/init.d/o2cb configure

    在节点1格式/dev/sdb1为ocfs2

    #mkfs.ocfs2 -b 4k -C 32k -L oradatafiles /dev/sdb1

    最好在重新启动一下双节点,因为是虚拟环境,所以担心另外一台虚拟机同步的慢

    #mount -t ocfs2 -o datavolume /dev/sdb1 /u02/oradata/orcl

    #vi /etc/fstab

    /dev/sdb1               /u02/oradata/orcl       ocfs2   _netdev,datavolume      0 0

    #vi /etc/sysconfig/o2cb

    O2CB_HEARTBEAT_THRESHOLD=601

    9.安装asm,配置asm

    #rpm -ivh oracleasm-support-2.0.4-1.el5.i386.rpm

    # rpm -ivh oracleasm-2.6.18-8.el5-2.0.4-1.el5.i686.rpm  (根据不同的内核打不同的包)

    # rpm -ivh oracleasmlib-2.0.3-1.el5.i386.rpm

    #/etc/init.d/oracleasm configure

    oracle,dba,y,y

    节点1执行

    #/etc/init.d/oracleasm createdisk VOL1 /dev/sdc1

    #/etc/init.d/oracleasm createdisk VOL2 /dev/sdd1

    #/etc/init.d/oracleasm createdisk VOL3 /dev/sde1

    #/etc/init.d/oracleasm createdisk VOL4 /dev/sdf1

    #/etc/init.d/oracleasm listdisks

    #ls -l /dev/oracleasm/disks/

    节点2执行

    #/etc/init.d/oracleasm scandisks

    #/etc/init.d/oracleasm listdisks

    #ls -l /dev/oracleasm/disks/

    10.配置NTPD服务器,或者配置2台机器的时间一样,不然在安装的时候会有很多的问题,建议装台时间服务器来进行同步时间.另外,在安装的时候,监视2台机器的时间,有时候会差好多

    13.使用root用户解压,并安装

    #unzip 10201_clusterware_linux32.zip

    #unzip 10201_database_linux32.zip

    二.安装clusterware,以及oracle

    #rpm -ivh clusterware/rpm/cvuqdisk-1.0.1-1.rpm

    #scp clusterware/rpm/cvuqdisk-1.0.1-1.rpm rac2:/opt/

    节点2执行

    rpm -ivh /opt/cvuqdisk-1.0.1-1.rpm

    检查环境,节点1执行

    #su - oracle

    # cd clusterware/cluvfy

    #./runcluvfy.sh stage -pre crsinst -n rac1,rac2 -verbose

    ERROR:

    Could not find a suitable set of interfaces for VIPs.

    Result: Node connectivity check failed.

     

    虚拟IP报错,可以不管

    compat-gcc-7.3-2.96.128

    compat-gcc-c++-7.3-2.96.128

    compat-libstdc++-7.3-2.96.128

    compat-libstdc++-devel-7.3-2.96.128

    会提示没有以上包的报错,以root用户在双节点安装以下包

    #rpm -ivh compat-gcc-7.3-2.96.128.i386.rpm

    #rpm -ivh compat-libstdc++-7.3-2.96.128.i386.rpm

    #rpm -ivh compat-libstdc++-devel-7.3-2.96.128.i386.rpm

    #rpm -ivh compat-gcc-c++-7.3-2.96.128.i386.rpm

     

    硬件检查

    #./runcluvfy.sh stage -post hwos -n rac1,rac2 -verbose

    ERROR:

    Could not find a suitable set of interfaces for VIPs.

    Result: Node connectivity check failed.

    还是会有虚拟IP的报错,可以忽略

    #vi /etc/redhat-release

    将版本5,改成4,因为oracle10G不支持RHEL5安装

    #cd ..

    # ./runInstaller

    ● Welcome:

    点[Next]

    ● Specify Inventory directory and credentials:

    Inventory directory: /u01/app/oracle/oraInventory

    Operating System group name: oinstall

    点[Next]

    ● Specify Home Details:

    Name: OraCrs10g_home

    Location: /u01/app/oracle/10.2.0/crs    (手动改变CRS的目录)

    点[Next]

    ● Product Specific Prerequisite Checks:

    点[Next]

    ● Specify Cluster Configuration:

    Cluster Name: crs

    --------------------------------------------------------

    |Public Node Name |Private Node Name |Virtual Node Name|

    --------------------------------------------------------

    | rac1 | int-rac1 |v-rac1 |

    --------------------------------------------------------

    | rac2 | int-rac2 | v-rac2 |

    --------------------------------------------------------

    点[Next]

    ● Specify Network Interface Usage:

    --------------------------------------------------

    | Interface Name | Subnet | Interface Type |

    --------------------------------------------------

    | eth0 | 192.168.0.0 | Public |

    --------------------------------------------------

    | eth1 | 10.0.0.0 | Private |

    --------------------------------------------------

    点[Next]

    ● Specify OCR Location:

    选 Normal Redundacy

    Specify OCR Location: /u02/oradata/orcl/OCRFile

    Specify OCR Mirror Location: /u02/oradata/orcl/OCRFile_mirror 

     (如果出现没权限写的提示,则使用root用户 chown -R oracle.dba /u02/)

    点[Next]

    ● Specify Voting Disk Location:

    选 Normal Redundacy

    Voting Disk Location: /u02/oradata/orcl/VotingFile

    Additional Voting Disk 1 Location: /u02/oradata/orcl/VotingFile_mirror1

    Additional Voting Disk 2 Location: /u02/oradata/orcl/VotingFile_mirror2

    点[Next]

    ● Summary:

    点[Install]

     

    {{{arch=`uname -m`

           #if [ "$arch" = "i686" -o "$arch" = "ia64" ]

           #then

              LD_ASSUME_KERNEL=2.4.19

              export LD_ASSUME_KERNEL

           #fi

           #End workaround● Execute Configuration Scripts:}}}

     

     

    以root身份在rac1上运行 /u01/app/oracle/oraInventory/orainstRoot.sh

    完成后,以root身份在rac2上运行 /u01/app/oracle/oraInventory/orainstRoot.sh

    完成后,以root身份在rac1上运行 /u01/app/oracle/product/crs/root.sh

    完成后,以root身份在rac2上运行 /u01/app/oracle/product/crs/root.sh

    在rac2上执行完root.sh后,会出一错误,在X下使用root运行vipca来解决

    #/u01/app/oracle/product/10.2.0/crs/bin/vipca

    ● Welcome:

    点[Next]

    ● Network interfaces:

    eth0、eth1都要选中

    点[Next]

    ● Virtual IPs for cluster notes:

    --------------------------------------------------------------

    | Node Name | IP Alias Name | IP Address | Subnet Mask |

    --------------------------------------------------------------

    | rac1 | v-rac1 | 192.168.0.143 | 255.255.255.0 |

    --------------------------------------------------------------

    | rac2 | v-rac2 | 192.168.0.145 | 255.255.255.0 |

    --------------------------------------------------------------

    点[Next]

    ● Summary:

    点[Finish]

    ● Configuration Assistant Progress Dialog:

    等配置完成后,点[OK]

    ● Configuration Results:

    点[Exit]

    在rac1上点 Execute Configuration Scripts 界面的[OK]

    ● End of installation:

    点[Exit]

    ORACLE软件安装

    $cd database/

    $./runInstaller

    ● Welcome:

    点[Next]

    ● Select Installation Type:

    我选的是 Enterprise Edition

    点[Next]

    ● Specify Home Details:

    Name: OraCrs10g_home1

    Location: /u01/app/oracle/10.2.0/rac_db

    点[Next]

    ● Specify Hardware Cluster Installation Mode:

    选 Cluster Installation,并且两个节点全选中

    点[Next]

    ● Product-Specific Prerequisite Checks:

    点[Next]

    ● Select Configuration Option:

    选 Install database Software only

    点[Next]

    ● Summary:

    点[Install]

    ● Run Script. Windows:

    以root身份在rac1上运行 /u01/app/oracle/10.2.0/rac_db/root.sh

    完成后,以root身份在rac2上运行 /u01/app/oracle/10.2.0/rac_db/root.sh

    ● End of installation:

    点[Exit]

    创建TNS监听进程:

    ----------------

    0.运行netca(rac1):

    用oracle登录

    $netca

    ● Real Application Clusters, Configuration:

    选 Cluster configuration

    点[Next]

    ● Real Application Clusters, Active Nodes:

    两个节点全选中

    点[Next]

    ● Welcome:

    选 Listener configuration

    点[Next]

    ● Listener Configuration, Listener:

    选 Add

    点[Next]

    ● Listener Configuration, Listener Name:

    填 LISTENER

    点[Next]

    ● Listener Configuration, Select Protocols:

    选 TCP

    点[Next]

    ● Listener Configuration, TCP/IP Protocol:

    选 Use the standard port number of 1521

    点[Next]

    ● Listener Configuration, More Listener?:

    选 No

    点[Next]

    ● Welcome:

    选 Naming Methods configuration

    点[Next]

    ● Naming Methods Configuration, Select Naming Methods:

    选 Local Naming 和 Easy Connect Naming

    点[Next]

    ● Naming Methods Configuration Done:

    点[Next]

    ● Welcome:

    点[Finish]

    1.检查一下:

    rac1上

    $ps -ef | grep lsnr | grep -v 'grep' | grep -v 'ocfs' | awk '{print $9}'

    rac2上

    $ps -ef | grep lsnr | grep -v 'grep' | grep -v 'ocfs' | awk '{print $9}'

    创建数据库:

    -----------

    0.运行dbca(rac1):

    用oracle登录

    $dbca

    ● Welcome:

    选 Oracle Real Application Clusters database

    点[Next]

    ● Step 1 of 17: Opetations:

    选 Create a Database

    点[Next]

    ● Step 2 of 17: Node Selection:

    两个节点全选中

    点[Next]

    ● Step 3 of 17: Database Templates:

    选 Custom Database

    点[Next]

    ● Step 4 of 17: Database Identification:

    Global Database Name: orcl

    SID Prefix: orcl

    点[Next]

    ● Step 5 of 16: Management Options:

    使用默认选项,即

    选 Configure the Database with Enterprise Manager

    选 Use Database Control for Database Management

    点[Next]

    ● Step 6 of 16: Database Credentials:

    选 Use the Same Password for All Accounts

    输入密码

    点[Next]

    ● Step 7 of 15: Storage Options:

    选 ASM

    点[Next]

    ● Step 8 of 15: Create ASM Instance:

    输入刚才的密码

    选 Create server parameter file (SPFILE)

    /u02/oradata/orcl/dbs/spfile+ASM.ora

    点[Next]

    出来的窗口中,点[OK]

    ● Step 9 of 15: ASM Disk Groups:

    点[Create New]

    ● Create Disk Group:

    Disk Group Name: DATA

    Redundancy: Normal

    选 VOL1 及 VOL2

    点[OK]

    点[Create New]

    ● Create Disk Group:

    Disk Group Name: FLASH_RECOVERY_AREA

    Redundancy: External

    选 VOL3 及 VOL4

    点[OK]

    点[Next]

    ● Step 10 of 15: Database File Locations:

    选 Use Oracle-Managed Files

    Database Area: +DATA

    点[Next]

    ● Step 11 of 15: Recovery Configuration:

    选 Specify Flash Recovery Area

    Flash Recovery Area: +FLASH_RECOVERY_AREA

    Flash Recovery Area Size: 2048 MB

    点[Next]

    ● Step 11 of 15: Database Content:

    用默认值

    点[Next]

    ● Step 12 of 15 Database Services:

    点[Add],名称为 RACTEST

    orcl1: Preferred

    orcl2: Preferred

    TAF Policy: Basic

    点[Next]

    ● Step 13 of 15: Initialization Parameters:

    用默认值

    点[Next]

    ● Step 14 of 15: Database Storage:

    用默认值

    点[Next]

    ● Step 15 of 15: Create Options:

    用默认值

    点[Finish]

  • RedHat Linux as4 上Oracle RAC 集群

    2010-08-23 15:47:47

    ##############RedHat Linux下Oracle10g RAC集群安装步骤################
    Oracle集群的实质就是多个服务器访问同一个Oracle数据库,这样可以避免一
    个服务器宕机时数据库不能访问,同时也可以进行负载均衡。
    **************************本实验案例步骤**************************
    两Linux节点rac01、rac02配置如下
    RAM 1024
    DISK 每个节点scsi硬盘30G一个,共享硬盘10G
    网卡 每个节点两块网卡eth0(private)、eth1(public)
    操作系统 RedHat Enterprise Linux AS4 Update2
    ip设置
    rac01: eth0 10.10.10.100/255.255.255.0
    eth1 202.100.0.100/255.255.255.0 202.100.0.1
    rac02: eth0 10.10.10.200/255.255.255.0
    eth1 202.100.0.200/255.255.255.0 202.100.0.1
    所需软件
    Oracle cluster 软件10201_clusterware_linux32.zip
    Oracle数据库软件10201_database_linux32.zip
    ocfs2-2.6.9-55.EL-1.2.9-1.el4.i686.rpm
    ocfs2-2.6.9-55.ELsmp-1.2.9-1.el4.i686.rpm
    ocfs2console-1.2.7-1.el4.i386.rpm
    ocfs2-tools-1.2.7-1.el4.i386.rpm
    ###################################################################创建Oracle用户和所属组,并且查看nobody用户是否存在,在安装完成后nobody用户必
    须执行一些扩展任务,若不存在必须手动创建。
    【注:AB 为两节点都要执行的 A为只需启动一个节点执行即可】
    AB
    [root@rac01 ~]# groupadd -g 1000 oinstall
    [root@rac01 ~]# groupadd -g 1001 dba
    [root@rac01 ~]# id nobody
    uid=99(nobody) gid=99(nobody) groups=99(nobody)
    [root@rac01 ~]# useradd -u 1000 -g 1000 -G 1001 oracle
    [root@rac02 ~]# passwd oracle
    ###################################################################主机名称 解析通过hosts文件解析,两节点在hosts文件中添加如下内容
    AB
    [root@rac02 ~]# vi /etc/hosts
    202.100.0.100   rac01 ###公网ip
    202.100.0.200   rac02
    202.100.0.10    vip01 ###虚拟ip
    202.100.0.20    vip02
    10.10.10.100    priv01 ###私网ip
    10.10.10.200    priv02
    ####################################################################配置SSH
    两节点都用Oracle用户执行
    AB
    [oracle@rac01 ~]$ mkdir .ssh
    [oracle@rac01 ~]$ chmod 700 .ssh/
    AB
    [oracle@rac02 ~]$ ssh-keygen -t rsa
    Generating public/private rsa key pair.
    Enter file in which to save the key (/home/oracle/.ssh/id_rsa): 存放公钥和私钥目录
    Enter passphrase (empty for no passphrase): 私钥密码
    Enter same passphrase again:
    Your identification has been saved in /home/oracle/.ssh/id_rsa.
    Your public key has been saved in /home/oracle/.ssh/id_rsa.pub.
    The key fingerprint is:
    0b:fe:7e:e1:cb:f7:6f:7c:bf:74:ce:01:c5:c6:4f:a2 oracle@rac02
    AB
    [oracle@rac02 ~]$ ssh-keygen -t dsa
    Generating public/private dsa key pair.
    Enter file in which to save the key (/home/oracle/.ssh/id_dsa):
    Enter passphrase (empty for no passphrase):
    Enter same passphrase again:
    Your identification has been saved in /home/oracle/.ssh/id_dsa.
    Your public key has been saved in /home/oracle/.ssh/id_dsa.pub.
    The key fingerprint is:
    63:59:50:c3:3e:ee:c2:c5:cc:85:33:1b:e3:ee:ed:6b oracle@rac02
    [oracle@rac02 ~]$ cd .ssh
    A
    [oracle@rac01 .ssh]$ ssh rac01 cat ~/.ssh/id_rsa.pub &gt;&gt; authorized_keys
    [oracle@rac01 .ssh]$ ssh rac01 cat ~/.ssh/id_dsa.pub &gt;&gt; authorized_keys
    [oracle@rac01 .ssh]$ ssh rac02 cat ~/.ssh/id_rsa.pub &gt;&gt; authorized_keys
    [oracle@rac01 .ssh]$ ssh rac02 cat ~/.ssh/id_dsa.pub &gt;&gt; authorized_keys
    [oracle@rac01 .ssh]$ scp authorized_keys rac02:/home/oracle/.ssh/
    AB
    [oracle@rac02 .ssh]$ chmod 600 authorized_keys
    在两节点上进行测试
    [oracle@rac01 .ssh]$ ssh rac01 date
    Sun Aug  9 08:01:45 EDT 2009
    [oracle@rac01 .ssh]$ ssh rac02 date
    Sun Aug  9 08:01:56 EDT 2009
    [oracle@rac01 ~]$ ssh rac02 date
    Sun Aug  9 08:02:17 EDT 2009
    [oracle@rac01 ~]$ ssh rac01 date
    Sun Aug  9 08:02:18 EDT 2009
    ###############################################################################
    在两节点上查看所需软件,若未安装,需手动安装
    AB
    [root@rac01 ~]# rpm -q gcc gcc-c++ glibc gnome-libs libstdc++
    libstdc++-devel binutils compat-db openmotif21 control-center make
    ###################################################################为Oracle安装配置参数
    AB
    [root@rac02 ~]# vi /etc/sysctl.conf
    kernel.sem=250  32000   100     128
    kernel.shmmni=4096
    kernel.shmall=2097152
    kernel.shmmax=2147483648
    net.ipv4.ip_local_port_range=1024 65000
    net.core.rmem_default=1048576
    net.core.rmem_max=1048576
    net.core.wmem_default=262144
    net.core.wmem_max=262144
    [root@rac02 ~]# sysctl -p
    ###################################################################设置SSH对Oracle用户的限制
    AB
    [root@rac01 ~]# vi /etc/security/limits.conf
    oracle          soft    nproc   2047
    oracle          hard    nproc   16384
    oracle          soft    nofile  1024
    oracle          hard    nofile  65536
    AB
    [root@rac02 ~]# vi /etc/pam.d/login
    session         required        /lib/security/pam_limits.so
    AB
    [root@rac01 ~]# vi /etc/profile
    if [ $USER = "oracle" ] ; then
            if [ $SHELL = "/bin/ksh" ] ; then
                    ulimit -p 16384
                    ulimit -n 65536
            else
                    ulimit -u 16384 -n 65536
            fi
    fi
    [root@rac01 ~]# source /etc/profile
    ####################################################################安装配置OCFS2【Oracle cluster file system 2】
    AB
    [root@rac02 as4]# rpm -ivh ocfs2-tools-1.2.7-1.el4.i386.rpm ocfs2-2.6.9-55.ELsmp-1.2.9-1.el4.i686.rpm ocfs2console-1.2.7-1.el4.i386.rpm
    ####################################################################在一个节点上对共享硬盘分区,建立两个分区,一个用于存储Oracle软件,至少3000m,另一个用于存储Oracle数据库文件及恢复文件,至少4000M,分区如下:
    [root@rac02 as4]# fdisk -l /dev/sdb
    Disk /dev/sdb: 10.7 GB, 10737418240 bytes
    255 heads, 63 sectors/track, 1305 cylinders
    Units = cylinders of 16065 * 512 = 8225280 bytes
       Device Boot      Start         End      Blocks   Id  System
    /dev/sdb1               1         501     4024251   83  Linux
    /dev/sdb2             502        1305     6458130   83  Linux
    【分好了之后一定要重启所有节点。】
    ####################################################################
    A
    [root@rac01 ~]# export DISPLAY=202.100.0.111:0.0
    [root@rac02 ~]# ocfs2console
    wps_clip_image-5541
    选择task 》》》》format
    wps_clip_image-5561
    选择/dbv/sdb1 填入orahome   》》》》 ok
    选择task 》》》》format
    选择/dbv/sdb2 填入oradata   》》》》 ok
    之后如下图所示
    wps_clip_image-5655
    选择cluster》》》》configure nodes
    wps_clip_image-5686
    选择 添加
    添加两节点的主机名和ip
    应用后如下图所示关闭
    wps_clip_image-5718
    现在查看/etc/ocfs2/cluster.conf
    将看到如下内容
    [root@rac02 ~]# cat /etc/ocfs2/cluster.conf
    node:
            ip_port = 7777
            ip_address = 202.100.0.100
            number = 0
            name = rac01
            cluster = ocfs2
    node:
            ip_port = 7777
            ip_address = 202.100.0.200
            number = 1
            name = rac02
            cluster = ocfs2
    cluster:
            node_count = 2
            name = ocfs2
    选择cluster 》》》》propagate configuration
    wps_clip_image-6152
    输入另一节点的管理员密码 然后关闭。
    ###############################################################################
    配置o2cb系统启动时就启动OCFS2驱动和服务。
    AB
    [root@rac02 ~]# /etc/init.d/o2cb configure
    Configuring the O2CB driver.
    This will configure the on-boot properties of the O2CB driver.
    The following questions will determine whether the driver is loaded on
    boot.  The current values will be shown in brackets ('[]').  Hitting
    <ENTER> without typing an answer will keep that current value.  Ctrl-C
    will abort.
    Load O2CB driver on boot (y/n) [y]: y 启动时自动加载驱动
    Cluster to start on boot (Enter "none" to clear) [ocfs2]: 默认为ocfs2文件系统
    Specify heartbeat dead threshold (&gt;=7) [31]:
    Specify network idle timeout in ms (&gt;=5000) [30000]:
    Specify network keepalive delay in ms (&gt;=1000) [2000]:
    Specify network reconnect delay in ms (&gt;=2000) [2000]:
    Writing O2CB configuration: OK
    O2CB cluster ocfs2 already online
    查看o2cb时出现以下提示说明服务已经启动
    [root@rac01 ~]# /etc/init.d/o2cb status
    Module "configfs": Loaded
    Filesystem "configfs": Mounted
    Module "ocfs2_nodemanager": Loaded
    Module "ocfs2_dlm": Loaded
    Module "ocfs2_dlmfs": Loaded
    Filesystem "ocfs2_dlmfs": Mounted
    Checking O2CB cluster ocfs2: Online
      Heartbeat dead threshold: 31
      Network idle timeout: 30000
      Network keepalive delay: 2000
      Network reconnect delay: 2000
    Checking O2CB heartbeat: Not active
    ####################################################################两节点都创建挂载目录并挂载/dev/sdb1和/dev/sdb2
    AB
    [root@rac02 ~]# mkdir -p /orac/orahome
    [root@rac02 ~]# mkdir -p /orac/oradata
    [root@rac02 ~]# mount -t ocfs2 /dev/sdb1 /orac/orahome/
    [root@rac02 ~]# mount -t ocfs2 -o datavolume,nointr /dev/sdb2 /orac/oradata/
    ####################################################################配置以是系统启动时自动加载/dev/sdb1和/dev/sdb2
    [root@rac02 ~]# vi /etc/fstab
    /dev/sdb1       /orac/oradata   ocfs2   _netdev,datavolume,nointr 0 0
    /dev/sdb2       /orac/orahome   ocfs2   _netdev 0 0
    在任何一个节点上查看是否加载上共享磁盘
    [root@rac02 ~]# mounted.ocfs2 -f
    Device                FS     Nodes
    /dev/sdb1             ocfs2  rac02, rac01
    /dev/sdb2             ocfs2  rac02, rac01
    ####################################################################安装集群就需软件
    创建对应权限的目录
    AB
    [root@rac01 ~]# mkdir /orac/crs
    [root@rac01 ~]# chmod -R 775 /orac/crs/
    [root@rac01 ~]# chown -R root:oinstall /orac/crs/
    [root@rac01 ~]# chown -R oracle:oinstall /orac/orahome/
    [root@rac01 ~]# chmod -R 775 /orac/orahome/
    [root@rac01 ~]# chown -R oracle:oinstall /orac/oradata/
    [root@rac01 ~]# chmod -R 775 /orac/oradata/
    解压集群就绪软件
    A
    [root@rac01 share]# unzip 10201_clusterware_linux32.zip
    切换用户、导出图形界面开始安装
    A
    [root@rac01 share]# su - oracle
    [oracle@rac01 ~]$ export DISPLAY=202.100.0.111:0.0
    [oracle@rac01 ~]$ export LANG=""
    [oracle@rac01 ~]$ /share/clusterware/runInstaller
    wps_clip_image-8927
    直接next
    wps_clip_image-8936
    Next
    wps_clip_image-8943
    指定Oracle cluster ware 的 ORACLE_HOME为/orac/crs/10.2.0
    Next
    wps_clip_image-9003
    产品需求检查next
    wps_clip_image-9016
    指定集群名称和节点信息,配置成如图所示next
    wps_clip_image-9042
    网卡配置next
    wps_clip_image-9053
    指定OCR存储位置 选择使用外部冗余  填入/orac/oradata/ocrdata
    Next
    wps_clip_image-9105
    指定仲裁磁盘  /orac/oradata/votedisk
    wps_clip_image-9138
    wps_clip_image-9140
    wps_clip_image-9142
    分别在两节点上执行脚本
    AB(会看到两节点上的提示会有所不同)
    [root@rac01 proc]# /home/oracle/oraInventory/orainstRoot.sh
    Changing permissions of /home/oracle/oraInventory to 770.
    Changing groupname of /home/oracle/oraInventory to oinstall.
    The execution of the script. is complete
    [root@rac01 proc]# /orac/crs/10.2.0/root.sh
    WARNING: directory '/orac/crs' is not owned by root
    Checking to see if Oracle CRS stack is already configured
    /etc/oracle does not exist. Creating it now.
    Setting the permissions on OCR backup directory
    Setting up NS directories
    Oracle Cluster Registry configuration upgraded successfully
    WARNING: directory '/orac/crs' is not owned by root
    assigning default hostname rac01 for node 1.
    assigning default hostname rac02 for node 2.
    Successfully accumulated necessary OCR keys.
    Using ports: CSS=49895 CRS=49896 EVMC=49898 and EVMR=49897.
    node <nodenumber>: <nodename> <private interconnect name> <hostname>
    node 1: rac01 priv01 rac01
    node 2: rac02 priv02 rac02
    Creating OCR keys for user 'root', privgrp 'root'..
    Operation successful.
    Now formatting voting device: /orac/oradata/votedisk
    Format of 1 voting devices complete.
    Startup will be queued to init within 90 seconds.
    Adding daemons to inittab
    Expecting the CRS daemons to be up within 600 seconds.
    CSS is active on these nodes.
            rac01
    CSS is inactive on these nodes.
            rac02
    Local node checking complete.
    Run root.sh on remaining nodes to start CRS daemons.
    [root@rac01 proc]# chown root /orac/crs/
    [root@rac02 ~]# /home/oracle/oraInventory/orainstRoot.sh
    Changing permissions of /home/oracle/oraInventory to 770.
    Changing groupname of /home/oracle/oraInventory to oinstall.
    The execution of the script. is complete
    [root@rac02 ~]# /orac/crs/10.2.0/root.sh
    WARNING: directory '/orac/crs' is not owned by root
    Checking to see if Oracle CRS stack is already configured
    /etc/oracle does not exist. Creating it now.
    Setting the permissions on OCR backup directory
    Setting up NS directories
    Oracle Cluster Registry configuration upgraded successfully
    WARNING: directory '/orac/crs' is not owned by root
    clscfg: EXISTING configuration version 3 detected.
    clscfg: version 3 is 10G Release 2.
    assigning default hostname rac01 for node 1.
    assigning default hostname rac02 for node 2.
    Successfully accumulated necessary OCR keys.
    Using ports: CSS=49895 CRS=49896 EVMC=49898 and EVMR=49897.
    node <nodenumber>: <nodename> <private interconnect name> <hostname>
    node 1: rac01 priv01 rac01
    node 2: rac02 priv02 rac02
    clscfg: Arguments check out successfully.
    NO KEYS WERE WRITTEN. Supply -force parameter to override.
    -force is destructive and will destroy any previous cluster
    configuration.
    Oracle Cluster Registry for cluster has already been initialized
    Startup will be queued to init within 90 seconds.
    Adding daemons to inittab
    Expecting the CRS daemons to be up within 600 seconds.
    CSS is active on these nodes.
            rac01
            rac02
    CSS is active on all nodes.
    Waiting for the Oracle CRSD and EVMD to start
    Waiting for the Oracle CRSD and EVMD to start
    Waiting for the Oracle CRSD and EVMD to start
    Waiting for the Oracle CRSD and EVMD to start
    Oracle CRS stack installed and running under init(1M)
    Running vipca(silent) for configuring nodeapps
    Creating VIP application resource on (2) nodes...
    Creating GSD application resource on (2) nodes...
    Creating ONS application resource on (2) nodes...
    Starting VIP application resource on (2) nodes...
    Starting GSD application resource on (2) nodes...
    Starting ONS application resource on (2) nodes...
    Done.
    执行结束后点击ok继续
    wps_clip_image-12683
    推出  安装结束
    ####################################################################开始安装Oracle
    A
    [oracle@rac02 ~]$ export DISPLAY=202.100.0.111:0
    [oracle@rac02 ~]$ export LANG=""
    [oracle@rac02 ~]$ /share/database/runInstaller
    wps_clip_image-12917
    wps_clip_image-12919
    选择安装企业版
    wps_clip_image-12929
    填入Oracle home   /orac/orahome/10.2.0/db_1
    wps_clip_image-12973
    选中所有节点
    wps_clip_image-12982
    wps_clip_image-12984
    选择只安装数据库软件
    wps_clip_image-12997
    Install开始安装
    wps_clip_image-13011
    两节点运行脚本完成后ok继续
    wps_clip_image-13028
    推出安装界面
    ###################################################################配置用户配置文件
    AB(但两节点的ORACLE_SID不相同,一个为JAVA1另一个为JAVA2)
    [oracle@rac01 ~]$ vi .bashrc
    export ORACLE_BASE=/orac/orahome/10.2.0/
    export ORACLE_HOME=$ORACLE_BASE/db_1
    export ORACLE_SID=JAVA1
    export PATH=$ORACLE_HOME/bin:$PATH
    [oracle@rac01 ~]$source .bashrc
    [oracle@rac01 ~]$ vi .bashrc
    export ORACLE_BASE=/orac/orahome/10.2.0/
    export ORACLE_HOME=$ORACLE_BASE/db_1
    export ORACLE_SID=JAVA2
    export PATH=$ORACLE_HOME/bin:$PATH
    [oracle@rac02 ~]$source .bashrc
    一个节点执行dbca开始安装数据库
    A
    [oracle@rac01 ~]$dbca
    选择Oracle real application cluster cluster database
    wps_clip_image-13660
    选择创建数据库
    wps_clip_image-13670
    选择所有节点
    wps_clip_image-13679
    wps_clip_image-13682
    选择普通用途
    wps_clip_image-13691
    填写数据库实例名
    wps_clip_image-13702
    wps_clip_image-13705
    wps_clip_image-13708
    wps_clip_image-13711
    wps_clip_image-13714
    wps_clip_image-13717
    wps_clip_image-13720
    wps_clip_image-13723
    wps_clip_image-13726
    wps_clip_image-13729
    wps_clip_image-13732
    由于没有监听,会有以下提示,选择yes继续
    wps_clip_image-13756
    开始安装
    wps_clip_image-13763
    wps_clip_image-13766
    推出完成安装
    退出时会自动启动集群实例
    ####################################################################
    启动Oracle后
    在一个节点上创建表
    提交后在另一个节点上能查看到即表明安装成功。

    本文出自 “zhuyan” 博客,请务必保留此出处http://zhuyan.blog.51cto.com/890880/189973


  • delete删除后,用回闪恢复

    2010-07-19 15:38:37

    Flashback query(闪回查询)原理

      Oracle根据undo信息,利用undo数据,类似一致性读取方法,可以把表置于一个删除前的时间点(SCN),从而将数据找回。

     

    Flashback query(闪回查询)前提:

    SQL> show parameter undo;

     

    NAME                                TYPE       VALUE

    ------------------------------------ ----------- ------------------------------

    undo_management                     string     AUTO

    undo_retention                        integer    900

    undo_tablespace                       string     UNDOTBS1

     

    其中undo_management = auto,设置自动undo管理AUM),该参数默认设置为:auto

    Undo_retention = n(),设置决定undo最多的保存时间,其值越大,就需要越多的undo表空间的支持。修改undo_retention的命令如下:

    SQL> alter system set undo_retention = 3600;

    System altered

     

    闪回实现方式

    1.      获取数据删除前的一个时间点或scn,如下:

    SQL>select to_char(sysdate, 'yyyy-mm-dd hh24:mi:ss') time, to_char(dbms_flashback.get_system_change_number) scn from dual;

     

    TIME               SCN

    ------------------- ----------------------------------------

    2010-06-29 23:03:14 1060499

     

    2.      查询该时间点(或scn)的数据,如下:

    SQL> select * from t as of timestamp to_timestamp('2010-06-29 22:57:47', 'yyyy-mm-dd hh24:mi:ss');

    SQL> select * from t as of scn 1060174;

    3.      将查询到的数据,新增到表中。也可用更直接的方法,如:

    SQL>create table tab_test as select * from t of timestamp to_timestamp('2010-06-29 22:57:47', 'yyyy-mm-dd hh24:mi:ss');
    SQL>insert into tab_test select * from1060174;

    示例:

    Create table t(id number);

    insertinto t values(1);
    insert into t values(2);
    insert into t values(3);
    insert into t values(4);
    insert into t values(5);

     

    1.查看t表中的原始数据

    SQL> select * from t;

     

           ID

    ---------

            1

            2

            3

            4

            5

    2.获取数据删除前的一个时间点或scn

    SQL> select to_char(sysdate, 'yyyy-mm-dd hh24:mi:ss') time, to_char(dbms_flashback.get_system_change_number) scn from dual;

     

    TIME               SCN

    ------------------- ----------------------------------------

    2010-06-29 23:23:33  1061279

    3.删除t表中的数据,并提交事物

    SQL> delete from t;

    5 rows deleted

    SQL> commit;

    Commit complete

    4.在查看t表,此时t表中数据以删除

    SQL> select * from t;

           ID

    ----------

    5.查看t表中scn1061279(或时间点为2010-06-29 23:23:33)时的数据

    SQL> select * from t as of scn 1061279;

     

           ID

    ----------

            1

            2

            3

            4

            5

    6.确认要恢复后,将t表中的数据还原到scn1061279(或时间点为2010-06-29 23:23:33)时的数据,并提交事物

    SQL> insert into t select * from t as of scn 1061279;

    5 rows inserted

    SQL> commit;

    Commit complete

    7.确认t表数据的还原情况

    SQL> select * from t;

     

           ID

    ----------

            1

            2

            3

            4

            5

    注:推荐使用scn,由于oracle9i中,因为scn与时间点的同步需要5分钟,如果最近5分钟之内的数据需要Falshback query查询,可能会查询丢失,而scn则不存在这个问题。Oracle10g中这个问题已修正(scn与时间点的大致关系,可以通过logmnr分析归档日志获得)。

     

    Falshback query查询的局限:

    1. 不能Falshback5天以前的数据。

    2. 闪回查询无法恢复到表结构改变之前,因为闪回查询使用的是当前的数据字典。

    3. 受到undo_retention参数的影响,对于undo_retention之前的数据,Flashback不保证能Flashback成功。

    4. drop,truncate等不记录回滚的操作,不能恢复。

    5. 普通用户使用dbms_flashback包,必须通过管理员授权。命令如下:

    SQL>grant execute on dbms_flashback to scott;

     

  • Redhat Linux AS4 安装 Oracle 10g (10.2)

    2010-01-28 15:21:19


    1、硬件需求
       1)内存>1024M
         内存     交换分区
         >1024M    2倍内存
         <2048M    1.5倍内存
         <8192M    1倍内存
         >8192M    0.75倍内存
         显示内存命令
       2)/tmp > 400M
       3)检测命令
         内存
         # grep MemTotal /proc/meminfo 
         交换分区
         # grep SwapTotal /proc/meminfo
         /tmp分区
         # df -k /tmp
         cpu信息
         # grep "model name" /proc/cpuinfo
    2、软件需求
       1)操作系统
       Red Hat Enterprise Linux AS/ES 3.0 (Update 4 or later)
       Red Hat Linux 4.0
       SUSE Linux Enterprise Server 9.0
       Asianux 1.0
       Asianux 2.0
       2)内核
       Red Hat Enterprise Linux 3.0 and Asianux 1.0
      2.4.21-27.EL  
       Red Hat Enterprise Linux 4.0 and Asianux 2.0  
      2.6.9-5.EL  
       SUSE Linux Enterprise Server 9.0  
      2.6.5-7.201
       3)具体组件包
       Red Hat Enterprise Linux 3.0 and Asianux 1.0

     make-3.79.1
     gcc-3.2.3-34
     glibc-2.3.2-95.20
     compat-db-4.0.14-5
     compat-gcc-7.3-2.96.128
     compat-gcc-c++-7.3-2.96.128
     compat-libstdc++-7.3-2.96.128
     compat-libstdc++-devel-7.3-2.96.128
     openmotif21-2.1.30-8
     setarch-1.3-1
     
       Red Hat Enterprise Linux 4.0 and Asianux 2.0:
     
     binutils-2.15.92.0.2-13.EL4
     compat-db-4.1.25-9
     compat-libstdc++-296-2.96-132.7.2
     control-center-2.8.0-12
     gcc-3.4.3-22.1.EL4
     gcc-c++-3.4.3-22.1.EL44
     glibc-2.3.4-2.9
     glibc-common-2.3.4-2.9
     gnome-libs-1.4.1.2.90-44.1
     libstdc++-3.4.3-22.1
     libstdc++-devel-3.4.3-22.1
     make-3.80-5
     pdksh-5.2.14-30
     sysstat-5.0.5-1
     xscreensaver-4.18-5.rhel4.2
     setarch-1.6-1
     
        SUSE Linux Enterprise Server 9
     
     binutils-2.15.90.0.1.1-32.5
     gcc-3.3.3-43.24
     gcc-c++-3.3.3-43.24
     glibc-2.3.3-98.28
     gnome-libs-1.4.1.7-671.1
     libstdc++-3.3.3-43.24
     libstdc++-devel-3.3.3-43.24
     make-3.80-184.1
     pdksh-5.2.14-780.1
     sysstat-5.0.1-35.1
     xscreensaver-4.16-2.6
     4)命令
       操作系统型号
       # cat /etc/issue
       内核型号
       # uname -r
       查询安装包
       # rpm -q package_name
        
       RL AS4 下查询脚本
     rpm -qa binutils
     rpm -qa compat-db
     rpm -qa compat-libstdc++-33
     rpm -qa control-center
     rpm -qa gcc
     rpm -qa gcc-c++
     rpm -qa glibc
     rpm -qa glibc-common
     rpm -qa gnome-libs
     rpm -qa libstdc++
     rpm -qa libstdc++-devel
     rpm -qa make
     rpm -qa pdksh
     rpm -qa sysstat
     rpm -qa xscreensaver
     rpm -qa setarch
    3、安装
       1)环境
       内存 2048M,硬盘146G
       2)分区
         /               30G
         /tmp            2G
         /var            3G
         /app            20G
         /app/oradata    60G
         /app/oraBP      20G
       3)安装
         选择所有的管理工具,开发工具,Gnome环境,Web Server,FTP Server
         除sysstat包都成功安装,
         sysstat包在4号盘上,rpm -i sysstat-5.0.5-1.i386.rpm
    4、安装Oracle
       1)添加用户组
         判断用户和组是否存在
         grep dba /etc/group
         grep oinstall /etc/group
         id oracle
         id nobody
         有则不添加
         groupadd oinstall
         groupadd dba
         useradd -g oinstall -G dba oracle
         --oracle 已经存在 但不是 oinstall组,也非dba组成员
         usermod -g oinstall -G dba oracle
         useradd nobody
       2)内核参数
            Parameter Value File
     semmsl 250 /proc/sys/kernel/sem
       
     semmns 32000 
       
     semopm 100 
       
     semmni 128 
     shmall 2097152 /proc/sys/kernel/shmall
     shmmax Half the size of physical memory (in bytes) /proc/sys/kernel/shmmax
     shmmni 4096 /proc/sys/kernel/shmmni
     file-max 65536 /proc/sys/fs/file-max
     ip_local_port_range Minimum: 1024 /proc/sys/net/ipv4/ip_local_port_range
       
      Maximum: 65000 
     rmem_default 1048576 /proc/sys/net/core/rmem_default
     rmem_max 1048576 /proc/sys/net/core/rmem_max
     wmem_default 262144 /proc/sys/net/core/wmem_default
     wmem_max 262144 /proc/sys/net/core/wmem_max
       命令
            semmsl, semmns, semopm, and semmni # /sbin/sysctl -a | grep sem
     shmall, shmmax, and shmmni # /sbin/sysctl -a | grep shm
     file-max # /sbin/sysctl -a | grep file-max
     ip_local_port_range # /sbin/sysctl -a | grep ip_local_port_range
     rmem_default # /sbin/sysctl -a | grep rmem_default
     rmem_max # /sbin/sysctl -a | grep rmem_max
     wmem_default # /sbin/sysctl -a | grep wmem_default
     wmem_max # /sbin/sysctl -a | grep wmem_max
     修改配置文件/etc/sysctl.conf,增加或修改
     kernel.shmall = 2097152
     kernel.shmmax = 2147483648
     kernel.shmmni = 4096
     kernel.sem = 250 32000 100 128
     fs.file-max = 65536
     net.ipv4.ip_local_port_range = 1024 65000
     net.core.rmem_default = 1048576
     net.core.rmem_max = 1048576
     net.core.wmem_default = 262144
     net.core.wmem_max = 262144
     重新启动
     3)设置oracle用户的shell
       a)增加如下行到/etc/security/limits.conf
       oracle           soft    nproc   2047
       oracle           hard    nproc   16384
       oracle           soft    nofile  1024
       oracle           hard    nofile  65536
       b)增加下列行到/etc/pam.d/login
       session    required     /lib/security/pam_limits.so
       session    required     pam_limits.so
       c)修改Shell默认启动文件
       Bourne,Bash,Korm shell下增加下列行到/etc/profile
      
       if [ $USER = "oracle" ]; then
      if [ $SHELL = "/bin/ksh" ]; then
            ulimit -p 16384
            ulimit -n 65536
      else
            ulimit -u 16384 -n 65536
      fi
       fi
       
     C shell下,增加下列行到/etc/csh.login
     if ( $USER == "oracle" ) then
      limit maxproc 16384
      limit descrīptors 65536
     endif
     4)创建需要的目录
       mkdir /app/oracle
       chown -R oracle:oinstall /app/oracle
       chmod -R 775 /app/oracle
       chown -R oracle:oinstall /app/oradata
       chmod -R 775 /app/oradata
       chown -R oracle:oinstall /app/orabp
       chmod -R 775 /app/orabp
       这里只有一块硬盘,如果有多块硬盘,你需要将其建立一个挂接点,如u01,
       则目录为/u01/app/oracle,这里只有一个硬盘,挂接点就是/
     5)设置oracle用户环境
       a)如果在远程系统上安装oracle,在本地的X-Windows里显示,要设置
         xhost host_name
       b)用oracle登陆X-windows系统,或su - oracle
       c)查看默认Shell
         echo $SHELL
       d)bash
         vi .bash_profile
         如果设置了ORACLE_SID,ORACLE_HOME,ORACLE_BASE,删除相应行
       e)umask 022
       f)保存文件,执行
         . .bash_profile
       g)设置显示变量
         DISPLAY=localhost:0.0 ; export DISPLAY
         如果在远程显示界面,localhost就改成远程主机
       h)如果/tmp空间不够,需要设置TMP,TMPDIR变量
       $ su - root
      # mkdir /mount_point/tmp
      # chmod a+wr /mount_point/tmp
      # exit
      bash下
      $ TMP=/mount_point/tmp
      $ TMPDIR=/mount_point/tmp
      $ export TMP TMPDIR
      i)确定ORACLE_HOME,TNS_ADMIN没有设置
      $ unset ORACLE_HOME
      $ unset TNS_ADMIN
        j)检验是否设置正确
        $ umask
        $ env | more
       6)安装Oracle
         a)取得Oracle安装件
           从Oracle网站上下载,是免费的,只需要一个简单的注册即可,得到的是zip文件
           unzip 10201_database_linux32.zip
           如果是安装光盘,mount上介质
         b)运行
           runInstaller
         c)安装过程和Windows非常类似,要注意的是
           在选择dba组的时候选择oinstall
           修改一下默认目录,如安装目录,Inventory目录
           安装之前程序会检查一下系统配置,如果按照上面的设置,不会有任何问题,
           install即可
           这样安装的oracle的数据文件在默认目录下,如果要放到不同的盘上,
           可以删除数据库重建,或者安装的时候选择高级安装
           安装Net 8时,系统提示以root用户执行两个脚本,照做就可以了
    5、点滴
       1)注意ORACLE_HOME变量,如果不存在,需要手工设置
         ORACLE_HOME=/app/oracle/product/10.2.0/db_1  
       2)建库命令为/app/oracle/product/10.2.0/db_1/bin/dbca &
        注意设置字符集,因为安装界面用中文没法安装,所以使用英文环境安装,
        所以不能使用默认配置,要修改默认字符集及默认语言
       3)Net 8 命令为/app/oracle/product/10.2.0/db_1/bin/netca &
       4)在其它机器上远程用Net8连接Oracle,需要打开Linux上的1521端口
         配置如下
         Applications->System Setting->Secuity Level 其它端口增加1521:tcp即可
       5)让oracle随机器启动而启动
         在.bash_profile里设置
         ORACLE_SID=orcl
         ORACLE_HOME=/app/oracle/product/10.2.0/db_1
         export ORACLE_SID
         export ORACLE_HOME
         PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin
         export PATH
         修改/etc/oratab,
         orcl:/app/oracle/product/10.2.0/db_1:Y
         最后一个字母默认是N,修改为Y,否则dbstart,dbshut都不会起作用
         修改/app/oracle/product/10.2.0/db_1/dbstart中的相关行为
         ORACLE_HOME_LISTNER=/app/oracle/product/10.2.0/db_1
         然后修改/etc/rc.local,增加这样的一行
         su - oracle -c dbstart
         这样就可以了,但不能关机的时候自动关闭,所以需要手工处理
         su - oracle -c dbshut
         如果是oracle用户可以直接dbshut
        
         注:我曾经尝试过网上找到的如下方法,但系统没法启动,需要用恢复模式删掉脚本才可以,
         不知道是不是我的配置问题,如果看出我的错误请告诉我
         开机时让 RedHat Linux 自动启动Oracle,需要完成以下步骤:

      运行 $ORACLE_HOME 下的 root.sh,会生成一个文件 /etc/oratab 。
      
      编辑 /etc/oratab ,把所有的 instance 的重启动标志设置成 'Y',如:
      ora10g:/home/oracle/OraHome_1:Y
      
      做一个启动脚本 /etc/init.d/dbora ,如下所示:
      
      #!/bin/sh
      # descrīption: Oracle auto start-stop scrīpt.
      # chkconfig: - 20 80
      #
      # Set ORA_HOME to be equivalent to the $ORACLE_HOME
      # from which you wish to execute dbstart and dbshut;
      #
      # Set ORA_OWNER to the user id of the owner of the
      # Oracle database in ORA_HOME.
      ORA_HOME=/app/oracle/product/10.2.0/db_1
      ORA_OWNER=oracle
      if [ ! -f $ORA_HOME/bin/dbstart ]
      then
          echo "Oracle startup: cannot start"
          exit
      fi
      case "$1" in
          'start')
              # Start the Oracle databases:
              # The following command assumes that the oracle login
              # will not prompt the user for any values
              su - $ORA_OWNER -c $ORA_HOME/bin/dbstart
              su - $ORA_OWNER -c "$ORA_HOME/bin/lsnrctl start"
              ;;
          'stop')
              # Stop the Oracle databases:
              # The following command assumes that the oracle login
              # will not prompt the user for any values
              su - $ORA_OWNER -c "$ORA_HOME/bin/lsnrctl stop"
              su - $ORA_OWNER -c $ORA_HOME/bin/dbshut
              ;;
          'restart')
              $0 stop
              $0 start
              ;;
      esac


      
      赋予执行权限
      chmod 750 /etc/init.d/dbora
      
      作成以下链接:
      ln -s /etc/init.d/dbora /etc/rc0.d/K10dbora
      ln -s /etc/init.d/dbora /etc/rc3.d/S99dbora
      
      执行以下命令:
      chkconfig --level 345 dbora on
      
      这样就OK了。下次开关机的时候,Oracle也会随之启动/停止。

  • Linux RHEL5.0+Oracle10G安装

    2010-01-28 15:21:19

    系统采用最小化安装,安装步骤不在细化

    1 安装RPM:

       # rpm -ivh glibc-headers-2.5-12.i386.rpm

       # rpm -ivh glibc-headers-2.5-12.i386.rpm

       # rpm -ivh libaio-0.3.106-3.2.i386.rpm

       # rpm -ivh libgomp- 4.1.1-52.el5.i386.rpm

       # rpm -ivh libXmu-1.0.2-5.i386.rpm

       # rpm -ivh libXp-1.0.0-8.i386.rpm

       # rpm -ihv make-3.81-1.1.i386.rpm

       # rpm -ivh openmotif-2.3.0-0.3.el5.i386.rpm

       # rpm -ivh setarch-2.0-1.1.i386.rpm

       # rpm -ivh cpp-4.1.1-52.el5.i386.rpm

       # rpm -ivh gcc-4.1.1-52.el5.i386.rpm

       # rpm -ivh glibc-2.5-12.i386.rpm

       # rpm -ivh compat-db-4.2.52-5.1.i386.rpm

       # rpm -ivh compat-gcc-34-3.4.6-4.i386.rpm

       # rpm -ivh compat-gcc-34-c++-3.4.6-4.i386.rpm

       # rpm -ihv compat-libstdc++-33-3.2.3-61.i386.rpm

    2 修改内核参数:

       #vi /etc/sysctl.conf

    kernel.shmall = 2097152 (实际的物理内存的大小)
    kernel.shmmax = 2147483648  (
    实际物理内在*1024*1024/2)
    kernel.shmmni = 4096
    kernel.sem = 250 32000 100 128
    fs.file-max = 65536
    net.ipv4.ip_local_port_range = 1024 65000
    net.core.rmem_default=262144
    net.core.rmem_max=262144
    net.core.wmem_default=262144
    net.core.wmem_max=262144

    3 运行使其生效:

       #sysctl -p

    4  建立oracle用户

       #groupadd oinstall

    #groupadd dba

    #useradd -m -g oinstall -G dba oracle

    5  创建oracle安装目录

    #mkdir -p /oracle/DB/10g

    #chown -R oracle.oinstall /oracle

    6  修改配置文件

    #vi /etc/redhat-release

        Red Hat Enterprise Linux Server release 5 (Tikanga)改为Red Hat Enterprise Linux Server release 4 (Tikanga)

       # vi /etc/security/limits.conf

       *               soft    nproc   2047

    *               hard    nproc   16384

    *               soft    nofile  1024

    *               hard    nofile  65536

    #vi /etc/pam.d/login

    session    required     /lib/security/pam_limits.so

    7  oracle用户登陆修改变量

       #su – oracle

    8  #vi ~/.bash_profile

    export TMP=/tmp

    export TMPDIR=$TMP

    export ORACLE_BASE=/oracle/DB

    export ORACLE_HOME=$ORACLE_BASE/10g

    export ORACLE_SID=orcl

    export ORACLE_TERM=xterm

    export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/Apache/Apache/bin:$PATH

    export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH

    export CLASSPATH=$ORACLE_HOME/jre:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib

    export NLS_LANG="AMERICAN_AMERICA.zhs16gbk"

    export DISPLAY=192.168.0.244:0.0

     if [ $USER = "oracle" ]; then

     if [ $SHELL = "/bin/ksh" ]; then

     ulimit -p 16384

     ulimit -n 65536

     else

     ulimit -u 16384 -n 65536

     fi

     fi

    9         保存后执行 source /home/oracle/.bash_profile

    10     netca,dbca  转载请注明出处

  • setup Oracle 10g on RedHat 5

    2010-01-28 15:16:08

    -
    在RedHat 5下安装Oracle 10g详解
    物理内存:512M:                       # grep MemTotal /proc/meminfo
    交换空间:1.0 GB或者2倍内存大小:# grep SwapTotal /proc/meminfo

    修改核心参数,执行如下命令:
    #vi /etc/sysctl.conf
    #表示使用root用户操作,$表示使用oracle 用户进行操作
    在该文件末尾加入如下内容:
    kernel.shmall = 2097152
    kernel.shmmax = 2147483648
    kernel.shmmni = 4096
    kernel.sem = 250 32000 100 128
    fs.file-max = 65536
    net.ipv4.ip_local_port_range = 1024 65000

    编辑完之后,保存,执行 # /sbin/sysctl -p 命令操作来使我们所做的变更生效.
    注:上面kernel.shmmax/kernel.sem等是典型的核心参数配置.
    您可能需要根据您的实际环境进行适当的变动.
    关于这些核心参数的说明在Oracle的官方网站中有很详细的说明.
    然后,应该检查一下上面的操作是否正确:
    # /sbin/sysctl -a | grep sem
    # /sbin/sysctl -a | grep shm
    # /sbin/sysctl -a | grep file-max
    # /sbin/sysctl -a | grep ip_local_port_range
    为Oracle用户设定Shell的限制
    一般来说,出于性能上的考虑,还需要进行如下的设定,
    以便改进Oracle用户的有关 nofile(可打开的文件描述符的最大数)
    和nproc(单个用户可用的最大进程数量)
    # vi /etc/security/limits.conf
    # 添加如下的行
    * soft nproc 2047
    * hard nproc 16384
    * soft nofile 1024
    * hard nofile 65536
    添加如下的行到/etc/pam.d/login 文件:
    session required /lib/security/pam_limits.so
    编辑 /etc/profile 文件,添加如下部分:
    if [ $USER = "oracle" ]; then
    if [ $SHELL = "/bin/ksh" ]; then
    ulimit -p 16384
    ulimit -n 65536
    else
    ulimit -u 16384 -n 65536
    fi
    fi
    之后,执行$ unlimit 验证一下.
    一、 相关软件
    环境:RedHat Enterprise Server 5
    jdk-1_5_0_15-linux-i586-rpm.bin
    oracle10.2.0.1-linux32.zip
    其他安装包见文中
    ------------------------------------------------------------
    RedHat Enterprise Server 5
    红帽发行的Linux 服务器版最新版,Linux 2.6.18内核
    下载地址:
    [url]ftp://60.232.126.152/os/linux/redhat/rhel5/rhel-5-server-i386-disc1.iso[/url]
    [url]ftp://60.232.126.152/os/linux/redhat/rhel5/rhel-5-server-i386-disc2.iso[/url]
    [url]ftp://60.232.126.152/os/linux/redhat/rhel5/rhel-5-server-i386-disc3.iso[/url]
    [url]ftp://60.232.126.152/os/linux/redhat/rhel5/rhel-5-server-i386-disc4.iso[/url]
    [url]ftp://60.232.126.152/os/linux/redhat/rhel5/rhel-5-server-i386-disc5.iso[/url]
    更多介绍和下载地址可以查看
    [url]http://www.oklinux.cn/html/Basic/azpz/20070907/35044.html[/url]
    安装序列号:2515dd4e215225dd
    jdk-1_5_0_15-linux-i586-rpm.bin
    下载地址:[url]http://java.sun.com/javase/downloads/index_jdk5.jsp[/url]
    oracle-xe-10.2.0.1-1.0.i386.rpm
    Oracle 10g的rpm安装包
    下载地址:
    [url]http://www.oracle.com/technology/software/products/database/xe/htdocs/102xelinsoft.html
    [/url]
    二、 RHEL5介绍
    在经历了两次跳票以后, Red Hat于2007年3月14日正式发布了RHEL5. RHEL 5将是Red Hat的商业服务器操作系统版本的第四次重要版本发布, Red Hat酝酿发布RHEL 5已经超过了两年, 主要变化包括Linux内核由2.6.9升级为2.6.18, 支持Xen虚拟化技术, 集群存储等.
    RHEL5的版本主要分为Sever和Desktop两个版本。
    具体来说,Server版本分为:
    · Red Hat Enterprise Linux Advanced Platform. - 对应以前的· Red Hat Enterprise Linux AS
    · Red Hat Enterprise Linux - 对应以前的Red Hat Enterprise Linux ES
    Desktop版本分为:
    · Red Hat Enterprise Linux Desktop - 对应以前的Red Hat Desktop
    · Red Hat Enterprise Linux Desktop with Workstation option - 对应以前的Red Hat Enterprise
    三、 安装JDK(我把需要安装的软件都放在/usr/local下)
    下载地址:http://java.sun.com/j2se/1.5.0/download.jsp
    # cd /usr/local
    # chmod 755 jdk-1_5_0_15-linux-i586.rpm.bin
    # ./ jdk-1_5_0_15-linux-i586.rpm.bin
    此步完成后,会生成jdk-1_5_0_15-linux-i586.rpm的文件
    # chmod +x jdk-1_5_0_15-linux-i586.rpm
    # rpm –ivh jdk-1_5_0_15-linux-i586.rpm
    此时会出现授权协议,按Enter键接受。默认安装到/usr/java/jdk1.5.0_15
    OK,接下来配置环境变量(提供二种方法)
    1、修改/etc/proFile文件
    一般都不推荐这种方法,因为这样做的话,所有用户的shell都会使用这些环境变量,
    可能会给系统带来安全性问题。但如果你的计算机仅仅作为开发使用时那就推荐使用这种方法。
    # vi /etc/profile
    在里面最后位置加入以下
    JAVA_HOME=/usr/java/jdk1.5.0_15
    PATH=$JAVA_HOME/bin:$PATH
    CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
    export JAVA_HOME
    export PATH
    export CLASSPATH

    # source /etc/profile
    使修改的配置生效。
    2、修改当前用户变量(推荐用此方法)
    # cd~
    # vi .bashrc
    然后一样把一下加进去
    JAVA_HOME=/usr/java/jdk1.5.0_15
    PATH=$JAVA_HOME/bin:$PATH
    CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
    export JAVA_HOME
    export PATH
    export CLASSPATH
    验证java的环境变量有没有生效,可以用以下命令查看一下:
    # echo $JAVA_HOME (注意大小写,下同)
    没问题的话,显示的是/usr/java/jdk1.5.0_15
    # echo $PATH
    /usr/java/jdk1.5.0_15/bin:/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/s
    bin:/bin:/usr/sbin:/usr/bin:/root/bin
    # echo $CLASSPATH
    .:/usr/java/jdk1.5.0_15/lib/dt.jar:/usr/java/jdk1.5.0_15/lib/tools.jar
    # java –version
    java version "1.5.0_15"
    Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_15-b04)
    Java HotSpot(TM) Server VM (build 1.5.0_15-b04, mixed mode)
    如果没有生效,请检查以上配置。或干脆先reboot一下。
    环境变量如果ok的话,再来测试JDK是否正常工作。写个测试文件如test.java
    # vi test.java
    class test
    {
    public static void main(String[] args)
    {
    System.out.println("Hi,[url]www.oklinux.cn[/url]!");
    }
    }

    保存退出,下面来编译、执行;
    # javac test.java
    # java test
    Hi,[url]www.oklinux.cn[/url]!
    好了,这样就是正常了。

    四、安装Oracle 10g
    《在 Linux x86 上安装 Oracle 数据库 10g》地址是:
    [url]http://www.oracle.com/technology/global/cn/pub/articles/smiley_10gdb_install.html[/url]
    1、验证一下系统所需的主要安装包版本:
    # rpm -q gcc make binutils openmotif
    gcc-4.1.1-52.el5
    make-3.81-1.1
    binutils-2.17.50.0.6-2.el5
    openmotif-2.2.4-0.1
    如果显示某个包没有安装的话,请先安装。安装包一般在redhat的安装盘里有(一般在第二张或第三张),如
    果没有找到的话,可以到官方下载,不过官方下载比较麻烦,给大家推荐个好地方下载:
    [url]http://rpm.pbone.net/[/url]
    这个网站很简单明了,搜索框输入需要包的名称一部分或全部,就搜索出一堆的安装包链接地址,有很多镜像
    可以选择。
    下面举例openmotif的安装,很简单
    # cd /usr/local
    # rpm –ivh openmotif-2.2.4-0.1.rpm

    2、创建 Oracle 组和用户帐户
    接下来,创建用于安装和维护 Oracle 10g的 Linux 组和用户帐户。用户帐户将称为 oracle,而组将称为
    oinstall 和 dba。执行以下命令:
    # /usr/sbin/groupadd oinstall
    # /usr/sbin/groupadd dba
    # /usr/sbin/useradd -m -g oinstall -G dba oracle
    # id oracle
    uid=501(oracle) gid=501(oinstall) groups=501(oinstall),502(dba)
    设置 oracle 帐户的口令:输密码的时候都是没有回显的,输完就回车就好。
    # passwd oracle
    Changing password for user oracle.
    New password:
    Retype new password:
    passwd:all authentication tokens updated successfully.

    4、安装Oracle
    由于默认情况下oracle 10g 不支持redhat as 5.0,
    所以我们需要手动地把redhat的版本临时给改动一下。

    #su - root
    #cp /etc/redhat-release /etc/redhat-release.backup
    #cat > /etc/redhat-release << EOF
    Red Hat Enterprise Linux AS release 3 (Taroon)
    EOF

    安装完毕,执行如下操作:
    #su - root
    #cp /etc/redhat-release.backup /etc/redhat-release
    这下就可以真正在开始安装数据库。
    最好在ORACLE用户下安装而不要以ROOT身份安装,切换到ORACLE用户界面中,不然就可能出现显示问题。
    $ cd /usr/local/database
    $ ./runInstaller

    按照提示安装就可以了。
    其实在这里还有很多需要认真学习的,安装有几种模式,根据自己的实际情况而定。

数据统计

  • 访问量: 14248
  • 日志数: 26
  • 建立时间: 2007-04-29
  • 更新时间: 2011-09-19

RSS订阅

Open Toolbar