重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
The ISSYS_MODIFIABLE column in V$PARAMETER tells us whether the parameters are static or dynamic. Static parameters require the instance to be restarted while dynamic parameters can take effect immediately upon being changed.
网站建设哪家好,找创新互联建站!专注于网页设计、网站建设、微信开发、微信小程序、集团企业网站建设等服务项目。为回馈新老客户创新互联还提供了播州免费建站欢迎大家使用!
SQL select distinct issys_modifiable from v$parameter;
ISSYS_MODIFIABLE
---------------------------
DEFERRED
FALSE
IMMEDIATE
If the ISSYS_MODIFIABLE value is set to FALSE for a parameter, it means that the parameter cannot change its value in the lifetime of the instance; the database needs to be restarted for changes to take effect. A parameter set toIMMEDATE value means that it is dynamic and can be set to change the present active instance as well as future database restarts. A parameter set to DEFERRED is also dynamic, but changes only affect subsequent sessions, currently active sessions will not be affected and retain the old parameter value.
pfile 静态 spfile动态oracle10g版本 如果安装数据库软件时安装了数据库或是使用DBCA创建了数据库会默认生成spfilepfile可以对spfile的备份,是文本格式的,容易修改参数,再生成spfile,spfile是二进制格式的不易修改。这个参数是数据库启动必须的参数。如果手动创建数据库就需要使用这些参数,如果使用图形的软件创建就会自动生成
ORACLE数据库启动以后,通过select * from v$parameter这个语句可以查看到oracle数据库使用的所有参数。
对于oracle的参数文件,分为spfile 二进制文件和pfile 文本文件,现在的数据库一般都是使用spfile二进制文件作为启动oracle的参数文件。
对于spfile和pfile之间的区别:
1、spfile是二进制文件(可以通过 string spfileorcl.ora进行二进制的文件查看),不可以使用文本编辑器修改,只能在sqlplus中使用命令动态修改参数。对于pfile是文本文件,可以直接使用文本编辑器进行修改,重启数据库后生效。
2、spfile必须存储在服务端,一般是在$ORACLE_HOME/dbs目录下面,对于pfile则是可以存储在客户端,可以通过客户端的pfile启动数据库。
3、spfile 和pfile之间可以动态转化在sql命令下(不管是否已近启动数据库实例)。
通过pfile创建spfile create pfile=’/u01/app/oracle/dbs/spfileorcl.ora’ from pfile=’/u01/app/oracle/dbs/initorcl.ora’(或者使用 create spfile from pfile)。
4、如果启动数据库start 不指定参数文件(如果sid是orcl),则会在$ORACLE_HOME/dbs 目录下依次寻找参数文件 spfileorcl.orainitorcl.ora。
5、可以指定参数文件来启动数据库(这里只能通过pfile文件,不能是spfile文件)
startup pfile='/u01/app/oracle/dbs/init.ora'(使用pfile文件)。
6、对于参数文件中没有指定的参数,均是采取相关参数的默认值。
create or replace type type_split as table of varchar2(50); --创建一个type,如果为了使split函数具有通用性,请将其size 设大些。\x0d\x0a\x0d\x0a--创建function\x0d\x0acreate or replace function split\x0d\x0a(\x0d\x0a p_list varchar2,\x0d\x0a p_sep varchar2 := ','\x0d\x0a) return type_split pipelined\x0d\x0a is\x0d\x0a l_idx pls_integer;\x0d\x0a v_list varchar2(50) := p_list;\x0d\x0abegin\x0d\x0a loop\x0d\x0a l_idx := instr(v_list,p_sep);\x0d\x0a if l_idx 0 then\x0d\x0a pipe row(substr(v_list,1,l_idx-1));\x0d\x0a v_list := substr(v_list,l_idx+length(p_sep));\x0d\x0a else\x0d\x0a pipe row(v_list);\x0d\x0a exit;\x0d\x0a end if;\x0d\x0a end loop;\x0d\x0a return;\x0d\x0aend split;\x0d\x0a\x0d\x0a使用:\x0d\x0a select * from table(split('1,2,3,4,5,6,7,8'\x0d\x0a,','));\x0d\x0a然后就可以通过“,”来分割数字了