oracle数据库升级过程中执行catupgrd.sql遇到ORA-01722: invalid number问题的处理

近期,在进行一个WINDOWS环境的oracle 11.2.0.1版本数据库迁移到LINUX环境的oracle 11.2.0.4版本并升级时,因为需要从oracle 11.2.0.1版本升级到oracle 11.2.0.4版本,使用手动运行catupgrd.sql脚本,此时报错:

SELECT TO_NUMBER('DATA_VAULT_OPTION_ON')FROM v$option

                 *

ERROR at line 1:

ORA-01722: invalid number

分析原因,为该数据库实例配置了Oracle Database Vault功能;需要关闭Oracle Database Vault功能后,重新执行升级操作。

但是在当前环境,是进行了迁移,原有的WINDOWS环境开启了Oracle Database Vault,所以数据库数据字典中Oracle Database Vault的配置;但是LINUX环境的ORACLE软件安装时没有选择Oracle Database Vault组件的,所以此时关闭是报错的。需要先开启、再关闭,再进行升级。

相关操作如下:
1、Oracle Database Vault 介绍:用来解决现有的极为棘手的安全问题,即防止内部的威胁,满足合规性要求以及实现职责划分。Oracle Database Vault 能防止 DBA 查看应用程序数据,解决了必须保护涉及合作伙伴、员工和顾客的敏感业务信息或隐私数据的客户最为担心的问题。Oracle Database Vault 可防止高权限的应用程序 DBA 访问其他的应用程序、执行其权限之外的任务。Oracle Database Vault 可以轻松快捷地保护现有应用程序,且不影响应用程序的功能。

2、参考官方文档,开启和关闭此功能的步骤如下:Disabling and Enabling Oracle Database Vault

Checking if Oracle Database Vault Is Enabled or Disabled

You can check if Oracle Database Vault is enabled or disabled by querying the V$OPTION data dictionary view. Any user can query this view. If Oracle Database Vault is enabled, the query returns TRUE. Otherwise, it returns FALSE.

Remember that the PARAMETER column value is case sensitive. For example:

SELECT * FROM V$OPTION WHERE PARAMETER = 'Oracle Database Vault';

If Oracle Database Vault is enabled, the following output appears:

PARAMETER                     VALUE
----------------------------- -----------------------
Oracle Database Vault         TRUE

3、先开启Enable Oracle Database Vault

Enable the Oracle Database Vault option as follows:

  • UNIX: Run the following commands. The make command enables both Oracle Database Vault (dv_on) and Oracle Label Security (lbac_on). You must enable Oracle Label Security before you can use Database Vault.

    cd $ORACLE_HOME/rdbms/lib
    make -f ins_rdbms.mk dv_on lbac_on
    cd $ORACLE_HOME/bin
    relink all
    
    
    4、再关闭Oracle Database Vault
  • Disable the Oracle Database Vault option.

    UNIX: Run the following commands:
  • cd $ORACLE_HOME/rdbms/lib
    make -f ins_rdbms.mk dv_off
    cd $ORACLE_HOME/bin
    relink all
    

    For Oracle RAC installations, run these commands on all nodes

  • 5、重新运行升级脚本,可以正常运行完成升级

  • # 查看是否开启了OracleDatabase Vault功能:
    SQL> col parameter for a30
    SQL> col value for a20
    SQL> SELECT * FROM V$OPTION WHEREPARAMETER = 'Oracle Database Vault';
    PARAMETER                      VALUE
    --------------------------------------------------
    Oracle Database Vault          TRUE

    # 关闭数据库实例

    SQL> shutdown immediate
    SQL> exit

    $ lsnrctl stop
    # 编译ins_rdbms.mk
    [oracle@oracle ~]$ cd $ORACLE_HOME/rdbms/lib/
    [oracle@oracle lib]$ make -f ins_rdbms.mk dv_off
    /usr/bin/ar d/U01/app/oracle/product/11.2.3/db_1/rdbms/lib/libknlopt.a kzvidv.o
    /usr/bin/arcr/U01/app/oracle/product/11.2.3/db_1/rdbms/lib/libknlopt.a/U01/app/oracle/product/11.2.3/db_1/rdbms/lib/kzvndv.o

    # 执行relink

    [oracle@oracle lib]$ cd $ORACLE_HOME/bin
    [oracle@oracle bin]$ relink all
    writing relink log to:/U01/app/oracle/product/11.2.3/db_1/install/relink.log

    # 启动数据库实例

    $ sqlplus / as sysdba
    SQL> startup upgrade

    # 检查 Oracle DatabaseVault状态
    SQL> SELECT * FROM V$OPTION WHERE PARAMETER= 'Oracle Database Vault';
    PARAMETER                      VALUE
    ------------------------------ ----------
    Oracle Database Vault          FALSE

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值