
ORACLE技术
文章平均质量分 63
huanghui22
这个作者很懒,什么都没留下…
展开
-
[Oracle]体系结构(一)--概述
一.ORACLE实例 = 后台进程 + 进程所使用的内存(SGA)实例是一个临时性的东西,你也可以认为它代表了数据库某一时刻的状态! SGA(System Global Area) = Shared pool + Block Buffer Cache + Redo Buffer + Java Pool + Large Pool + Stream pool Share原创 2007-05-30 23:07:00 · 2903 阅读 · 0 评论 -
ORACLE体系结构之集群(RAC)
首先是几个需要了解的名词解释:集群是指多台计算机物理的连接在一起。RAC是Oracle Real Application Cluster的简写,官方中文文档一般翻译为“真正应用集群”,它一般有两台或者两台以上同构计算机及共享存储设备构成,可提供强大的处理能力! 为什么需要RAC?如果说我们通过对服务器添加CPU, 增加RAM等行为属于垂直扩展;那么多台计算机进行RAC就属原创 2007-03-25 23:05:00 · 3405 阅读 · 1 评论 -
ORACLE实例与数据库的区别
刚接触ORACLE的人肯定会对实例和数据库感到困惑,实例到底代表些什么?为什么会有这个概念的出现? ORACLE实例 = 进程 + 进程所使用的内存(SGA)实例是一个临时性的东西,你也可以认为它代表了数据库某一时刻的状态! 数据库 = 重做文件 + 控制文件 + 数据文件 + 临时文件数据库是永久的,是一个文件的集合。 ORACLE实例和数据库之间的关系原创 2007-03-25 14:58:00 · 9123 阅读 · 2 评论 -
[Oracle]高效的PL/SQL程序设计(一)--伪列ROWNUM使用技巧
--1. 取前10行select * from hr.employees where rownum10 --2. 按照first_name升序,取前10位--正确方法 oracle处理机制: --> hr.employees全表扫描 --> SORT ORDER BY STOPKEY 只排序前10行,作为原创 2007-03-20 23:23:00 · 5856 阅读 · 0 评论 -
考量参数DB_FILE_MULTIBLOCK_READ_COUNT的脚本
show parameters db_file_multiblock_read_count;--sys用户登录查看当前参数值set timing on;set autotrace on explain;alter session set db_file_multiblock_read_count = 1;select /*+ Full(b) */ count(*) from big_table b原创 2007-03-18 18:09:00 · 1985 阅读 · 0 评论 -
DECODE和日期类型转换中出现的问题
--大于等于1950年的都没有问题(但这种写法是不合理的)insert into aa select decode(19500101,00000000,null,TO_DATE(19500101,yyyy-mm-dd)) from dual;--小于1950年就就会呈现错误, 增加了100年insert into aa select decode(19491201,000原创 2007-01-23 15:30:00 · 4854 阅读 · 0 评论 -
Oracle数据库业务优化心得
公司开发的产品基本上都使用ORACLE数据库,而且业务系统中存储和使用的数据量很大,使用业务系统的用户也很多。在系统忙时,大约会有一千个用户同事访问数据库系统,因此经常会有用户抱怨系统慢,点击查询后,系统出现假死机现象,后台运行ORACLE系统的小型机的IDLE值偏低(甚至出现IDLE为0的情况,这时用户会惊呼数据库系统会瘫掉,虽然小型型机在IDLE值为0的情况下也不一定会瘫机,但这无疑会增加用户转载 2006-12-27 20:49:00 · 1975 阅读 · 0 评论 -
ORACLE按条件排序的例子
需求: 当天约会的案件在最前面--> 从未处理过的案件--> 上次处理时间由小到大排序(即越近催收的案件在越后面) 即:(col_case.case_app_date=sysdate)-->(col_case.case_lst_col_date is null)-->(col_case.case_lst_col_date)select case when trunc(t.case_原创 2006-12-25 16:58:00 · 5624 阅读 · 0 评论 -
ORACLE字符集问题
1. ORACLE数据库字符集,即国家语言支持(NLS)其作用是用本国语言和格式来存储、处理和检索数据。利用全球化支持,ORACLE为用户提供自己熟悉的数据库母语环境,诸如日期格式、数字格式和存储序列等。Oracle可以支持多种语言及字符集,oracle9i则支持57种语言、88个国家地域、235种字符集。2. 单字节编码 (1)单字节7位字符集,可以原创 2006-12-30 17:33:00 · 4101 阅读 · 0 评论 -
ORACLE自动备份方法
步骤如下:1. AP服务器上建立c:/backup文件夹(文件夹路径客户自己选择)2. 打开dbbkup.bat-->修改红字部分-->保存exp citictest/citictest@colm2 file=c:/backup/%date:~4,20%.dmp log=c:/backup/%date:~4,20%.log compress=y di原创 2006-12-25 16:20:00 · 6158 阅读 · 1 评论 -
DBMS_JOB包
一个dmbs_job定时作业的例子create table a(test date);create or replace procedure b asbegininsert into a values(sysdate);end;--每分钟执行一次variable job1 number;begindbms_job.submit(:job1,b;,sysdate,trunc(sys原创 2006-12-25 13:18:00 · 2314 阅读 · 0 评论 -
ORACLE性能初步调整
1. 請在User Schema 上, 用人工指定方式指定 Tmp 的tablespace . 換句話說要人工定義一個tmp 的tablespace 給user schema.--为colm6v这个user单独开一个临时表空间, 个人认为调整之后效果不会有很明显的变化临时表空间的作用是当sql语句中出现order by , group by(也就是需要排序的时候),如果排序的数据比较少,就原创 2006-12-24 14:42:00 · 2365 阅读 · 0 评论 -
ORACLE性能调整--统计信息的迁移
很多时候本地测试环境无法100%的模拟出客户生产系统的所有性能问题,可能在本地环境中速度很快只需几分钟,但在客户那边却往往要跑上几个小时,这个时候除了想办法模拟出客户生产系统中一样多的数据外,还需要得到生产系统的统计信息,导入本地系统重现性能问题! 下面的语句就是具体的操作步骤! 生产系统:--执行统计信息操作BEGIN DBMS_STATS.GATHER_SCHEMA_ST原创 2007-04-23 12:12:00 · 2258 阅读 · 1 评论 -
ORACLE分析函数--row_number()应用
当遇到一个部门有多个员工记录,需要去取出每个部门薪水最少的那笔时,就可以用到分析函数row_number()拉 select * from( select manager_id,employee_id,first_name,salary,row_number() over(partition by manager_id order by sala原创 2007-04-23 17:25:00 · 3311 阅读 · 0 评论 -
[Oracle]高效的PL/SQL程序设计(四)--批量处理
批量处理一般用在ETL操作, ETL代表提取(extract),转换(transform),装载(load), 是一个数据仓库的词汇!类似于下面的结构:for x (select * from...)loop Process data; insert into table values(...);end loop; 一般情况下, 我们处理大笔的数据插入动作原创 2007-05-22 18:13:00 · 3742 阅读 · 3 评论 -
[Oracle]高效的PL/SQL程序设计(六)--%ROWTYPE的使用
在PL/SQL程序中, 我们会遇到需要先从一个结果集中取出若干记录, 然后对每一条记录进行处理的情况, 最理想的做法是在一条SQL语句中完成, 但有时候因为需求的关系所以不一定能实现, 所以我们通常会定义几个变量, 然后对结果集做循环, 赋值给变量. 最典型的就是select XX into XX。我们也可以用定义一个记录%rowtype的方法, 减少不必要的代码量, 还能避免由于表中字段原创 2007-05-24 16:52:00 · 5712 阅读 · 0 评论 -
[Oracle]高效的PL/SQL程序设计(五)--调用存储过程返回结果集
Oracle支持通过ref游标在调用存储过程后返回结果集, 使用游标在内存消耗以及时间上都要大大的优于返回数组变量的做法!示例如下:数据库方面,建立一个Packagecreate or replace package ref_cur_demo is type rc is ref cursor; procedure ref_cursor(p_owner in varchar2,p_原创 2007-05-23 17:32:00 · 5140 阅读 · 0 评论 -
[Oracle]高效的PL/SQL程序设计(三)--Package的优点
使用Package的优点在于提供了必需的程序设计结构, 促进了模块化编程设计, 最重要的是Package断开了依赖链, 使得对某个数据库模式的改动不会导致整个模式的无效,从而避免了昂贵的重编译! 例如: 存在table t , procedure p1 p2, view v, function f, 它们之间引用关系如下:select name,type,r原创 2007-05-22 11:55:00 · 4232 阅读 · 0 评论 -
[Oracle]高效的SQL语句之分析函数(一)--sum()
实际应用中我们可以通过sum()统计出组中的总计或者是累加值,具体示例如下:1.创建演示表create table empasselect * from scott.emp;alter table empadd constraint emp_pkprimary key(empno);create table deptasselect * from scott.dept;alter原创 2007-05-03 00:00:00 · 15759 阅读 · 3 评论 -
数据库设计--三大范式
书本上晦涩难懂的三范式定义, 每次好不容易记住理解之后, 一段时间不用之后都要忘记的干干净净, 赶紧在白天脑子还算清醒的时候, 练练笔!第一范式: 不用记了,想犯这个错都没这机会(每个属性的值唯一)第二范式: 函数的部分依赖, 首先只有复合主键才会出现问题, 非主键并不是完全依赖于复合主键, 只依赖于复合主键中的一部分。例如: (员工号, 部门号)作为复合主键, 非主键如果有"部门原创 2007-04-28 11:50:00 · 1952 阅读 · 1 评论 -
[Oracle]高效的PL/SQL程序设计(二)--标量子查询
标量子查询ORACLE允许在select子句中包含单行子查询, 使用标量子查询可以有效的改善性能,当使用到外部连接,或者使用到了聚合函数,就可以考虑标量子查询的可能性1. 取消外部连接的使用外部连接的做法:select a.username,count(*) from all_users a,all_objects bwhere a.username=b.owner(+原创 2007-04-30 14:27:00 · 8146 阅读 · 0 评论 -
ORACLE故障排除--注意事项
1. 在系统良好运作时, 进行一次Statspack! 并将结果文件保存作为以后的判断标准.2. ORACLE中建立一张存放有执行计划的表脚本如下: --建立一张计划表create table plan_hashes( sql_text varchar2(1000), hash_value numbe原创 2007-04-27 22:29:00 · 1757 阅读 · 0 评论 -
[Oracle]高效的SQL语句之分析函数(四)--lag()/lead()
有时候报表上面需要显示该笔操作的上一步骤或者下一步骤的详细信息,这个时候可以按照下面的做法:先创建示例表:-- Create tablecreate table LEAD_TABLE( CASEID VARCHAR2(10), STEPID VARCHAR2(10), ACTIONDATE DATE)tablespace COLM_DATA pctfree原创 2007-05-03 00:43:00 · 12459 阅读 · 4 评论 -
[Oracle]高效的SQL语句之分析函数(三)--row_number() /rank()/dense_rank()
有些时候我们希望得到指定数据中的前n列,示例如下:得到每个部门薪水最高的三个雇员:先创建示例表create table empasselect * from scott.emp;alter table empadd constraint emp_pkprimary key(empno);create table deptasselect * from scott.dept;a原创 2007-05-03 00:31:00 · 9514 阅读 · 4 评论 -
[Oracle]高效的SQL语句之分析函数(二)--max()
如果我们按照示例想得到每个部门薪水值最高的雇员的纪录,可以有四种方法实现:先创建示例表create table empasselect * from scott.emp;alter table empadd constraint emp_pkprimary key(empno);create table deptasselect * from scott.dept;alter t原创 2007-05-03 00:12:00 · 17380 阅读 · 0 评论 -
ORA-06533: Subscript beyond count
create or replace procedure test(tab_name in varchar2) ascursor cur_ref_cons_info(tab_name varchar2) is select b.COLUMN_NAME from user_constraints a,user_cons_columns b where a.TABLE_NAME=tab_name and原创 2006-12-19 18:16:00 · 12278 阅读 · 1 评论 -
ora-1403 :no data found
在编写select...into...from 的语句中,如果返回的结果集为空,就会出现ora-1403 :no data found,解决方法如下: exception when NO_DATA_FOUND etc etc etc. end; You Asked (Jump to Toms latest followup)Tom, We´ve原创 2006-12-16 21:48:00 · 17451 阅读 · 0 评论 -
ORACLE 完全卸载
1. 停止所有ORACLE服务2. 使用ORACLE Universal Installer卸载ORACLE3. 删除注册表上的ORACLE的有关键值(开始à运行à regedit)将HKEY_LOACAL_MACHINE/SOFTWARE下的主键ORACLE全部删除。4. 进入HKEY_LOACAL_MACHINE/SYSTEM主键下,在Cont原创 2006-10-16 12:00:00 · 2413 阅读 · 0 评论 -
ORACLE STATSPACK REPORT输出结果解释
最近整理了一下STATSPACK REPORT产生的文档,里面有很多我们在系统调优的时候非常重要的信息,从网上以及书本上罗列了一下,调优的过程其实也是一个不断学习的过程,只有经过反复的分析/尝试才会最终获得满意的结果,知识需要靠每日的积累,不可能一朝一夕就能全部掌握的,良好的学习态度才是根本,切忌浮躁~~ 1、报表头信息数据库实例相关信息,包括数据库名称、ID、版本号及主机等信息原创 2006-10-13 23:38:00 · 4473 阅读 · 0 评论 -
ORACLE 使用AUTOTRACE功能
ORACLE9i在使用autotrace之前,需要作一些初始的设置, 1.用sys用户运行脚本ultxplan.sql建立这个表的脚本是:(UNIX:$ORACLE_HOME/rdbms/admin, Windows:%ORACLE_HOME%/rdbms/admin)ultxplan.sql。SQL> connect sys/sys@colm2 as sysdba;S原创 2006-10-08 17:45:00 · 9575 阅读 · 1 评论 -
ORACLE配置STATSPACK步骤
配置STATSPACK步骤1.SQL*PLUS中输入SQL> connect sys/sys as sysdba;SQL> alter system set job_queue_processes = 6; --自动执行数据收集时该参数需要大于0System alteredSQL> alter system set timed_statistics = true; System alter原创 2006-10-11 23:09:00 · 6472 阅读 · 0 评论 -
ORACLE Bulk Binding批量绑定
批量绑定(Bulk Binding)通过一次绑定一个完整的集合,然后在PL/SQL块内部按照数组进行数据处理来加快SQL语句的效率。通过两个DML语句:Bulk Collect和ForAll来实现。Bulk Collect—用来提高查询(select)的性能ForAll—用来提高(Insert,Delete,Update)的性能。 国际惯例,描述一下测试环境:软件环境原创 2006-10-07 16:56:00 · 6333 阅读 · 0 评论 -
ORACLE批量更新四种方法比较
软件环境 Windows 2000 + ORACLE9i 硬件环境 CPU 1.8G + RAM 512M 现在我们有2张表 如下:T1--大表 10000笔 T1_FK_ID T2--小表 5000笔 T2_PK_IDT1通过表中字段ID与T2的主键ID关联 模拟数据如下:--T2有5000笔数据create table T2assele原创 2006-10-05 20:30:00 · 77497 阅读 · 0 评论 -
[Oracle]性能优化调整(四)--调整磁盘I/O
一.虽然通过调整SGA组件可以最大限度地减少物理I/O的发生,但是我们在某些活动中还是不可避免的将会产生磁盘I/O。需要注意的是在内存中的I/O活动是逻辑的,在磁盘上的I/O活动是物理的。逻辑I/O比物理I/O快数千倍。 二.产生磁盘I/O的来源: 1.Database Writer(DBWO)--写Database Buffer Cache中的缓存区到数原创 2006-09-23 12:21:00 · 6950 阅读 · 0 评论 -
ORACLE SQL Loader的详细语法
Oracle SQL Loader的详细语法 SQL*LOADER是ORACLE的数据加载工具,通常用来将操作系统文件迁移到ORACLE数据库中。SQL*LOADER是大型数据 仓库选择使用的加载方法,因为它提供了最快速的途径(DIRECT,PARALLEL)。现在,我们抛开其理论不谈,用实例来使您快速掌握SQL*LOADER的使用方法。 首先,我们认识一转载 2006-09-21 10:45:00 · 10075 阅读 · 0 评论 -
[Oracle]性能优化调整(一)--调整共享池
一.简介:数据库调整中最为重要的一部分是重写运行效率差的SQL代码,重写之后的SQL代码在运行效率方面可能会与之前的产生极大的差别! 但是当遇到重写之后性能还是未能突破瓶颈或者你是用户(无法访问SQL代码)的时候,可以通过调整ORACLE的共享内存结构SGA(System Global Area),最大限度地提高性能! SGA中比较重要的组件就是Sh原创 2006-09-20 10:24:00 · 7109 阅读 · 0 评论 -
[Oracle]性能优化调整(三)--调整重做机制
当我们优化ORACLE性能,检查了Shared Pool和Buffer Cache命中率之后,意识到需要使这些结构的变得更大才能改进它们,但服务器中没有足够的内存来支持这一改进。同时又发现Redo Log Buffer的Retry Ratio又很低,表明Redo Log Buffer可能被设置得太大,在我们没有购买内存的情况下,调小Redo Log Buffer可能会是不错原创 2006-09-21 17:47:00 · 2967 阅读 · 0 评论 -
[Oracle]性能优化调整(二)--调整缓冲区高速缓存
一.我们可以通过配置Shared Pool(保证用户在内存中查找到已经缓存的语句)改进性能;还有一个重要的方法就是:使用户可以在内存找到他们所请求的数据! 这就需要通过Database Buffer Cache(数据库缓冲区的高速缓存区)来实现。 Buffer Cache是SGA的一个组件,用来缓存用户最近在数据库中访问过的段数据块的副本。这些副本和它们在磁盘上的对应块是同原创 2006-09-21 00:01:00 · 11606 阅读 · 0 评论 -
ORACLE TKPROF使用步骤
1.Tkprof是一个分析ORACLE跟踪文件并且产生一个更加人性化清晰的输出结果的可执行工具。C:/oracle/ora92/bin/tkprof.exe2. tkprof 全称参考信息http://www.itpub.net/showthread.php?s=cbfea4845ef5b2a3f4adb00de0de9317&threadid=577624&highlight=tkp原创 2006-10-14 14:52:00 · 21708 阅读 · 0 评论 -
ORACLE Nologging相关知识
1) Nologging跟数据库的运行模式有关,8i和9i的默认安装都是非归档模式,并且自动归档默认是禁用SQL> archive log list;Database log mode No Archive ModeAutomatic archival UnabledArchive destination原创 2006-10-16 23:08:00 · 10005 阅读 · 0 评论