ITPub博客

首页 > 数据库 > Oracle > RAC常用命令

RAC常用命令

原创 Oracle 作者:静以致远√团团 时间:2013-11-30 19:44:20 0 删除 编辑
最近今天尝试在RedHat5.4上装RAC,成功后对维护一知半解,现总结一下rac基本的操作

在集群的某个节点上创建日志组:
ALTER DATABASE ADD LOGFILE THREAD 2 GROUP 5;
ALTER DATABASE ADD LOGFILE THREAD 2 GROUP 6;

启用某个线程上的日志组:
ALTER DATABASE ENABLE THREAD 2;

删除某组日志:
alter database drop logfile group 5;
alter database drop logfile group 6;


正常情况下,节点只能更改自己的undo表空间,但是可以读所有undo表空间,在进行恢复
的时候,节点可以更改读取任何一个undo表空间

查看系统中undo数据文件:
SQL> select name from v$datafile;
NAME
--------------------------------------------------------------------------------
+GROUPA/orcl/datafile/system.256.796181943
+GROUPA/orcl/datafile/undotbs1.258.796181945
+GROUPA/orcl/datafile/sysaux.257.796181943
+GROUPA/orcl/datafile/users.259.796181945
+GROUPA/orcl/datafile/example.264.796182149
+GROUPA/orcl/datafile/undotbs2.265.796182327
+GROUPA/orcl/datafile/undotbs3.270.796570955

在rac1上查看当前节点使用的undo表空间:
SQL> show parameter undo_tablespace
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
undo_tablespace                      string      UNDOTBS1


在rac2上查看当前节点使用的undo表空间:
SQL> show parameter undo_tablespace
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
undo_tablespace                      string      UNDOTBS2


将rac1的undo表空间设置成新创建的undotbs3:
SQL> ALTER SYSTEM SET UNDO_TABLESPACE=undotbs3 SID='orcl1';
System altered.

SQL> show parameter undo_tablespace
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
undo_tablespace                      string      UNDOTBS3

删除undotbs3:
SQL> ALTER SYSTEM SET UNDO_TABLESPACE=undotbs1 SID='orcl1';
System altered.

SQL> show parameter undo_tablespace
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
undo_tablespace                      string      UNDOTBS1

SQL> drop tablespace undotbs3 including contents and datafiles;
Tablespace dropped.


? 多个实例可以同时打开同一个数据库
? 关闭一个实例不会影响其他正在运行的实例
? SHUTDOWN TRANSACTIONAL LOCAL 不会等待其他实例完成事务处理
? 可以通过使用下列工具启动和停止RAC 实例:
– Server Control (SRVCTL) 实用程序
– SQL*Plus
? 关闭RAC 数据库意味着关闭所有正在访问该数据库的实例

1. 通过SQL*Plus启动和停止RAC 实例:
$ echo $ORACLE_SID
orcl1
sqlplus / as sysdba
SQL> shutdown immediate
SQL> startup
$ echo $ORACLE_SID
orcl2
sqlplus / as sysdba
SQL> shutdown immediate
SQL> startup

2. 通过SRVCTL启动和停止RAC 实例:
? start/stop 语法:
srvctl start|stop instance -d -i
[-o open|mount|nomount|normal|transactional|immediate|abort>]
[-c | -q]
srvctl start|stop database -d
[-o open|mount|nomount|normal|transactional|immediate|abort>]
[-c | -q]
? 示例:
关闭所有实例:
rac2->  srvctl stop instance -d orcl -i orcl1,orcl2
[root@rac2 ~]# crs_stat -t
Name           Type           Target    State     Host        
------------------------------------------------------------
ora.orcl.db    application    OFFLINE   OFFLINE               
ora....l1.inst application    OFFLINE   OFFLINE               
ora....l2.inst application    OFFLINE   OFFLINE               
ora....SM1.asm application    ONLINE    ONLINE    rac1        
ora....C1.lsnr application    ONLINE    ONLINE    rac1        
ora.rac1.gsd   application    ONLINE    ONLINE    rac1        
ora.rac1.ons   application    ONLINE    ONLINE    rac1        
ora.rac1.vip   application    ONLINE    ONLINE    rac1        
ora....SM2.asm application    ONLINE    ONLINE    rac2        
ora....C2.lsnr application    ONLINE    ONLINE    rac2        
ora.rac2.gsd   application    ONLINE    ONLINE    rac2        
ora.rac2.ons   application    ONLINE    ONLINE    rac2        
ora.rac2.vip   application    ONLINE    ONLINE    rac2 
       
