月归档:三月 2011

查找V$PARAMETER 基表

1、使用trace查找show parameter执行语句

alter session set events '10046 trace name context forever,level 12';
show parameter process;
 alter session set events '10046 trace name context off';

2、查找trace文件

SELECT    d.VALUE
           || '/'
           || LOWER (RTRIM (i.INSTANCE, CHR (0)))
           || '_ora_'
           || p.spid
          || '.trc' trace_file_name
      FROM (SELECT p.spid
              FROM v$mystat m, v$session s, v$process p
             WHERE m.statistic# = 1 AND s.SID = m.SID AND p.addr = s.paddr) p,
          (SELECT t.INSTANCE
             FROM v$thread t, v$parameter v
            WHERE v.NAME = 'thread'
              AND (v.VALUE = 0 OR t.thread# = TO_NUMBER (v.VALUE))) i,
          (SELECT VALUE
             FROM v$parameter
            WHERE NAME = 'user_dump_dest') d

3、格式化trace文件

tkprof D:\oracle\diag\rdbms\xff\xff\trace\xff_ora_4780.trc D:\oracle\diag\rdbms\xff\xff\trace\abc.txt

4、找出对应sql语句

SELECT NAME NAME_COL_PLUS_SHOW_PARAM,
       DECODE(TYPE,
              1,
              'boolean',
              2,
              'string',
              3,
              'integer',
              4,
              'file',
              5,
              'number',
              6,
              'big integer',
              'unknown') TYPE,
       DISPLAY_VALUE VALUE_COL_PLUS_SHOW_PARAM
  FROM V$PARAMETER
 WHERE UPPER(NAME) LIKE UPPER('%process%')
 ORDER BY NAME_COL_PLUS_SHOW_PARAM, ROWNUM;

5、查找上面语句发现使用v$parameter对象
6、查看第一种来源

select owner,object_name,object_type from dba_objects where object_name ='V$PARAMETER';
select  dbms_metadata.get_ddl(object_type=>'SYNONYM',NAME=>'V$PARAMETER',SCHEMA=>'PUBLIC') from dual;

7、无结果,查看第二种来源

select * from v$fixed_table where name ='V%PARAMETER%';
 select * from v$fixed_view_definition where view_name='GV$PARAMETER';

8、得出结果,从中学习到数据库中的对象有两种来源

1)sys的fixed table : x$ksppi x, x$ksppcv y
2)sys的fixed view: GV$PARAMETER
3)sys的fixed view: V$PARAMETER
4) sys的普通view: V_$PARAMETER
5) public的synonym: v$parameter
所以,如果用sys访问v$parameter, 就是3=>2=>1
other user访问v$parameter, 就是5=>4=>3=>2=>1.

发表在 Oracle | 评论关闭

有dba权限,存储过程中引用视图v$session提示表不存在

需要显示授权
grand select on sys.V_$SESSION to xxx;
说明:不能直接授权给v$session
原因:v$session是公共同义词,不能被授权
(可以通过select * from dba_objects where object_name=’V$SESSION’;查询出来)
note:11gr2版本存在该问题,其他版本暂时未知

发表在 Oracle | 评论关闭

数据文件位置调整

1、关闭数据库
shutdown immediate;
2、移动数据文件
mv /u01/ora10g/oradata/ggtarget /u02/ora10g/oradata
3、数据库至于nomount状态
startup nomount;
4、创建pfile
create pfile from spfile;
5、修改pfile中control_files
6、使用pfile把数据库至于mount状态
shutdown immediate;
startup mount pfile=/u01/ora10g/product/10.2.0/db_1/dbs/initggtarge.ora;
7、修改文件位置

--查询select name from v$datafile;
alter database rename file '/u01/ora10g/oradata/ggtarge/system01.dbf' to '/u02/ora10g/oradata/ggtarge/system01.dbf';
alter database rename file '/u01/ora10g/oradata/ggtarge/undotbs01.dbf' to '/u02/ora10g/oradata/ggtarge/undotbs01.dbf';
alter database rename file '/u01/ora10g/oradata/ggtarge/sysaux01.dbf' to '/u02/ora10g/oradata/ggtarge/sysaux01.dbf';
alter database rename file '/u01/ora10g/oradata/ggtarge/users01.dbf' to '/u02/ora10g/oradata/ggtarge/users01.dbf';
 --查询select member from v$logfile;
alter database rename file '/u01/ora10g/oradata/ggtarge/redo01.log' to '/u02/ora10g/oradata/ggtarge/redo01.log';
alter database rename file '/u01/ora10g/oradata/ggtarge/redo02.log' to '/u02/ora10g/oradata/ggtarge/redo02.log';
--查询select name from v$tempfile;
alter database rename file '/u01/ora10g/oradata/ggtarge/temp01.dbf' to '/u02/ora10g/oradata/ggtarge/temp01.dbf';

8、创建spfile
create spfile to pfile;
9、重启数据库使用spfile启动
shutdown immediate;
startup;

发表在 Oracle备份恢复 | 评论关闭