您的位置:首页 > 其它

在spfile中删除系统参数

2015-07-29 12:24 483 查看
 
        一般想要不设置某个系统参数,会选择把系统参数设置为null值或空值,但是这样设置后,其实参数还是存在于spfile中的。当然,如果导出成pfile,再用pfile重起数据库后重新创建spfile显然是一个拿掉系统参数的办法。但我这里要介绍的是一种在线删除的办法。
        以下这个数据库以前做过DG主库,先看一下spfile中的内容:
[oracle@ora11g~]$ cd /oracle/app/oracle/product/11.2.0/dbhome_1/dbs/
[oracle@ora11gdbs]$ strings spfileORA11G.ora
…略
*.db_name='ORA11G'
*.db_recovery_file_dest='/oracle/app/oracle/fast_recovery_area'
*.db_recovery_file_dest_size=4322230272
*.db_unique_name='ORA11G'
*.diagnostic_dest='/oracle/app/oracle'
*.dispatchers='(PROTOCOL=TCP)(SERVICE=ORA11GXDB)'
*.fal_client='ORA11G'
*.fal_server='RAC11G'
*.log
_archive_dest_1='LOCATION=/oracle/app/oradata/ORA11G/arch'
*.log_archive_dest_2='SERVICE=RAC11GVALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=RAC11G'
*.memory_target=1920991232
*.open_cursors=300
*.processes=1500
*.remote_login_passwordfile='EXCLUSIVE'
*.sessions=1655
*.standby_file_management='AUTO'
*.undo_tablespace='UNDOTBS1'
 
        现在DG被我撤了,其中红颜色的参数我不想要了,那么先来试下设置为空值或null值:
SQL>alter system set fal_client='' scope=spfile;
Systemaltered.
SQL>alter system set fal_server=null scope=spfile;
Systemaltered.
 
        检查下spfile发现还有记录
[oracle@ora11g~]$ strings spfileORA11G.ora
…略
*.fal_client=''
*.fal_server='NULL'
 
        重启后用show parameter看也是如此
SQL>show parameter fal
NAME                                 TYPE        VALUE
----------------------------------------------- ------------------------------
fal_client                           string
fal_server                           string      NULL
 
        现在用alter system reset 命令删除spfile中的系统参数:
SQL>alter system reset fal_client scope=spfile;
Systemaltered.
SQL>alter system reset fal_server scope=spfile;
Systemaltered.
SQL>alter system reset log_archive_dest_2 scope=spfile;
Systemaltered.
SQL>alter system reset standby_file_management scope=spfile;
Systemaltered.
 
    检查下spfile中的内容,这几个参数已经没有了。不过要误会,这里的删除只是在spfile中删除,用show parameter还是能看到的。

[oracle@ora11gdbs]$ strings spfileORA11G.ora
…略
*.db_name='ORA11G'
*.db_recovery_file_dest='/oracle/app/oracle/fast_recovery_area'
*.db_recovery_file_dest_size=4322230272
*.db_unique_name='ORA11G'
*.diagnostic_dest='/oracle/app/oracle'
*.dispatchers='(PROTOCOL=TCP)(SERVICE=ORA11GXDB)'
*.log_archive_dest_1='LOCATION=/oracle/app/oradata/ORA11G/arch'
*.memory_target=1920991232
*.open_cursors=300
*.processes=1500
*.remote_login_passwordfile='EXCLUSIVE'
*.sessions=1655
*.undo_tablespace='UNDOTBS1'
*.utl_file_dir='/oracle/expdp'
 
        再说下alter system reset
这个命令只能删除spfile中的参数,如果spfile中没指定的参数,就会报参数找不到的错。对于不存在于spfile中的参数,只要置成空就可以了。
SQL>show parameter sort_area_size
NAME                                TYPE        VALUE
----------------------------------------------- ------------------------------
sort_area_size                      integer     65536
 
SQL>alter system reset sort_area_size scope=spfile;
altersystem reset sort_area_size scope=spfile
*
ERROR at line 1:
ORA-32010: cannot find entry to delete in SPFILE
 
 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: