V$parameter中ISDEFAULT=TRUE表示参数为默认值吗?
答案不一定哟。 下面来详细的唠唠。 今天在看巡检报告时,发现明明配置了DG的,怎么非默认值参数中,没有 LOG_ARCHIVE_CONFIG,LOG_ARCHIVE_DEST_2等DG相关的参数 检查巡检脚本,发现提取非默认参数的脚本加了一个条件:isdefault ='FALSE' 马上尝试修改 LOG_ARCHIVE_DEST_2 ,如下: SQL> alter system set log_archive_dest_2='location=d:\oracle\'; 系统已更改。 再去执行 提取默认参数的SQL: 1* select name,value from v$parameter where isdefault ='FALSE' NAME VALUE ------------------------------ -------------------------------------------------- processes 960 nls_language SIMPLIFIED CHINESE nls_territory CHINA sga_target 1258291200 control_files D:\ORACLE\ORADATA\ORCL\CONTROL01.CTL db_block_size 8192 compatible 19.0.0 undo_tablespace UNDOTBS1 remote_login_passwordfile EXCLUSIVE dispatchers (PROTOCOL=TCP) (SERVICE=orclXDB) NAME VALUE ------------------------------ -------------------------------------------------- local_listener LISTENER_ORCL audit_file_dest D:\ORACLE\ADMIN\ORCL\ADUMP audit_trail DB db_name orcl open_cursors 300 pga_aggregate_target 209715200 diagnostic_dest D:\ORACLE 发现,依然没有这个参数。 单独去查看这个参数的isdefault的值: SQL> select name,value,isdefault from v$parameter where name='log_archive_dest_2'; NAME VALUE ISDEFAULT ------------------------------ ------------------------------ ------------------ log_archive_dest_2 location=d:\oracle\ TRUE 原来这个 ISDEFAULT=true 所以,看不到 这个是什么情况,明明该参数已经修改,怎么这里 ISDEFAULT 还等于TRUE。 其实,这里,我们对于这个 ISDEFAULT 字段有误解. 这个字段 ISDEFAULT 表示在启动时,如果该参数已经修改过,就为FALSE,否则为TRUE. 而前面,虽然修改了 log_archive_dest_2 参数,但没有重启 于是我们重启一下数据库, SQL> shutdown immediate 数据库已经关闭。 已经卸载数据库。 ORACLE 例程已经关闭。 SQL> startup ORACLE 例程已经启动。 Total System Global Area 1258287416 bytes Fixed Size 9027896 bytes Variable Size 452984832 bytes Database Buffers 788529152 bytes Redo Buffers 7745536 bytes 数据库装载完毕。 数据库已经打开。 SQL> select name,value,isdefault from v$parameter where name='log_archive_dest_2'; NAME VALUE ISDEFAULT ------------------------------ ------------------------------ ------------------ log_archive_dest_2 location=d:\oracle\ FALSE 是否发现这时,log_archive_dest_2 的 ISDEFAULT 为FALSE了,表示启动时,这个参数的值不是默认值了。 如果这个时候,我们修改为默认值,是否,这个参数就会为TRUE呢 SQL> alter system reset log_archive_dest_2; 系统已更改。 SQL> select name,value,isdefault from v$parameter where name='log_archive_dest_2'; NAME VALUE ISDEFAULT ------------------------------ -------------------------------------------------- ------------------ log_archive_dest_2 FALSE SQL> 发现还是为FALSE SQL> startup force; ORACLE 例程已经启动。 Total System Global Area 1258287416 bytes Fixed Size 9027896 bytes Variable Size 452984832 bytes Database Buffers 788529152 bytes Redo Buffers 7745536 bytes 数据库装载完毕。 数据库已经打开。 SQL> select name,value,isdefault from v$parameter where name='log_archive_dest_2'; NAME VALUE ISDEFAULT ------------------------------ -------------------------------------------------- ------------------ log_archive_dest_2 TRUE SQL> 重启后,发现现在为true了。 通过这个,现在是否明白了,为什么配置了DG,非默认参数没有DG的配置参数的原因了,应该是在线配置的DG,配置DG后,主库没有重启过导致。 |