1、關閉資料庫執行個體:
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
二、資料庫的啟動和關閉
1、關閉之前查看一下資料庫執行個體的情況
Srvctl status database -d tar -f -v
1、關閉資料庫
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)管理
1、當前資料初始化參數檔案情況查詢
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,name,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#,status,member from v$logfile order by GROUP#;
新增的組我們指定了兩個成員。
6、可以drop掉新增的日誌組:
ALTER DATABASE DROP LOGFILE GROUP 9;