rac2-> srvctl start instance -d orcl -i orcl1,orcl2
[root@rac2 ~]# crs_stat -t
Name           Type           Target    State     Host        
------------------------------------------------------------
ora.orcl.db    application    ONLINE    ONLINE    rac1        
ora....l1.inst application    ONLINE    ONLINE    rac1        
ora....l2.inst application    ONLINE    ONLINE    rac2        
ora....SM1.asm application    ONLINE    ONLINE    rac1        
ora....C1.lsnr application    ONLINE    ONLINE    rac1        
ora.rac1.gsd   application    ONLINE    ONLINE    rac1        
ora.rac1.ons   application    ONLINE    ONLINE    rac1        
ora.rac1.vip   application    ONLINE    ONLINE    rac1        
ora....SM2.asm application    ONLINE    ONLINE    rac2        
ora....C2.lsnr application    ONLINE    ONLINE    rac2        
ora.rac2.gsd   application    ONLINE    ONLINE    rac2        
ora.rac2.ons   application    ONLINE    ONLINE    rac2        
ora.rac2.vip   application    ONLINE    ONLINE    rac2   
rac1-> srvctl start database -d orcl -o open


默认情况下,当系统重启时,oracle会自动启动资源,如:VIP, listener, instance, ASM, database services, 和
其他的资源
查看默认的设置:
rac1-> srvctl config database -d orcl -a
rac1 orcl1 /u01/app/oracle/product/10.2.0/db_1
rac2 orcl2 /u01/app/oracle/product/10.2.0/db_1
DB_NAME: orcl
ORACLE_HOME: /u01/app/oracle/product/10.2.0/db_1
SPFILE: +GROUPA/orcl/spfileorcl.ora
DOMAIN: null
DB_ROLE: null
START_OPTIONS: null
POLICY:  AUTOMATIC
ENABLE FLAG: DB ENABLED

将其改为手动的:
rac1-> srvctl modify database -d orcl -y MANUAL;
rac1-> srvctl config database -d orcl -a
rac1 orcl1 /u01/app/oracle/product/10.2.0/db_1
rac2 orcl2 /u01/app/oracle/product/10.2.0/db_1
DB_NAME: orcl
ORACLE_HOME: /u01/app/oracle/product/10.2.0/db_1
SPFILE: +GROUPA/orcl/spfileorcl.ora
DOMAIN: null
DB_ROLE: null
START_OPTIONS: null
POLICY:  MANUAL
ENABLE FLAG: DB ENABLED

将其改为自动的:
rac1-> srvctl modify database -d orcl -y AUTOMATIC;
rac1-> srvctl config database -d orcl -a

rac1 orcl1 /u01/app/oracle/product/10.2.0/db_1
rac2 orcl2 /u01/app/oracle/product/10.2.0/db_1
DB_NAME: orcl
ORACLE_HOME: /u01/app/oracle/product/10.2.0/db_1
SPFILE: +GROUPA/orcl/spfileorcl.ora
DOMAIN: null
DB_ROLE: null
START_OPTIONS: null
POLICY:  AUTOMATIC
ENABLE FLAG: DB ENABLED


? 如果使用DBCA,则将创建SPFILE
? 必须在共享卷或共享裸设备上创建SPFILE
? 所有实例都使用同一SPFILE
每个节点上有一个pfile,指向spfile
在节点1:

cd $ORACLE_HOME/dbs
vi initorcl1.ora内容如下:
SPFILE='+GROUPA/orcl/spfileorcl.ora'

在节点2:
cd $ORACLE_HOME/dbs
vi initorcl2.ora内容如下:
SPFILE='+GROUPA/orcl/spfileorcl.ora'
修改参数值:
可以从任何实例中使用ALTER SYSTEM SET 命令更改参数设置:
ALTER SYSTEM SET SCOPE=MEMORY sid='';
有以下SID项:
– *:适用于所有实例
:只适用于
优先于*
例如:
在orcl1更改所有实例的参数:
alter system set sga_max_size=500M scope=spfile sid='*';
SQL> shutdown immediate
SQL> startup
SQL> show parameter sga_max_size
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
sga_max_size                         big integer 500M

在orcl2查看参数:
SQL> shutdown immediate
SQL> startup
SQL> show parameter sga_max_size
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
sga_max_size                         big integer 500M

