Oracle 10.2.0.5升級至11.2.0.4

来源:https://www.cnblogs.com/bicewow/archive/2018/12/07/10082931.html
-Advertisement-
Play Games

參照MOS 官方文檔Complete Checklist for Manual Upgrade to Oracle Database 11gR2 (11.2) (Doc ID 837570.1)一、升級前的準備1、複製utlu112i.sql腳本從11G資料庫複製$ORACLE_HOME/rdbms ...


參照MOS 官方文檔
Complete Checklist for Manual Upgrade to Oracle Database 11gR2 (11.2) (Doc ID 837570.1)
一、升級前的準備
1、複製utlu112i.sql腳本
從11G資料庫複製$ORACLE_HOME/rdbms/admin/utlu112i.sql 腳本至10g 資料庫臨時目錄,準備執行
如果不在10g資料庫運行utlu112i.sql腳本,則執行升級腳本catupgrd.sql 時會報以下錯誤:
SQL> SELECT TO_NUMBER('MUST_BE_SAME_TIMEZONE_FILE_VERSION')
2 FROM registry$database
3 WHERE tz_version != (SELECT version from v$timezone_file);
SELECT TO_NUMBER('MUST_BE_SAME_TIMEZONE_FILE_VERSION')
*
ERROR at line 1:
ORA-01722: invalid number


2、在10g資料庫執行utlu112i.sql腳本
使用 SYSDBA許可權執行utlu112i.sql腳本
$ sqlplus '/ as sysdba'
SQL> spool upgrade_info.log
SQL> @utlu112i.sql
SQL> spool off
SQL>
輸出樣例見附件《utlu112i.log》

3、檢查10g資料庫完整性

執行檢查腳本dbupgdiag.sql <===== 腳本在本文件夾
$ sqlplus / as sysdba
sql> alter session set nls_language='American';
sql> @dbupgdiag.sql
sql> exit
輸出樣例見附件《db_upg_diag_orcl_07_Dec_2018_0954.log》

執行編譯失效包腳本utlrp.sql <--腳本在10g資料庫$ORACLE_HOME/rdbms/admin目錄
$ cd $ORACLE_HOME/rdbms/admin
$ sqlplus "/ as sysdba"
SQL> @utlrp.sql

執行健康檢查腳本hcheck.sql <===== 腳本在本文件夾
SQL> spool hcheck.log
SQL> @hcheck.sql
SQL> spool off
輸出樣例見附件《hcheck.log》

4、檢查CONNECT 角色許可權 <===== xx銀行為10.2.x資料庫,此步驟可以略過
資料庫9i和10.1.x以下的版本 connect角色許可權較多有如下許可權
SELECT GRANTEE,PRIVILEGE
FROM DBA_SYS_PRIVS
WHERE GRANTEE ='CONNECT'

GRANTEE PRIVILEGE
------- ----------------------
CONNECT CREATE VIEW
CONNECT CREATE TABLE
CONNECT ALTER SESSION
CONNECT CREATE CLUSTER
CONNECT CREATE SESSION
CONNECT CREATE SYNONYM
CONNECT CREATE SEQUENCE
CONNECT CREATE DATABASE LINK

資料庫11g和10.2以上版本 connect角色許可權較少有如下許可權
SQL> SELECT GRANTEE,PRIVILEGE
2 FROM DBA_SYS_PRIVS
3 WHERE GRANTEE ='CONNECT';

GRANTEE PRIVILEGE
------------------------------ ----------------------------------------
CONNECT CREATE SESSION

5、重建DBLINK <-- XX銀行為10.2.x資料庫,此步驟可以略過

資料庫9i和10.1.x以下的版本,dblink需要刪除重建,在更新後
SELECT 'CREATE '||DECODE(U.NAME,'PUBLIC','public ')||'DATABASE LINK '||CHR(10)
||DECODE(U.NAME,'PUBLIC',Null, 'SYS','',U.NAME||'.')|| L.NAME||chr(10)
||'CONNECT TO ' || L.USERID || ' IDENTIFIED BY "'||L.PASSWORD||'" USING
'''||L.HOST||''''
||chr(10)||';' TEXT
FROM SYS.LINK$ L, SYS.USER$ U
WHERE L.OWNER# = U.USER#;

6、更新 TIMESTAMP WITH TIMEZONE <===== XX銀行為10.2.x資料庫,此步驟可以略過
更新 11.2.0.4. 不需要應用任何 DST 補丁包在 10.2.0.2 , 10.2.0.3 , 10.2.0.4 or 10.2.0.5 . 可以跳過DST相互更新說明.
The 11.2.0.4 RDBMS DST version after the upgrade to 11.2.0.4 will be the same DST version as used in 10.2.0.2 , 10.2.0.3 , 10.2.0.4 or 10.2.0.5.
SQL>SELECT version FROM v$timezone_file;

