针对集群配置 Oracle Database

如何升级到 Oracle Solaris Cluster 4.0 第 2 部分

作者:Tim Read

2012 年 5 月发布

第 1 部分 — 示例配置概述
第 2 部分 — 针对集群配置 Oracle Database
第 3 部分 — 安装目标集群
第 4 部分 — 创建区域集群
第 5 部分 — 安装新应用程序软件体系
第 6 部分 — 创建备用数据库
第 7 部分 — 创建 Oracle Solaris Cluster 地理版配置
第 8 部分 — Oracle Solaris Cluster 地理版如何简化升级过程

:本文介绍在升级到 Oracle Solaris 11 和 the Oracle Solaris Cluster 4.0 软件之前如何在源集群中配置 Oracle Database。如果您的源集群中已经配置了 Oracle Database,可以跳到本系列文章的第 3 部分

在 Oracle Solaris 10 集群中,已经在每台现有服务器的本地磁盘上安装了 Oracle Database 11g 第 2 版软件,并且 ORACLE_HOME 设置为 /u02/app/oracle/product/11.2.0/dbhome_1。对于新的 Oracle Solaris 11 集群,将使用相同的 ORACLE_HOME 设置。

注意:如果选择使用本文作为执行类似过程的指南,需要密切注意各命令运行的节点。因此,本示例步骤中显示的系统提示包括节点名称和用户名以指示命令必须运行在什么位置以及必须由谁来运行。

数据保存在挂载在 /oradata 上的一个名为 orapool 的 zpool 中。在 gyruss 集群上,该 zpool 由来自一个存储阵列的四个磁盘组成,如清单 1 所示。(集群 gyruss 由节点 pgyruss1pgyruss2 组成,集群 pyrus 由节点 ppyrus1ppyrus2 组成,如本系列文章第 1 部分中的图 1 所示。)

pgyruss1 (root) # zpool history orapool 
History for 'orapool':
2011-07-29.01:19:56 zpool create -f orapool 
/dev/did/dsk/d1s0 /dev/did/dsk/d2s0 /dev/did/dsk/d3s0 
/dev/did/dsk/d4s0
2011-07-29.01:21:22 zfs set mountpoint=/oradata orapool
pgyruss1 (root) #
pgyruss1 (root) # zpool status orapool
  pool: orapool
 state: ONLINE
 scan: scrub repaired 0 in 0h5m with 0 errors on Thu Dec  1 07:16:25 2011
config:

        NAME                                       STATE     READ WRITE CKSUM
        orapool                                    ONLINE       0     0     0
          c4t600A0B80004823740000A57F4E2EA38Ad0s0  ONLINE       0     0     0
          c4t600A0B80004823740000A5804E2EA3B8d0s0  ONLINE       0     0     0
          c4t600A0B80004823820000D2214E2EA483d0s0  ONLINE       0     0     0
          c4t600A0B80004823740000A5814E2EA3E6d0s0  ONLINE       0     0     0

errors: No known data errors

清单 1. orapool Zpool 中的四个磁盘

如果配置一个等同的生产集群,请使用跨存储阵列的 zpool 镜像实现 zpool 和 ZFS 固有特性对数据最大程度的保护。

配置 Oracle 监听器并分配一个静态监听器以准备 Data Guard 特性的复制过程。清单 2 显示了产生的 sqlnet.oralistener.oratnsnames.ora 文件。

pgyruss1 (oracle) $ cat sqlnet.ora
NAMES.DIRECTORY_PATH= (TNSNAMES)

WALLET_LOCATION =
        (SOURCE =
                (METHOD = FILE)
                (METHOD_DATA =
                        (DIRECTORY = /oradata/wallet)
                )
        )

SQLNET.WALLET_OVERRIDE = TRUE

ADR_BASE = /u02/app/oracle
pgyruss1 (oracle) $
pgyruss1 (oracle) $ cat listener.ora
SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (GLOBAL_DBNAME = sales_DGMGRL)
      (ORACLE_HOME = /u02/app/oracle/product/11.2.0/dbhome_1)
      (SID_NAME = sales)
    )
  )

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = vzgyruss1b)(PORT = 1521))
    )
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
  )

