最近今天尝试在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
在集群的某个节点上创建日志组:
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 数据库的 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/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/29320885/viewspace-1061737/