在从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$;