oracle資料庫11.2.0.3升級到11.2.0.4

賀子_DBA時代發表於2018-06-30

前言:

作業系統:Red Hat Enterprise Linux Server release 6.5

Oracle舊版本:11.2.0.3  ORACLE_HOME :/u01/app/oracle/product/11.2.0/dbhome_1

Oracle新版本:11.2.0.4  ORACLE_HOME :/u01/app/oracle/product/11.2.4/dbhome_1

升級的整個思路:首先安裝11.2.0.4版本軟體,然後把11.2.0.3的引數檔案、口令檔案、以及listener.ora、tnsname.ora檔案copy到11.2.0.4版本的ORACLE_HOME對應目錄中(注意例項名沒有改變),然後使用11.2.0.4版本軟體載入之前11.2.0.3的資料庫,並用startup upgrade方式啟動例項並載入資料庫到open狀態,然後執行catupgrd.sql升級指令碼升級資料庫的資料字典等資訊,最後執行utlrp.sql和catuppst.sql來重新編譯失效的物件以及plsql以及java的程式碼 ,最後驗證結果即可。

1.1. 修改密碼及建立目錄和許可權

1) 建立oracle使用者和組

[root@tool202~]# groupadd oinstall

[root@tool202~]# groupadd dba

[root@tool202~]# useradd -g oinstall -G dba -s /bin/bash oracle

[root@tool202~]# passwd oracle

Changing password for user oracle.

New UNIX password:

BAD PASSWORD: it is based on a dictionary word

Retype new UNIX password:

passwd: all authentication tokens updated successfully.

2) 建立相關目錄並賦權

[root@tool202 ~]# chown -R oracle:oinstall /u01

[root@tool202 ~]# chmod -R 755 /u01

1.2. 修改oracle使用者環境變數(例項名不變)

[root@tool202 ~]# su - oracle

[oracle@tool202 ~]$

[oracle@tool202 ~]$ vi .bash_profile

注:在檔案的最下方增加如下內容

export ORACLE_BASE=/u01/app/oracle

export ORACLE_HOME=$ORACLE_BASE/product/11.2.4/dbhome_1

export ORACLE_SID=shanghai

export PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin

export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib


[oracle@tool202 ~]$ . .bash_profile修改完成,使其修改生效,如下:

[oracle@tool202 ~]$

或者

[oracle@tool202 ~] source .bash_profile

[oracle@tool202 ~] $

再或者登出重新登入

注:

ORACLE_BASE:oracle產品基目錄

ORACLE_HOME:資料庫產品目錄通常情況下HOME目錄是BASE的子目錄

ORACLE_SID:作業系統和oracle例項關聯的紐帶

PATH:將安裝後的oracle命令追加到執行搜尋路徑

LD_LIBRARY_PATH:動態庫的位置

1.3. 上傳oracle安裝介質並解壓安裝

1.3.1已經上傳成功,解壓這兩個檔案,會產生database目錄

[oracle@tool202 response]$ unzip p13390677_112040_Linux-x86-64_1of7.zip

[oracle@tool202 response]$ unzip p13390677_112040_Linux-x86-64_2of7.zip


1.3.2編輯靜默安裝資料庫軟體的檔案,主要需要修改的引數如下:

[oracle@tool202 response]$cd /data/media/database

[oracle@tool202 response]$ cd  response

[oracle@tool202 response]$ ll

total 80

-rwxr-xr-x 1 oracle oinstall 44533 Aug 27  2013 dbca.rsp

-rw-r--r-- 1 oracle oinstall 25310 Jun 22 10:58 db_install.rsp

-rwxr-xr-x 1 oracle oinstall  5871 Aug 27  2013 netca.rsp

[oracle@tool202 response]$ vi  db_install.rsp   

oracle.install.option=INSTALL_DB_SWONLY   //29行 安裝型別

ORACLE_HOSTNAME=chances   //37行 主機名稱

UNIX_GROUP_NAME=oinstall    //42行 安裝組

INVENTORY_LOCATION=/data/oracle/oraInventory   //47行INVENTORY目錄

SELECTED_LANGUAGES=zh_CN   //78行 選擇語言

ORACLE_HOME=/u01/app/oracle/product/11.2.4/dbhome_1   //83行oracle_home

ORACLE_BASE=/u01/app/oracle   //88行oracle_base

oracle.install.db.InstallEdition=EE   //99行oracle版本

oracle.install.db.DBA_GROUP=dba   //142行dba使用者組

oracle.install.db.OPER_GROUP=oinstall    //147行oper使用者組

oracle.install.db.config.starterdb.type=GENERAL_PURPOSE   //160行 資料庫型別

oracle.install.db.config.starterdb.globalDBName=shanghai   //165行globalDBName

