資料庫升級-物理重新整理資料字典

yingyifeng306發表於2020-08-11


說明

環境說明

資料庫為 10gRAC 環境 (10.2.0.5.4) ,作業系統為 6100-07

目標升級為 11gRAC 環境 (11.2.0.4) ,作業系統為 6100-07

例項名稱: crmdb1 crmdb2

新需求:

1.       需要新分配一個 IP (作為 scan IP 用)

2.       需要劃三塊共享磁碟,每塊 1G 大小(用作 ocrvote 磁碟組)

 

IP 規劃:

目前 IP 規劃:

IP

Alias

備註


crmdb01

一節點 public IP


crmdb02

二節點 public IP


crmdb01-vip

一節點 VIP


crmdb02-vip

二節點 VIP


crmdb01-priv

一節點心跳 IP


crmdb02-priv

二節點心跳 IP

 

11g 後新增 SCAN-IP

IP

Alias

備註


crmdb01

一節點 public IP


crmdb02

二節點 public IP


crmdb01-vip

一節點 VIP


crmdb02-vip

二節點 VIP


crmdb01-priv

一節點心跳 IP


crmdb02-priv

二節點心跳 IP


crmdb-scan

SCAN-IP(IP 待定 )

 

升級流程

整體升級流程 :

11 18 號)

步驟

流程計劃

時間估算

1

CRM 10gRAC 環境開始備份,上傳安裝介質

1 個小時(不停機做)

2

檢查 OS 資源 雙節點檢查 建立 grid 使用者

30 分鐘 (不停機做)

3

停止 CRM 雙節點資源

10 分鐘 (業務停止)

4

刪除 10g RAC 啟動檔案

5 分鐘 (業務停止)

5

安裝 11g R2 Grid

2 小時 (業務停止)

6

新增 10g 軟體至 11g 叢集中管理

10 分鐘 (業務停止)

7

正常業務測試

30 分鐘 (業務停止)

 

11 21

步驟

流程計劃

時間估算

1

