当前位置:首页 > 开发 > 数据库 > 正文

Oracle常见问题

发表于: 2012-11-27   作者:sunjing   来源:转载   浏览次数:
摘要:  1. ORA-01502 重建索引 Begin   For v_index In (Select index_name As iname                    

 1. ORA-01502 重建索引

Begin

  For v_index In (Select index_name As iname

                    From User_Indexes

                   Where status = 'UNUSABLE') Loop

    Execute Immediate 'alter index ' || v_index.Iname || ' rebuild';

  End Loop;

End;

 

2. 重置Sequence

declare

  n      number(10);

  max_id number(10);

  diff   number(10);

  tsql   varchar2(100);

 

begin

  select max(s.sfck_id) into max_id from sfieldcheck s;

  select max_id - seq_sfck_id.nextval into diff from dual;

  tsql := 'alter   sequence   seq_sfck_id   increment   by ' || diff;

  dbms_output.put_line(tsql);

  execute immediate tsql;

 

  select seq_sfck_id.nextval into n from dual;

  tsql := 'alter   sequence   seq_sfck_id   increment   by   1';

  execute immediate tsql;

end;

 

3. 查看列信息

SELECT * FROM USER_TAB_COLUMNS where COLUMN_NAME = 'col_name';

 

查看TABLE、VIEW、INDEX、SEQUENCE、PACKAGE等对象信息

select * from user_objects where object_type = 'TABLE' and object_name = 'object_name';

4. DBA_TABLES、ALL_TABLES、USER_TABLES三个视图可以用来查询表信息,它们之间的关系和区别

DBA_TABLES >= ALL_TABLES >= USER_TABLES

DBA_TABLES为DBA拥有的或可以访问的所有表。

ALL_TABLES为某一用户拥有的或可以访问的所有表。

USER_TABLES为某一用户所拥有的所有表。

由上可知,当某一用户本身就为数据库DBA时,DBA_TABLES与ALL_TABLES等价。

5. dba_tables、user_all_tables中num_rows的值和表count(*)不一致原因

num_rows、blocks等一些信息是使用analyze table分析表时填写进去的,命令格式如下:

analyze table tabname compute statistics;

call dbms_stats.gather_table_stats(ownname, tabname);

从Oracle 10g开始,Oracle在建库后就默认创建了一个名为GATHER_STATS_JOB的定时任务,用于自动收集CBO(Cost Based Optimization)的统计信息。这个任务默认情况下在工作日晚上10:00 - 6:00和周末全天开启(同在10点运行的Job还有一个AUTO_SPACE_ADVISOR_JOB)。调用DBMS_STATS.GATHER_DATABASE_STATS_JOB_PROC收集统计信息。该过程首先检测统计信息缺失和陈旧的对象,然后确定优先级,再开始进行统计。

说明:当做完统计信息后,如果对象的行数修改达到10%,DBMS_STATS就认为是统计信息过旧。

 可以通过以下SQL查询这个JOB的运行情况:

SQL> select * from Dba_Scheduler_Jobs where JOB_NAME ='GATHER_STATS_JOB'

    然而这个自动化功能已经影响了很多系统的正常运行,晚上10点对于大部分生产系统也并非空闲时段。而自动分析可能导致极为严重的闩锁竞争,进而可能导致数据库Hang或者Crash。

    关闭及开启自动搜集功能,有两种方法,分别如下:

方法一:

exec dbms_scheduler.disable('SYS.GATHER_STATS_JOB');

exec dbms_scheduler.enable('SYS.GATHER_STATS_JOB');

方法二:

alter system set "_optimizer_autostats_job"=false scope=spfile;

alter system set "_optimizer_autostats_job"=true scope=spfile;

6. 修改日期显示格式
修改当前会话日期格式
    alter session set NLS_DATE_FORMAT='yyyy-mm-dd hh24:mi:ss';
修改初始化参数
    alter system set nls_date_format='yyyy-mm-dd' SCOPE=spfile;
修改客户端注册表
    在HKEY_LOCAL_MACHINE/SOFTWARE/ORACLE下,新建字符串值nls_date_format=yyyy-mm-dd hh24:mi:ss

7. 查询本地化参数

    与本地化参数有关的数据字典有:

    V$NLS_PARAMETERS
    V$PROPS$
    NLS_DATABASE_PARAMETERS
    NLS_INSTANCE_PARAMETERS
    NLS_SESSION_PARAMETERS

    执行以下任一语句均可:

    show parameters;
    select * from V$NLS_PARAMETERS;
    select * from V$PROPS$;
    select * from nls_session_parameters;

 8. 插入换行符

 换行符 chr(10)               回车符 chr(13)

insert into t(col) values('hello'||chr(10)||'coco');

Oracle常见问题

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
安装好Oracle后可以使用PLsqlDeveloper连接Oracle 那么可以安装好Oracle客户端后直接使用PLsqlDevel
一.RMAN Catalog兼容性 MOS的文档:RMAN Compatibility Matrix [ID 73431.1] 1.1 About RMAN Compat
JAVA閏年判斷 方法1: int year = 2008; boolean falg = false; if(year%4!=0){ falg=false; }else
JAVA閏年判斷 方法1: int year = 2008; boolean falg = false; if(year%4!=0){ falg=false; }else
1,找不到palette工具箱 2,列里面加上备注 3,列的name与code不同步 4,PDM与数据库同步,dataBase
// fembed-bitcode-is-not-supported-on-versions-of-ios-prior-to-6-0 在 TARGETS->BUILD Phase
1、使用 ORDesigner 无法生成代码 选择当前的 *.admf 文件,在属性窗口中,请确认 Custom Tool 的
目录 常见问题FAQ 1 目录 2 修订历史纪录 3 1 CDO组件使用常见问题 4 2 JMail组件使用常见问题 6 3
目录 常见问题FAQ 1 目录 2 修订历史纪录 3 1 CDO组件使用常见问题 4 2 JMail组件使用常见问题 5 3
1.当输入apt-get update报错信息 关于公钥错误 只要验证然后输入后8位就可解决 然后最后两行错误.按
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号