欢迎访问 生活随笔!

生活随笔

当前位置: 首页 >

参数到不进oracle,Oracle对于启动参数检查不严格

发布时间:2023/12/1 56 豆豆
生活随笔 收集整理的这篇文章主要介绍了 参数到不进oracle,Oracle对于启动参数检查不严格 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

偶然发现Oracle对于pfile启动参数的检查并不严格。

比如修改参数文件如下:

[oracle@yans1 ~]$ vi initprimary.ora

primary.__db_cache_size=1644167168

primary.__java_pool_size=16777216

primary.__large_pool_size=16777216

.

.

.

*.sga_target=2147483648

*.standby_file_management='AUTO'

*.undo_tablespace='UNDOTBS1

*.undo_management='AUTO'

*.user_dump_dest='/opt/ora10g/admin/primary/udump'

注意,在undo_tablespace参数的值UNDOTBS1后面缺少了一个引号,如果利用这个PFILE来创建SPFILE,Oracle会检查出错误:

SQL> create spfile from pfile='/home/oracle/initprimary.ora';

create spfile from pfile='/home/oracle/initprimary.ora'

*

ERROR at line 1:

ORA-01078: failure in processing system parameters

LRM-00111: no closing quote for value 'AUTO'

'

但是如果尝试利用这个初始化参数启动到nomount或mount状态,Oracle并不会对参数的正确性进行检查:

SQL> startup mount pfile=initprimary.ora

ORACLE instance started.

Total System Global Area 2147483648 bytes

Fixed Size2074112 bytes

Variable Size486541824 bytes

Database Buffers1644167168 bytes

Redo Buffers14700544 bytes

Database mounted.

SQL> show parameter undo

NAMETYPEVALUE

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

undo_managementstringMANUAL

undo_retentioninteger900

undo_tablespacestringAUTO'

可以看到,UNDO_TABLESPACE的值变成了AUOT’,而UNDO_MANAGEMENT的值则丢失,变成了系统的默认值。

这种情况数据库还可以打开:

SQL> alter database open;

Database altered.

SQL> select name from v$datafile;

NAME

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

/data/oradata/primary/system01.dbf

/data/oradata/primary/undotbs01.dbf

/data/oradata/primary/sysaux01.dbf

/data/oradata/primary/users01.dbf

/data/oradata/primary/test01.dbf

/data/oradata/primary/new01.dbf

/data/oradata/primary/new02.dbf

7 rows selected.

当然只要是非SYS用户执行任何的需要回滚段的操作,都会导致错误:

SQL> conn test/test

Connected.

SQL> create table t_undo (id number) tablespace new;

create table t_undo (id number) tablespace new

*

ERROR at line 1:

ORA-01552: cannot use system rollback segment for non-system tablespace 'NEW'

看来Oracle对于启动参数的检查还存在漏洞。

总结

以上是生活随笔为你收集整理的参数到不进oracle,Oracle对于启动参数检查不严格的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。