VERSION
----------
4


7、檢查NLS_NCHAR_CHARACTERSET 為UTF8 or AL16UTF16.
SQL> select value from NLS_DATABASE_PARAMETERS where parameter = 'NLS_NCHAR_CHARACTERSET';
VALUE
----------------------------------------------------------------------------------------------------------------------------------------------------------------
AL16UTF16
如果是UTF8 or AL16UTF16.,則不需要做任何事情
如果不是UTF8 or AL16UTF16.,則按照文檔Note 225912.1操作

8、檢查用戶陳舊的統計信息
可以運行腳本檢查陳舊統計信息check_stale_stats.sql <=====腳本在本文件夾
或者可以回顧腳本utlu112i.sql的輸出內容

SQL> SQL> @check_stale_stats.sql
-- There are no stale statistics in EXFSYS schema.
-- There are no stale statistics in ORDSYS schema.
-------------------------------------------------------------------------------------------------------
-- SYS schema contains stale statistics use the following to gather the statistics --
-----------------------------------------------------------------------------------------------------
EXEC DBMS_STATS.GATHER_DICTIONARY_STATS('SYS',OPTIONS=>'GATHER STALE', ESTIMATE_PERCENT => DBMS_STATS.AUTO_SAMPLE_SIZE, METHOD_OPT => 'FOR ALL COLUMNS SIZE AUTO', CASCADE => TRUE);
-- There are no stale statistics in WMSYS schema.
-- There are no stale statistics in XDB schema.

9、禁用Oracle Database Vault
升級前先禁用,升級後再開啟
SQL> SELECT * FROM V$OPTION WHERE PARAMETER = 'Oracle Database Vault';
PARAMETER VALUE
---------------------------------------------------------------- ----------------------------------------------------------------
Oracle Database Vault
啟動方法自行百度

10、備份Enterprise Manager Database Control Data

11、配置Network ACL's
應用如果使用了Oracle XMLDB中 UTL_TCP, UTL_SMTP, UTL_MAIL, UTL_HTTP, or UTL_INADDR 這些包

12、檢查sys用戶邏輯壞塊
執行檢查腳本@$ORACLE_HOME/rdbms/admin/utlvalid.sql <===== 腳本Oracle Home目錄
執行檢查腳本analyze.sql <===== 腳本在本文件夾
analyze.sq 應該輸出沒有任何錯誤.

13、檢查是否有正在運行的物化視圖
select distinct(trunc(last_refresh)) from dba_snapshot_refresh_times;
select s.obj#,o.obj#,s.containerobj#,lastrefreshdate,pflags,xpflags,o.name,o.owner#, bitand(s.mflags, 8) from obj$ o, sum$ s where o.obj# = s.obj# and o.type# = 42 AND bitand(s.mflags, 8) = 8;
如果第二個查詢有輸出 參照Note 1442457.1

14、確保沒有需要recovery 的數據文件和沒有backup 的數據文件
SELECT * FROM v$recover_file;
SELECT * FROM v$backup WHERE status != 'NOT ACTIVE';

15、檢查有密碼保護的角色
--檢查是否有角色指定了密碼
break on "Password protected Role"
select r.ROLE "Password protected Role",
p.grantee "Assigned by default to user"
from dba_roles r, dba_role_privs p
where r.PASSWORD_REQUIRED = 'YES' and p.GRANTED_ROLE = r.role
and p.default_role = 'YES'
and p.grantee <> 'SYS' and r.role not in
(select role from dba_application_roles);

--One can easily turn these password enabled roles into standard roles by running the script resulting from:
select distinct 'alter role '||role||' not identified;' "-- Statements"
from dba_roles r, dba_role_privs p
where r.PASSWORD_REQUIRED = 'YES' and p.GRANTED_ROLE = r.role
and p.default_role = 'YES'
and p.grantee <> 'SYS' and r.role not in
(select role from dba_application_roles);

16、解決分散式事務
SQL> select * from dba_2pc_pending;
如果上一行有輸出,則執行如下
SQL> SELECT local_tran_id
FROM dba_2pc_pending;
SQL> EXECUTE dbms_transaction.purge_lost_db_entry('');
SQL> COMMIT;

17、檢查是否有備庫存在
SELECT SUBSTR(value,INSTR(value,'=',INSTR(UPPER(value),'SERVICE'))+1)
FROM v$parameter
WHERE name LIKE 'log_archive_dest%' AND UPPER(value) LIKE 'SERVICE%';


