Srvctl stop instance -d tar -n rac2
只停一个节点上的数据库实例rac2
2、查看数据库实例状态:
Srvctl status database -d tar -f -v
我这边四节点集群,目前只起了节点1和节点2.
3、启动实例
Srvctl start instance -d tar -n rac2
指定启动节点2上的数据库实例
4、再次查看数据库实例状态:
Srvctl status database -d tar -f -v
Srvctl status database -d tar -f -v
Srvctl stop database -d tar
2、关闭后查看实例状态:
Srvctl status database -d tar -f -v
发现所有的实例都已经关闭了。
3、启动数据库
Srvctl start database -d tar
跟单节点的起库步骤差不多,不同的是会起集群所有的数据库实例。
4、启动后在次查看数据库实例状态
Srvctl status database -d tar -f -v
发现所有的节点上的实例都起来了。
三、参数文件(pfile、spfile)管理
Su - oracle
sqlplus / as sysdba
Show parameter spfile
2、可根据pfile创建spfile
create spfile=’+DG_ZERO/zerodb/spfilezerodb.ora’from
pfile=’/zerodb/11g/db_base/db_home/dbs/initzero.ora’;
同样,也可以通过spfile创建pfile:
3、值说明:
在参数前面是*号,表明对所有的节点都生效
*.parallel_max_servers =40
参数前面是实例名,表示该参数只对该特定的实例生效
tar2.parallel_max_servers=42
1、两种修改参数值方式:
A、直接修改pfile文件,然后通过pfile生成spfile。
B、直接通过命令行,以alter system的方式改。
show parameter parallel_max_servers;
修改所有所有的实例:
alter system set parallel_max_servers=42 sid='*' scope=both;
节点1:
节点2:
修改所有的实例(同上面是一个意思):
alter system set parallel_max_servers=42 scope=both;
修改指定的实例(tar2):
alter system set parallel_max_servers=42 sid='tar2' scope=both;
show parameter parallel_max_servers;
四、会话管理
1、创建测试用户,节点1:
Su - oracle
sqlplus / as sysdba
create user c##test identified by Xtyt2008;
grant dba to c##test;
2、节点2登陆数据库
Su - oracle
sqlplus / as sysdba
Conn c##test/Xtyt2008
节点2:
3、节点1
查询所有的会话:
select inst_id,sid,serial#,USERNAME from gv$session;
节点1:
可以杀掉刚才在节点2登陆的那个会话:
alter system kill session '39,6135,@2';
4、然后在节点2刚才登陆的地方执行一条sql,会产生报错(因为会话已经被杀掉了)
Select sysdate from dual;
节点2:
五、回滚表空间的管理
1、查询回滚表空间的情况:
column name format a20;
column value format a20;
select inst_id,name,value from gv$parameter where name like '%undo_tablespace%';
可以看到有两个回滚表空间,一个实例对应一个回滚表空间。
2、下面我们把实例二的回滚表空间换成新的undo表空间
3、新建一个undo表空间:
CREATE UNDO TABLESPACE UNDOTBS_TYT
DATAFILE '+data/tar/datafile/TYT.db' SIZE 10M AUTOEXTEND ON;
4、修改undo表空间为新的undo表空间,实例指定为实例2(在节点1上做)
alter system set UNDO_TABLESPACE=UNDOTBS_TYT sid='tar2' scope=both;
5、我们在执行上面的查询语句:
select inst_id,value from gv$parameter where name like '%undo_tablespace%';
发现并没有变化。
节点1:
节点2:
6、想要变化,有两种方式
A、重启实例二。
B、把alter system set UNDO_TABLESPACE=UNDOTBS_TYT sid='tar2' scope=both;语句再在实例2上执行一遍。
节点2:
六、联机重做日志文件的管理
1、查看当前数据库联机重做日志的情况
可以看到有几个日志组,每个组属于哪个实例:
select GROUP#,thread# from v$log;
2、可以看到每个组有几个日志文件(成员)
column MEMBER format a50;
select group#,status,member from v$logfile order by GROUP#;
可以看到一个日志组有两个成员。
不要使用gv$log,gv$logfile,其列出的信息是冗余的,容易误导
select thread#,group# from gv$log;
select INST_ID,group#,member from gv$logfile;
3、新增一个组,组编号是5,这个组给实例1
ALTER DATABASE
ADD LOGFILE INSTANCE 'tar1'
GROUP 9
('+DATA/TAR/ONLINELOG/redo_z111','+DATA/TAR/ONLINELOG/redo_z222') SIZE 10M reuse;
4、新增完成后再次查看日志组的情况:
select GROUP#,thread# from v$log;
发现实例1多了一个组9.
4、还可以查看该新增的组的成员信息
column MEMBER format a50;
select group#,member from v$logfile order by GROUP#;
新增的组我们指定了两个成员。
6、可以drop掉新增的日志组:
ALTER DATABASE DROP LOGFILE GROUP 9;