top查看系统的checkpoint动作
我们可以通过将LOG_checkpointS_TO_ALERT设置成TRUE来打开checkpoint的trace,这样就可以跟踪checkpoint的 *** 作了。
ALTER SYSTEM SET LOG_checkpointS_TO_ALERT=TRUE;
这设置以后系统的checkpoint将会被记录alert_$SIDlog文件中。
在V$DATAFILE_HEADER里面也保存了发生完全checkpoint的时候一些相关信息,包括checkpoint发生时间、对应SCN已经checkpoint的次数。
select file# NO, status, tablespace_name, name, dbms_flashbackget_system_change_number CUR_SCN,
to_char(resetlogs_time, 'YYYY-MM-DD HH24:MI:SS') RST_DT, resetlogs_change# RST_SCN,
to_char(checkpoint_time, 'YYYY-MM-DD HH24:MI:SS') CKPT_DT, checkpoint_change# CKPT_SCN, checkpoint_count CKPT_CNT
from v$datafile_header;
/
NO STATUS TABLESPACE_NAME CUR_SCN RST_DT RST_SCN CKPT_DT CKPT_SCN CKPT_CNT
--- ------- ---------------- -------- ------------------- -------- ------------------- --------- ---------
1 ONLINE SYSTEM 533541 2008-01-12 16:51:53 446075 2008-08-04 22:03:58 532354 65
2 ONLINE UNDOTBS1 533541 2008-01-12 16:51:53 446075 2008-08-04 22:03:58 532354 28
3 ONLINE SYSAUX 533541 2008-01-12 16:51:53 446075 2008-08-04 22:03:58 532354 65
4 ONLINE USERS 533541 2008-01-12 16:51:53 446075 2008-08-04 22:03:58 532354 64
5 ONLINE EXAMPLE 533541 2008-01-12 16:51:53 446075 2008-08-04 22:03:58 532354 24
当我们建立了Oracle数据库后,必须合理地配置监听程序和网络服务名后,客户应用才能访问我们的数据库。所以服务器端必须配置监听程序,而网络服务名在客户端跟服务器端都可以配置。看如下说明:
1。服务器端的监听程序用于接收客户端的连接请求。
在建立了Oracle数据库之后,为了使得客户应用可以访问特定数据库,必须要在监听程序中追加该数据库。一个监听程序可以监听多个Oracle数据库,多个监听程序也可以监听同一个数据库。但是监听程序只能用于同一台服务器上的Oracle数据库。安装了Oracle时,会自动建立默认的监听程序LISTENER一般只需要将需要使用的数据库追加到这个监听程序上就可以了。
监听程序使用的默认端口为1521
保存了监听程序配置之后,必须要重新启动监听程序才能生效。windows中可以在“服务”中重新启动。
例如:假如我在101502745上装了ORACLE服务器,端口是1521,为了让其他客户端应用(不管是本地的还是其他的)可以访问我的名为TESTDB的数据库,首先得在服务器上配置监听器:进入NET MANAGER 新建一个端口,如命名为LISTENER,配置主机名:如101502745和端口1521,配置全局数据库名:如TESTDB,然后保存就好了
2。客户端需要配置网络服务名,应用程序使用网络服务名才能访问Oracle数据库, 一般使用数据库名作为服务名。注意: 网络协议要与监听程序的一致(如TCP/IP)
例如:假如我在101502746上装了ORACLE客户端,进入NET MANAGER,新建一服务命名,如:TEST,然后配置你要连接的DB服务器名字和端口好,如:101502745, 1521,配置服务名,必须跟监听端口的全局数据库名一样:如TESTDB,然后你可以通过输入用户名和密码测试连接成不成功了
3。利用客户端工具测试
在101502746上通过SQLPLUS连接101502745上的DB:TESTDB, 输入用户名密码,HOST STRING输入TEST,看连接是不是成功
我给你写一个。稍等,我先占个头坑。
请告诉我B表跟A表的关系,以及关联字段。
谢谢。
17369841
CREATE
OR
REPLACE
TRIGGER
TR_COPY_DATA
BEFORE
DELETE
ON
A
FOR
EACH
ROW
BEGIN
INSERT
INTO
LOGA(A的字段1,A的字段2,A的字段3,delete_id,DELETE_TIME)
VALUES(:oldA的字段1,:oldA的字段2,:oldA的字段3,USER,SYSDATE)
;
INSERT
INTO
LOGB
SELECT
B
FROM
A,B
WHERE
A
=
B
;
END
TR_COPY_DATA
;
1 修改监听器配置文件
Linux下Oracle监听器配置文件在:$ ORACLE_HOME/network/admin/listererora, 如:
/bank/oracle/oracle10g/product/1020/network/admin/listenerora
修改并配置要监听SID的相关信息,如:
#listenerora Network Configuration File: /bank/oracle/oracle10g/product/1020/network/admin/listenerora
# Generated by Oracle configuration tools
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = /bank/oracle/oracle10g/product/1020)
(PROGRAM = extproc)
)
(SID_DESC =
(GLOBAL DBNAME = bkserver)
(SID_NAME = bkserver)
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
(ADDRESS = (PROTOCOL = TCP)(HOST = 10713242)(PORT = 1521))
)
)
2 启动监听器
(1) 切换至oracle安装用户(一般为oracle)
su - oracle
(2) 启动监听器
lsnrctl start
另:停止监听器
lsnrctl stop
3 测试监听器是否运行正常
在客户端修改tnsnamesora配置文件就访问Oracle数据库,如:
BKSERVER =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10713242)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = BKSERVER)
)
)
通过命令tnsping测试是否能访问到监听器,如:
M:\>tnsping bkserver
TNS Ping Utility for 32-bit Windows: Version 102010 - Production on 12-8月 -
2010 17:11:04
Copyright (c) 1997, 2005, Oracle All rights reserved
已使用的参数文件:
D:\oracle\product\1020\client_1\network\admin\sqlnetora
已使用 TNSNAMES 适配器来解析别名
Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)
(HOST = 10713242)(PORT = 1521))) (CONNECT_DATA = (SERVER = DEDICATED) (SERVIC
E_NAME = BKSERVER)))
OK (20 毫秒)
注意: 监听器是否能被tnsping通跟数据库的开启/关闭无关,所以就算可以tnsping通监听器但未必能连接到数据库,这时请检查listenerora文件配置信息是否正确,还有数据库是否已经被开启。
监控Oracle 数据库中长时间运行进程的两种方式,通过这些方 法,我们可以监控单条语句的 长时间 *** 作,监控存储过程的运行进度,甚至自己'生成'进度信息 关键词:监控进度V$SESSION_LONGOPS 当Oracle 存储过程运行时间较长时,我们希望客 户端能了解到它在后台执行的状况或者进度信息(类 似WINDOWS 安装软件时的进度条信息),这样可以知 道运行在后台的应用进程是否终止或者休眠,更近一 步要求,最好能知道进行到哪一步骤,还有多少时间才 能完成 简单到一条SQL 语句的情况,如果执行时间较长, 我们如何得到它的运行状况是否后台还在运行虽 然可以查看SQL 的执行计划了解它的执行步骤,但如 何知道它运行到哪一个步骤了呢如何才能估计出它 的合理的较为精确的执行时间呢 Oracle 数据库前端发出执行命令后,进程在后台 执行,普通开发人员一般无法了解到后台在做什么,一 般采用的方法是用DBMSOUTPUTPUT_LINE 来打印出 来,但DBMS—OUTPUTPUT—LINE 打印的信息受缓冲区 大小限制,如果信息较多就容易溢出,而且如果存储过 程执行时间较长,只有在其执行完后,这些信息才会打 印出来,这就增加了调试周期,影响了调试效果有的 开发人员在存储过程中通过写日志表的形式来记录进 度,但需要COMMIT 后其他进程才能看到这些日志信 息,而在某些控制结构中(如游标CURSOR 循环)COM— MIT,则很容易引起ORA 一01555 错误,造成程序出错 下面介绍两种监控方法 如何监控单条长语句从ORACLE8 开始,出现一个新的动态视图:V $SESSION_LONGOPS,从这个视图可以获知一些 *** 作 (如全表扫描,并行查询,RMAN,排序等)的执行进度, 我们先来了解一下V$SESSION—LONGOPS 视图的一些 重要字段: 列说明 sID 会话标识 5ERIAL#会话序列号 OPfE *** 作的简短描述 TARG 盯 *** 作的对象,如xx TAR~_DESC目标描述 SOFAR 目前已执行单位数目 ToTAIWORK 总单位数目 UNlTS 单位 START_TIME 开始执行时间 LAST_ UPDATE_TIME 统计数据最后更新时间 TIME_ REMAINING 估计剩余时间c ELAPSED_SECONDS 已执行时间(秒) MEsSAGE 统计数据汇总信息 USERA^^E 用户名 ~L_ADDRES5 语句的地址,,用于和V$sql_text 等关联 语句的hash 地址,用于和V$sql_texlSQLHASH VALUE等关联 这个动态视图显示各个运行时间超过6 程这些进程包含许多备份和恢复功能,统计数据收集,查询等 执行以下语句就可以得到数据库中各个长时间 *** 作的进程信息: select'Icfromv$sesslon_ longopswheretime_ re- malnlng>0 我们也可以用图形化工具查看,如TOAD,OEM中 均可查看长 *** 作进程进度信息 Oracle 自带的管理工具OracleEnterpriseManager (OEM)提供了图形化查看长 *** 作的功能,如: 计算机系统应用2007 Quest公司的数据库管理工具TOAD 也可以看到 长 *** 作信息,如: 表的统计信息 长时问运行的SQL 语句可以用V$SESSION—LON 为了能监控到查询进程执行的进度,必需使用 CBO 优化器并且: 设置TlMED—STATISTICS或者SQL—TRACE 用ANALYZE语句或者DBMS—STAT 包收集相关 108 实践经验P 帕cficalExpen GOPS来监控实际上,长时间运行的存储过程也可以 监控那是否任何 *** 作都可以通过这个视图来监控进 度呢很遗憾,V$SESSION—LONGOPS 只会报告它认为 耗时长的 *** 作对于NEsTEDLOOP/UNIQUEINDEX READS/INDEXRANGEScANS 等执行速度很快的 *** 作, 2007 期计算机系统应用由于它们执行一般不超过6 秒,因此将不会出现在V $SESSION—LONGOPS 如何监控自定义存储过程单条长语句可以用上面的方法监控,Oracle 动生成V$SESSION— LONGOPS 记录那么存储过程中 有许多小 *** 作,如何监控进度呢其实,我们也可以手 工生成V$SESSION—LONGOPS 记录,方法是调用DBMS APPLICATION—INFO 包来生成自定义进度信息 从Oracle72 开始,提供了DBMS—APPLICATION— INFo 包,通过调用这个包,应用可以将自己的名字和 动作填写到V$SESSION 和V$SQLAREA 的MODULE ACTION列中V$SESSION 列出每个会话的用户名, *** 作系统机器名,终端名,程序名等 应用可以在执行模块时设置模块名和动作名,模 块名一般是甩户自定义的而动作名一般描述模块中 的当前执行的事务的名字 DBMSAPPLICATION_INFO 包包含以下过程 SET_ MODULE 设置当前运行程序的模块名 SET__AEl'ION 设置当前模块的当前动作名 SESSION—LON-在V$SESSIONLONGOPS视图中 GoPS 插入一行进度信息 SETMODULE过程设置模块名和动作名: createorreplaceproceduredel—cust(v_cust—Id varchar2) begindbms—— application—— infoset— module(module—— name=>"delcust" actlon_name=>"deletetablecust)i deletefromcustwherecustld=v_ cusLId; dbms_appllcatlon— InfoseLmodule(,); end;以上设置的模块名和动作名可以通过查询V $sqlarea 获取 如:selectsql—text,module,actionfromv $sqlareawheremodule="del_cust: sql_textmoduleadion Deletefr0mcustdel_ custdeletetableoust 1rowselected SET_SESSION—LONGOPS 过程用于在V$session— longops 中插入一行,开发人员可以调用此过程设置长 时间 *** 作的状态信息,这样,任何其他其他会话都可以 看到这个进度信息如下例所示: declare nohlntnumberdefaultdbmsapplicatlon_infoset_ session— Iongops_ nohint; IdndexnumberdefaultInohlnt: slnonumber;begin forlIn18888888888 loop update; dbms_ appllcaflon— Infosetsesslon_ longops (rlndex=>l_rlndex, slno=>I_slno op_name=>"updateahugetable target=>126, target_desc=>'msgdescription context=>0sOfar=>j totalwork=>8888888888 units=>loops endloop;end; 然后,从另一个会话来执行以下语句selectfromv$sesslon_ longopswheretlmere malnlng>0; 也可以用图形化工具TOAD 或OEM来查看 因此,采用本文说明的方法,Oracle 开发人员可以 比较方便的监控长 *** 作进程的进度信息,也可以自己 设置监控信息,来了解后台存储过程的运行效率甚 至,可以在存储过程或SQL 语句提交执行后马上观察 其执行进度,如果比较缓慢,则可以中断其执行,进行 调优,从而缩短调试周期,提高开发效率
在ORACLE 10g中,BACKGROUND_DUMP_DEST参数确定了告警日志的位置,但是告警日志的文件名无法修改,告警日志的名称为:alert_<SID>log ,其中<SID>是实例的名称。BACKGROUND_DUMP_DEST参数是动态的。
SQL> show parameter background_dump_dest;
NAME TYPE VALUE
--------------------- ----------- ------------------------------
background_dump_dest string /u01/app/oracle/admin/GSP/bdump
SQL>
告警日志以及所有后台跟踪文件都会被写至BACKGROUND_DUMP_DEST参数所指定的目录。
在ORACLE 11g 以及ORACLE 12c中,告警日志文件的位置有了变化。主要是因为引入了ADR(Automatic Diagnostic Repository:一个存放数据库诊断日志、跟踪文件的目录),关于ADR对应的目录位置可以通过查看v$diag_info系统视图。
以上就是关于(急~~~)如何监控Oracle数据检查点的执行。就是数据库发生检查点的时候,可以得到这个信息。全部的内容,包括:(急~~~)如何监控Oracle数据检查点的执行。就是数据库发生检查点的时候,可以得到这个信息。、oracle数据库怎么net manager配置监听、Oracle数据库中利用Trigger监控删除数据 *** 作等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)