ADR_BASE_LISTENER = /u02/app/oracle

pgyruss1 (oracle) $ cat tnsnames.ora
SALES =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = vzgyruss1b)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = sales)
    )
  )

SALES_GEOADM =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = vzgyruss1b)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = sales)
    )
  )

LISTENER_SALES =
  (ADDRESS = (PROTOCOL = TCP)(HOST = vzgyruss1b)(PORT = 1521))

SALESDR =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = vzpyrus1a)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = salesdr)
    )
  )

SALESDR_GEOADM =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = vzpyrus1a)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = salesdr)
    )
  )

LISTENER_SALESDR =
  (ADDRESS = (PROTOCOL = TCP)(HOST = vzpyrus1a)(PORT = 1521))

清单 2. 配置 Oracle 监听器

在本系列文章的第 7 部分创建 Oracle Solaris Cluster 地理版配置时,您就会明白使用带 _GEOADM 后缀的透明网络底层 (TNS) 名称的原因。

tnsnames.orasqlnet.ora 文件复制到另一个 Oracle Solaris 10 集群节点,如下所示:

pgyruss1 (oracle) $ scp tnsnames.ora sqlnet.ora oracle@pgyruss2:`pwd`
Password: 
tnsnames.ora         100% |****************************************|  1044       00:00    
sqlnet.ora           100% |****************************************|   348 00:00 

配置 Oracle Wallet Manager,使其文件驻留在共享存储上。

:此配置意味着钱夹类型访问(即使用 /@SID 连接字符串)只对挂载 /oradata 文件系统的节点可用。如果想让钱夹类型访问对所有节点可用,必须维护钱夹信息的本地副本,或者将钱夹文件放在全局挂载的文件系统上。

清单 3 中的示例显示了如何针对 Oracle Solaris Cluster 代理探测器将使用的一个名为 sales 的 Oracle 服务为一个名为 hamon 的用户创建钱夹凭证。

pgyruss1 (oracle) $ export ORACLE_HOME=/u02/app/oracle/product/11.2.0/dbhome_1
pgyruss1 (oracle) $ export PATH=$PATH:${ORACLE_HOME}/bin
pgyruss1 (oracle) $ mkstore -wrl /oradata/wallet -create
Oracle Secret Store Tool : Version 11.2.0.3.0 - Production
Copyright (c) 2004, 2011, Oracle and/or its affiliates. All rights reserved.

Enter password:            
   
Enter password again:           
   
pgyruss1 (oracle) $ mkstore -wrl /oradata/wallet -createCredential sales hamon
Oracle Secret Store Tool : Version 11.2.0.3.0 - Production
Copyright (c) 2004, 2011, Oracle and/or its affiliates. All rights reserved.

Your secret/Password is missing in the command line 
Enter your secret/Password:        
   
Re-enter your secret/Password:        
   
Enter wallet password:            
   
Create credential oracle.security.client.connect_string1

清单 3. 创建钱夹凭证

使用 Oracle Database Configuration Assistant (DBCA) 构建一个简单的 Oracle 数据库。为数据文件选择 Use Oracle-Managed Files 选项并将基目录设置为 /oradata

在数据库运行时,创建一个 Oracle Database 用户帐户,如清单 4 所示,这样可以通过 Oracle Solaris Cluster 软件的 Oracle Database 探测器使用 Oracle Wallet Manager 中存储的凭证对数据库的运行状况进行检查。

pgyruss1 (oracle) $ sqlplus /NOLOG

SQL*Plus: Release 11.2.0.3.0 Production on Tue Jan 17 09:34:57 2012

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

SQL> connect sys/oracle as sysdba
Connected.

SQL> create user hamon identified by hamon;
User created.

SQL> alter user hamon default tablespace system quota 1m on system;
User altered.

SQL> grant select on v_$sysstat to hamon;
Grant succeeded.

SQL> grant select on v_$archive_dest to hamon;
Grant succeeded.

SQL> grant select on v_$database to hamon;
Grant succeeded.

SQL> grant create session to hamon;
Grant succeeded.

SQL> grant create table to hamon;
Grant succeeded.

清单 4. 创建 Oracle Database 用户

