数据库(Database)是按照数据结构来组织、存储和管理数据的仓库,它产生于距今六十多年前,随着信息技术和市场的发展,特别是二十世纪九十年代以后,数据管理不再仅仅是存储和管理数据,而转变成用户所需要的各种数据管理的方式。数据库有很多种类型,从最简单的存储有各种数据的表格到能够进行海量数据存储的大型数据库系统都在各个方面得到了广泛的应用。
数据管理技术的发展经历了四个阶段:人工管理阶段、文件系统阶段、数据库阶段和高级数据库技术阶段。——常识计算机篇。
在Oracle数据库中,可以通过访问v$session和v$sql这两个动态性能视图(dynamic performance views),来查询历史执行的SQL开始时间与结束时间。
其中v$session视图用于显示当前会话信息,同时也包括了会话所执行的SQL语句的相关信息;v$sql视图用于显示数据库中缓存的SQL语句的相关信息,包括SQL代码、执行计划等信息。
要查询历史执行的SQL的开始时间和结束时间,您可以按照以下步骤进行 *** 作:
1 查询历史SQL语句的SQL_ID:在v$session或v$sql视图中筛选出需要查询的SQL语句,记录下其SQL_ID信息。
例如,在v$sql视图中,可以使用以下语句查找指定时间范围内的SQL语句:
```
SELECT SQL_ID, SQL_TEXT
FROM v$sql
WHERE first_load_time BETWEEN to_date('2022-01-01 00:00:00', 'YYYY-MM-DD HH24:MI:SS') AND to_date('2022-12-31 23:59:59', 'YYYY-MM-DD HH24:MI:SS');
```
2 查询SQL的执行开始和结束时间:使用SQL_ID信息,在v$session视图中查询SQL的执行信息,获取SQL执行的开始和结束时间。
例如,可以使用以下语句查询SQL_ID为'xxxxx'的SQL语句的执行开始和结束时间:
```
SELECT
stsid,
ststart_time,
stend_time,
ROUND((stend_time - ststart_time) 24 60, 2) AS elapsed_min,
stSQL_ID
FROM v$active_session_history st
WHERE stSQL_ID = 'xxxxx'
```
其中,stsid表示会话标识符,ststart_time表示SQL语句的执行开始时间,stend_time表示SQL语句的执行结束时间,elapsed_min表示SQL语句执行耗时,单位为分钟。
需要注意的是,查询历史执行的SQL语句的开始时间和结束时间,需要根据具体时间范围、SQL_ID等条件灵活选择相应的动态性能视图,以便准确地获取所需信息。
oracle 查询最近执行过的 SQL语句
select sql_text,last_load_time from v$sql order by last_load_time desc;
SELECT sql_text, last_load_time FROM v$sql WHERE last_load_time IS NOT NULL and sql_text like 'select%' ORDER BY last_load_time DESC;
SELECT sql_text, last_load_time FROM v$sql WHERE last_load_time IS NOT NULL and sql_text like 'update%' ORDER BY last_load_time DESC;
SELECT sql_text, last_load_time FROM v$sql WHERE last_load_time IS NOT NULL and last_load_time like' 14-06-09%' ORDER BY last_load_time DESC;
---正在执行的
select ausername, asid,bSQL_TEXT, bSQL_FULLTEXT
from v$session a, v$sqlarea b
where asql_address = baddress
---执行过的
select bSQL_TEXT,bFIRST_LOAD_TIME,bSQL_FULLTEXT
from v$sqlarea b
where bFIRST_LOAD_TIME between '2009-10-15/09:24:47' and
'2009-10-15/09:24:47' order by bFIRST_LOAD_TIME
(此方法好处可以查看某一时间段执行过的sql,并且 SQL_FULLTEXT 包含了完整的 sql 语句)
其他
select OSUSER,PROGRAM,USERNAME,SCHEMANAME,BCpu_Time,STATUS,BSQL_TEXT
from V$SESSION A LEFT JOIN V$SQL B ON ASQL_ADDRESS=BADDRESS AND ASQL_HASH_VALUE=BHASH_VALUE order by bcpu_time desc
select address, sql_text, piece
from v$session, v$sqltext
where address = sql_address
-- and machine = < you machine name >
order by address, piece
查找前十条性能差的sql
SELECT FROM (select PARSING_USER_ID,EXECUTIONS,SORTS,
COMMAND_TYPE,DISK_READS,sql_text FROM v$sqlarea
order BY disk_reads DESC )where ROWNUM<10 ;
查看占io较大的正在运行的session
SELECT sesid,seserial#,prSPID,seusername,sestatus,
seterminal,seprogram,seMODULE,、sesql_address,stevent,st
p1text,siphysical_reads,
siblock_changes FROM v$session se,v$session_wait st,
v$sess_io si,v$process pr WHERE stsid=sesid AND st
sid=sisid AND sePADDR=prADDR AND sesid>6 AND st
wait_time=0 AND stevent NOT LIKE '%SQL%' ORDER BY physical_reads DESC
这个从SQL2005开始就有一个功能可以做到:数据库触发器,他可以对数据库内的 *** 作进行审计和LOG记录,具体的实现办法可以参考:
>
如何使用plsql
developer从oracle数据库
导入导出数据
用pl/sql
developer导出表的数据时有三种方式:oracle
export,sql
insert,pl/sql
developer
只有“oracle
export”方式导出再导入后,表结构和索引结构没有发生变化,另两种方式都改变了索引类型。另外
sql
insert的那个可以导成sql,可以用文本编辑器打开。
pl/sql
developer
也可以导出,但文本编辑器不能打开。
区别:
oracle
export,sql
insert,pl/sql
developer
第一种是导出为dmp的文件格式,dmp文件是二进制的,可以跨平台,还能包含权限,效率也很不错,用得最广
第二种是导出为sql文件的,可用文本编辑器查看,通用性比较好,但效率不如第一种,适合小数据量导入导出。尤其注意的是表中不能有大字段(blob,clob,long),如果有,会提示不能导出(提示如下:
table
contains
one
or
more
long
columns
cannot
export
in
sql
format,user
pl/sql
developer
format
instead),可以用第一种和第三种方式导出。
第三种是导出为pde格式的,pde为pl/sql
developer自有的文件格式,只能用pl/sql
developer自己导入导出;不能用编辑器查看,
导出数据到excel文件:
选中数据表--query
data--选中要导出的数据--右键copy
to
excel
excel数据导入到数据库:
1在excel中准备好要导入的数据。具体 *** 作:在excel中,把第一列设置为空列,第二列以后的列应与要导入的数据表的字段相对应。
2登录plsql
developer,找到需要导入数据的数据库表后,点击右键--edit
data,进入了编辑此表的数据对话框,并点击最左侧选中一空行。
3copy
excel表中的数据记录,将数据粘贴到上步中plsql
developer显示的表列中。
4点击plsql
developer中的对号按钮进行post。
注意:plsql
developer不认识“-”
查询v$sqltext、v$sqlarea、v$sqlstats视图select from v$sqlarea t where tPARSING_SCHEMA_NAME in ('schema') order by tLAST_ACTIVE_TIME desc;#对v$sqltext、v$sqlarea查看的是shared pool中的SQL,其时间索引是其解析历史,因为共享的问题这个查询可能并不能完整地反映出执行的历史。#v$sqlstats信息保留时间比v$sql、v$sqltext、v$sqlarea长,及时SQL已经换出shared pool仍然可查到
以上就是关于数据库的发展历史分哪几个阶段全部的内容,包括:数据库的发展历史分哪几个阶段、oracle历史执行的sql开始时间与结束时间、怎么 查看数据库最近曾经执行过的SQL语句等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)