先看一下数据字典:
SQL> desc v$database
名称 是否为空? 类型
----------------------------------------- -------- ----------------------------
DBID NUMBER
NAME VARCHAR2(9)
............................
SQL> desc v$instance
名称 是否为空? 类型
----------------------------------------- -------- ----------------------------
INSTANCE_NUMBER NUMBER
INSTANCE_NAME VARCHAR2(16)
.......................
SQL>
在讲课的时候我经常强调db_name的长度不能超过8位,小于等于9位,尽管数据字典v$database里面记录的是9位,在10g以前的版本超过8位通过dbca建库时会有错误提示,尽管10g没有了提示,不过在建库之后会截断,从而会导致网络配置等引起的一系列问题(如果sid和db_name使用的是相同的名字);提到db_name顺便也介绍下SID,sid其实也有限制,在windows下它只能是由字母和数字组成,并且字母打头,不能有任何特殊字符,包括下划线。unix/linux下有没有此限制没太注意,另外通过查看数据字典发现SID的长度应该不能超过16位,不过没有测试过...有机会留意一下就是...v$instance的instance_name真实的记录的是SID而不是instance_name。有关这些名字的区别可以参考我之前写的一篇文章:
http://www.itpub.net/viewthread.php?tid=903624&highlight=
在windows下简单的测试了一下:
在创建db是指定了全局数据库名为25个a,sid为25个b,db成功创建之后相关参数如下:
SQL> select status from v$instance;
STATUS
------------
OPEN
SQL> show parameter db_name
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_name string aaaaaaaa
SQL> select instance_name from v$instance;
INSTANCE_NAME
----------------
--上面sid为null,可能是因为超过了16位的缘故造成的...
SQL> show parameter instance_name
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
instance_name string bbbbbbbbbbbbbbbbbbbbbbbbb
SQL> select *from global_name;
GLOBAL_NAME
--------------------------------------------------------------------------------
AAAAAAAA
SQL>
而和db_name相关的名字都被截断了,只保留了8位...db目前使用一切正常,是否有问题待观查...
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/19602/viewspace-1031563/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/19602/viewspace-1031563/