
Oracle
lubinsu
我当前活着的每一天都是我余生最年轻的时候
展开
-
【Oracle】比较快的删除重复数据的方式
网上五花八门删除重复数据的方法就是没见过这种:DELETE FROM prod_grid_incWHERE ROWID IN (SELECT b.row_id2 FROM (SELECT ROWID row_id2, a.*,原创 2013-05-01 20:20:32 · 1463 阅读 · 2 评论 -
RMAN进行备份恢复
--RMAN备份是完全联机热备份RMAN> connect target sys/lubinsu@orclconnected to target database: ORCL (DBID=1326384392)RMAN> backup database;Starting backup at 12-JUN-13using target database control原创 2013-06-12 14:40:59 · 1660 阅读 · 0 评论 -
Oracle完全脱机,部分脱机与部分联机备份
--首先Oracle日志有归档和非归档模式SELECT * FROM v$logfile;-- 并且Oracle的日志文件是循环使用的,下面我们来做个例子:--向该表中插入数据INSERT INTO T_TEST_1 SELECT * FROM T_TEST_1;--再查下当前的日志文件,可以发现日志文件已经切换SELECT * FROM v$log;--这时在/hom原创 2013-06-03 22:59:00 · 2156 阅读 · 0 评论 -
RMAN管理备份
--RMAN使用2,管理备份--删除备份集:--1.查看备份集RMAN> list backupset 7;List of Backup Sets===================BS Key Type LV Size Device Type Elapsed Time Completion Time------- ---- -- ----------原创 2013-06-12 16:17:02 · 1395 阅读 · 0 评论 -
EXP/IMP数据迁移
最近有个小数据库中某用户下的所有数据需要迁移到另外一个,现在先模拟下:数据量并不是很大的情况下,这里使用exp导出该用户下的所有数据对象:[lubinsu@localhost orcl]$ exp lubinsu/lubinsu@orcl_03 file=/home/lubinsu/orcl/lubinsu.dmp log=/home/lubinsu/orcl/lubinsu.log原创 2013-06-15 15:59:22 · 1439 阅读 · 0 评论 -
同时查询最大最小值的效率问题
有时候我们需要同时查询一部分数据中的最大和最小值,如何才能最快取得我们要的结果呢?我们知道索引已经对数据进行了排序,所以这时走索引效率是最高的,下面看一个例子--在一个有将近两百万数据的表中创建日期索引,需要同时取出日期的最大值和最小值:SQL> select COUNT(*) from USER_OBJECTS_TMP t; COUNT(*)----------原创 2013-06-18 23:11:10 · 2495 阅读 · 0 评论 -
删除大表中的字段
Dropping Columns删除大表中的字段Only with the release of Oracle 8i has it been possible to drop a column from a table. Prior to this it was neccessary to drop the entire table and rebuild it. Now yo原创 2013-06-19 22:48:14 · 2211 阅读 · 0 评论 -
ORA-02069: global_names parameter must be set to TRUE for this operation
数据库中突然出现下面这样的错误:ORA-02069: global_names parameter must be set to TRUE for this operationhttps://forums.oracle.com/thread/472482关于此的解答来自上面的论坛:when global_names is TRUE, the database link原创 2013-06-25 22:15:56 · 2144 阅读 · 0 评论 -
DECODE的使用
语法:PurposeDECODE compares expr to each search value one by one. If expr is equal to a search, then Oracle Database returns the corresponding result. If no match is found, then Oracle转载 2013-06-25 22:57:10 · 979 阅读 · 0 评论 -
IMP/EXP数据迁移(二)
之前发表过一篇关于IMP/EXP的文章,有兴趣可以先了解下:EXP/IMP数据迁移exp:根据谓词短语,导出表中的一部分数据,可以指定分区:[lubinsu@localhost orcl]$ exp lubinsu/lubinsu file=serv_msg.dmp tables=serv_msg:p_nj query=\" where latn_id = 250 \" log=ser原创 2013-06-26 22:52:39 · 1328 阅读 · 0 评论 -
AWR报告的使用
[oracle@localhost admin]$ pwd/home/oracle/oracle/product/10.2.0/db_1/rdbms/admin[oracle@localhost admin]$ sqlplus sys/lubinsu as sysdbaSQL*Plus: Release 10.2.0.1.0 - Production on Sun May 19原创 2013-05-26 21:35:10 · 1136 阅读 · 0 评论 -
Oracle的SGA
The database has logical structures and physical structures . Because the physical and logical structures are separate, the physical storage of data can be managed without affecting the access to原创 2013-05-25 16:14:55 · 1540 阅读 · 0 评论 -
Oracle处理指定分隔符中的字符串
DECLARE V_LENGTH NUMBER; V_TMP VARCHAR2(10); V_STR VARCHAR2(20) := '12;6;2;5;3';BEGIN V_LENGTH := LENGTH(V_STR) - LENGTH(REPLACE(V_STR, ';', '')) + 1; FOR i IN 1..V_LENGTH LOOP原创 2013-05-01 20:34:47 · 1709 阅读 · 0 评论 -
Windows下删除Oracle
1.删除环境变量path中的:oracle...\bin;2.删除注册表:..HKEY_LOCAL_MACHINE\software\oracle.....整个目录删除3.删除注册表:..HKEY_LOCAL_MACHINE\system\currentControlSet\Services\Oracle开头的___ .....有两个或以上,都整个目录删除4.R原创 2013-05-01 20:33:35 · 934 阅读 · 0 评论 -
Exporting and Importing Objects Using Oracle Data Pump(2.impdp)
1.导入表的DDL数据:[lubinsu@localhost db_files]$ impdp lubinsu/lubinsu directory=dpump_dir01 dumpfile=lubinsu.dmp sqlfile=dpump_dir02:lubinsu.sql tables=latn_area_infoImport: Release 10.2.0.1.0 - Product原创 2013-05-02 22:35:21 · 1348 阅读 · 0 评论 -
Exporting and Importing Objects Using Oracle Data Pump(1.expdp)
1.查看数据泵的目录对象,目录对象是数据泵导出数据时存放的文件路径:SQL> SELECT * FROM dba_directories; OWNER DIRECTORY_NAME DIRECTORY_PATH------------------------------ ----------------原创 2013-05-01 22:29:41 · 1457 阅读 · 0 评论 -
SQL*Loader
SQL*Loader Features特性:SQL*Loader loads data from external files into tables of an Oracle database. It has a powerful data parsing engine that puts little limitation on the format of the data in原创 2013-05-16 23:18:00 · 1457 阅读 · 0 评论 -
Oracle JOB实现多线程插入
下面来写个通过job实现多线程插入的例子,但并为与其他比对效率,只供参考--创建临时表CREATE TABLE TT1 AS SELECT * FROM DBA_OBJECTS WHERE 1=0;CREATE TABLE TT2 AS SELECT * FROM DBA_OBJECTS;--数据分批插入参数表DROP TABLE JOB_PARMS;CREATE TABLE J转载 2013-05-12 23:01:35 · 1823 阅读 · 0 评论 -
在EM中管理Metric
Metric的引入主要为了实现proactive(积极、主动)维护数据库:在EM中可以对Metrics进行管理:在这里可以对各项指标设置告警的Warning Threshold(阈值):就如我们刚才设置的,如果表空间使用率超过35%,则会告警:点击我们可以看到系统给出的建议,当然也可以在视图中查看:SELECT *原创 2013-05-19 22:49:22 · 1417 阅读 · 0 评论 -
Oracle小记
1./*+rule*/ 按照原本的执行路径走2.oracle 的日志文件只是用来恢复的3.服务器端对应的进程地址是session中的paddr:而客户端的进程是process字段SELECT t.PADDR FROM v$session t WHERE t.SID IN(159, 143);进程地址:pid:Oracle process identifi原创 2013-05-06 21:32:11 · 881 阅读 · 0 评论 -
数据类型不一致导致的SQL不走索引
前几天,同事发来一条SQL,说是更新操作的时候执行的很慢,我看了下,数据量也不是很大。再查看执行计划,发现是执行路径错误导致的,可是为什么会走错误的执行路径呢?统计信息并没有太大的问题。在这里模拟下:数据准备:--1.数据准备,表一:DROP TABLE t_test_1;create table T_TEST_1( owner VARCHAR2(30),原创 2013-05-25 12:08:04 · 1714 阅读 · 1 评论 -
ORACLE里的锁
ORACLE里锁有以下几种模式:0:none1:null 空2:Row-S 行共享(RS):共享表锁,sub share 3:Row-X 行独占(RX):用于行的修改,sub exclusive 4:Share 共享锁(S):阻止其他DML操作,share5:S/Row-X 共享行独占(SRX):阻止其他事务操作,share/sub exclusive 6:exclus原创 2013-07-31 23:41:32 · 1017 阅读 · 0 评论 -
Oracle Locks之DML锁
Oracle通过锁来实现数据库的并发控制Oracle Database automatically locks a resource on behalf of a transaction to prevent other transactions from doing something that requires exclusive access to the same resource原创 2013-08-03 18:59:07 · 1939 阅读 · 0 评论 -
【REPOST】db file scattered read
当会话发布一个读入多个数据块的IO请求时提交该事件。ORACLE会话等待多个连续的数据块(由初始参数DB_FILE_MULTIBLOCK_READ_COUNT指定)从磁盘读入到SGA中。该事件是在全表扫描或索引快速全局扫描时发生的典型事件。 初始化参数db_file_multiblock_read_count(MBRC)决定了读取数据块的最大数目,有两种情况会造成多块读取操作被分成几次操作:转载 2013-08-06 22:58:00 · 877 阅读 · 0 评论 -
ORA-39700: database must be opened with UPGRADE option
数据库启动的时候报错:SQL> startupORACLE instance started.Total System Global Area 534462464 bytesFixed Size 2215064 bytesVariable Size 360711016 bytesDatabase Buffers 163577856 bytesRedo Buffe原创 2014-09-23 13:25:07 · 1235 阅读 · 0 评论 -
Oracle客户端连接慢,SSH连接数据库主机也慢的原因
最近通过客户端连接数据库:sqlplus system/11111@lubinsu或者通过SSH方式连接主机的时候,都非常慢,但是ping却是正常的:原因为:DNS服务器配置不正确,在主机上并不需要配置DNS服务器:[root@200-168-1-4 ~]# cat /etc/resolv.conf; generated by /sbin/dhclient-script sea原创 2014-09-26 13:11:53 · 1674 阅读 · 0 评论 -
设置数据库自启脚本
设置数据库自启脚本:cd /usr/u01/app/product/11.2.0/dbhome_1/bin[oracle@200-168-1-4 bin]$ vi dbstart添加:ORACLE_HOME="/usr/u01/app/product/11.2.0/dbhome_1"修改:ORACLE_HOME_LISTNER=$ORACLE_HOME原创 2014-09-15 23:22:14 · 876 阅读 · 0 评论 -
手工创建数据库
Step 1: Specify an Instance Identifier (SID) :[oracle@200-168-1-4 ~]$ ORACLE_SID=lubinsu [oracle@200-168-1-4 ~]$ export ORACLE_SID[oracle@200-168-1-4 ~]$ env HOSTNAME=200-168-1-4.speedyter原创 2014-09-26 13:14:15 · 921 阅读 · 0 评论 -
数值精度展示问题
SQL> SELECT to_char(1890.55, '$0G000D00') FROM dual;TO_CHAR(1890.55,'$0G000D00')---------------------------- $1,890.55SQL> SELECT to_char(1890.55, '$9,999V99') FROM dual;TO_CHAR(1890.55,'$9,999V9原创 2014-11-01 17:56:28 · 1662 阅读 · 0 评论 -
INTERVAL的使用
INTERVAL可以用来做时间的加减法:SELECT INTERVAL '300' MONTH "25年", INTERVAL '54-2' YEAR TO MONTH "54年2个月", INTERVAL '11:12:10.1234567' hour TO SECOND "小时到秒"FROM dual;语法:INTERVAL '{ i原创 2014-11-20 20:30:33 · 3211 阅读 · 0 评论 -
高水位线引起的查询变慢解决方法
众所周知,随着不断地进行表记录的DML操作,会不断提高表的高水位线(HWM),DELETE操作之后虽然表的数据删除了,但是并没有降低表的高水位,除非你使用TRUNCATE操作,进行表查询的时候,Oracle会扫表高水位以下的数据块,也就是说,扫描的时间并不会有所减少。所以DELETE删除数据以后并不会提高表的查询效率。下面通过这个例子,用来解决高水位引起的查询变慢问题:--例子中测试表占用原创 2014-11-20 22:52:12 · 2035 阅读 · 0 评论 -
效率较高的Oracle数据库之间数据同步(非dblink)
在Oracle数据库之间不能建立数据链路情况下,该代码用于数据库之间数据同步。 操作系统环境:AIX#!/usr/bin/bash#created by lubinsu#2015source ~/.bash_profileecho "读取配置信息"connectstr=`cat ${etl_dispatch}/db_constr.txt`proc_id=$1l_d原创 2015-07-12 12:09:20 · 2522 阅读 · 0 评论 -
Oracle快速导出数据文件
数据文件生成方式有多种,但是大多效率低下,对于大型数据仓库来说,高效导出文件是迫切需求:这里通过shell+java的方式集成老熊写的数据文件生成工具,效率比普通的导出方法高70%:shell文件生成脚本:#!/usr/bin/bash#created by lubinsu#2015.07.13source ~/.bash_profilesrcDbNm=$1sr原创 2015-07-19 10:47:47 · 2542 阅读 · 0 评论 -
Oracle sys_context()函数
网上搜集的关于Oracle上下文信息获取方式:--用户的认证类型select sys_context('USERENV','AUTHENTICATION_TYPE') from dual;--未知select sys_context('USERENV','AUTHENTICATION_DATA') from dual;--当前指定id的会话是否为oracle后台程序建立,不是则返回nu转载 2014-09-23 13:13:27 · 840 阅读 · 0 评论 -
ETL调度开发(5)——连接数据库执行数据库命令子程序
ETL调度中读写数据信息,都需要连接数据库,下面的子程序通过传入的数据库连接字符串和数据库命令(或SQL)执行所需要的操作:#!/usr/bin/bash#created by lubinsu#2014source ~/.bash_profilevalues=`sqlplus -S $1 << EOF set heading off feedback off pagesize 0原创 2014-08-14 23:28:47 · 1397 阅读 · 0 评论 -
connect by 十六进制转十进制
CREATE OR REPLACE FUNCTION f_hex_2_dec(p_str IN VARCHAR2) RETURN VARCHAR2 IS ----------------------------------------------------------------------------------------------------------------------原创 2013-08-11 23:58:07 · 880 阅读 · 0 评论 -
判断是否是日期格式YYYYMM
写个判断某数值是否是指定的日期格式:CREATE OR REPLACE FUNCTION f_is_date(in_date IN VARCHAR2, in_date_format IN VARCHAR2) RETURN NUMBER IS l_date DATE;BEGIN l_date :原创 2013-08-13 23:08:08 · 3396 阅读 · 0 评论 -
【Oracle】删除重复记录
--复习autotrace:SET AUTOTRACE OFF --不生成AUTOTRACE 报告,这是缺省模式SET AUTOTRACE ON EXPLAIN --AUTOTRACE只显示优化器执行路径报告SET AUTOTRACE ON STATISTICS --只显示执行统计信息SET AUTOTRACE ON原创 2013-08-18 23:32:53 · 1355 阅读 · 1 评论 -
导出用户下所有数据库对象(不导出数据)
[lubinsu@200-168-1-2 dpump]$ exp lubinsu/lubinsu owner=lubinsu rows=n indexes=y compress=y buffer=65536 feedback=100000 file=/home/lubinsu/dpump/lubinsu.dmp log=/home/lubinsu/dpump/lubinsu.log原创 2013-09-09 21:56:41 · 2101 阅读 · 0 评论 -
增强PL/SQL中查询CLOB或者LONG类型的可读性
一般CLOG或者LONG类型的字段,查询出来是如下所示,影响可读性:而且我们无法在子查询中查询LONG/CLOB字段:我们可以从下面的连接中找到方法:http://www.oracle-developer.net/display.php?id=430There are several workarounds we can use to solve our原创 2014-03-04 22:36:11 · 1969 阅读 · 0 评论