18、禁用所有批處理JOB和定時任務
DBMS_JOB, DBMS_SCHEDULER
SQL> execute dbms_scheduler.disable('AUTO_SPACE_ADVISOR_JOB');
SQL> execute dbms_scheduler.disable('job1, job2, sys.jobclass1');
Note 404238.1 : How to Disable an Entry from DBMS_SCHEDULER
Note 1335741.1 : How To Stop A Running Job Using DBMS_JOB
Note 67695.1 : PROCEDURE DBMS_JOB.BROKEN Specification

19、確保SYS 和SYSTEM 使用SYSTEM表空間
SQL> SELECT username, default_tablespace
FROM dba_users
WHERE username in ('SYS','SYSTEM');

SQL> ALTER user SYS default tablespace SYSTEM;
SQL> ALTER user SYSTEM default tablespace SYSTEM;

20、檢查 aud$ 是否存在SYS 和SYSTEM 用戶,並且在SYSTEM表空間
SQL> SELECT owner,tablespace_name
FROM dba_tables
WHERE table_name='AUD$';
如果不在則遷移至SYS用戶

21、檢查資料庫是否有其他的SSL 外部用戶
SQL> SELECT name FROM sys.user$
WHERE ext_username IS NOT NULL
AND password = 'GLOBAL';
如果SSL用戶有,則在升級完成後,執行 步驟33

22、記錄數據文件,日誌文件,控制文件位置,並備份 listener.ora, tnsnames.ora文件
SQL> SELECT name FROM v$controlfile;
SQL> SELECT file_name FROM dba_data_files;
SQL> SELECT group#, member FROM v$logfile;.

23、Listener配置
如果是集群則不需要此步驟,因為在集群配置是更新
停監聽$ lsnrctl stop

24、備份資料庫
對資料庫做一個冷備份或者rman備份

25、參數文件配置
複製initialization.ora文件至<target 11GR2 home>/dbs目錄
推薦去掉參數文件中的隱含參數
使用DIAGNOSTIC_DEST代替USER_DUMP_DEST, BACKGROUND_DUMP_DEST
集群把CLUSTER_DATABASE=FALSE,升級完成後再改為true

26、Win操作系統執行如下
。。。。。。。。。。。

27、Linux 系統驗證以下配置
--11g資料庫環境變數
- ORACLE_BASE
- ORACLE_HOME
- PATH, LD_LIBRARY_PATH , SHLIB_PATH and LIBPATH ( for AIX )

--修改oratab
Sample /etc/oratab
#orcl:/opt/oracle/product/10.2/db_1:N
orcl:/opt/oracle/product/11.2/db_1:N

--如果是從10g升級至11g,驗證一下信息
SQL> select DBMS_STATS.GET_PARAM('METHOD_OPT') from dual;

DBMS_STATS.GET_PARAM('METHOD_OPT')
-------------------------------------------------------------
FOR COLUMNS ID SIZE 1

如果是FOR COLUMNS ID SIZE 1,在升級時會出現問題
SQL>exec DBMS_STATS.SET_PARAM('METHOD_OPT','FOR ALL COLUMNS SIZE AUTO');

二、升級資料庫到11G R2
XX銀行是異機升級,需要先進行資料庫還原 <===============
28、在11g資料庫執行如下升級腳本
--執行catupgrd.sql升級腳本
$ sqlplus "/ as sysdba"
SQL> startup UPGRADE
SQL> set echo on
SQL> SPOOL upgrade.log
SQL> @?/rdbms/admin/catupgrd.sql
SQL> spool off
--如果有陳舊的參數,可以在此時去掉,並將pfile轉換為spfile

--執行catupgrd.sql
$ sqlplus "/as sysdba"
SQL> STARTUP
SQL> @?/rdbms/admin/utlu112s.sql

--執行catuppst.sql
SQL> @?/rdbms/admin/catuppst.sql

--執行utlrp.sql
SQL> @?/rdbms/admin/utlrp.sql

--執行dbupgdiag.sql <===== 檢查腳本,腳本在本文件夾
SQL> @dbupgdiag.sql

三、升級之後的操作
29、驗證 listener.ora文件
lsnrctl start

30、系統環境變數
--確保環境變數指向11g
- ORACLE_BASE
- ORACLE_HOME
- PATH, LD_LIBRARY_PATH, SHLIB_PATH and LIBPATH ( for AIX )

--修改 /etc/oratab <====== XX銀行集群應該不用操作
SID:ORACLE_HOME:Y
For Instance,
orcl:/opt/oracle/product/11.2/db_1:Y

