Oracle9i设置archivelog时报错ORA-00439的解决

博客围绕Oracle 9i数据库归档日志配置展开。在启动挂载数据库时遇到报错,经分析是因当前为Standard Edition,不支持standby database,归档日志目标地址语法格式受限。总结指出该版本只能用特定语法,还给出查询版本的SQL语句。

开发板推荐:天空星STM32F407VET6开发板

超高性价比 STM32主控 | 超高主频 | 一板兼容百芯 | 比赛神器 | 沉金彩色丝印

--pfile
*.aq_tm_processes=1
*.background_dump_dest='d:/oracle/admin/db01gen/bdump'
*.compatible='9.2.0.0.0'
*.control_files='d:/oracle/oradata/db01gen/CONTROL01.CTL','d:/oracle/oradata/db01gen/CONTROL02.CTL','d:/oracle/oradata/db01gen/CONTROL03.CTL'
*.core_dump_dest='d:/oracle/admin/db01gen/cdump'
*.db_block_size=8192
*.db_cache_size=16777216
*.db_domain=''
*.db_file_multiblock_read_count=16
*.db_name='db01gen'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=db01genXDB)'
*.fast_start_mttr_target=300
*.hash_join_enabled=TRUE
*.instance_name='db01gen'
*.java_pool_size=20971520
*.job_queue_processes=10
*.large_pool_size=3145728
*.open_cursors=300
*.pga_aggregate_target=16777216
*.processes=150
*.query_rewrite_enabled='FALSE'
*.remote_login_passwordfile='EXCLUSIVE'
*.shared_pool_size=33554432
*.sort_area_size=524288
*.star_transformation_enabled='FALSE'
*.timed_statistics=TRUE
*.undo_management='AUTO'
*.undo_retention=10800
*.undo_tablespace='UNDOTBS1'
*.user_dump_dest='d:/oracle/admin/db01gen/udump'
*.log_archive_start=true
*.log_archive_dest_1='location = g:/archive1/db01gen'
*.log_archive_dest_2='location = g:/archive2/db01gen'
*.log_archive_dest_3='location = g:/archive3/db01gen'
*.log_archive_format='arch_%s_%t.arc'

--startup mount
SQL>sqlplus /nolog
SQL>connect sys/manager as sysdba
SQL>create spfile from pfile
SQL>startup mount

报错:
ORA-00439: feature not enabled: Managed Standby

修改initfile,使用语法格式 log_archive_dest=
*.log_archive_dest='location = g:/archive1/db01gen'

SQL>startup mount pfile='...'

报错:
ORA-16032: parameter LOG_ARCHIVE_DEST destination string cannot be translated
ORA-09291: sksachk: invalid device specified for archive destination
OSD-04018: Unable to access the specified directory or device.
O/S-Error: (OS 123) ND<~C{!"D?B<C{;r>m1jSo7(2;U}H7!#

修改initfile,去掉location
*.log_archive_dest='g:/archive1/db01gen'
*.log_archive_duplex_dest='g:/archive2/db01gen'

SQL>startup mount pfile='...'

成功,继续
SQL>alter database archivelog;
SQL>alter database open;
SQL> archive log list

Database log mode              Archive Mode
Automatic archival             Enabled
Archive destination            g:/archive2/db01gen
Oldest online log sequence     1
Next log sequence to archive   3
Current log sequence           3

总结:
由于当前数据库版本是Standard Edition,而Oracle 9i Standard Edition 不支持 standby database,
归档日志目标地址的语法格式log_archive_dest_n=只适用于支持standby database的Enterprise Edition,
而且location也是支持standby database的写法,所以Standard Edition 只能使用语法格式log_archive_dest=
和log_archive_duplex_dest=

查询版本的语句:
SQL> COL PRODUCT FORMAT A35
SQL> COL VERSION FORMAT A15
SQL> COL STATUS FORMAT A15
SQL> SELECT * FROM PRODUCT_COMPONENT_VERSION;

PRODUCT                             VERSION         STATUS
----------------------------------- --------------- ---------------
NLSRTL                              9.2.0.1.0       Production
Oracle9i                            9.2.0.1.0       Production
PL/SQL                              9.2.0.1.0       Production
TNS for 32-bit Windows:             9.2.0.1.0       Production

SQL> desc v$version;
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 BANNER                                             VARCHAR2(64)

或:
SQL> select * from v$version;

BANNER
----------------------------------------------------------------
Oracle9i Release 9.2.0.1.0 - Production
PL/SQL Release 9.2.0.1.0 - Production
CORE    9.2.0.1.0       Production
TNS for 32-bit Windows: Version 9.2.0.1.0 - Production
NLSRTL Version 9.2.0.1.0 - Production

如果是Enterprise Edition的话,会显示Oracle9i Enterprise Edition         

附:网上的讨论。
http://www.dbasupport.com/forums/archive/index.php/t-23457.html
jmodic04-09-2002, 04:36 PM
Originally posted by utkinpol
All the point is to force 9i standart edition to maintain the standby database, typically in 8i for standby database support you have to use log_arch_dest_N syntaxis.
Will it work the same way it was for 8i standard?
That is "lie and bullshit" from your side (I'm using your language). Since it was introduced in 8i, LOG_ARCH_DEST_n parameters were never supported in Standard edition, only in EE. You simply couldn't used them in SE. Period. If you claim you were using them in 8i SE, you are bullshitting.

So they haven't silently removed normal support for standby database in 9i, as it never existed that way in 8i SE. In short, nothing has change between 8i and 9i regarding this isue. So I don't understand why such a big fuss about this topic....

开发板推荐:天空星STM32F407VET6开发板

超高性价比 STM32主控 | 超高主频 | 一板兼容百芯 | 比赛神器 | 沉金彩色丝印

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值