oracle.install.db.config.starterdb.SID=shanghai   //170行SID

oracle.install.db.config.starterdb.memoryLimit=800    //192行 自動管理記憶體的最小記憶體(M)

oracle.install.db.config.starterdb.password.ALL=oracle   //233行 設定所有資料庫使用者使用同一個密碼

DECLINE_SECURITY_UPDATES=true     //385行 設定安全更新

1.3.3編輯如下的檔案,

[oracle@tool202 response]$ cat /etc/oraInst.loc

inventory_loc=/u01/app/oraInventory

inst_group=oinstall

oraInventory存放Oracle軟體安裝的目錄資訊,Oralce的安裝和升級都需要用到這個目錄,刪除或丟失oraInventory目錄的內容就會導致安裝/升級失敗。


1.3.4開始安裝Oracle軟體,最後可以看到Successfully Setup Software代表成功安裝了

 /data/media/database/response/db_install.rsp  -ignorePrereq

Starting Oracle Universal Installer...

Checking Temp space: must be greater than 120 MB.   Actual 53714 MB    Passed

Checking swap space: must be greater than 150 MB.   Actual 7976 MB    Passed

Preparing to launch Oracle Universal Installer from /tmp/OraInstall2018-06-22_10-59-04AM. Please wait ...[oracle@tool202 database]$

[oracle@tool202 database]$ You can find the log of this install session at:

 /u01/app/oraInventory/logs/installActions2018-06-22_10-59-04AM.log

The installation of Oracle Database 11g was successful.

Please check '/u01/app/oraInventory/logs/silentInstall2018-06-22_10-59-04AM.log' for more details.

As a root user, execute the following script(s):

1. /u01/app/oracle/product/11.2.4/dbhome_1/root.sh

Successfully Setup Software.

1.3.4上面提示了,需要用root使用者執行一個指令碼來修改/etc/oratab內容

[root@tool202 ~]# /u01/app/oracle/product/11.2.4/dbhome_1/root.sh

Check /u01/app/oracle/product/11.2.4/dbhome_1/install/root_tool202.bxidc.happycfc.com_2018-06-22_11-20-25.log for the output of root script

驗證顯示指令碼執行成功

[root@tool202~]#cat /u01/app/oracle/product/11.2.4/dbhome_1/install/root_tool202.bxidc.happycfc.com_2018-06-22_11-20-25.log

Performing root user operation for Oracle 11g

The following environment variables are set as:

    ORACLE_OWNER= oracle

    ORACLE_HOME=  /u01/app/oracle/product/11.2.4/dbhome_1

   Copying dbhome to /usr/local/bin ...

   Copying oraenv to /usr/local/bin ...

   Copying coraenv to /usr/local/bin ...

Entries will be added to the /etc/oratab file as needed by

Database Configuration Assistant when a database is created

Finished running generic part of root script.

Now product-specific root actions will be performed.

Finished product-specific root actions.

Finished product-specific root actions.

至此Oracle11.2.0.4的軟體安裝完成

1.4. 讓新安裝的4版本Oracle軟體去載入11.2.0.3的資料庫例項

1.4.1. 將配置檔案從舊版本家目錄中,複製到新版本家目錄中,例項名不變!

[oracle@tool202 dbs]$ pwd

/u01/app/oracle/product/11.2.0/dbhome_1/dbs

[oracle@tool202 dbs]$ cp  *   /u01/app/oracle/product/11.2.4/dbhome_1/dbs

[oracle@tool202 admin]$ pwd

/u01/app/oracle/product/11.2.0/dbhome_1/network/admin

[oracle@tool202 admin]$ cp  *   /u01/app/oracle/product/11.2.4/dbhome_1/network/admin

1.4.2. 以update方式啟動4版本軟體載入3版本的資料庫

SQL> startup  upgrade

ORACLE instance started.

Total System Global Area 1.0055E+10 bytes

Fixed Size     2261888 bytes

Variable Size  1644170368 bytes

Database Buffers  8388608000 bytes

Redo Buffers    19742720 bytes

Database mounted.

Database opened.

1.4.3修改/etc/oratab ,修改家目錄為新的目錄

[oracle@tool202 ~]$ vi  /etc/oratab

shanghai:/u01/app/oracle/product/11.2.0/dbhome_1:N

它記錄主機中有多少個資料庫。

在$ORACLE_HOME/bin目錄下的$ORACLE_HOME/bin/dbstart和$ORACLE_HOME/bin/dbshut需要呼叫/etc/oratab檔案,如果不存在,dbstart和dbshut將失敗,也就是藉助dbstart實現開啟自啟動的時候會使用.


1.5. 升級資料庫

1.5.1執行升級前檢查,重點注意其中的warring!!!

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

