sql 一组字符串中出现几个不同字符
计算一个字符串类型字段里出现了几个不同的字符,如“abcaaaab”=3 ,”aaaaaaa”=1
SQL> conn zhang/weizhao
Connected.
SQL> select * from test12;
NAME
—————————————-
提供综合数据库运维服务与优化方案(不限Oracle MySQL PG GaussDB GoldenDB OceanBase等), 微信/Tel:(+86)134-365-60330
数据库oracle
计算一个字符串类型字段里出现了几个不同的字符,如“abcaaaab”=3 ,”aaaaaaa”=1
SQL> conn zhang/weizhao
Connected.
SQL> select * from test12;
NAME
—————————————-
配置ASMM让ORACLE自动优化内存,但有些参数只能手动配置不可以自动配置,
如db_keep_cache_size,db_recycle_cache_size,db_nk_cache_size(2\4\8\16\32)
而且这些参数的大小影响sga自动分配那5个池的总大小,也包含在db_target的大小范围内,如果db_target大小为9G,db_recycle_cache_size=2
asmm =Automatic Shared Memory Management ,
让ORACLE 大部分的内存结构实现自动化管理 ,减轻了手动配置这些组件的工作量,可以更加灵活,更加动态的适应能力更强的内存解决方案,来应对使用峰值的需求
ASMM 是以MMAN在后台捕捉工作量信息,将内存转移到更加需要的地方,可以用DATABASE CONSOLE来配置ASMM,也可以手动配置,SGA_TARGET默认为0表示禁用ASMM,必须手动配置内存,如果将SGA_TARGET设置为非 0的数值,表示启用ASMM,那有5个池可以自动分配,SHARE_POOL,db_buffer_cache,java_pool,large_pool,stream_pool。
….
常常在表中有用户从页面填写的信息,上传到数据库中存在空格,为以后判断带个麻烦,今天谈论怎么去除空格.
SQL> select ‘begin’|| ‘ abcd efg ‘||’end’ rt from dual;
RT
———————————————-
begin abcd efg end
SQL> select ‘begin’|| ltrim(‘ abcd efg ‘)||’end’ rt from dual;
RT
AUTOTRACE是一项 SQL*Plus 功能,自动跟踪为 SQL 语句生成一个执行计划并且提供与该语句的处理有关的统计。
可能经常遇到的问题是建了个新用户,set autut on 时报错,如下
SQL> conn zhang/weizhao –只有connect,resource角色的用户
Connected.
SQL> set autot on
SP2-0618: Cannot find the Session Identifier. Check PLUSTRACE role is enabled
SP2-0611: Error enabling STATISTICS report …
标准块是用于SYSTEM表空间,标准块大小可以通过建库前更改初始参数db_block_size来指定,其值价于2K-32K之间,10G默认大小为8K,非标准块大…
在SQL语句优化过程中,我们经常会用到hint,现总结一下在SQL优化过程中常见Oracle HINT的用法:
1. /*+ALL_ROWS*/
表明对语句块选择基于开销的优化方法,并获得最佳吞吐量,使资源消耗最小化.
例如:
SELECT /*+ALL+_ROWS*/ EMP_NO,EMP_NAM,DAT_IN FROM BSEMPMS WHERE EMP_NO=’SCOTT’;
2. /*+FIRST_ROWS*/ …..
sqlplus 支持方向键
当某个数据库用户在数据库中插入、更新、删除一个表的数据,或者增加一个表的主键时或者表的索引时,常常会出现ora-00054:resource busy and acquire with nowait specified这样的错误。 主要是因为有事务正在执行(或者事务已经被锁),所有导致执行不成功。 1、用dba权限的用户查看数据库都有哪些锁 select t2.username,t2.sid,t2.serial#,t2.logon_time from v$locked_object t1,v$session t2 where t1.session_id=t2.sid order by t2.logon_time; 如:testuser 339 13545 2009-3-5 17:40:05 知道被锁的用户testuser,sid为339,serial#为13545 2、根据sid查看具体的sql语句,如果sql不重要,可以kill select sql_text from v$session a,v$sqltext_with_newlines b where DECODE(a.sql_hash_value, 0, prev_hash_value, sql_hash_value)=b.hash_value and a.sid=&sid order by piece; 查出来的sql,如: begin :id := sys.dbms_transaction.local_transaction_id; end; 3、kill该事务 alter system kill session ‘339,13545’; … Read more
事实上,大多数索引都能保持平衡和完整,因为空闲的叶条目可以重复使用。插入/更新和删除操作确实会导致索引块周围的可用空间形成碎片,但是一般来说这些碎片都会被正确的重用。
系统权限
系统权限需要授予者有进行系统级活动的能力,如连接数据库,更改用户会话、建立表或建立用户等等。你可以在数据字典视图SYSTEM_PRIVILEGE_MAP上获得完整的系统权限。对象权限和系统权限都通过GRANT语句授予用户或角色。需要注意的是在授予对象权限时语句应该是WITH GRANT OPTION子句….
以前用sql server 时,做时间比较 都 是直接用,比如 select * from tabname where datecol <'2010-11-23'; 但是改用ORACLE以后我相信开始大家都会遇到为什么时间不可以对比了,结果才知道要用时间函数to_date()转换格式,今天做了个实验,也可以让它像SQL SERVER一样隐式转换为日期,不过在此声明 ORACLE不建议使用隐式转换。 实验开始。。 [oracle@orazhang ~]$ sqlplus zhang/weizhao SQL*Plus: Release 10.2.0.1.0 - Production on 星期三 11月 24 00:13:56 2010 Copyright (c) 1982, 2005, Oracle. All rights reserved.
A collection of facts on configuration and and diagnostic of Oracle ASM. More on RAC and ASM configuration and performance of CERN Physics DBs in Inside_Oracle_ASM_LC_CERN_UKOUG07.ppt and in Presentation at E42014.