只更改orcl1的参数:

SQL> alter system set sga_max_size=272M scope=spfile sid='orcl1';
System altered.

SQL> shutdown immediate
SQL> startup
SQL> show parameter sga_max_size
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
sga_max_size                         big integer 272M
在实例2查看参数:

SQL> shutdown immediate
SQL> startup
SQL> show parameter sga_max_size
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
sga_max_size                         big integer 500M



srvctl命令是RAC维护中最常用的命令这个工具可以操作下面几种资源:Database 、Instance
ASM、service、listener和Node Application、node application又包括GSD、ONS、VIP这
些资源

在RAC 中使用SRVCTL管理ASM
? SRVCTL 使您可以从Oracle Clusterware (OC) 的角度管理ASM:
   – 向OCR 添加ASM 实例。
   – 启用 ASM 实例以自动重新启动 OCR
   – 启动ASM 实例。
   – 关闭ASM 实例。
   – 禁用ASM 实例以禁止自动重新启动OCR
   – 从OCR 中删除ASM 实例配置
   – 获得某些状态信息
   – 将ASM 实例相关性设置为数据库实例
? DBCA 允许您创建ASM 实例,并且可以帮助您通过OCR添加和启用这些实例
在RAC 中使用ASM 和SRVCTL:示例

? 在指定节点上启动ASM 实例:
$ srvctl start asm –n orcl1

? 在指定节点上停止ASM 实例:
$ srvctl stop asm –n orcl1 –o immediate

停止RAC:
emctl stop dbconsole 
srvctl stop instance -d orcl -i orcl1 
srvctl stop instance -d orcl -i orcl2 
srvctl stop asm -n rac1
srvctl stop asm -n rac2
srvctl stop nodeapps -n rac1 
srvctl stop nodeapps -n rac2 
或者用 $ crs_stop -all

启动RAC:      
和上面的步骤正好相反即 
srvctl start nodeapps -n rac1 
srvctl start nodeapps -n rac2 
srvctl start asm -n rac1 
srvctl start asm -n rac2 
srvctl start instance -d orcl -i orcl1 
srvctl start instance -d orcl -i orcl2 
emctl start dbconsole 
或者用 $ crs_start -all

Oracle10g RAC 检查命令:
Oracle10g RAC 数据库的 nodeapps 有 VIP, GSD, Listener, ONS .
$ srvctl status nodeapps –n rac1 (检查VIP, GSD,ONS, Listener 等(所有节点))
VIP is running on node: gnd-rac01
GSD is not running on node: gnd-rac01
Listener is not running on node: gnd-rac01
ONS daemon is not running on node: gnd-rac01 
$crsctl check crs (检查Oracle Cluster 状态: CSS, CRS, EVM .)
CSS appears healthy
CRS appears healthy
EVM appears healthy
$ crs_stat -t (全面检查状态 )

1. 对于offline 的进程,我们可以直接手动的启动它

crs_start ora.rac.orcl.rac1.srv

2. 对于UNKNOWN 的进程,我们可以先stop 它, 再start

crs_stop ora.rac2.gsd
crs_start ora.rac2.gsd

3. 如果crs_stop不能结束,crs_start 不能启动的进程,我们有2中方法来解决:

3.1)用crs_stop -f  参数把crs中状态是UNKNOWN的服务关掉
        然后再用crs_start -f (加一个-f的参数)启动所有的服务就
        可以要分别在两个节点上执行;

crs_start -f ora.rac.orcl.rac1.srv

crs_stop -f ora.rac.orcl.rac1.srv
 
3.2)转换到root用户下用/etc/init.d/init.crs stop先禁用crs,然后再用/etc/init.d/init.crs start去启用crs
       启用crs后会自动启动crs的一系列服务,注意此种方法需要在两台节点上都执行;

4. 可以用命令一次启动和关闭相关进程

crs_stop -all
crs_start -all

unknown问题可以创建pfofile,然后进行注册,在将其重启:
crs_profile -create resource_name -t application
crs_register resource_nam
crs_stop resource_nam
crs_start resource_nam






来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29320885/viewspace-1061737/,如需转载,请注明出处,否则将追究法律责任。

下一篇: RAC备份与恢复
请登录后发表评论 登录
全部评论
每个人都有梦想,去实现吧!

注册时间:2013-11-14

  • 博文量
    164
  • 访问量
    2103462