Oracle Database 11.2 Pre-Upgrade Information Tool 06-22-2018 15:37:55

Script Version: 11.2.0.4.0 Build: 001

.

**********************************************************************

Database:

**********************************************************************

--> name:    BEIJING

--> version:    11.2.0.3.0

--> compatible:    11.2.0.0.0

--> blocksize:    8192

--> platform:    Linux x86 64-bit

--> timezone file: V14

.

**********************************************************************

根據前面提示的warring,進行相應的修改;

1.5.2執行升級指令碼catupgrd.sql

SQL> set echo on   ###顯示當前正在執行的命令,顯示的會更全面

SQL> spool /home/oracle/upgrade.log   ##把輸出結果存到指定的upgrade.log檔案,便於檢視

SQL> set time on;    ###開啟視窗時間

03:28:37 SQL>@?/rdbms/admin/catupgrd.sql  

SQL> spool off   ##關閉輸出到檔案

1.5.3.重新編輯失效的物件

1)執行catuppst編譯無效物件

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

2)執行utlrp.sql編譯plsql以及java的程式碼

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

3)可以用utlu112s.sql指令碼檢視各元件升級所用的時間

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

.Oracle Database 11.2 Post-Upgrade Status Tool 06-22-2018 16:35:05

.Component Current      Version  Elapsed Time

Name Status      Number  HH:MM:SS

.Oracle Server

.   VALID      11.2.0.4.0  00:11:15

JServer JAVA Virtual Machine

.   VALID      11.2.0.4.0  00:02:47

Oracle Workspace Manager

.   VALID      11.2.0.4.0  00:00:23

OLAP Analytic Workspace

.   VALID      11.2.0.4.0  00:00:23

OLAP Catalog

.   VALID      11.2.0.4.0  00:00:33

Oracle OLAP API

.   VALID      11.2.0.4.0  00:00:13

Oracle Enterprise Manager

.   VALID      11.2.0.4.0  00:02:17

Oracle XDK

.   VALID      11.2.0.4.0  00:00:28

Oracle Text

.   VALID      11.2.0.4.0  00:00:16

Oracle XML Database

.   VALID      11.2.0.4.0  00:01:35

Oracle Database Java Packages

.   VALID      11.2.0.4.0  00:00:07

Oracle Multimedia

.   VALID      11.2.0.4.0  00:26:16

Spatial

.   VALID      11.2.0.4.0  00:01:50

Oracle Expression Filter

.   VALID      11.2.0.4.0  00:00:09

Oracle Rules Manager

.   VALID      11.2.0.4.0  00:00:06

Oracle Application Express

.   VALID     3.2.1.00.12

Final Actions

.  00:00:00

Total Upgrade Time: 00:48:46


PL/SQL procedure successfully completed.

1.5.4.修改監聽檔案(listener.ora)中的ORACLE_HOME路徑
LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 10.1.32.202)(PORT = 1521))
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
  )
SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
# listener.ora Network Configuration File: /u01/app/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora
# Generated by Oracle configuration tools.
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 10.1.*.202)(PORT = 1521))
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
  )
SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (GLOBAL_DBNAME = shanghai)
     (ORACLE_HOME = /u01/app/oracle/product/11.2.4/dbhome_1)
      (SID_NAME = shanghai)
    )

1.6. 驗證結果

1.6.1.sqlplus連線資料,已經顯示為11.2.0.4,如下所示


1.6.2.檢視例項的版本

SQL> select version from v$instance;


VERSION

-----------------

11.2.0.4.0

1.6.3.檢查有沒有失效的物件

SQL> select * from dba_objects where status !='VALID';


no rows selected

1.6.4.檢視各元件版本號,

SQL> set linesize 1000

SQL> col COMP_NAME format a40

SQL> col version  format a10

SQL> col status  format a10

SQL> select comp_name,status,version from dba_server_registry; 

發現其中OWB元件沒有升級成功,可以忽略;Oracle的OWB是目前最好的三大ETL產品之一。OWB不但可以可以完成資料的抽取、轉換和加 載,還能幫助使用者在Oracle資料庫中建立ROLAP(Relational Online Analysis Process)和MOLAP(Multidimensional Online Analysis Process)資料倉儲物件,資料質量管理,商務智慧定義等

總結:1.升級的過程中會產生大量的歸檔日誌,需要保證有足夠的空間來儲存歸檔日誌,2.因為你是資料庫升級,例項名沒必要改變,但是新版本的軟體安裝路徑一定要和舊版本的區分開,不能再同意個路徑下,否則會報錯。3,我這是測試環境,在執行升級指令碼的之前沒有建立閃回點,生產環境建議建立閃回點,以防升級失敗可以回退

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

相關文章