在从oracle10g升级到oracle11g后,就需要对oracle11g的新特性进行了解,这些特性可能会对应用及性能产生影响,需要调整。

1. Oracle11g密码过期策略

oracle11g中默认在default概要文件中设置了PASSWORD_LIFE_TIME=180天后过期,到期后会自动改密码, 会影响应用的应用。

SQL> alter profile default limit password_life_time unlimited;

 

2. Oracle11g对用户名密码大小写敏感

Oracle11g中默认用户名和密码大小写敏感,oracle10g就是没有这个问题。

SQL> alter system set sec_case_sensitive_logon=false scope=spfile;

 

3. Oracle11g空表不会立即创建segment,默认是true. 在oracle11.2.0.1这样就会产生一些问题,最大的问题就是exp导出时,空表不会导出数据。对于使用oracle11.2.0.1 exp客户端导入11.2.0.2以上版本数据库时会出现EXP-00001错误。

SQL> alter system set deferred_segment_creation = false scope=spfile;

经测试采用11.2.0.4的exp导出空表,现导入是可以导入的。如果采用expdp、impdp导入导出是没有问题的。

对于已经是空表问题的解决方式如下,找到表空,并立即分配空间:

SQL> select 'alter table '||table_name||' allocate extent;' from user_tables where num_rows=0 ;

'ALTERTABLE'||TABLE_NAME||'ALLOCATEEXTENT;'  
-----------------------------------------------------------    
alter table C allocate extent;    
alter table B allocate extent;    
alter table A allocate extent;    
alter table ABC allocate extent;    
alter table TEST_LOCK allocate extent;

 

4. Oracle11g默认是开启审记功能的,开启审记功能是会对性能产生影响的,可以考虑关闭。

SQL> alter system set audit_trail=none scope=spfile;

该参数默认为DB,即审计数据存在system表空间的AUD$表中。新接手生产库中造成一例SYSTEM表空间满的故障。警告日志记录如下。

ORA-1653: unable to extend table SYS.AUD$ by 128 in                 tablespace SYSTEM
ORA-1653: unable to extend table SYS.AUD$ by 8192 in                 tablespace SYSTEM
Thu Dec 10 08:47:13 2015
ORA-1653: unable to extend table SYS.AUD$ by 128 in                 tablespace SYSTEM
ORA-1653: unable to extend table SYS.AUD$ by 8192 in                 tablespace SYSTEM
Thu Dec 10 08:47:13 2015
ORA-1653: unable to extend table SYS.AUD$ by 128 in                 tablespace SYSTEM
ORA-1653: unable to extend table SYS.AUD$ by 8192 in                 tablespace SYSTEM
ORA-1653: unable to extend table SYS.AUD$ by 128 in                 tablespace SYSTEM
ORA-1653: unable to extend table SYS.AUD$ by 8192 in                 tablespace SYSTEM

最后直接清除掉:

truncate table sys.aud$;