① 想往Oracle数据库方向发展.请教些问题
我就是运维的,搞运维知识得非常全面,Linux命令得全会,因为要用sqlPLUS,
要会数据库备份,冷备份,热备份,RMAN使用,数据导入导出,
ORACLE10G/11G 的操作,主要是表、索引、触发器建立删除,数据清理,熟悉SQL语句查询
ORACLE性能调整,高可用搭建,standby搭建等。。。很多
② 如何查询Oracle性能监控
1.查看临时表空间使用情况
Select
f.tablespace_name
,sum(f.bytes_free + f.bytes_used)
/1024/1024/1024 "total GB"
,sum((f.bytes_free + f.bytes_used) - nvl(p.bytes_used, 0))
/1024/1024/1024 "Free GB"
,sum(nvl(p.bytes_used, 0))
/1024/1024/1024 "Used GB"
from sys.v_$temp_space_header f, dba_temp_files d, sys.v_$temp_extent_pool p
where f.tablespace_name(+) = d.tablespace_name
and f.file_id(+) = d.file_id
and p.file_id(+) = d.file_id
group by
f.tablespace_name
2.查看使用临时表空间的SQL
Select se.username,
se.sid,
su.extents,
su.blocks * to_number(rtrim(p.value)) as Space,
tablespace,
segtype,
sql_text
from v$sort_usage su, v$parameter p, v$session se, v$sql s
where p.name = 'db_block_size'
and su.session_addr = se.saddr
and s.hash_value = su.sqlhash
and s.address = su.sqladdr
order by se.username, se.sid
3.收缩临时表空间
alter tablespace temp shrink space;
alter tablespace temp shrink tempfile ''
4.重建索引
alter index PK_CROSSRELATION rebuild;
5.查看表空间使用情况
SELECT UPPER(F.TABLESPACE_NAME) "表空间名",
D.TOT_GROOTTE_MB "表空间大小(M)",
D.TOT_GROOTTE_MB - F.TOTAL_BYTES "已使用空间(M)",
TO_CHAR(ROUND((D.TOT_GROOTTE_MB - F.TOTAL_BYTES) / D.TOT_GROOTTE_MB * 100,2),'990.99') || '%' "使用比",
F.TOTAL_BYTES "空闲空间(M)",
F.MAX_BYTES "最大块(M)"
FROM (SELECT TABLESPACE_NAME,
ROUND(SUM(BYTES) / (1024 * 1024), 2) TOTAL_BYTES,
ROUND(MAX(BYTES) / (1024 * 1024), 2) MAX_BYTES
FROM SYS.DBA_FREE_SPACE
GROUP BY TABLESPACE_NAME) F,
(SELECT DD.TABLESPACE_NAME,
ROUND(SUM(DD.BYTES) / (1024 * 1024), 2) TOT_GROOTTE_MB
FROM SYS.DBA_DATA_FILES DD
GROUP BY DD.TABLESPACE_NAME) D
WHERE D.TABLESPACE_NAME = F.TABLESPACE_NAME
ORDER BY 1;
6.查询表空间的总容量
select tablespace_name, sum(bytes) / 1024 / 1024 as MB
from dba_data_files
group by tablespace_name;
7. 查询表空间使用率
select total.tablespace_name,
round(total.MB, 2) as Total_MB,考试大论坛
round(total.MB - free.MB, 2) as Used_MB,
round((1 - free.MB / total.MB) * 100, 2) || '%' as Used_Pct
from (select tablespace_name, sum(bytes) / 1024 / 1024 as MB
from dba_free_space
group by tablespace_name) free,
(select tablespace_name, sum(bytes) / 1024 / 1024 as MB
from dba_data_files
group by tablespace_name) total
where free.tablespace_name = total.tablespace_name;
8. 查找当前表级锁的SQL如下:
select sess.sid,
sess.serial#,
lo.oracle_username,
lo.os_user_name,
ao.object_name,
lo.locked_mode
from v$locked_object lo,
dba_objects ao,
v$session sess
where ao.object_id = lo.object_id and lo.session_id = sess.sid;
杀掉锁表进程:
alter system kill session '436,35123';
9.监控当前数据库谁在运行什么SQL语句
select osuser, username, sql_text
from v$session a, v$sqltext b
where a.sql_address =b.address order by address, piece;
10.找使用CPU多的用户session
select a.sid,spid,status,substr(a.program,1,40) prog, a.terminal,osuser,value/60/100 value
from v$session a,v$process b,v$sesstat c
where c.statistic#=12 and
c.sid=a.sid and
a.paddr=b.addr
order by value desc;
11.查看死锁信息
SELECT (SELECT username
FROM v$session
WHERE SID = a.SID) blocker, a.SID, 'is blocking',
(SELECT username
FROM v$session
WHERE SID = b.SID) blockee, b.SID
FROM v$lock a, v$lock b
WHERE a.BLOCK = 1 AND b.request > 0 AND a.id1 = b.id1 AND a.id2 = b.id2;
12.具有最高等待的对象
SELECT o.OWNER,o.object_name, o.object_type, a.event,
SUM (a.wait_time + a.time_waited) total_wait_time
FROM v$active_session_history a, dba_objects o
WHERE a.sample_time BETWEEN SYSDATE - 30 / 2880 AND SYSDATE
AND a.current_obj# = o.object_id
GROUP BY o.OWNER,o.object_name, o.object_type, a.event
ORDER BY total_wait_time DESC;
13.查看具有最高等待的对象
SELECT a.session_id, s.osuser, s.machine, s.program, o.owner, o.object_name,
o.object_type, a.event,
SUM (a.wait_time + a.time_waited) total_wait_time
FROM v$active_session_history a, dba_objects o, v$session s
WHERE a.sample_time BETWEEN SYSDATE - 30 / 2880 AND SYSDATE
AND a.current_obj# = o.object_id
AND a.session_id = s.SID
GROUP BY o.owner,
o.object_name,
o.object_type,
a.event,
a.session_id,
s.program,
s.machine,
s.osuser
ORDER BY total_wait_time DESC;
14.查看等待最多的SQL
SELECT a.program, a.session_id, a.user_id, d.username, s.sql_text,
SUM (a.wait_time + a.time_waited) total_wait_time
FROM v$active_session_history a, v$sqlarea s, dba_users d
WHERE a.sample_time BETWEEN SYSDATE - 30 / 2880 AND SYSDATE
AND a.sql_id = s.sql_id
AND a.user_id = d.user_id
GROUP BY a.program, a.session_id, a.user_id, s.sql_text, d.username;
15.显示正在等待锁的所有会话
SELECT * FROM DBA_WAITERS;
③ java代码实现监控oracle使用情况
通过JMX技术来监控Oracle的JVM
2. 阿里巴巴数据库连接池(具有数据连接监控功能)
Druid是一个JDBC组件,它包括三部分:
DruidDriver 代理Driver,能够提供基于Filter-Chain模式的插件体系。
DruidDataSource 高效可管理的数据库连接池。
SQLParser
Druid可以做什么?
1) 可以监控数据库访问性能,Druid内置提供了一个功能强大的StatFilter插件,能够详细统计SQL的执行性能,这对于线上分析数据库访问性能有帮助。
2) 替换DBCP和C3P0。Druid提供了一个高效、功能强大、可扩展性好的数据库连接池。
3) 数据库密码加密。直接把数据库密码写在配置文件中,这是不好的行为,容易导致安全问题。DruidDruiver和DruidDataSource都支持PasswordCallback。
4) SQL执行日志,Druid提供了不同的LogFilter,能够支持Common-Logging、Log4j和JdkLog,你可以按需要选择相应的LogFilter,监控你应用的数据库访问情况。
扩展JDBC,如果你要对JDBC层有编程的需求,可以通过Druid提供的Filter-Chain机制,很方便编写JDBC层的扩展插件。
④ ORACLE中DBSNMP用户是干什么用的
DBSNMP是Oracle数据库中用于智能代理(Intelligent Agent)的用户,用来监控和管理数据库相关性能的用户,如果停止该用户,则无法提取相关的数据信息;
⑤ oracle客户端与服务端有什么区别
oracle客户端与服务端有什么区别:
1、oracle服务端是指装在数据库服务器上的oracle主服务,数据库的核心,用于数据库的管理,数据的与存储、查询、数据库资源的监控、监听等服务。
oracle客户端只是指与服务端交互的工具,要登录使用oracle数据库服务就需要安装客户端(例如PLSQL),利用PLSQL连接到数据库,来执行oralce服务的一些增删改查等操作。
2、服务器端不一定在本地(client一定在本地),所以需要在客户端配置TNSNAMES.ORA文件。在文件中添加服务名和IP。
3、oracle数据库服务都会有一个全局数据库名例如:orcl,这是在安装数据库时指定的。如果要安装多个数据库,那么这个全局数据库名必须不一样。服务器端的listener文件里配置有监听程序,可以配置多个监听IP。
而oracle客户端连接服务端是就要配置oracle的实例名来确认数据库信息。
4、服务器端的客户工具是通过服务器端tnsnames.ora和listener.ora进行验证并建立连接;
远程客户端是通过客户端的tnsnames.ora和服务器端的listener.ora执行验证和建立连接。
⑥ 如何实时监控oracle数据库中是否有新纪录
在要监控的表A中创建触发器,把新记录数据,更新到另外一张表B,
应用定期查询B的时间,前后两次查询的结果一样就是没有更新,不一样就是有新记录。
当然也可以直接查询原表A,不过A的数据一多就影响性能了。
⑦ oracle数据库管理培训
Oracle数据库管理专题
时间主要授课内容
第一单元
内容一:简介(数据库体系结构)描述课程目标研究 Oracle 10g 数据库体系结构
内容二:安装 Oracle 数据库软件解释 DBA 核心任务和工具 计划 Oracle 安装 使用最佳的灵活的体系结构 使用 Oracle Universal Installer (OUI) 安装软件
内容三:创建 Oracle 数据库使用数据库配置助手 (DBCA) 创建数据库 使用 DBCA 创建数据库设计模板 使用 DBCA 生成数据库创建脚本
内容四:管理 Oracle 例程启动和停止 Oracle 数据库及组件 使用 Oracle Enterprise Manager (EM) 使用 SQL*Plus 和 iSQL*Plus 访问数据库 修改数据库初始化参数 了解数据库启动阶段 查看预警日志 使用数据字典
内容五:使用RMAN工具RMAN使用及维护
第二单元
内容一:使用简单的SELECT语句SELECT语句的语法检索出来的数据排序用WHERE设置检索条件GROUP BY和HAVING使用子查询 连接查询
内容二:oracle 11g中支持的数据类型Oracle 11g中数据类型介绍
内容三:视图解释视图的概念使用数据字典视图生成简单和复杂的视图生成带约束选项的视图 修改视图
内容四:相关的DDL和DML语句使用DDL语句使用DML语句
内容五:实现数据完整性1.主键约束 2.外键约束3.CHECK 4.UNIQUE5.NOT NULL
内容六:oracle内置函数介绍使用函数的基本概念在SELECT语句中使用的各种字符,数字,日期函数说明转换函数的定义及使用介绍其他常用函数
第三单元
内容一:视图解释视图的概念使用数据字典视图生成简单和复杂的视图生成带约束选项的视图修改视图
内容二:存储过程解释存储过程的概念存储过程分类 自定义存储过程存储过程中的参数传递
内容三:触发器解释触发器的概念及作用触发器的分类实现触发器
内容四:事务和锁1、事务的类型及机制2、事务分类3、实现事务4、锁的类型及使用
内容五:游标游标简介 使用游标
第四单元
内容一:管理数据库存储结构描述表数据存储(以块为单位) 定义表空间和数据文件的用途 了解和使用 Oracle Managed Files (OMF) 创建和管理表空间 5、获取表空间信息 描述自动存储管理 (ASM) 的主要概念和功能
内容二:管理用户安全性创建和管理数据库用户帐户 对用户进行验证 分配默认的存储区(表空间)授予权限和撤消权限创建和管理职责 创建和管理配置文件 实施标准口令保护功能 控制用户对资源的使用
内容三:管理方案对象定义方案对象和数据类型 创建和修改表 3、定义约束条件 查看表的列和内容 创建索引、视图和序号 解释临时表的用途 使用数据字典
第五单元
内容一:管理数据和并发处理能力通过 SQL 管理数据 确定和管理 PL/SQL 对象描述触发器和触发事件监控和解决锁冲突
内容二:管理撤消数据解释 DML 和撤消数据生成 监控和管理撤消 描述撤消数据和重做数据之间的区别 配置撤消保留 保障撤消保留 使用撤消 Advisor
内容三:实施 Oracle 数据库安全性描述 DBA 安全性责任 应用最少权限原则 启用标准数据库跟踪 指定跟踪选项 复查跟踪信息 维护跟踪线索
第六单元
内容一:配置 Oracle Network 环境使用 Oracle 11G Enterprise Manager 配置 Oracle Network 环境 创建其它监听程序 创建 Oracle Net Service 别名 配置连接时故障转移 控制 Oracle Net Listener 测试 Oracle Net 的连接性 确定何时使用共享服务器和专用服务器
内容二:积极维护1、使用统计数据 2、描述指导框架3、管理自动工作量资料档案库 (AWR) 4、使用自动数据库诊断监控程序 (ADDM) 设置预警阈值 使用服务器生成的预警 使用自动任务
内容三:性能管理使用 Oracle Enterprise Manager 页监控性能 使用 SQL Tuning Advisor 使用 SQL Access Advisor 使用共享内存的自动管理 使用内存 Advisor 设置内存缓冲区的大小 使用与性能相关的动态视图 排除无效或不可用的对象中的故障
第七单元
内容一:备份和恢复的概念确定 Oracle 数据库中可能出现的错误类型 描述优化例程恢复的方法 确定检查点、重做日志文件和归档日志文件的重要性 配置 ARCHIVELOG 模式
内容二:执行数据库备份创建一致的数据库备份 在不关闭数据库的情况下进行备份 创建增量备份 自动数据库备份 监控快速恢复区
内容三:执行数据库恢复恢复丢失的控制文件 恢复丢失的重做日志文件 在数据文件丢失后执行完全恢复
内容四:执行FlashBack描述闪回数据库 使用闪回表将表内容还原到过去的某一特定时间点恢复已删除的表使用闪回查询查看截至任意时间点的数据库内容 使用闪回版本查询查看一段时间内的行版本 使用闪回事务处理查询查看行的事务处理历史记录
内容五:移动数据描述移动数据的可用方法 创建和使用目录对象 使用 SQL*Loader 从 Oracle 数据库(或用户文件)中装入数据 解释数据泵的通用体系结构 使用数据泵的导出和导入功能在 Oracle 数据库之间移动数据 使用外部表并通过平台独立文件移动数据
内容六:数据库应用在java中连接oracle:JDBC与ODBC使用与连接 介绍一个数据库设计的实例
⑧ 如何查询Oracle性能监控
可以通过生成数据库性能报告查看数据库性能
数据库版本:oracle 9i
statspack
SQL> conn perfstat/perfstat
SQL> execute statspack.snap
SQL> @$ORACLE_HOME/rdbms/admin/spreport.sql
数据库版本:oracle 10g,11g
awr
SQL> execute dbms_workload_repository.create_snapshot;
SQL> @$ORACLE_HOME/rdbms/admin/awrrpt.sql