oracle分析函数
oracle分析函数--SQL*PLUS环境--1、GROUP BY子句 --CREATE TEST TABLE AND INSERT TEST DATA.create table students(id number(15,0),area varchar2(10),stu_type varchar2(2),score number(20,2));insert into students values(1, '111', 'g', 80 );insert into students values(1, '111', 'j', 80 );insert into students values(1, '222', 'g', 89 );insert into students values(1, '222', 'g', 68 );insert into students values(2, '111', 'g', 80 );insert into students values(2, '111', 'j', 70 );insert into students values(
循环取值并处理示例
Declaretmp_char Varchar2(500) := 'aaa|bbb|ccc|ddd|';tmp_sql Varchar(500);tmp_str Varchar(50);len_end Number(10);len_begin Number(10) := 0; Begindbms_output.put_line('tmp_char:' || tmp_char);While instr(tmp_char,'|')>0Looplen_end := instr(tmp_char,'|') ;tmp_str := substr(tmp_char,0,len_end-1);tmp_sql := 'update xxx set aa=bb where cc like ('''||tmp_str||''')';--Execute IMMEDIATE tmp_sql;--Commit;len_begin := len_end+1;tmp_char := substr(tmp_char,len_begin);dbms_output.put_line('t
动态选择表示例
DeclareCursor mycur Is Select table_name From All_Tables Where owner='USER';vtable Varchar(50);vsql Varchar(500);Beginfor emp_record in mycur Loopvtable := emp_record.table_name;vsql := 'Select * From '||vtable;--Execute IMMEDIATE vsql;dbms_output.put_line(vsql);End Loop;End;[@more@]
oracle正则表达式
oracle的正则表达式(regular expression)简单介绍目前,正则表达式已经在很多软件中得到广泛的应用,包括*nix(Linux, Unix等),HP等操作系统,PHP,C#,Java等开发环境。Oracle 10g正则表达式提高了SQL灵活性。有效的解决了数据有效性, 重复词的辨认, 无关的空白检测,或者分解多个正则组成的字符串等问题。Oracle 10g支持正则表达式的四个新函数分别是:REGEXP_LIKE、REGEXP_INSTR、REGEXP_SUBSTR、和REGEXP_REPLACE。它们使用POSIX 正则表达式代替了老的百分号(%)和通配符(_)字符。特殊字符:'^' 匹配输入字符串的开始位置,在方
浅谈oracle复合数据类型 (2)
二、集合类似C语言中的数组,在ORACLE7.3及以前的版本中只有一种集合称为PL/SQL表,这种类型的集合依然保留,就是索引(INDEX_BY)表。PL/SQL有三种类型的集合a、Index_by表b、嵌套表c、VARRAY三种类型的集合之间的差异,包括数据绑定、稀疏性(sparsity)、数据库中的存储能力都有不相同。数据绑定:绑定涉及到集合中元素数量的限制,VARRAY集合中的元素的数量是有限,Index_by和嵌套表则是没有限制的。稀疏性(sparsity):稀疏性描述了集合的下标是否有间隔,Index_by表和嵌套表可以是稀疏的,VARRAY类型的集合则是紧密的,它的下标之间没有
修改global_name
conn / as sysdbaupdate props$ set value$ = 'oradb' where name = 'GLOBAL_DB_NAME';commit;shutdown immediatestartup select global_name from global_name;[@more@]
浅谈oracle复合数据类型 (1)
--本文档可以直接拷贝运行。/*oracle复合数据类型PL/SQL有两种复合数据结构:记录和集合。记录由不同的域组成,集合由不同的元素组成。*//*一、记录类型类似C语言中的结构,有两种定义方式:显式定义和隐式定义。*/create table test(id varchar2(20),mc varchar2(60));insert into test values('111','11111');insert into test values('222','22222');insert into test values('333','33333');insert into test values('444','44444');insert into test values('555','55555');insert into test values('666','66666');commit;/*1.1、显
获得数据中的数字部分
--该脚本可以直接拷贝运行--现有字符串'23456中国3-00=.,45',想得到结果2345630045--方法一:translate函数select translate('23456中国3-00=.,45','0123456789'||'23456中国3-00=.,45','0123456789') from dual;--方法二:自定义函数。create or replace function f_filter_str(var_str varchar) return varcharisvar_str_new varchar2(2000);beginfor i in 1..length(var_str) loopif ascii(substr(var_str,i,1))>=48 and ascii(substr(var_str,i,1))<=57 thenvar_str_new := var_str_new || substr(var_str,i,1);end if;end loo
DBA脚本 (3)
下面按类别列出一些ORACLE用户常用数据字典的查询使用方法。 一、用户 查看当前用户的缺省表空间 SQL>select username,default_tablespace from user_users;查看当前用户的角色SQL>select * from user_role_privs;查看当前用户的系统权限和表级权限SQL>select * from user_sys_privs;SQL>select * from user_tab_privs; 二、表 查看用户下所有的表 SQL>select * from user_tables; 查看名称包含log字符的表 SQL>select object_name,object_id from user_objects
DBA脚本 (2)
二、性能监控 1、数据缓冲区的命中率已经不是性能调整中的主要问题了,但是,过低的命中率肯定是不可以的,在任何情况下,我们必须保证有一个大的data buffer和一个高的命中率。 这个语句可以获得整体的数据缓冲命中率,越高越好 SELECT a.VALUE + b.VALUE logical_reads, c.VALUE phys_reads, round(100*(1-c.value/(a.value+b.value)),4) hit_ratio FROM v$sysstat a,v$sysstat b,v$sysstat c WHERE a.NAME='db block gets' AND b.NAME='consistent gets' AND c.NAME='physical reads' 2、库缓冲说明了SQL语句的重载率,当然,一
DBA脚本 (1)
=========================================================== 一、数据库构架体系 1、表空间的监控是一个重要的任务,我们必须时刻关心表空间的设置,是否满足现在应用的需求,以下的语句可以查询到表空间的详细信息 SELECT TABLESPACE_NAME,INITIAL_EXTENT,NEXT_EXTENT,MIN_EXTENTS, MAX_EXTENTS,PCT_INCREASE,MIN_EXTLEN,STATUS, CONTENTS,LOGGING, EXTENT_MANAGEMENT, -- Columns not available in v8.0.x ALLOCATION_TYPE, -- Remove these columns if
性能分析SQL
-用于查看哪些实例的哪些操作使用了大量的临时段 SELECT to_number(decode(SID, 65535, NULL, SID)) sid, operation_type OPERATION,trunc(EXPECTED_SIZE/1024) ESIZE, trunc(ACTUAL_MEM_USED/1024) MEM, trunc(MAX_MEM_USED/1024) "MAX MEM", NUMBER_PASSES PASS, trunc(TEMPSEG_SIZE/1024) TSIZE FROM V$SQL_WORKAREA_ACTIVE ORDER BY 1,2; ---查询有热块查询的SQL语句 select hash_value from v$sqltext a, (select distinct a.owner,a.segment_name,a.segment_type from dba_
关于os认证和口令文件认证
前言发现有很多人提问数据库身份认证方面的问题,基此就oracle的身份认证做个简要解析,希望这篇文档对遇到类似问题的朋友有所裨益。文中错误之处请大家指正,不足之处请大家补充!环境windows2000+sp4,oracle9.201oracle软件以oracle帐户安装一、sysdba的权限sysdba(sysoper和normal)是登录数据库的身份,与角色(dba、resource)、对象权限及系统权限有所区别,登录身份表明了可对数据库的整体进行哪些操作,sysdba有些类似unix下的root帐户。sysdba的权限或可对数据库进行的操作:startup,shutdownalter database open|mountalter
EXTRACT函数
select systimestamp,extract(hour from systimestamp) +extract(timezone_hour from systimestamp) hourfrom dual;[@more@]
9i新特性之Flashback Query的应用(2)
用DBMS_FLASHBACK包 DBMS_FLASHBACK 包提供了以下几个函数: ENABLE_AT_TIME:设置当前SESSION 的闪回查询时间ENABLE_AT_SYSTEM_CHANGE_NUMBER:设置当前SESSION的闪回查询SCNGET_SYSTEM_CHANGE_NUMBER:取得当前数据库的SCN DISABLE:关闭当前SESSION 的闪回查询 如:SQL> select dbms_flashback.get_system_change_number from dual; GET_SYSTEM_CHANGE_NUMBER------------------------ 8053651当将一个SESSION 设置为闪回查询模式之后,后续的查询都会基于那个时间点或者SCN 的数据库状态,如果SESSION 结
9i新特性之Flashback Query的应用(1)
在9i之前,如果出现DML的误操作,只能通过备份来完成基于时间点的恢复,9i给提供了一个新的特性Flashback Query,我们可以应用此特性,可以很方便的实现恢复。但是要注意的是,Flashback Query 仅仅是一个查询的机制,不会真正的UNDO任何数据。 1. 什么是Flashback Query?利用Oracle 多版本读一致的特性通过undo 来提供所需的前镜像中的数据。通过这个功能,可以看到历史数据,甚至用历史数据来修复误操作引起的错误。可以通过指定时间或者SCN 来检索需要的数据。{Uses Oracle's multiversion read-consistency capabilities to
oracle和sqlserver互访(3)
3.SQLSERVER訪問ORACLE環境:windowsxp + sqlserver2000 + Oracle9i Enterprise Edition Release 9.0.1.1.1 - Production IP:192.168.1.221代码:// A. 添加ODBC,OdbcName=DB,OracleSid=DB// B. 執行sp_addlinkedserver 'LIORA', 'Oracle', 'MSDAORA', 'DB'GOEXEC sp_addlinkedsrvlogin @rmtsrvname='LIORA',@useself='false',@locallogin='sa',@rmtuser='SYSTEM',@rmtpassword='MANAGER'select top 10 topic,info from LIORA..SYSTEM.HELPtopic info
oracle和sqlserver互访(2)
2.通過"透明网關"方式聯接代码:// A. 安裝透明网關,在安裝時選擇自定義安裝,安裝TRANSPARENT GATEWAY FOR SQLSERVER 組件,安裝成功後會產生oracle_homeora90tg4msql目錄!// B. 配置TNSNAMES.ORA,路徑:ORACLE_HOMENETWORKADMIN,這一步應該在ORACLEDB(192.168.1.52)上配置!TG4MSQL = # tnsName (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.221)(PORT = 1521)) # 网關IP ) (CONNECT_DATA = (SID = tg4msql ) #SID,要和監听器裡的SID一致!
oracle和sqlserver互访(1)
要求:從Oracle中能取SqlServer的數据環境:OracleDb: Linux + Oracle9i Enterprise Edition Release 9.0.1.1.1 - Production IP:192.168.1.52(TOPPROD)MSQLDB: Windows2000 + SqlServer2000 IP:192.168.1.50(ERPSQL),測試用戶:sa/pass 測試數据表:EK.ACPTA网 關: WindowsXp + Oracle9i Enterprise Edition Release 9.0.1.1.1 - Production IP:192.168.1.221(S0504027),因為暫在測試階段,所以网關裝在我用的机器,网關可以裝在MSQLDB上1.通過ODBC通用方式聯接代码:// A. 安裝HS部件// 默認情況下HS部件是安裝的,查詢視圖 SYS.HS_BASE_C
oracle安装patch
1、已经在9201创建了数据库set ORACLE_SID=..C:> sqlplus /NOLOGSQL> CONNECT sys/口令 AS SYSDBA (conn / as sysdba)SQL> DROP PUBLIC synonym XMLCONCAT;SQL> DROP FUNCTION XMLCONCAT;停止所有的Oracle开头的服务请同时停止“Distributed Transaction Coordinator”服务要安装的产品为:Oracle Universal Installer 10.1.0.2.0 路径要选择你的9201目录 ora92,d:oracle要安装的产品为:Oracle 9iR2 Patch Set 9.2.0.5.0 路径要选择你的9201目录 ora92,d:oracle请确认Oracle实例和Listener服务已经启动C:> set ORACLE_SID