12.1.0.2 單機 升級 19.16 RAC步驟詳解
叢集環境搭建
作業系統規劃
節點 |
系統版本 |
cpu |
記憶體 |
節點一 |
RHEL7.6 |
>=32 |
>=256G |
節點二 |
RHEL7.6 |
>=32 |
>=256G |
備註:兩個系統配置需完全一樣。以上為最低配置,可以對應增大。系統版本 RHEL7.6 為 19C 最佳實踐版本。
主機檔案規劃
兩個節點:
掛載點 |
大小 |
/ |
100G |
/oracle |
100G |
/swap |
32G |
/backup |
1T+ |
備註:以上檔案系統都必須建立單獨的 lv 裝置。
主機網路卡規劃
節點 |
網路卡數 |
用途 |
節點一 |
2 張物理網路卡或則4張物理網路卡 |
一個網路卡用於叢集內部的私有通訊(私有網路卡),另一個網路卡用於提供對外服務(公共網路卡) |
節點二 |
2 張物理網路卡或者4張物理網路卡 |
備註:4張網路卡可以兩兩做bond(冗餘)。
規劃
節點 |
IP 規劃 |
用途 |
節點一 |
提供2個公網IP |
一個為物理IP,一個為VIP |
提供1個私網IP(不對外,自行設定) |
用於叢集之間通訊IP | |
節點二 |
提供2個公網IP |
一個為物理IP,一個為VIP |
提供1個私網IP(不對外,自行設定) |
用於叢集之間通訊IP | |
|
提供1個SCAN IP |
SCAN IP |
備註:客戶需要提供 5 個公網 IP 地址,兩個私網 IP 地址。
共享儲存規劃
磁碟名稱 |
大小 |
OCRVOTE |
3 塊5G盤 |
DATA |
1.5T+ |
備註:共享儲存需要對映到兩臺主機,並且主機上看到的磁碟名字對應一致。
安裝前準備
兩臺主機安裝上述配置完成之後,需要將相應介質上傳至主機上,如下:
上傳節點 |
上傳目錄 |
上傳安裝包 |
說明 |
節點一 |
/oracle |
系統映象ISO rhel-server-7.6-x86_64-dvd.iso |
叢集安裝前,系統配置使用 |
LINUX.X64_193000_db_home.zip |
資料庫軟體安裝包 | ||
LINUX.X64_193000_grid_home.zip |
叢集軟體安裝包 | ||
p34130714_190000_Linux-x86-64.zip p6880880_190000_Linux-x86-64.zip |
資料庫和叢集補丁包 | ||
compat-libstdc++-33-3.2.3-72.el7.x86_64.rpm |
額外需要作業系統包 |
目標庫資料同步後開啟(12.1.0.2單機)
業務停止
業務停止,確保無新增資料寫入。
源庫和目標庫禁止自動作業任務
alter system set job_queue_processes=0 scope=both sid='*'; |
源庫雙節點關閉後,啟動一號節點
源庫關閉,重新啟動一號節點例項,並確保無業務會話連線至資料庫。在一號節點切換歸檔,資料完全同步後,開啟目標庫。
srvctl stop database -d XX 一號節點: startup 切換歸檔: alter system swich logfile; |
目標庫開啟
停止應用歸檔: ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL; 將STANDBY資料庫切換為PRIMARY資料庫: ALTER DATABASE RECOVER MANAGED STANDBY DATABASE FINISH; 或 ALTER DATABASE RECOVER MANAGED STANDBY DATABASE FINISH FORCE; 檢查狀態: SELECT DATABASE_ROLE FROM V$DATABASE; 開啟目標庫: ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY; ALTER DATABASE OPEN; 或者 shutdown immediate; startup;
|
源庫正常關閉
源庫一號節點正常關閉:
shutdown immediate; |
至此,完成源庫到目標庫資料同步及切換。
和SYSTEM重複物件檢查
select object_name, object_type from dba_objects where (object_name,object_type) in (select object_name,object_type from dba_objects where owner = 'SYS') and owner = 'SYSTEM'; |
無效物件檢查
create table object_2021 as select * from dba_objects; select count(*) from object_2021 where status='INVALIED'; |
確認資料檔案不需要介質恢復且不處於backup模式
select * from v$recover_file;
|
密碼狀態為 EXPIRED 的使用者檢查
確保業務使用者正常:
備註: 在開始升級之前,請確定是否要對密碼處於 EXPIRED 狀態且其帳戶處於 LOCKED 狀態的預設 Oracle 資料庫帳戶使用密碼身份驗證。
在升級到 Oracle Database 19c 之後,預設的 Oracle 賬號(沒有設定密碼並且處於 EXPIRED 和 LOCKED 狀態)會被置為 NO AUTHENTICATION 狀態。
由於此新功能,這些預設賬號會變為 schema-only 帳戶,並無法使用密碼驗證。此功能的好處是管理員不再需要定期修改這些 Oracle 預設賬號的密碼。
此功能還可以降低未授權者使用預設密碼侵入這些帳戶的安全風險。
如果要在升級期間阻止將這些 Oracle 帳戶設定為僅 schema-only 帳戶,則必須在開始升級之前為該帳戶設定有效的強密碼,或者在升級後為這些帳戶設定有效的強密碼, 或者在升級前解鎖帳戶。
升級後,管理員還可以為僅 schema-only 啟用密碼身份驗證。 但是,為了更好的安全性, Oracle 建議您將這些帳戶保留為 schema-only 賬號。 |
處理分散式事務
SQL>
IF THIS RETURNS ROWS YOU SHOULD DO THE FOLLOWING: SQL> SELECT LOCAL_TRAN_ID FROM DBA_2PC_PENDING; SQL> EXECUTE DBMS_TRANSACTION.PURGE_LOST_DB_ENTRY(''); SQL> COMMIT; |
檢查
如果安裝了 Oracle Multimedia 或者 Oracle Spatial ,在安裝前檢查 PUBLIC synonym AREA 。它應當被定義為 OGC_AREA 的同義詞,否則會導致升級後一些 DB 元件是失效的狀態
SQL> select owner, synonym_name, table_owner, table_name from dba_synonyms where synonym_name = 'AREA';
OWNER SYNONYM_NAME TABLE_OWNER TABLE_NAME ------------ -------------------- --------------- -------------------- PUBLIC AREA MDSYS OGC_AREA
|
禁用所有自定義的 before/after DDL 型別的觸發器
SQL> SELECT TRIGGER_NAME,TRIGGER_TYPE,STATUS,ACTION_TYPE FROM all_triggers where trigger_name like '%DDL%';
SQL> SELECT TRIGGER_NAME,TRIGGER_TYPE,STATUS,ACTION_TYPE FROM all_triggers where TRIGGERING_EVENT like '%DDL%';
ALTER TRIGGER GGS_DDL_TRIGGER_BEFORE DISABLE;
|
收集資料字典統計資訊
EXEC DBMS_STATS.GATHER_DICTIONARY_STATS; |
執行preupgrade.jar升級預檢
19c 用 preupgrade.jar 替換了 utlu112i.sql 來執行預檢工作,這個 java 程式會生成兩個 sql 指令碼檔案來修復一些簡單的問題,比如提前收集字典統計資訊之類,但是很多仍然需要手工操作
preupgrade.jar 語法如下
$Earlier_release_Oracle_home/jdk/bin/java -jar $New_release_Oracle_home/rdbms/admin/preupgrade.jar [FILE|TERMINAL] [TEXT|XML] [DIR output_dir]
FILE|TERMINAL 指定檢查結果輸出到終端還是檔案,預設是檔案
TEXT|XML 指定結果格式是文字還是 XML ,預設是文字
DIR - 指定日誌輸出到 <output_dir> 目錄 .
如果沒有指定 output_dir 目錄,則優先到 $ORACLE_BASE/cfgtoollogs/<dbname>/preupgrade/ 目錄,如果沒有 ORACLE_BASE 環境變數則到 $ORACLE_HOME/cfgtoollogs/<db_name>/preupgrade/
~ export ORACLE_BASE=/u01/app/oracle #### 注意要用 12c 的 jdk 來執行 export ORACLE_HOME=/u01/app/oracle/product/12.2.0/dbhome_1 export ORACLE_SID=XX
$ORACLE_HOME/jdk/bin/java -jar /oracle/product/19.3.0/dbhome_1/rdbms/admin/preupgrade.jar file text dir ./precheck.log
================== PREUPGRADE SUMMARY ================== /home/oracle/precheck.log/preupgrade.log /home/oracle/precheck.log/preupgrade_fixups.sql /home/oracle/precheck.log/postupgrade_fixups.sql
Execute fixup scripts as indicated below:
Before upgrade:
Log into the database and execute the preupgrade fixups @/home/oracle/precheck.log/preupgrade_fixups.sql
After the upgrade:
Log into the database and execute the postupgrade fixups @/home/oracle/precheck.log/postupgrade_fixups.sql
|
日誌顯示:
more preupgrade.log Report generated by Oracle Database Pre-Upgrade Information Tool Version 19.0.0.0.0 Build: 1 on 2021-01-05T16:47:28 ......... ......... ORACLE GENERATED FIXUP SCRIPT ============================= All of the issues in database XX which are identified above as AFTER UPGRADE "(AUTOFIXUP)" can be resolved by executing the following
SQL>@/home/oracle/precheck.log/postupgrade_fixups.sql
|
執行:
@/home/oracle/precheck.log/preupgrade_fixups.sql |
正式升級資料庫 ,刷資料字典升級資料庫
把引數檔案從 12C $ORACLE_HOME/dbs 下複製到 19C $ORACLE_HOME/dbs 下。
以 19c 軟體啟動
source .profile19c echo $ORACLE_HOME SQL> startup upgrade
cd / oracle /product/19.3.0/dbhome_1/bin nohup ./dbupgrade & |
複製tnsnames.ora和密碼檔案到19c環境
$ cp $ORACLE_HOME/network/admin/tnsnames.ora . $ cp $ORACLE_HOME/dbs/orapwXX . |
備註: 如果 REMOTE_LOGIN_PASSWORDFILE 初始化引數設定為 EXCLUSIVE ,則使用 ORAPWD 建立或遷移密碼檔案。 Oracle Database 12c 及更高版本為 ORAPWD 提供了一個新選項,用於從現有資料庫遷移密碼檔案。
對於 Oracle Database 12c 第 2 版( 12.2 )及更高版本,如果 REMOTE_LOGIN_PASSWORDFILE 設定為 SHARED ,則會收到升級前檢查驗證警告。 您可以選擇以下選項之一來解決此問題:
透過設定 REMOTE_LOGIN_PASSWORDFILE = NONE 完全禁用基於密碼檔案的身份驗證
透過設定 REMOTE_LOGIN_PASSWORD = EXCLUSIVE 限制基於密碼檔案的身份驗證 |
重新開啟資料庫刷無效物件
sqlplus / as sysdba SQL> SQL> startup |
元件狀態檢查:
SQL>col COMP_NAME for a55; SQL> set pages 400; SQL> select comp_name,version,status from dba_registry; |
修復無效物件:
$ sqlplus "/ AS SYSDBA" SQL> @ |
此時 dba_registry 內所有元件狀態從 UPGRADED 變為 VALID 。
如果元件 Oracle Real Application Clusters 的狀態為 OPTION OFF ,則 當轉換為RAC後,再 對該元件進行重新編譯。
執行 Post-Upgrade Status 工具, utlusts.sql 並且檢查升級的日誌
$ sqlplus "/as sysdba" SQL> STARTUP SQL> @?/rdbms/admin/utlusts.sql |
注意 : 之前版本的 utluNNNs.sql 在 19c 上被替換為 utlusts.sql
注意 : 如果執行 utlusts.sql 時碰到錯誤 "ORA-06502: PL/SQL: numeric or value error: character string buffer too small" ,那麼執行
$ sqlplus "/as sysdba" SQL> STARTUP SQL> @?ORACLE_HOME/rdbms/admin/utlusts.sql TEXT |
資料庫升級後 ,無效物件比對
對比之前的無效物件進行確認
select owner,object_name from dba_objects where status<>'VALID' and object_name not in (select object_name from object_2021 where status<>'VALID'); |
執行預檢生成的修復指令碼
SQL>@/home/oracle/precheck.log/postupgrade_fixups.sql |
重新收集統計資訊
升級那些使用 DBMS_STATS 建立的統計資訊表(Statistics Tables)
如果我們使用 DBMS_STATS.CREATE_STAT_TABLE 手工建立了一些統計資訊表( statistics tables ),那麼執行下面的命令來升級這些表(如果沒有建立過統計資訊表,那這一步驟可以忽略)。例如:
EXECUTE DBMS_STATS.UPGRADE_STAT_TABLE('SYS', 'dictstattab'); 對每個統計資訊表都要執行一遍上面的命令。 |
修改RAC引數檔案
mv /oracle/app/product/19.3.0/db_1/dbs/initXX1.ora /oracle/app/product/19.3.0/db_1/dbs/initXX1.ora.bak |
vi /oracle/app/product/19.3.0/db_1/dbs/initXX1.ora *.audit_file_dest=xxx *.compatible=xxx *.control_files=xxx *.db_block_size=8192 *.db_create_file_dest='+DATA' *.db_domain='' *.db_file_multiblock_read_count=16 *.db_name='XX' *.db_recovery_file_dest='+DATA' *.db_recovery_file_dest_size=429496729600 *.dispatchers='(PROTOCOL=TCP) (SERVICE=XXXDB)' *.job_queue_processes=0 *.log_archive_dest_1='LOCATION=+DATA' *.log_archive_format='%t_%s_%r.dbf' *.open_cursors=300 *.pga_aggregate_target=21474800000 *.processes=3000 *.remote_login_passwordfile='exclusive' *.sessions=3305 *.sga_max_size=85899300000 *.sga_target=80899300000 *.undo_management='AUTO' *.undo_retention=86400 *.undo_tablespace='UNDOTBS1' *.diagnostic_dest='/oracle/app' *.cluster_database=true *.db_files=500 *.remote_listener='rac-scanip:1521' XX1.instance_number=1 XX2.instance_number=2 XX2.thread=2 XX1.thread=1 XX2.undo_tablespace='UNDOTBS2' XX1.undo_tablespace='UNDOTBS1' |
使用ORACLE_SID=XX1 startup nomount 建立: create spfile='+data' from pfile; |
修改雙節點$ORACLE_HOME/dbs 目錄下引數檔案,指向asm中的spfile路徑
一節點:
vi $ORACLE_HOME/dbs/initXX1.ora SPFILE='+data/XX/PARAMETERFILE/spfile.434.989222673' |
二節點:
vi $ORACLE_HOME/dbs/initXX2.ora SPFILE='+data/XX/PARAMETERFILE/spfile.434.989222673' |
注意:如果例項從單機的名稱變成rac的名稱,那麼兩個節點的密碼檔名字都需要作出相應的更改。
新增二節點資源
shutdown immediate; export ORACLE_SID=XX1 startup; 建立二節點undo (如果undotbs2已經複製過來,這步忽略) create undo tablespace undotbs2 datafile '+DATA/XX/datafile/undotbs02.dbf' size 1G autoextend on; |
建立二節點日誌檔案
alter database add logfile thread 2 group 8 '+DATA/XX//ONLINELOG/redo2_01' size 800m; alter database add logfile thread 2 group 9 '+DATA/XX/ONLINELOG/redo2_02' size 800m;
|
啟用2節點redo
alter database enable thread 2; |
重置temp檔案
SQL> select file_name from dba_temp_files;
create temporary tablespace temp1 tempfile '+DATA' size 1G autoextend on; alter database default temporary tablespace temp1; drop tablespace temp including contents and datafiles; create temporary tablespace temp tempfile '+DATA' size 1G autoextend on; alter database default temporary tablespace temp; drop tablespace temp1 including contents and datafiles;
( 刪除臨時表空間hang,嘗試推出當前會話,重新登陸後刪除。)
|
重新整理RAC元件
SQL>spool on SQL>spool catclust.txt SQL>@?/rdbms/admin/catclust.sql SQL>spool off
重新整理完成後,重新編譯無效物件 SQL>@?/rdbms/admin/utlrp.sql |
將資料庫及例項加入叢集管理
二節點:
檢查二節點是否存在目錄 :*.audit_file_dest='/oracle/app/admin/XX/adump'
一節點:
手工關閉正在執行的例項
shutdown immediate;
su - oracle srvctl add database -d XX -o '/oracle/app/product/19.3.0/db_1' -p '+data/XX/PARAMETERFILE/spfile.434.989222673' srvctl add instance -d XX -i XX1 -n rac1 srvctl add instance -d XX -i XX2 -n rac2
srvctl start instance -d XX -n rac1 srvctl start instance -d XX -n rac2 srvctl status database -d XX |
檢視磁碟組版本:
select name,state,type,total_mb,compatibility,database_compatibility from v$asm_diskgroup; |
修改磁碟組版本:
ALTER DISKGROUP data SET ATTRIBUTE 'compatible.asm' = '19.0.0.0.0'; ALTER DISKGROUP data SET ATTRIBUTE 'compatible.rdbms' = '19.0.0.0.0'; |
磁碟組的屬性只能增大,不能減小,如果增大過程出現錯誤,那麼只能透過重建磁碟組來調整相容性屬性值。
重啟兩節點驗證有沒有報錯
srvctl stop database -d XX srvctl start database -d XX su – gird crs_stat –t |
啟動之前的DDL觸發器:
SQL> SELECT TRIGGER_NAME,TRIGGER_TYPE,STATUS,ACTION_TYPE FROM all_triggers where trigger_name like '%DDL%'; TRIGGER_NAME TRIGGER_TYPE STATUS ACTION_TYPE ------------------------------ ---------------- -------- ----------- GGS_DDL_TRIGGER_BEFORE BEFORE EVENT ENABLED PL/SQL NO_VM_DDL BEFORE EVENT DISABLED PL/SQL
ALTER TRIGGER GGS_DDL_TRIGGER_BEFORE ENABLE; |
開啟自動任務:
alter system set job_queue_processes=1000 scope=both sid='*'; |
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31547506/viewspace-2932434/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 簡單介紹CentOS6升級glibc操作步驟CentOS
- centos升級openssl方法及步驟CentOS
- dp安裝包升級步驟
- CH592_IAP升級步驟H5
- CATIA許可證升級步驟
- 【ASK_ORACLE】Relink RAC叢集詳細步驟Oracle
- Oracle 12c升級需遵循的簡單步驟NFOracle
- Oracle從10g升級到11g詳細步驟Oracle
- 單例項Primary快速搭建Standby RAC參考手冊(19.16 ADG)單例
- Centos7.2_Oracle12.1.0.2_RAC_installCentOSOracle
- windows10怎樣升級到10586_windows10電腦升級到10586詳細步驟Windows
- vnc安裝步驟,vnc安裝步驟詳解VNC
- 【Zabbix】ZABBIX3.0升級到3.2步驟
- CentOS6.4 升級到7.0的步驟CentOS
- 轉載:Ubuntu 升級 golang 版本完美步驟UbuntuGolang
- oracle 10 rac 升級 10.2.0.1升級到10.2.0.5Oracle
- 【RAC】RAC更換心跳地址和RAC更換儲存主要步驟
- mongodb單機從3.2升級到4.0.4升級MongoDB
- 多圖詳解:不停機分庫分表五個步驟
- rac新增節點步驟(11g)
- Oracle RAC叢集解除安裝步驟Oracle
- A*演算法(超級詳細講解,附有舉例的詳細手寫步驟)演算法
- 架構師升級步驟和平時的工作內容!架構
- 架構師升級步驟和平時的工作內容架構
- 【BUILD_ORACLE】Oracle RAC配置ASM Filter Driver(ASMFD)(二)詳細配置步驟UIOracleASMFilter
- MySql 5.7.14 解壓版安裝步驟詳解MySql
- oracle rac 11.2.0.3 升級到11.2.0.4Oracle
- windows10 家庭版升級專業版的圖文步驟(無損升級)Windows
- mediacreationtool升級win10操作步驟_mediacreationtool工具怎麼升級win10系統Win10
- DKhadoop環境安裝配置步驟詳解Hadoop
- 11gR2 RAC新增節點步驟
- 【UPGRADE】升級到Oracle18c基本步驟參考(留存)Oracle
- 【RAC】RAC搭建步驟Linux7.2+11G(基於Vmware+Openfile)Linux
- Nacos 本地單機版部署步驟和使用
- 詳解資料處理的六步驟
- 19c rac自動打補丁步驟
- 打包升級:node-cron原理詳解
- 單核心,ospf子公司通訊詳細實驗步驟單核