今天数据库访问突然很慢,通过top命令发现oracle的cpu使用率很高.同事建议查询一下看看是什么语句导致的oracle运行变慢.于是从网上查了一下,可以根据pid查询出正在执行的查询语句,发现是一个大表的字段没有创建索引导致全表扫描.具体操作步骤如下: 切换到oracle账户下并输入密码 su - oracle 通过sqlplus nolog进入命令查询界面 sqlplus /nolog 连接进入sysdba账户 connect sysdba 执行以下sql语句     SELECT   …
CREATE TABLE [TestTable] ( ) NOT NULL , ) NOT NULL , ) ))) GO ALTER TABLE [TestTable] ADD PRIMARY KEY ([uid], [key]) GO ) GO ) GO ) GO ) GO ) GO ) GO WITH cte AS ( SELECT *, ROW_NUMBER() OVER (PARTITION BY uid ORDER BY [key] DESC) AS rn FROM vtable )…
后期会补充建表语句. 现有两张表,westemp员工表,有(wtdempid,wtdempname,wtddeptid)列,westdept部门表,有(wtddeptid,wtddeptname,wtddeptaddress)列.其中westemp.wtddeptid可以等于westdept.wtddeptid. 1.交叉连接:(用于产生笛卡尔积)(两种写法) 1.1  select * from westemp a cross   join westdept b--交叉连接,用于生成笛卡尔积1…
SELECT 'list.add("' || t.dummy || '");' as listFROM dual t where rownum < 600; 执行结果: SELECT '''' || t.dummy || ''',' as 查询出的字段加引号FROM dual t where rownum < 600; 执行结果:…
查询语句的处理过程主要包含3个阶段:编译.执行.提取数据(sql查询语句的处理主要是由用户进程和服务器进程完成的,其他进程辅助配合) 一.编译parse 在进行编译时服务器进程会将sql语句的正文放入SGA的共享池的库高速缓存区(library cache)中并将完成一下处理. 1.首先在共享池中搜索是否有相同的sql语句(正文),如果没有就进行后续的处理. 2.检查sql语句的语法是否正确 3.通过查看数据字典来检查表和列的定义是否有效 4.对所操作的对象加编译锁,以便在编译语句期间这些对象的…
--查询Oracle正在执行的sql语句及执行该语句的用户 SELECT b.sid oracleID, b.username 登录Oracle用户名, b.serial#, spid 操作系统ID, paddr, sql_text 正在执行的SQL, b.machine 计算机名 FROM v$process a, v$session b, v$sqlarea c WHERE a.addr = b.paddr AND b.sql_hash_value = c.hash_value --查看正在…
一. 首先确认你的linux是否设置了支持中文 cat /etc/sysconfig/i18n 其中: LANG 变量是 language 的简称, 这个变量时决定系统的默认语言, 即系统菜单, 程序的工具栏语言, 输入法默认语言等. SUPPORTED 变量是 决定系统支持的语言, 即系统能够显示的语言. SYSFONT 变量是默认的系统字体. 其中 将LANG=“en_US.UTF-8”也是可以显示中文的. 二. 将 securCRT 中设置, 外观-> 字符编码设置成UTF-8 就可以输入…
查看 Oracle 正在执行的 sql 语句以及发起的用户 SELECT b.sid oracleID, b.username 用户名, b.serial#, paddr, sql_text 正在执行的SQL, b.machine 计算机名称 FROM v$process a, v$session b, v$sqlarea c WHERE a.addr = b.paddr AND b.sql_hash_value = c.hash_value 查询当前被锁的表 SELECT l.session_…
查询Oracle正在执行的sql语句及执行该语句的用户SELECT b.sid oracleID, b.username 登录Oracle用户名, b.serial#, spid 操作系统ID, paddr, sql_text 正在执行的SQL, b.machine 计算机名FROM v$process a, v$session b, v$sqlarea cWHERE a.addr = b.paddr AND b.sql_hash_value = c.hash_value 查看正在执行sql的发…
需求:从一个表中查询数据,得到的数据为最新的一条记录. -------------建立测试表 --drop table TB ),dtDate date) -------------插入测试数据 ,'杰克',to_date('2015/10/12','YYYY/MM/DD')); ,'琼斯',to_date('2016/01/12','YYYY/MM/DD')); insert into TB VALUES(3,'胡巴',to_date('2015/01/12','YYYY/MM/DD'));…