resumable session
原文地址:http://www.dbafan.com/blog/?p=81[@more@]resumable session 以前我从没用过这个,第一次是看到Huang Yong在用后来自己用了用,感觉挺不错,推荐给大家这个功能主要是防止因为空间不够的原因导致session failed,例如你create一个很大index,三天三夜后,完成了99%,这时候表空间用完了导致create失败,那只能吐血了有了resumable session后,他会等待一段时间,等你有了空间后继续使用很简单,首先user要有resumable权限,如果没有,可以grant resumable to user在session开始时,alter session enable resumable 就可以了对于a
Features that Require&Enable the CBO
Features that Require&Enable the CBO原文地址:http://yumianfeilong.com/2007/02/26/features-that-requireenable-the-cbo/[@more@]Features that Require&Enable the CBO有些Features的使用是需要CBO的,有些Features的使用是自动Enable CBO的。记录一下。The following features require use of the CBO:Reverse key indexes Function-based indexes Star transformations and star joins Query rewrite with materialized views Hash joins Bitmap indexes and bitmap join indexes Index skip scans The following features
oracle中那些对象不支持重命名(转)
oracle中那些对象不支持重命名[@more@]CLUSTER can’t be renamed.FUNCTION can’t be renamed.INDEXalter index old_name rename to new_name;INDEX PARTITIONalter index index_name rename partition partition to new_name;INDEX SUB PARTITIONalter index index_name rename subpartition subpartition to new_name; LOBalter table t move lob(lob_column) store as newlogseg_name; PACKAGE can’t be renamed.PACKAGE BODY can’t be renamed.PROCEDURE can’t be renamed.FUNCTION can’t be renamed.SEQUENCErename oldseq_name
一次隐藏较隐蔽的SQL优化问题(转)
一次隐藏较隐蔽的SQL优化问题[@more@]1. 场景说明:stockpile ----IC卡的供求信息xh-- 型号-----字符型index SP_XH, 是函数index, 定义如下create index SP_XH on stockpile (upper(xh));高频度查询SQLselect /*+ INDEX(s SP_XH) */ count(s.xh) from stockpile swhere upper(s.xh) like 'TL431%'COUNT(S.XH)-----------1868752. 问题出现: 读完index SP_XH 统计出数量后, 为何有多读一次STOCKPILE, 幸好它对性能的恶化程度还不算非常厉害,select /*+ INDEX(s SP_XH) */ count(s.xh) from stockpile swhere upper(s.xh) like 'TL431%'Exec
Oracle analyze(转)
[@more@]Oracle数据库的数据统计(Analyze)Oracle数据库的数据统计(Analyze)Oracle数据的优化器有两种优化方法:基于代价/成本的优化器(CBO)和基于规则的优化器(RBO),系统在对SQL进行优化的时候,使用哪种优化决定于初始化参数OPTIMIZER_MODE,该参数值可以设置为:CHOOSE,RULE,ALL_ROWS,FIRST_ROWS。在Oracle9i以后的版本中还引入了新的优化参数命令:FIRST_ROWS_1,FIRST_ROWS_10, FIRST_ROWS_100,FIRST_ROWS_1000。(具体的说明将在以后的BLOG文章中介绍)Oracle推荐使用CBO优化方式,当系统使用CBO方式优化SQL的时候,要使其
ORA-01439: 要更改数据类型,则要修改的列必须为空
ORA-01439: 要更改数据类型,则要修改的列必须为空[@more@]SQL> desc testName Type Nullable Default Comments ---- ---- -------- ------- -------- A DATE Y SQL> alter table test modify(a number);alter table test modify(a number)ORA-01439: 要更改数据类型, 则要修改的列必须为空SQL> alter table test add(b number);Table alteredSQL> alter table test rename column a to c;Table alteredSQL> desc testName Type Nullable Default Comments ---- ------ -------- ------- -------- C DATE Y
sys删除其他用户job的方法
sys删除其他用户job的方法[@more@]一般sys不用不能删除其他用户的job,如下:SQL> select * from dba_jobs; JOB LOG_USER PRIV_USER SCHEMA_USER LAST_DATE LAST_SEC THIS_DATE THIS_SEC NEXT_DATE NEXT_SEC TOTAL_TIME BROKEN INTERVAL FAILURES WHAT NLS_ENV
SQL*Plus的Copy命令
SQL*Plus的Copy命令 http://xsb.itpub.net/post/419/30763[@more@]1.2 使用范例下面我们通过几个例子来看一下SQL*Plus Copy Command的使用:1.2.1 在同一个服务器的同一个Schema中复制数据:同时指定From database和To databaseSQL> copy from scott/tiger@lsj to scott/tiger@lsj create dept1 using select * from dept;只指定From Database SQL> copy from scott/tiger@lsj create dept2 using select * from dept;只指定To Database SQL> copy to scott/tiger@lsj create dept3 using select * from dept;1.2.2 在同一个服务
更改dmp文件中的字符集 -- dmp2utf8
更改dmp文件中的字符集 -- dmp2utf8http://www.anysql.net/tools/new_tool_dmp2utf8.html[@more@]看到过几次"如何修改dmp文件字符集"的问题, 我自已仅在刚入门时, 在老板的指导下用过一次. 到现在也不知道这种直接更新dmp文件第二个和第三个字节的方法到底安全不安全, 因为除了第二个第三个字节外, dmp文件中, 每个字符列都有相应的字符集标识的. 虽然如此, 还是发布一个小工具吧, 可以用于修改dmp中的字符集标识, 新工具命令为: dmp2utf8, 命令使用语法如下: Usange: dmp2utf8 dmpfile [charset id] 如果不指定第二个参
oracel启动过程
oracel启动过程http://sdusun.itpub.net/post/7915/243296[@more@]我们知道在Oracle 9i/10g中,如果sql>startup那么默认将使用spfile启动数据库,如果spfile不存在,startup又将如何呢?我们来看:sql>shutdown immediate手工将spfile删到回收站cmd>sqlplus /nologsql>startup ORA-01078:failure in processing system parametersLRM-00109:N^7(4r?*2ND<~'F:ORACLEORA92DATABASEINITSDUSUN.ORA'--意思是说,spfile已经不存在了,这个时候系统也找不到文本参数文件INITSDUSUN.ORA--可见,当spfile不存在的时候,Oracle会自动
能否通过 exp/imp 执行特殊的数据更新?
能否通过 exp/imp 执行特殊的数据更新?http://www.itpub.net/664825,1.html[@more@]我测试库里面已经有 A 用户的数据(旧的测试数据,但包含有一些必须的包、存储过程、触发器)现在,我拿到了A 用户新的实际运行数据,那么我怎样做才可以既把旧数据替换为新数据,又能把旧数据里面的包、存储过程、触发器保留下来?请教了!谢谢1. 测试库 exp rows=n2. 清空测试库3. imp 实际数据,加上 ignore=n4. imp 第一步exp出的测试库dmp
删除重复数据
删除重复数据(http://sdusun.itpub.net/post/7915/207414)[@more@]一、对于部分字段重复数据的删除先来谈谈如何查询重复的数据吧。下面语句可以查询出那些数据是重复的:select 字段1,字段2,count(*) from 表名 group by 字段1,字段2 having count(*) > 1将上面的>号改为=号就可以查询出没有重复的数据了。想要删除这些重复的数据,可以使用下面语句进行删除delete from 表名 a where 字段1,字段2 in(select 字段1,字段2,count(*) from 表名 group by 字段1,字段2 having count(*) > 1)上面的语句非常简单,就是将查询到的数据删
字符串排序问题
字符串排序问题(http://sdusun.itpub.net/post/7915/200520)[@more@]如果排序的字段为字符串的时候,会出现问题,例如id为char或者Varchar型,select id from t_test order by id,会出现下列情况:id112132这个跟预想的结果不一样,这个时候需要将char变成int型,sql提供了一个通用的类型转换方法CAST() 。CAST() 函数语法如下CAST() (<expression> AS <data_ type>[ length ])上面语句可以这样写select id from t_ test order by CAST( id as int)得到结果:id121213
基于某表的某字段来触发触发器
基于某表的某字段来触发触发器[@more@]在实际开发过程中,可能遇到这么个情况,创建的触发器需要基于表的某些字段触发,当其他字段修改时不触发,如何实现呢?比如,有表tab字段:col1、 col2、 col3、 col4、 col5 那么我能不能创建一个after update 的触发器,当col1、 col3、 col4 三个字段变化的时候点火触发器,而 col2、 col5 两个字段变化时,不触发?after update of col1,col3,col4 on table_name原文地址:http://sdusun.itpub.net/post/7915/225346
ORA-01116: error in opening database file 14
SQL>drop tablespace test including contentsERROR at line 1:ORA-01116: error in opening database file 14ORA-01110: data file 14: '/oracle8/oradata/dtgdb/test.dbf'ORA-27041: unable to open fileLinux Error: 2: No such file or directoryAdditional information: 3[@more@]由于在Linux下不小心误删除了一个数据文件,结果删除包含该数据文件的表空间的时候报错!但是如果在windows下面的话,正在使用的数据文件是不能删除的!SQL>drop tablespace test including contentsERROR at line 1:ORA-01116: error in opening dat
ORA-16038: 日志 1 序列号 137 无法归档
ORA-16038: 日志 1 序列号 137 无法归档ORA-19809: 超出了恢复文件数的限制ORA-00312: 联机日志 1 线程 1:'D:ORACLEPRODUCT10.2.0ORADATAORCLREDO01.LOG'[@more@]SYS@orcl AS SYSDBA >startupORACLE 例程已经启动。Total System Global Area 612368384 bytesFixed Size 1290892 bytesVariable Size 192941428 bytesDatabase Buffers 411041792 bytesRedo Buffers 7094272 bytes数据库装载完毕。ORA-16038: 日志 1 序列号 137 无法归档ORA-19809: 超出了恢复文件数的限制ORA-003
ORA-00257: archiver error. Connect internal only, until freed.
RMAN-04004: 来自恢复目录数据库的警告: ORA-00257: archiver error. Connect internal only, until freed.[@more@]数据库在导入数据库的时候一直停留在导入一个大表那里,后来查看数据库的后台日志:ORA-19815: WARNING: db_recovery_file_dest_size of 2147483648 bytes is 100.00% used, and has 0 remaining bytes available.原来是db_recovery_file_dest目录给用完了,想删除一些过期的归档日志,结果连接rman的时候错:RMAN-04004: 来自恢复目录数据库的警告: ORA-00257: archiver error. Connect internal only, until freed.因为ca
How to find obsolete parameters using by database
How to find obsolete parameters using by database[@more@]可以查询:v$obsolete_parameter试图SQL> select * from v$obsolete_parameter;NAME ISSPECIFIED---------------------------------------------------------------- -----------spin_count FALSEuse_ism FALSElock_sga_areas FALSEinsta
Get Server IP address
Get Server IP address[@more@]可以用utl_inaddr来获得数据库的主机名和地址SQL> desc utl_inaddrElement Type -------------------- --------- UNKNOWN_HOST EXCEPTION UNKNOWN_HOST_ERRCODE CONSTANT GET_HOST_NAME FUNCTION GET_HOST_ADDRESS FUNCTION SQL> select utl_inaddr.get_host_name,utl_inaddr.get_host_address from dual;GET_HOST_NAME GET_HOST_ADDRESS----------------- -----------------TestServer 127.0.0.1SQL>
Easy Connect String 10g
Easy Connect String 10g[@more@]Ex :sqlplus scott/tiger@<SERVERIP>:1521/<DBNAME> Set up EZCONNECT in the sqlnet.ora file as follows: NAMES.DIRECTORY_PATH = (TNSNAMES, EZCONNECT)要求客户端是10g或10g以上的版本,如果端口号是1521的话,可以省略Ex :sqlplus /scott/tiger@<SERVERIP>/<DBNAME> Ex:sqlplus scott/tiger@192.168.1.254/orcl