ITPub博客

首页 > 数据库 > Oracle > [20141205]参数引号大小写问题.txt

[20141205]参数引号大小写问题.txt

Oracle 作者:lfree 时间:2014-12-05 12:15:26 0 删除 编辑

[20141205]参数引号大小写问题.txt

--前几天在做dataguard时遇到修改参数的一些小问题,这些小问题有时候很浪费时间,看来做dba有时候需要一副好眼睛。

[20140529]11g下参数audit_trail的修改.txt=> http://blog.itpub.net/267265/viewspace-1172182/
[20141202]关于参数的修改问题.txt => http://blog.itpub.net/267265/viewspace-1353703/

--自己在把遇到的一些小问题做一些总结:
--安全起见,我备份我测试环境的spfile文件。
--改用init文件启动。

1.建立测试环境:
SYS@test> @ver1

PORT_STRING                    VERSION        BANNER
------------------------------ -------------- --------------------------------------------------------------------------------
x86_64/Linux 2.4.xx            11.2.0.3.0     Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production


$ cd /u01/app/oracle11g/product/11.2.0/db_2/dbs
$ cp spfiletest.ora spfiletest.ora.20141205
$ cp spfiletest.ora /tmp/aaa.ora
$ mv spfiletest.ora spfiletest.ora.xxx
$ cat inittest.ora
spfile=/tmp/aaa.ora
 
2.使用pfile启动到nomunt,这样足够说明问题。
SYS@test> startup nomount
ORACLE instance started.

Total System Global Area 1603411968 bytes
Fixed Size                  2228784 bytes
Variable Size             973082064 bytes
Database Buffers          620756992 bytes
Redo Buffers                7344128 bytes

SYS@test> show parameter spfile
NAME     TYPE     VALUE
-------- -------- ----------------
spfile   string   /tmp/aaa.ora

--可以发现使用spfile=/tmp/aaa.ora.

2.关于参数audit_trail的修改问题:
http://blog.itpub.net/267265/viewspace-1172182/

SYS@test> alter system set audit_trail="db,extended" scope=spfile ;
alter system set audit_trail="db,extended" scope=spfile
*
ERROR at line 1:
ORA-00096: invalid value db,extended for parameter audit_trail, must be from among extended, xml, db_extended, false, true, none, os, db


SYS@test> alter system set audit_trail='db,extended' scope=spfile ;
alter system set audit_trail='db,extended' scope=spfile
*
ERROR at line 1:
ORA-00096: invalid value db,extended for parameter audit_trail, must be from among extended, xml, db_extended, false, true, none, os, db

SYS@test> alter system set audit_trail=db,extended scope=spfile ;
System altered.

--仅仅这样修改成功,实际上这是两个参数,如果写成这样是可以通过的。
SYS@test> alter system set audit_trail='Db','extended' scope=spfile ;
System altered.

--注意第1个字母是大写,重启看看。

SYS@test> show parameter audit_trail
NAME         TYPE     VALUE
------------ -------- ---------------
audit_trail  string   DB, EXTENDED

$ strings /tmp/aaa.ora | grep -i audit_trail
*.audit_trail='DB','EXTENDED'

--注意一些细节,value输出的是大写。 无论如何输入都是大写。

3.再看看看修改服务名的问题:
SYS@test> show parameter service_names

NAME           TYPE    VALUE
-------------- ------- ----------
service_names  string  test.com,b

--上面我提到,这样修改不行
SYS@test> alter system set service_names=a,b,test.com;
alter system set service_names=a,b,test.com
                                       *
ERROR at line 1:
ORA-00922: missing or invalid option

--注意*好指向的问题,指向test.com的点。如果写成这样可以通过的。

SYS@test> alter system set service_names=a,b,test;
System altered.

SYS@test> show parameter service_names
NAME            TYPE    VALUE
--------------- ------- -----------
service_names   string  A, B, TEST

--注意value的值输出大写。

SYS@test> alter system set service_names='a,B,test.com';
System altered.

SYS@test> show parameter service_names
NAME                                 TYPE                                     VALUE
------------------------------------ ---------------------------------------- ---------------
service_names                        string                                   a,B,test.com

--注意value的值输出保持原样。

SYS@test> alter system set service_names='A','B','test';
System altered.

SYS@test> show parameter service_names
NAME           TYPE     VALUE
-------------- -------- -----------
service_names  string   A, B, test

--oracle对于参数的处理缺省存在一些乱,如果不了解这些细节容易出现一些小问题。当然服务名大小写并不影响应用。

4.其他参数,例子db_unique_name:

SYS@test> show parameter db_unique_name
NAME             TYPE     VALUE
---------------- -------- ----------
db_unique_name   string   test

--做dg时db_unique_name用来唯一标识每个数据库。看看加引号与不加引号的区别:

SYS@test> alter system set db_unique_name=test;
alter system set db_unique_name=test
                 *
ERROR at line 1:
ORA-02095: specified initialization parameter cannot be modified

SYS@test> alter system set db_unique_name=test scope=spfile;
System altered.

SYS@test> host strings /tmp/aaa.ora | grep -i  db_unique_name
*.db_unique_name='TEST'

--注意看是大写。

SYS@test> alter system set db_unique_name='test' scope=spfile;
System altered.

SYS@test> host strings /tmp/aaa.ora | grep -i  db_unique_name
*.db_unique_name='test'

--注意看是小写。

--这个有区别吗?给一个链接:http://www.seiler.us/2014/03/what-to-expect-when-you-changing.html
--也许问题不大,如果大家看10g,11g的recovery_file_dest目录下一层文件夹,至少我做的机器都是大写目录。(我个人非常不喜欢大写)
--但是我安装的oracle 12c for windows下的这个目录下一层文件夹就是小写。我一直想搞清楚哪里导致这个问题。

总之,一些细节很重要。细节就是魔鬼…..

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/267265/viewspace-1357442/,如需转载,请注明出处,否则将追究法律责任。

全部评论
熟悉oracle相关技术,擅长sql优化,rman备份与恢复,熟悉linux shell编程。

注册时间:2008-01-03

  • 博文量
    2696
  • 访问量
    6467196