IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    [原]ORACLE 从 11.2.0.1 升级到 11.2.0.4 版本之ORA-00119问题处理纪实

    mchdba发表于 2017-03-17 21:52:28
    love 0

     

    1、在线对数据库版本进行升级后,oracle启动失败

    升级之前好好,正常都能启动,从11.2.0.1升级到11.2.0.4后,启动报错

    SQL> startup;

    ORA-00119: invalid specification for system parameter LOCAL_LISTENER

    ORA-00130: invalid listener address '(ADDRESS=(PROTOCOL=TCP)(HOST=ht_121_90)(PORT=1521))'

    SQL>

     

     

    诡异了,啥都没有变动过,db半年以来都没有变动了,难道listener.ora、sqlnet.ora里面有写?

     

    2、检查oracle配置文件

    (1)检查sqlnet.ora,没有ht_121_90的配置

    [oracle@ht_121_90 admin]$ more sqlnet.ora

    # sqlnet.ora Network Configuration File: /home/oracle/app/oracle/product/11.2.0/dbhome_1/network/admin/sqlnet.ora

    # Generated by Oracle configuration tools.

     

    NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)

     

    ADR_BASE = /oracle/app/oracle

     

    [oracle@ht_121_90 admin]$

     

     

    (2)检查listenor.ora,也没有ht_121_90的配置

    [oracle@ht_121_90 admin]$ more listener.ora

    SID_LIST_LISTENER =

      (SID_LIST =

        (SID_DESC =

          (SID_NAME = PLSExtProc)

          (ORACLE_HOME = /home/oracle/app/oracle/product/11.2.0/dbhome_1)

          (PROGRAM = extproc)

        )

        (SID_DESC =

          (SID_NAME = powerdes)

          (ORACLE_HOME = /home/oracle/app/oracle/product/11.2.0/dbhome_1)

        )

      )

     

    LISTENER =

      (DESCRIPTION_LIST =

        (DESCRIPTION =

          (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.121.90)(PORT = 1521))

          (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))

        )

      )

     

    ADR_BASE_LISTENER = /home/oracle/app/oracle

    [oracle@ht_121_90 admin]$

     

     

     

     

    看了下,oracle的基本配置里面都正常,指向ip地址,没有配置ht_121_90。

     

     

    3、检查服务器网络配置

    (1)查看hosts配置,没有ht_121_90的标识

    [oracle@ht_121_90 admin]$ more /etc/hosts

    127.0.0.1 hch_test_121_90 hch_test_121_90.

    192.168.121.90  hch_test_121_90

     

    [oracle@ht_121_90 admin]$

     

    (2)查看ifconfig配置,也没有ht_121_90的标识

    [oracle@ht_121_90 admin]$ ifconfig

    eth0      Link encap:Ethernet  HWaddr 00:0C:29:30:AF:9F 

              inet addr:192.168.121.90  Bcast:192.168.121.255  Mask:255.255.254.0

              inet6 addr: fe80::20c:29ff:fe30:af9f/64 Scope:Link

              UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

              RX packets:35786 errors:0 dropped:0 overruns:0 frame:0

              TX packets:4150 errors:0 dropped:0 overruns:0 carrier:0

              collisions:0 txqueuelen:1000

              RX bytes:3853621 (3.6 MiB)  TX bytes:671203 (655.4 KiB)

     

    lo        Link encap:Local Loopback 

              inet addr:127.0.0.1  Mask:255.0.0.0

              inet6 addr: ::1/128 Scope:Host

              UP LOOPBACK RUNNING  MTU:16436  Metric:1

              RX packets:37 errors:0 dropped:0 overruns:0 frame:0

              TX packets:37 errors:0 dropped:0 overruns:0 carrier:0

              collisions:0 txqueuelen:0

              RX bytes:2806 (2.7 KiB)  TX bytes:2806 (2.7 KiB)

     

    [oracle@ht_121_90 admin]$

     

    (3)查看主机名

    [root@ht_121_90 ~]# more /etc/sysconfig/network

    NETWORKING=yes

    HOSTNAME=ht_121_90

    [root@ht_121_90 ~]#

    [root@ht_121_90 ~]# hostname

    ht_121_90

    [root@ht_121_90 ~]#

     

     

    分析:看到主机名是ht_121_90,猜测oracle升级后,默认是通过主机名hostname来启动listener.ora的,而主机名去对应ip地址,一般走的是/etc/hosts,需要在/etc/hosts里面添加主机名和ip地址的对应。所以去修改/etc/hosts

     

     

     

    4、修改hosts启动oracle实例

    (1)修改主机名

    [root@ht_121_90 ~]# more /etc/hosts

    127.0.0.1 hch_test_121_90 hch_test_121_90.

    192.168.121.90  hch_test_121_90 ht_121_90

     

    (2)启动oracle实例

    [root@ht_121_90 ~]#

     

    SQL> startup;

    ORACLE instance started.

     

    Total System Global Area 1603411968 bytes

    Fixed Size              2213776 bytes

    Variable Size              1040189552 bytes

    Database Buffers      553648128 bytes

    Redo Buffers                 7360512 bytes

    Database mounted.

    ORA-01092: ORACLE instance terminated. Disconnection forced

    ORA-00704: bootstrap process failure

    ORA-39700: database must be opened with UPGRADE option

    Process ID: 1605

    Session ID: 191 Serial number: 3

     

     

    SQL>

     

     

     

    5、治疗升级后遗症

    看到有“ORA-39700: database must be opened with UPGRADE option”这样的提示,就知道了升级没有完全成功,还需要执行一些系统的sql脚本

    (1)执行升级脚本

    SQL> @$ORACLE_HOME/rdbms/admin/utlu112s.sql

    ......

    SQL> @$ORACLE_HOME/rdbms/admin/catuppst.sql

    ......执行实际比较长

    SQL> @$ORACLE_HOME/rdbms/admin/utlrp.sql

     

    SQL>  ALTER SYSTEM SET CLUSTER_DATABASE=true SCOPE=SPFILE;

     

    (2)重启数据库

    SQL> shutdown immediate;

    Database closed.

    Database dismounted.

    ORACLE instance shut down.

    SQL>

    SQL>

    SQL> startup;

    ORACLE instance started.

     

    Total System Global Area 1603411968 bytes

    Fixed Size              2213776 bytes

    Variable Size              1040189552 bytes

    Database Buffers      553648128 bytes

    Redo Buffers                 7360512 bytes

    Database mounted.

    Database opened.

    SQL>

     

     

     

    设置默认的路径为新的路径

    su - oracle

    vim /home/oracle/.bash_profile

    将 /home/oracle/app/oracle/product/11.2.0改成 /home/oracle/app/oracle/product/11.2.0.4

     

     

    然后重新启动oracle实例

    [oracle@ht_121_90 ~]$ rlwrap sqlplus / as sysdba

     

    SQL*Plus: Release 11.2.0.4.0 Production on Fri Mar 17 20:36:25 2017

     

    Copyright (c) 1982, 2013, Oracle.  All rights reserved.

     

    Connected to an idle instance.

     

    SQL> startup;

    ORA-01078: failure in processing system parameters

    LRM-00109: could not open parameter file '/home/oracle/app/oracle/product/11.2.0.4/dbhome_1/dbs/initpowerdes.ora'

    SQL>

     

    SQL> startup pfile='/oracle/pfile_20160317.ora';

    ORACLE instance started.

     

    Total System Global Area 1603411968 bytes

    Fixed Size              2253664 bytes

    Variable Size                469765280 bytes

    Database Buffers    1124073472 bytes

    Redo Buffers                 7319552 bytes

    ORA-00205: error in identifying control file, check alert log for more info

     

     

    SQL>

     

     

    启动貌似找不到控制文件,去看后台alert日志

    [root@ht_121_90 ~]# tail -f /oracle/app/oracle/diag/rdbms/powerdes/powerdes/trace/alert_powerdes.log

    starting up 1 shared server(s) ...

    ORACLE_BASE from environment = /oracle/app/oracle

    Fri Mar 17 20:52:25 2017

    ALTER DATABASE   MOUNT

    ORA-00210: cannot open the specified control file

    ORA-00202: control file: '/data/oracle/powerdes/control01.ctl'

    ORA-27086: unable to lock file - already in use

    Linux-x86_64 Error: 11: Resource temporarily unavailable

    Additional information: 8

    Additional information: 1940

    ORA-205 signalled during: ALTER DATABASE   MOUNT..

     

     

    看到有进程一直在唉用这个控制文件,先关闭下,看看别的进程

    SQL> shutdown immedaite;

    SP2-0717: illegal SHUTDOWN option

    SQL> shutdown immediate;

    ORA-01507: database not mounted

     

     

    ORACLE instance shut down.

    SQL>

    SQL>

    SQL> exit

    Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production

    With the Partitioning, OLAP, Data Mining and Real Application Testing options

    [oracle@ht_121_90 dbs]$ ps -eaf|grep oracle

    oracle    1918     1  0 20:31 ?        00:00:00 ora_pmon_powerdes

    oracle    1920     1  0 20:31 ?        00:00:00 ora_vktm_powerdes

    oracle    1924     1  0 20:31 ?        00:00:00 ora_gen0_powerdes

    oracle    1926     1  0 20:31 ?        00:00:00 ora_diag_powerdes

    oracle    1928     1  0 20:31 ?        00:00:00 ora_dbrm_powerdes

    oracle    1930     1  0 20:31 ?        00:00:00 ora_psp0_powerdes

    oracle    1932     1  0 20:31 ?        00:00:00 ora_dia0_powerdes

    oracle    1934     1  0 20:31 ?        00:00:00 ora_mman_powerdes

    oracle    1936     1  0 20:31 ?        00:00:00 ora_dbw0_powerdes

    oracle    1938     1  0 20:31 ?        00:00:00 ora_lgwr_powerdes

    oracle    1940     1  0 20:31 ?        00:00:00 ora_ckpt_powerdes

    oracle    1942     1  1 20:31 ?        00:00:21 ora_smon_powerdes

    oracle    1944     1  0 20:31 ?        00:00:00 ora_reco_powerdes

    oracle    1946     1  0 20:31 ?        00:00:01 ora_mmon_powerdes

    oracle    1948     1  0 20:31 ?        00:00:00 ora_mmnl_powerdes

    oracle    1950     1  0 20:31 ?        00:00:00 ora_d000_powerdes

    oracle    1952     1  0 20:31 ?        00:00:00 ora_s000_powerdes

    oracle    1960     1  0 20:31 ?        00:00:00 ora_arc0_powerdes

    oracle    1962     1  0 20:31 ?        00:00:00 ora_arc1_powerdes

    oracle    1964     1  0 20:31 ?        00:00:00 ora_arc2_powerdes

    oracle    1966     1  0 20:31 ?        00:00:00 ora_arc3_powerdes

    oracle    1970     1  0 20:31 ?        00:00:00 ora_qmnc_powerdes

    oracle    1984     1  0 20:31 ?        00:00:00 ora_cjq0_powerdes

    oracle    1994     1  0 20:31 ?        00:00:00 ora_q000_powerdes

    oracle    1998     1  0 20:31 ?        00:00:00 ora_q002_powerdes

    oracle    2129     1  0 20:36 ?        00:00:00 ora_smco_powerdes

    oracle    2287     1  0 20:44 ?        00:00:00 /home/oracle/app/oracle/product/11.2.0.4/dbhome_1/bin/tnslsnr LISTENER -inherit

    oracle    2320     1  0 20:47 ?        00:00:01 oraclepowerdes (LOCAL=NO)

    oracle    2329     1  0 20:47 ?        00:00:00 /home/oracle/app/oracle/product/11.2.0.4/dbhome_1/bin/tnslsnr LISTENER -inherit

    root      2436  1735  0 20:52 pts/2    00:00:00 su - oracle

    oracle    2437  2436  0 20:52 pts/2    00:00:00 -bash

    oracle    2546     1  0 20:56 ?        00:00:00 ora_w000_powerdes

    root      2644  1199  0 20:58 pts/0    00:00:00 tail -f /oracle/app/oracle/diag/rdbms/powerdes/powerdes/trace/alert_powerdes.log

    oracle    2769     1  1 21:01 ?        00:00:00 ora_j000_powerdes

    oracle    2771     1  0 21:01 ?        00:00:00 ora_j001_powerdes

    oracle    2772  2437  1 21:01 pts/2    00:00:00 ps -eaf

    oracle    2773  2437  0 21:01 pts/2    00:00:00 grep oracle

    [oracle@ht_121_90 dbs]$

     

     

    想起来了,这是老的版本的sqlplus进程在运行,也有可能是upgrade会用一个辅助实例,把辅助实例关闭,自己找进程去kill就OK了。

    [oracle@ht_121_90 dbs]$ ps -eaf|grep oracle

    oracle    1918     1  0 20:31 ?        00:00:00 ora_pmon_powerdes

    oracle    1920     1  0 20:31 ?        00:00:00 ora_vktm_powerdes

    oracle    1924     1  0 20:31 ?        00:00:00 ora_gen0_powerdes

    oracle    1926     1  0 20:31 ?        00:00:00 ora_diag_powerdes

    oracle    1928     1  0 20:31 ?        00:00:00 ora_dbrm_powerdes

    oracle    1930     1  0 20:31 ?        00:00:00 ora_psp0_powerdes

    oracle    1932     1  0 20:31 ?        00:00:01 ora_dia0_powerdes

    oracle    1934     1  0 20:31 ?        00:00:00 ora_mman_powerdes

    oracle    1936     1  0 20:31 ?        00:00:00 ora_dbw0_powerdes

    oracle    1938     1  0 20:31 ?        00:00:00 ora_lgwr_powerdes

    oracle    1940     1  0 20:31 ?        00:00:00 ora_ckpt_powerdes

    oracle    1942     1  0 20:31 ?        00:00:23 ora_smon_powerdes

    oracle    1944     1  0 20:31 ?        00:00:00 ora_reco_powerdes

    oracle    1946     1  0 20:31 ?        00:00:01 ora_mmon_powerdes

    oracle    1948     1  0 20:31 ?        00:00:00 ora_mmnl_powerdes

    oracle    1950     1  0 20:31 ?        00:00:00 ora_d000_powerdes

    oracle    1952     1  0 20:31 ?        00:00:00 ora_s000_powerdes

    oracle    1960     1  0 20:31 ?        00:00:00 ora_arc0_powerdes

    oracle    1962     1  0 20:31 ?        00:00:00 ora_arc1_powerdes

    oracle    1964     1  0 20:31 ?        00:00:00 ora_arc2_powerdes

    oracle    1966     1  0 20:31 ?        00:00:00 ora_arc3_powerdes

    oracle    1970     1  0 20:31 ?        00:00:00 ora_qmnc_powerdes

    oracle    1984     1  0 20:31 ?        00:00:00 ora_cjq0_powerdes

    oracle    1994     1  0 20:31 ?        00:00:00 ora_q000_powerdes

    oracle    1998     1  0 20:31 ?        00:00:00 ora_q002_powerdes

    oracle    2129     1  0 20:36 ?        00:00:00 ora_smco_powerdes

    oracle    2320     1  0 20:47 ?        00:00:01 oraclepowerdes (LOCAL=NO)

    oracle    2329     1  0 20:47 ?        00:00:00 /home/oracle/app/oracle/product/11.2.0.4/dbhome_1/bin/tnslsnr LISTENER -inherit

    root      2436  1735  0 20:52 pts/2    00:00:00 su - oracle

    oracle    2437  2436  0 20:52 pts/2    00:00:00 -bash

    oracle    2546     1  0 20:56 ?        00:00:00 ora_w000_powerdes

    root      2644  1199  0 20:58 pts/0    00:00:00 tail -f /oracle/app/oracle/diag/rdbms/powerdes/powerdes/trace/alert_powerdes.log

    oracle    2872  2437  0 21:12 pts/2    00:00:00 ps -eaf

    oracle    2873  2437  0 21:12 pts/2    00:00:00 grep oracle

    [oracle@ht_121_90 dbs]$

    [oracle@ht_121_90 dbs]$

    [oracle@ht_121_90 dbs]$ kill -9 1918   ;

    [oracle@ht_121_90 dbs]$ kill -9 1920   ;

    [oracle@ht_121_90 dbs]$ kill -9 1924   ;

    [oracle@ht_121_90 dbs]$ kill -9 1926   ;

    [oracle@ht_121_90 dbs]$ kill -9 1928   ;

    [oracle@ht_121_90 dbs]$ kill -9 1930   ;

    [oracle@ht_121_90 dbs]$ kill -9 1932   ;

    [oracle@ht_121_90 dbs]$ kill -9 1934   ;

    [oracle@ht_121_90 dbs]$ kill -9 1936   ;

    [oracle@ht_121_90 dbs]$ kill -9 1938   ;

    [oracle@ht_121_90 dbs]$ kill -9 1940   ;

    [oracle@ht_121_90 dbs]$ kill -9 1942   ;

    [oracle@ht_121_90 dbs]$ kill -9 1944   ;

    [oracle@ht_121_90 dbs]$ kill -9 1946   ;

    [oracle@ht_121_90 dbs]$ kill -9 1948   ;

    [oracle@ht_121_90 dbs]$ kill -9 1950   ;

    [oracle@ht_121_90 dbs]$ kill -9 1952   ;

    [oracle@ht_121_90 dbs]$ kill -9 1960   ;

    [oracle@ht_121_90 dbs]$ kill -9 1962   ;

    [oracle@ht_121_90 dbs]$ kill -9 1964   ;

    [oracle@ht_121_90 dbs]$ kill -9 1966   ;

    [oracle@ht_121_90 dbs]$ kill -9 1970   ;

    [oracle@ht_121_90 dbs]$ kill -9 1984   ;

    [oracle@ht_121_90 dbs]$ kill -9 1994   ;

    [oracle@ht_121_90 dbs]$ kill -9 1998   ;

    [oracle@ht_121_90 dbs]$ kill -9 2129   ;

    [oracle@ht_121_90 dbs]$

    [oracle@ht_121_90 dbs]$ ps -eaf|grep oracle

    oracle    2320     1  0 20:47 ?        00:00:01 oraclepowerdes (LOCAL=NO)

    oracle    2329     1  0 20:47 ?        00:00:00 /home/oracle/app/oracle/product/11.2.0.4/dbhome_1/bin/tnslsnr LISTENER -inherit

    root      2436  1735  0 20:52 pts/2    00:00:00 su - oracle

    oracle    2437  2436  0 20:52 pts/2    00:00:00 -bash

    oracle    2546     1  0 20:56 ?        00:00:00 ora_w000_powerdes

    root      2644  1199  0 20:58 pts/0    00:00:00 tail -f /oracle/app/oracle/diag/rdbms/powerdes/powerdes/trace/alert_powerdes.log

    oracle    2886  2437  0 21:15 pts/2    00:00:00 ps -eaf

    oracle    2887  2437  0 21:15 pts/2    00:00:00 grep oracle

    [oracle@ht_121_90 dbs]$

     

     

    然后再进去重启oracle服务,不会再报错,能正常启动了

    SQL> shutdown immediate;

    Database closed.

    Database dismounted.

    ORACLE instance shut down.

    SQL> startup;

    ORACLE instance started.

     

    Total System Global Area 1603411968 bytes

    Fixed Size                  2253664 bytes

    Variable Size             553651360 bytes

    Database Buffers         1040187392 bytes

    Redo Buffers                7319552 bytes

    Database mounted.

    Database opened.

    SQL>

    SQL> create pfile from spfile;

     

    File created.

     

    SQL> shutdown immediate;

    Database closed.

    Database dismounted.

    ORACLE instance shut down.

    SQL> create spfile from pfile;

     

    File created.

     

    SQL> startup;

    ORACLE instance started.

     

    Total System Global Area 1603411968 bytes

    Fixed Size                  2253664 bytes

    Variable Size             469765280 bytes

    Database Buffers         1124073472 bytes

    Redo Buffers                7319552 bytes

    Database mounted.

    Database opened.

    SQL>

     



沪ICP备19023445号-2号
友情链接