SQL> select * from v$controlfile;
未选定行而执行show parameter control_files;
能正确显示控制参数的信息请问这是问什么?

解决方案 »

  1.   

    楼主看看这篇文章,不知道你的是不是这种情况,RAC情况下,是会出现 show有结果,select无结果的。看5.3步里面。http://hi.baidu.com/ljm0211/blog/item/2e30f11f255febf0e1fe0b3e.html
      

  2.   

    select * from v$controlfile; show parameter control_files; STATUS  NAME
    ------- --------------------------------------------------------------------------------
            D:\ORACLE\ORADATA\FZLGFM\CONTROL01.CTL
            D:\ORACLE\ORADATA\FZLGFM\CONTROL02.CTL
            D:\ORACLE\ORADATA\FZLGFM\CONTROL03.CTLNAME                                 TYPE        VALUE
    ------------------------------------ ----------- ------------------------------
    control_files                        string      d:\oracle\oradata\FZLGFM\CONTROL01.CTL, d:\oracle\oradata\FZLGFM\CONTROL02.CTL, d:\oracle\oradata\FZLGFM\CONTROL03.CTL
      

  3.   


    楼主 在这之前有没有做什么操作? 比如移动 控制文件位置? 修改控制文件?网上的说法:
    查看控制文件中关于数据文件中的数据记录信息:(注意,DATAFILE一定要大写,否则会提示"未选定行")
    比如:CONTROL01.CTL , 要大写...
    ------------------------------------------------------------------------------
    Blog: http://blog.csdn.net/tianlesoftware
    网上资源: http://tianlesoftware.download.csdn.net
    相关视频:http://blog.csdn.net/tianlesoftware/archive/2009/11/27/4886500.aspx
    Q Q 群:62697716 
      

  4.   

    show parameter显示的内容来自v$parameter
    而v$controlfile和v$parameter的基表是不一样的
    SQL> select * from v$fixed_view_definition where view_name='V$CONTROLFILE';VIEW_NAME
    ------------------------------
    VIEW_DEFINITION
    --------------------------------------------------------------------------------V$CONTROLFILE
    select  STATUS , NAME, IS_RECOVERY_DEST_FILE, BLOCK_SIZE, FILE_SIZE_BLKS  from GV$CONTROLFILE where inst_id = USERENV('Instance')
    SQL> select * from v$fixed_view_definition where view_name='GV$CONTROLFILE';
    VIEW_NAME
    ------------------------------
    VIEW_DEFINITION
    --------------------------------------------------------------------------------GV$CONTROLFILE
    select inst_id,decode(bitand(cfflg,1),0,'',1,'INVALID'),cfnam, decode(bitand(cffl2,1),0,'NO','YES'), cfbsz, cffsz  from /*x$kcccf*/
    SQL> select * from v$fixed_view_definition where view_name='V$PARAMETER';VIEW_NAME
    ------------------------------
    VIEW_DEFINITION
    --------------------------------------------------------------------------------V$PARAMETER
    select  NUM , NAME , TYPE , VALUE , DISPLAY_VALUE, ISDEFAULT , ISSES_MODIFIABLE
    , ISSYS_MODIFIABLE , ISINSTANCE_MODIFIABLE, ISMODIFIED , ISADJUSTED , ISDEPRECATED, DESCRIPTION, UPDATE_COMMENT, HASH  from GV$PARAMETER where inst_id = USERENV('Instance')
    SQL> select * from v$fixed_view_definition where view_name='GV$PARAMETER';VIEW_NAME
    ------------------------------
    VIEW_DEFINITION
    --------------------------------------------------------------------------------GV$PARAMETER
    select x.inst_id,x.indx+1,ksppinm,ksppity,ksppstvl, ksppstdvl, ksppstdf,  decode(bitand(ksppiflg/256,1),1,'TRUE','FALSE'),  decode(bitand(ksppiflg/65536,3),1,'IMMEDIATE',2,'DEFERRED',                                  3,'IMMEDIATE','FALSE'),  decode(bitand(ksppiflg,4),4,'FALSE',                                     decode(bitand(ksppiflg/65536,3), 0, 'FALSE', 'TRUE')),     decode(bitand(ksppstvf,7),1,'MODIFIED',4,'SYSTEM_MOD','FALSE'),  decode(bitand(ksppstvf,2),2,'TRUE','FALSE'),  decode(bitand(ksppilrmflg/64, 1), 1, 'TRUE', 'FALSE'),  ksppdesc, ksppstcmnt, ksppihash  from /*x$ksppi x, x$ksppcv y*/ where (x.indx = y.indx) and  ((translate(ksppinm,'_','#') not like '##%') and    ((translate(ksppinm,'_','#') not like'#%')      or (ksppstdf = 'FALSE') or      (bitand(ksppstvf,5) > 0)))
      

  5.   

    SQL> shutdown immediate;
    Database closed.
    Database dismounted.
    ORACLE instance shut down.
    SQL> startup nomount
    ORACLE instance started.Total System Global Area  176160768 bytes
    Fixed Size                  1247948 bytes
    Variable Size              79693108 bytes
    Database Buffers           92274688 bytes
    Redo Buffers                2945024 bytes
    SQL> show parameter control_files;NAME                                 TYPE
    ------------------------------------ ---------------------------------
    VALUE
    ------------------------------
    control_files                        string
    D:\ORACLE\ORADATA\ORCL\CONTROL
    01.CTL, D:\ORACLE\ORADATA\ORCL
    \CONTROL02.CTL, D:\ORACLE\ORAD
    ATA\ORCL\CONTROL03.CTL
    SQL> select * from v$controlfile;  --此时数据库在nomount状态 查询没有结果no rows selected 
    SQL> alter database mount  --将数据库mount
      2  ;Database altered.SQL> select * from v$controlfile;  --现在就可以查出记录了
    STATUS  NAME                           IS_ BLOCK_SIZE FILE_SIZE_BLKS
    ------- ------------------------------ --- ---------- --------------
            D:\ORACLE\ORADATA\ORCL\CONTROL NO       16384            432
            01.CTL        D:\ORACLE\ORADATA\ORCL\CONTROL NO       16384            432
            02.CTL        D:\ORACLE\ORADATA\ORCL\CONTROL NO       16384            432
            03.CTL
    SQL> select status from v$instance;STATUS
    ------------
    MOUNTED
      

  6.   

    呵呵 这下知道是怎么回事了吧
    先使用
    select status from v$instance;
    来查询数据库当前的状态
    如果不对的话就进行相应的更改就可以了