1. 如何查看一个参数是动态还是静态的
参数我们可以在v$parameter中查到。
COLUMN VALUE FORMAT a40;
COLUMN NAME FORMAT a20;
SELECT NAME,VALUE,ISSES_MODIFIABLE,ISSYS_ MODIFIABLE FROM V$SYSTEM_PARAMETER;
这里有两个列isses_modifiable和issys_modifiable 分别对应的是SESSION级别修改的参数和SYSTEM级别修改的参数。
如果isses_modifiable=true,表明这个参数可以在SESSION级别可以修改,并且立即生效。false就是不能修改。
ALTER SESSION set sql_trace=true;
如果issys_modifiable=immediate,表示这个参数可以在SYSTEM立即修改,并且立即生效。
ALTER SYSTEM set sql_trace=true;
若如果issys_modifiable=deferred,表示这个参数不能在直接修改在内存中,需要加scope=spfile,重启后才能生效。
ALTER SYSTEM set asm_diskstring=’Oracle_group’ scope=spfile ;
若issys_modifiable=false 必须重启实例才能够生效。。
IMMEDIATE:动态参数,立刻生效
DEFERRED:动态参数,对以后建立的SESSION生效,仍然连接的SESSION保持原有属性
FALSE:静态参数,必须重启实例才能够生效。
■ MMEDIATE - Parameter can be changed with ALTER SYSTEM regardless of the type of parameter file used to start the instance. The change takes effect immediately.
■ DEFERRED - Parameter can be changed with ALTER SYSTEM regardless of the type of parameter file used to start the instance. The change takes effect in subsequent sessions.
■ FALSE - Parameter cannot be changed with ALTER SYSTEM unless a server parameter file was used to start the instance. The change takes effect in subsequent instances.
2. 区别ALTER DATABASE ,ALTER SYSTEM ,ALTER SESSION;
ALTER DATABASE: 数据库级
ALTER SYSTEM: 实例级
ALTER SESSION: 会话级
ALTER DATABASE 数据文件、表空间、日志文件等等,和物理上的文件有关系的一些变更,也就是对数据库的更改,一般改变的是物理上的,通过ALTER DATABASE操作时会触发controlfile header和其他一些物理文件头信息的变化 能看得见的
比如 :ALTER dtabase rename datafile
ALTER SYSTEM 动态的改变数据库例程的属性 一般是逻辑上的 看不见的
比如:ALTER SYSTEM set db_cache_size
ALTER SESSION 改变的的是一个会话的属性 逻辑上的 看不见的
比如:ALTER SESSION set nls_language
3. 如何查看表空间或表的创建结构
a. 查看表空间的创建结构
Set long 2000
Select
sys.dbms_metadata.get_ddl(‘TABLESPACE’,’TABLESPACE_NAME’)
FROM DUAL;
b. 查看用户表索引的创建结构
Select sys.dbms_metadata.get_ddl(‘TABLE’,’TABLE_NAME’,’USERNAME’) FROM DUAL;
Select sys.dbms_metadata.get_ddl(‘INDEX’,’INDEX_NAME’,’USERNAME’) FROM DUAL;
c. 查看用户创建的procedure结构
Select sys.dbms_metadata.get_ddl(‘PROCEDURE’,’PROCEDURE_NAME’) FROM DUAL;