本站用于记录日常工作内容,虚拟化云计算,系统运维,数据库DBA,网络与安全。
 
0

ORACLE 中dbms_stats的使用

发表者:admin分类:数据库2017-11-10 16:58:41 阅读[3073]
ORACLE 中dbms_stats的使用dbms_stats能良好地估计统计数据(尤其是针对较大的分区表),并能获得更好的统计结果,最终制定出速度更快的SQL执行计划。exec dbms_stats.gather_schema_stats(ownname          => 'SCOTT',options          => 'GATHER AUTO',estimate_percent => dbms_stats.auto_sample_size,method_opt       => 'for all columns size repeat',degree           => 15)       为了充分认识dbms_stats的好处,需要仔细体会每一条主要的预编译指令(directive)。下面让我们研究每一条指令,并体会如何用它为基于代价的SQL优化器收集最高质量的统计数据。options参数使用4个预设的方法之一,这个选项能控制Oracle统计的刷新方式:gather——重新分析整个架构(Schema)。 gather empty——只分析目前还没有统计的表。 gather stale——只重新...
利用MySQL读写分离,提升应用数据吞吐性能 背景一般情况下,对数据库的读和写都在同一个数据库服务器中操作时,业务系统性能会降低。为了提升业务系统性能,优化用户体验,可以通过读写分离来减轻主数据库的负载。本篇文章分别从应用层和系统层来介绍读写分离的实现方法。应用层实现方法:应用层中直接使用代码实现,在进入Service之前,使用AOP来做出判断,是使用写库还是读库,判断依据可以根据方法名判断,比如说以query、find、get等开头的就走读库,其他的走写库。优点:1、多数据源切换方便,由程序自动完成。2、不需要引入中间件。3、理论上支持任何数据库。缺点:1、由程序员完成,运维参与不到。2、不能做到动态增加数据源。系统层实现方法:方式一:使用DRDS实现https://help.aliyun.com/document_detail/29681.html方式二:使用中间件MySQL-proxy实现本教程使用MySQL-proxy实现读写分离。MySQL-proxy介绍:MySQL Proxy是一个处于Client端和MySQL server端之间的简单程序,它可以监测、分析或改变它们的通信。它使用灵活,没有限制,常见的用途包括:负载平衡,故障、查询分析,查询过滤和修改等等。MySQL-proxy原理:MySQL Proxy是一个中间层代理,简...
代码编写规则 一、PLSQL 块的语法规则:     1、语句可以跨跃几行。     2、词汇单元可以包括:分隔符、标识符、文字、和注释内容。     3、分隔符:      +-*/=<>||....     4、标识符:      最多30个字符,不能有保留字除非用双引号引起。      字母开头,不与列同名。     5、文字串:如 V_ENAME:='FANCY';要用单引号括起来。        数值型可以用简单记数和科学记数法。     6、注释内容:        单行时用   --            多行用   /*   */        与C很相似 建议 定义变量:v_变量名 定义常量:c_常量名 定义游标:_cursor 定义异常:e_ 定义pl/sql表类型:_table_type 定义pl/sql表变量:_table 定义pl/sql记录类型:_record_type 定义pl/sql记录...
定义:CREATE [OR REPLACE] FUNCTION <过程名>[(参数列表)] RETURN 数据类型 IS         [局部变量声明]         BEGIN            可执行语句          EXCEPTION            异常处理语句          END [<过程名>];变量的类型:in 为默认类型,表示输入; out 表示只输出;in out 表示即输入又输出;使用:   示例1:创建函数:create or replace function f_1(n number) return number is    r emp%rowtype;BEGIN     dbms_output.put_line('姓名 薪水');     select * into r from emp where empno=n;     dbms_output.put_line(r.ename||' '||r.sal);    --输出结果,需要 set serverout on 才能显示.    ...
oracle 使用pl/sql通过雇员所在部门号查出对应部门名称。参考示例语句如下:declarev_no emp.deptno%TYPE;v_dname dept.dname%TYPE;begin  begin  select e.deptno into v_no from emp e where lower(e.ename)=lower('&dna');  end;select d.dname into v_dname from dept d where d.deptno=v_no;dbms_output.put_line('雇员姓名是:'||lower('&dna')||'的部门名是:'||v_dname);end;/
oracle 使用PL/SQL与游标(CURSOR),循环(loop),条件(if)来更新数据。declare  CURSOR emp_cursor is    SELECT ename, sal FROM emp FOR UPDATE;  emp_record emp_cursor%ROWTYPE;begin  OPEN emp_cursor;  LOOP    FETCH emp_cursor      INTO emp_record;    EXIT WHEN emp_cursor%NOTFOUND;    if emp_record.sal < 2000 THEN      UPDATE emp SET sal = sal * 1.1 where CURRENT of emp_cursor;    end if;  end loop;  commit;end;/本PL/SQL块使用了loop语句取的了所有雇员的姓名与工资,并且使用了条件控制语句(if)判断雇员工资,如果低于2000,则给该雇员增加10%的工资。使用sqldeveloper工具执行时,commit 只能放到end loop 之后,不能放到之前或是end if 之前。
oracle数据库时间戳转换成日期时间方法时间戳是自 1970 年 1 月 1 日(00:00:00 GMT)以来的秒数。它也被称为 Unix 时间戳(Unix Timestamp)。Unix时间戳(Unix timestamp),或称Unix时间(Unix time)、POSIX时间(POSIX time),是一种时间表示方式,定义为从格林威治时间1970年01月01日00时00分00秒起至现在的总秒数。Unix时间戳不仅被使用在Unix系统、类Unix系统中,也在许多其他操作系统中被广泛采用。北京时间是东8区,所以要加8小时。1, 现在需要将oracle数据库中的表中的时间戳字段转换成北京时间的日期时间格式,表格如下图。       COMPANY_NAME    BILL_NUM    STARTTIME     1    随州市甜蜜食品厂    9002254531    1370769194     使用下面方法可以转换。SELECT c.company_name,c.bill_num,c.starttime,TO_CHAR(c.starttime / (60 * 60 * 24) +               TO_DATE('1970-01-01 08:00:00', 'YYYY-MM-DD HH:MI:SS'),    &nbs...
oracle 利用存储过程输入参数返回多行数据方法。oracle 自带示例scott账号下,利用存储过程返回一行与多行数据方法。1,利用存储过程返回一行数据,输入参数empno,返回ename与sal.create or replace procedure p_emp_info(p_empno emp.empno%TYPE)asp_ename emp.ename%TYPE;p_sal   emp.sal%TYPE;p_count NUMBER;begin   select count(e.empno) into p_count from scott.emp e where e.empno=p_empno;   if p_count=0 then      return;    end if;    select ename,sal into p_ename,p_sal from emp e where e.empno=p_empno;    DBMS_OUTPUT.put_line('部门号: '||p_empno||'.员工姓名:'||p_ename||'. 工资:'||p_sal);end;/由于select into 每次只能输入一行数据,所以这个方法只能用于一行数据返回。SQL> set serverout onSQL> exec p_emp_info(7782);部门号: 7782.员工姓名:CLARK. 工资:2450PL/SQL procedure successfully completed2,使用过程与游标,for in 循环,返回多行数据。SQL> create or replace procedure get_emp_info(p_deptno emp.deptno%T...
Warning: log write elapsed time 664ms, size 1KB 突然才发现一个数据库的LGWR进程的跟踪文件scm2_lgwr_5690.trc有大量的告警信息,如下所示: *** 2017-08-07 17:05:03.132Warning: log write elapsed time 664ms, size 1KBkcrfw_update_adaptive_sync_mode: post->poll long#=1 sync#=6 sync=302 poll=1079 rw=322 ack=0 min_sleep=1079*** 2017-08-07 17:42:56.997Log file sync switching to pollingCurrent scheduling delay is 1 usecCurrent approximate redo synch write rate is 2 per sec*** 2017-08-08 09:00:03.923Warning: log write elapsed time 1445ms, size 1KB*** 2017-08-08 10:00:20.162Warning: log write elapsed time 1190ms, size 87KB*** 2017-08-08 17:05:02.924Warning: log write elapsed time 1213ms, size 1KB*** 2017-08-09 08:36:15.179Warning: log write elapsed time 3171ms, size 1KBkcrfw_update_adaptive_sync_mode: poll->post current_sched_delay=0 switch_sched_delay=1 current_sync_count_delta=0 switch_sync_count_delta=6*** 2017-08-09 18:39:36.593Log file sync switching to post/waitCurrent ap...
Install Oracle Database 12c On CentOS7 In this tutorial, we will show you how to Install Oracle Database 12c On CentOS 7OS information:[root@ora-c7 ~]# cat   /etc/centos-release CentOS Linux release 7.0.1406 (Core) Network:[root@ora-c7 ~]# ip a   | grep inet    inet 127.0.0.1/8 scope host lo     inet6 ::1/128 scope host     inet 192.168.119.139/24 brd 192.168.119.255 scope global dynamic eno16777736     inet6 fe80::20c:29ff:fe41:1494/64 scope link Login as root and add required groups: /usr/sbin/groupadd -g 501 oinstall /usr/sbin/groupadd -g 502 dba /usr/sbin/groupadd -g 503 operAdd user Oracle:/usr/sbin/useradd -u 502 -g oinstall -G dba,oper oracleChange password for user:passwd oracleAdd kernel parameters to /etc/sysctl.conf. kernel.shmmni = 4096 kernel.shmmax = 4398046511104 kernel.shmall = 1073741824 kernel.sem = 250 32000 100 128 fs.aio...
    总共51页,当前第15页 | 页数:
  1. 5
  2. 6
  3. 7
  4. 8
  5. 9
  6. 10
  7. 11
  8. 12
  9. 13
  10. 14
  11. 15
  12. 16
  13. 17
  14. 18
  15. 19
  16. 20
  17. 21
  18. 22
  19. 23
  20. 24
  21. 25