欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  数据库

【oracle案例】ORA-01722

程序员文章站 2022-06-09 13:10:00
...

1.1.ORA-01722 日期:2014-06-05 14:09 环境:测试环境 【情景描述】 在数据库的升级过程中,执行SQL @?/rdbms/admin/catupgrd.sql脚本的时候遇到报错退出。 【报错信息】 DOC####################################################################### DOCT

1.1. ORA-01722

日期:2014-06-05 14:09

环境:测试环境

【情景描述】

在数据库的升级过程中,执行SQL> @?/rdbms/admin/catupgrd.sql脚本的时候遇到报错退出。

【报错信息】

DOC>#######################################################################

DOC> The following statement will cause an "ORA-01722: invalidnumber"

DOC> error if the Oracle Database Vault option is TRUE. Upgrades cannot

DOC> be run with the Oracle Database Vault option set to TRUE since

DOC> AS SYSDBA connections are restricted.

DOC>

DOC> Perform "ALTER SYSTEM CHECKPOINT" prior to "SHUTDOWNABORT", relink

DOC> the server without the Database Vault option, and restart the server

DOC> using UPGRADE mode.

DOC>

DOC>

DOC>#######################################################################

DOC>#######################################################################

DOC>#

SELECT TO_NUMBER('DATA_VAULT_OPTION_ON')FROM v$option

*

ERROR at line 1:

ORA-01722: invalid number

【报错原因】

该数据库实例配置了Oracle Database Vault功能。

【解决方法】

关闭Oracle Database Vault功能后,重新执行升级操作。

关闭Oracle Database Vault功能:

# 查看是否开启了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

$ emctl stop dbconsole

$ lsnrctl stop

# 编译ins_rdbms.mk

[oracle@oracle ~]$ cd $ORACLE_HOME/rdbms/lib/

[oracle@oracle lib]$ make -f ins_rdbms.mkdv_off

/usr/bin/ar d/U01/app/oracle/product/11.2.3/db_1/rdbms/lib/libknlopt.a kzvidv.o

/usr/bin/ar cr/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

[oracle@oracle lib]$

# 执行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

[oracle@oracle bin]$

# 启动数据库实例

$ sqlplus / as sysdba

SQL> startup

# 检查 Oracle DatabaseVault状态

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

PARAMETER VALUE

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

Oracle Database Vault FALSE

SQL>

【参考资料】

关闭/开启Oracle Database Vault:

http://docs.oracle.com/cd/B28359_01/server.111/b31222/dvdisabl.htm#DVADM70984

安装Oracle Database Vault:

http://www.stanford.edu/dept/itss/docs/oracle/10gR2/install.102/b32496/upgrd.htm

什么是Oralce Database Vault:

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