为了准备稍后的数据复制,请确认启用了数据库日志记录和闪回,并且配置适当数量的备用重做日志,如清单 5 所示。

pgyruss1 (oracle) $ sqlplus /NOLOG

SQL*Plus: Release 11.2.0.3.0 Production on Tue Jan 17 09:34:57 2012

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

SQL> connect sys/oracle as sysdba
Connected.
SQL> alter database force logging;

Database altered.

SQL> alter system set log_archive_dest_1='location=use_db_recovery_file_dest  \ 
valid_for=(all_logfiles,all_roles) db_unique_name=sales' scope=both;
System altered. SQL> alter system set standby_file_management='AUTO' scope=both; System altered. SQL> alter database flashback on; Database altered. SQL> alter database add standby logfile size 50m; Database altered. SQL> / Database altered. SQL> / Database altered. SQL> quit

清单 5. 准备数据库复制

创建一个 Oracle Solaris Cluster 资源组 (oracle-rg) 来控制客户端用来连接数据库的 zpool (orapool) 和逻辑主机名 (vzgyruss1b) 资源,如清单 6 所示。

pgyruss1 (root) # clrg create oracle-rg
pgyruss1 (root) # clrt register SUNW.HAStoragePlus
pgyruss1 (root) # clrslh create -g oracle-rg -h vzgyruss1b oracle-lh-rs
pgyruss1 (root) # clrs create -g oracle-rg -t SUNW.HAStoragePlus \ <br>  
-p zpools=orapool oracle-hasp-rs
pgyruss1 (root) # clrt register SUNW.oracle_listener pgyruss1 (root) # clrs create -g oracle-rg -t SUNW.oracle_listener \
-p resource_dependencies=oracle-lh-rs \
-p ORACLE_HOME=/u02/app/oracle/product/11.2.0/dbhome_1 oracle-lsnr-rs
pgyruss1 (root) # clrt register SUNW.oracle_server pgyruss1 (root) # clrs create -g oracle-rg -t SUNW.oracle_server \
-p ORACLE_HOME=/u02/app/oracle/product/11.2.0/dbhome_1 \
-p ORACLE_SID=sales -p connect_string=/@sales \
-p alert_log_file=/u02/app/oracle/diag/rdbms/sales/sales/trace/alert_sales.log \
-p resource_dependencies_offline_restart=oracle-hasp-rs,oracle-lsnr-rs oracle-svr-rs
pgyruss1 (root) # clrg online -emM oracle-rg pgyruss1 (root) # clrs status === Cluster Resources === Resource Name Node Name State Status Message ------------- --------- ----- -------------- oracle-svr-rs pgyruss1 Online Online pgyruss2 Offline Offline oracle-lsnr-rs pgyruss1 Online Online pgyruss2 Offline Offline oracle-hasp-rs pgyruss1 Online Online pgyruss2 Offline Offline oracle-lh-rs pgyruss1 Online Online - LogicalHostname online. pgyruss2 Offline Offline - LogicalHostname offline.

清单 6. 创建资源组

创建资源组和资源之后,将本地配置文件和目录(如以下所示)传播到第二个集群节点:

  • $ORACLE_HOME/dbs/orapwsales
  • $ORACLE_HOME/dbs/spfilesales.ora
  • $ORACLE_HOME/network/admin/listener.ora
  • $ORACLE_HOME/network/admin/tnsnames.ora
  • $ORACLE_HOME/network/admin/sqlnet.ora
  • /u02/app/oracle/admin/sales/adump
  • /u02/app/oracle/diag

也可以不保留单独的副本,而是决定要将单一中央位置用于这些文件和目录。如果是这样,则必须将文件移到共享磁盘上的相应位置并创建相应的符号链接。

:采取哪种方法取决于个人喜好。单一副本将减少管理开销,但后果是任何错误将适用于所有节点,因此可能妨碍服务启动。

然后,作为最后一道健全性检查,通过在节点之间切换资源组对配置进行测试以确保它已成功升级:

pgyruss1 (root) # clrg switch -n pgyruss1 oracle-rg
pgyruss1 (root) # clrg switch -n pgyruss2 oracle-rg
修订版 1.0,2012 年 5 月 1 日

通过 FacebookTwitterOracle 博客关注我们。