安裝 11g rdbms 軟體( 11.2.0.4

線上操作 (業務不停止)

2

升級前檢查環境 utlu112i.sql 指令碼

線上操作 (業務不停止)

3

正式升級(刷資料字典,刷 RAC 元件)

80 分鐘   (業務停止)

4

編譯無效物件

20 分鐘   (業務停止)

5

刪除原先 10g rdbms 服務,重新註冊 11g 環境的服務

20 分鐘   (業務停止)

7

正常業務測試


總結時間:

總計花費 2 天時間

業務停止時間 5 小時(資料庫層面)

18 號詳細操作流程

前期準備

前期準備包括備份及介質上傳等:

備份包括備份10g RAC啟動項檔案等:

cp /etc/init.cssd /oracle/bak/.

cp /etc/init.crs /oracle/bak/.

cp /etc/init.crsd /oracle/bak/.

cp /etc/init.evmd /oracle/bak/.

cp /etc/inittab.crs /oracle/bak/.

cp /etc/inittab /oracle/bak/.

tar -cvf /oracle/bak/rc2.d.tar /etc/rc.d/rc2.d

tar -cvf /oracle/bak/oracle.tar /etc/oracle

 

$ORACLE_BASE/ 下的 orainventory 也備份並刪除

上傳 11.2.0.4 grid rdbms 介質

更新檢查 OS 環境

no -a|egrep "tcp_recvspace| tcp_sendspace | udp_recvspace | rfc1323| sb_max | ipqmaxlen |udp_sendspace"

透過以上值確認,對於不正確的進行修改:

no -p -o tcp_recvspace=65536
no -p -o tcp_sendspace=65536
no -p -o udp_sendspace=135168
no -p -o udp_recvspace=1351680
no -p -o rfc1323=1
no -p -o sb_max=4194304
no -r -o ipqmaxlen=512

 

建立grid使用者並修改oracle使用者引數

mkuser -a id=1001 pgrp=oinstall groups=oinstall,dba fsize=-1 cpu=-1 data=-1 core=-1 rss=-1 stack=-1 stack_hard=-1 capabilities=CAP_NUMA_ATTACH,CAP_BYPASS_RAC_VMM,CAP_PROPAGATE grid

 

chuser pgrp=oinstall groups=oinstall,dba fsize=-1 cpu=-1 data=-1 rss=-1 stack=-1 stack_hard=-1 capabilities=CAP_NUMA_ATTACH,CAP_BYPASS_RAC_VMM,CAP_PROPAGATE oracle

ssh 關係設定(設定grid 檢查oracle)

#su – grid

     $mkdir .ssh

     $cd .ssh

     $ssh-keygen –t rsa    // 一路回車

     $ssh-keygen –t dsa

     $cat id_dsa.pub>authorized_keys

$cat id_rsa.pub>>authorized_keys

 

去除時間同步:

使用oracle時間同步服務

mv /etc/ntp.conf /etc/ntp.conf.bak

 

檢查時區:

$ echo $TZ

$date

確保時區一致,兩臺主機的時間相差不超過 1 分鐘

 

停止 CRM 雙節點資源

雙節點停止DBRA資源

雙節點停止rdbms nodeapps asm crs資源

srvctl stop nodeapps –n crmdb01

srvctl stop nodeapps –n crmdb02

srvctl stop asm –n crmdb01

srvctl stop asm –n crmdb02

srvctl stop database –d crmdb

 

  雙節點root使用者關閉crs

crsctl stop crs

 

 

刪除 10g RAC 啟動檔案

刪除啟動配置檔案:

rm /etc/init.cssd

rm /etc/init.crs

rm /etc/init.crsd

rm /etc/init.evmd

rm /etc/rc.d/rc2.d/K96init.crs

rm /etc/rc.d/rc2.d/S96init.crs

rm -Rf /etc/oracle/scls_scr

rm -Rf /etc/oracle/oprocd

rm /etc/inittab.crs

cp /etc/inittab.orig /etc/inittab

刪除 /var/tmp/.oracle/ 下面檔案

刪除 /tmp/.oracle/ 下面的檔案

rm –rf /var/tmp/.oracle/*

rm –rf /tmp/.oracle/*

 

重啟雙節點主機:

shutdown –Fr

  重啟後檢查是否還存在oracle程式

 

安裝 11.2.0.4 grid 軟體

解壓介質: 11.2.0.4 grid

雙節點執行 grid 下面的 rootpre .sh

 

雙節點環境檢查

./runcluvfy.sh stage -pre crsinst -n crmdb01,crmdb02 -verbose

 

開始安裝:

su – grid

./runInstaller

安裝截圖略

 

css

11g grid 使用者下 root 使用者:

# crsctl pin css -n crmdb01 crmdb02

CRS-4664: Node crmdb01 successfully pinned.

CRS-4664: Node crmdb02 successfully pinned.


 

新增 10g 軟體至 11g 叢集中管理

1. 修改磁碟的許可權,建議保持磁碟屬主暫時不修改,確保許可權為 660

2. 雙節點修改 asm_diskstring 新增所有資料磁碟路徑

3. 雙節點 mount 磁碟組

由於在11g 的grid軟體下管理10g的rdbms

所以我們在新增database 和instace 的時候需要用10g的rdbms 使用者環境新增 即oracle使用者的10g rdbms環境

srvctl add database -d crmdb -o /oracle/app/product/10.2.0/db_1

srvctl add instance -d crmdb -i crmdb1 -n crmdb01

srvctl add instance -d crmdb -i crmdb2 -n crmdb02

透過10g rdbms srvctl 命令啟動資料庫

 

檢查local _listener 和remot_listener

確保local_listener 和remot_listener 配置正確

 

remote_listener  :crmdb-scan:1521

local_listener : (DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=130.36.23.7)(PORT=1521))))

 

回退採用刪除 11g grid 安裝介質 回退 10g 啟動項 重新作業系統

透過 grid 使用者 $ORACLE_HOME/deinstall 刪除雙節點 grid 安裝資訊

 

還原 10g RAC 啟動檔案

cp /oracle/bak/inittab /etc/inittab

cp /oracle/bak/inittab.crs /etc/inittab.crs

cp /oracle/bak/init.evmd /etc/init.evmd

cp /oracle/bak/init.crsd /etc/init.crsd

cp /oracle/bak/init.crs /etc/init.crs

cp /oracle/bak/init.cssd /etc/init.cssd

tar –xvf /oracle/bak/rc2.d.tar

tar –xvf /oracle/bak/oracle.tar

 

刪除雙節點/var/tmp/.oracle/下檔案

 

重啟作業系統:

Shutdown –Fr

 


 

21 號詳細操作流程

軟體安裝

安裝 11.2.0.4 rdbms 軟體 可以在晚上 12 點前業務正常執行期間安裝,不影響業務正常使用

切換到 oracle 使用者

su – oracle

  設定 DISPLAY 環境變數

export DISPLAY=

啟動 OUI 開始安裝

圖形介面略

 

升級前環境檢查

執行該指令碼,檢測升級環境

sqlplus '/as sysdba'

SQL> spool Database_Info.log

SQL> @ utlu112i.sql

。。。。。

Spool off

透過create pfile=’/tmp/upgrade/initzhcj.ora’ from spfile;

remote_listener crmdb-scan:1521

local_listener  (DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=172. 16.10.46)(PORT=1521))))

 

開始透過產生的日誌資訊進行引數檔案spfile的修改

 

無效物件表建立

在原生產庫建立物件表

sqlplus “/as sysdba”

spool invald.lst

select owner,object_name,object_type,status from dba_objects where status<>'VALID';

 

select count(*),status from dba_objects group by status;

 

create table invalid_object_201311 as select * from dba_objects where status<>’VALID’;

 

create table old_objects as select * from dba_objects;

建立回退方案

1. 關閉資料庫,停監聽,停 dbconsole 停容災

2. 建立閃回區及閃回區大小

3.  startup mount

create restore point upgrade_point  guarantee flashback database;

 

正式升級

複製原先生產庫下dbs目錄中檔案至新的11g目錄中,修改部分廢棄引數,用pfile啟動startup upgrade

升級資料庫刷資料字典

 

SQL> STARTUP UPGRADE

SQL> SPOOL patch.log

SQL> @?/rdbms/admin/catupgrd.sql

SQL> SPOOL OFF

SQL> SHUTDOWN IMMEDIATE

SQL> STARTUP

SQL> EXEC DBMS_STATS.GATHER_DICTIONARY_STATS; (收集系統資料字典統計資訊)

 

重新整理 RAC 組建

SQL>spool off

SQL>spool catclust.txt

SQL>@?/rdbms/admin/catclust.sql

SQL>spool off

 

 

無效物件編譯

複製原 10g 中的密碼檔案, tnsnames .ora 檔案等等 準備無效物件編譯:

SQL>  @?/rdbms/admin/utlrp.sql

 

在嘗試指令碼編譯不成功的情況可以透過手動編譯無效物件

select 'alter '||object_type|| ' ' || owner ||'.'||object_name || ' compile;' from dba_objects where status='INVALID'; 

 

升級失敗的回退

1. 重定向到 10g rdbms 目錄

$sqlplus / as sysdba

SQL>shutdown  immediate

將profile重新指定到對應的原先10g目錄

 

2. 閃回資料庫

SQL>startup mount

SQL>select  flashback_on from v$database;

SQL>flashback database to restore point upgrade_point;

SQL>shutdown immediate

 

 


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/23732248/viewspace-2710657/,如需轉載,請註明出處,否則將追究法律責任。

相關文章