31、檢查DST,與升級前步驟 6 應該一樣
SQL>SELECT version FROM v$timezone_file;

VERSION
----------
4

32、更新DBMS_STATS 包
如果使用DBMS_STATS.CREATE_STAT_TABLE創建過表
則使用EXECUTE DBMS_STATS.UPGRADE_STAT_TABLE('SYS','dictstattab');

33、更新 SSL 用戶
If you are upgrading from 10.2.0.x (or higher), then you are not required to run this command.

34、啟用Database Vault

35、使用UTL 類似包,則執行此步驟

36、編輯init.ora
--如果修改CLUSTER_DATABASE ,則改為true
SQL> create spfile from pfile;

37、鎖定Oracle 自帶用戶
SQL> SELECT username, account_status FROM dba_users ORDER BY username;
ALTER USER username PASSWORD EXPIRE ACCOUNT LOCK;

38、更新 Oracle Text
This is only needed if Oracle Text is in use.

39、更新集群信息 <=========

40、配置EM
如果沒有可跳過

41、配置
TDE (Transparent Data Encryption)
如果沒有可跳過

42、Gather Fixed Object Statistics
在升級後兩周 執行下麵命令修複
SQL>EXECUTE DBMS_STATS.GATHER_FIXED_OBJECTS_STATS;

43、compatible參數修複
參照 Note 1537496.1
--1.修改集群參數cluster_database=false
--2.修複compatible,確保在 11.0.0.0 之上
--3.更新模式打開資料庫 SQL> startup upgrade
--4.執行 SQL> @?/rdbms/admin/c1102000.sql
--5.關閉資料庫
--6.修改集群參數cluster_database=true
--7.正常模式 SQL> startup

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • Zabbix trigger是zabbix 進行告警通知的設定條件 ,當監控獲取的值觸發了設定的條件時,會按照觸發器的設定,執行相應的action 操作 。在zabbix中為了比較方便的設定各種條件,zabbix為我們設計了相應的函數和操作符 。 一、創建觸發器觸發器可以是和模板關聯的,也可以是和主 ...
  • 一 註冊賬號和申請 1 Digital Ocean網址https://cloud.digitalocean.com,可直接通過郵箱註冊,會向郵箱發送驗證碼。在註冊後必須先充值5美元才可以使用,充值時可選擇paypal或者信用卡支付。 2 關於優惠。如果直接點擊官網鏈接註冊是沒有優惠的。如果你是在校大 ...
  • top命令是Linux下常用的性能分析工具,能夠實時顯示系統中各個進程的資源占用狀況,類似於Windows的任務管理器。下麵詳細介紹它的使用方法。top是一個動態顯示過程,即可以通過用戶按鍵來不斷刷新當前狀態.如果在前臺執行該命令,它將獨占前臺,直到用戶終止該程式為止.比較準確的說,top命令提供了 ...
  • 需求:外部人員需要對公司伺服器上某個文件夾內容進行讀寫操作 文件目錄信息:/opt/abc drwxr-xr-x 9 www www 4096 12月 4 13:02 abc #註意最初abc的www用戶組沒有寫許可權 為了後面的ftp用戶能夠對此文件具備寫操作,需要添加www用戶組的寫許可權: chm ...
  • MapReduce是什麼 MapReduce是一種分散式計算編程框架,是Hadoop主要組成部分之一,可以讓用戶專註於編寫核心邏輯代碼,最後以高可靠、高容錯的方式在大型集群上並行處理大量數據。 MapReduce的存儲 MapReduce的數據是存儲在HDFS上的,HDFS也是Hadoop的主要組成 ...
  • 二. serverCron函數 2.3 更新伺服器每秒執行命令次數 serverCron函數中的trackOperationsPerSecond函數會以每100毫秒一次的頻率執行,這個函數以抽樣計算的方式,估算並記錄伺服器在最近一秒鐘處理的命令請求數量,這個值可以通過info status命令的in ...
  • 1、Linux下mysql安裝完後是預設:區分表名的大小寫,不區分列名的大小寫;2、用root帳號登錄後,在/etc/my.cnf中的[mysqld]後添加添加lower_case_table_names=1,重啟MYSQL服務,這時已設置成功:不區分表名的大小寫;lower_case_table_ ...
  • 今日任務 完成對MYSQL資料庫的多表查詢及建表的操作 教學目標 掌握MYSQL中多表的創建及多表的查詢 掌握MYSQL中的表關係分析並能正確建表 昨天內容回顧: ​ 資料庫的創建 : create database 資料庫的名 character set 字元集 collate 校對規則 ​ 數據 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...