OEM是采用直观而且方便的图像化界面来控制和管理ORACLE数据库的工具集,它包含大量对DBA有用的工具。在oracle中,数据库管理和操作都可以使用OEM来完成,如创建用户和角色,权限分配,创建方案对象,进行存储管理等。
OEM不仅能够管理本地数据库实例,也可以管理网络和RAC环境下数据库实例。无论是管理本地还是网络上的数据库,OEM都通过HTTP/HTTPS访问数据库,它的架构如图下图:
Oracle(OEM与常见故障处理)
1)Management repository:存储要监控的数据库的管理数据及状态信息。
2)OMS管理服务:监控和管理安装了management agent的数据库,并将获得的管理信息存入management repository。
3)Oracle HTTP Server:内置的apache服务器。
4)OC4J/J2EE:符合J2EE标准的应用服务器。
5)Oracle web cache:用于快速访问web。
6)Management agent:安装在被管理的数据服务器上,用于监控数据库的运行状态,资源使用,信息变更等,将信息转送到OMS,OMS将这些信息存入repository。
OEM有两个不同的版本,分别是:database control 和grid control。Database control通常用于监控和管理本地单个数据库或者RAC数据库。Grid control则用于管理大规模、复杂的系统环境,它可以管理包括主机、数据库、web服务器、监听器、服务等在内的整个基础设施。
对于database control,通常不用配置任何东西,当使用DBCA或者oracle universal installer创建完数据库后,database control就可以使用了。当然,如果是通过create database语句手工创建的数据库,那么需要通过EMCA(enterprise manager configuration assistant)来配置database control。Grid control则需要和数据库分开安装,安装过程和配置要复杂一些。
Enterprise Manager Database Control 提供了一个基于 Web 的界面,您可以使用这个界面来管理 Oracle 实例和数据库。
当通过oracle universal install安装oracle数据库时,如果选择了创建数据库(或者直接通过DBCA创建数据库),会默认安装OEM database control。数据库创建完毕之后会显示OEM的相关信息,database control URL即为OEM的访问地址。
如果通过create database语句手动创建数据库,就需要通过EMCA来配置OEM。EMCA可以设置OEM相关的各个方面,如repository存储区的重建和删除,配置文件的创建和删除等。下面是EMCA常用命令。
emca -repos create
emca -repos recreate
emca -repos drop
emca -config dbcontrol db
emca -deconfig dbcontrol db
emca -reconfig ports
emca -reconfig ports -dbcontrol_http_port 1160
emca -reconfig ports -agent_port 3940
emctl start dbconsole
emctl stop dbconsole
emctl status dbconsole
emca -repos create
emca -config dbcontrol db
emctl start dbconsole
1.清除原有em
emca -deconfig dbcontrol db -repos drop
emca -deconfig all db -repos drop
若上述两个指令删除失败,则只能暴力删除
drop user SYSMAN cascade;
drop user MGMT_VIEW cascade;
drop role MGMT_USER;
drop public synonym MGMT_TARGET_BLACKOUTS;
drop public synonym SETEMVIEWUSERCONTEXT;
通常暴力删除EM以后,会报错。
2.配置em
emca -repos recreate
emca -config dbcontrol db(单节点)
emca -config dbcontrol db -cluster(rac)
[oracle@nxxxxc samples]$ emca -config dbcontrol db
STARTED EMCA at May 10, 2019 4:54:54 PM
EM Configuration Assistant, Version 11.2.0.3.0 Production
Copyright (c) 2003, 2011, Oracle. All rights reserved.
Enter the following information:
Database SID: nxx # 数据库 SID
Listener port number: 1521 # 监听程序端口号
Listener ORACLE_HOME [ /opt/oracle/app/product/11.2.0/dbhome_1 ]:
Password for SYS user: # SYS 用户的口令
Password for DBSNMP user: # DBSNMP 用户的口令
Password for SYSMAN user: # SYSMAN 用户的口令
Email address for notifications (optional): # SYSMAN 用户的口令: 通知的电子邮件地址 (可选):
Outgoing Mail (SMTP) server for notifications (optional): # 通知的发件 (SMTP) 服务器 (可选)
-----------------------------------------------------------------
You have specified the following settings # 已指定以下设置
Database ORACLE_HOME ................ /opt/oracle/app/product/11.2.0/dbhome_1
Local hostname ................ nxxxxc
Listener ORACLE_HOME ................ /opt/oracle/app/product/11.2.0/dbhome_1
Listener port number ................ 1521
Database SID ................ nxx
Email address for notifications ...............
Outgoing Mail (SMTP) server for notifications ...............
-----------------------------------------------------------------
Do you wish to continue? [yes(Y)/no(N)]: y
May 10, 2019 4:55:18 PM oracle.sysman.emcp.EMConfig perform
INFO: This operation is being logged at /opt/oracle/app/cfgtoollogs/emca/nxxxxc/emca_2019_05_10_16_54_54.log.
May 10, 2019 4:55:19 PM oracle.sysman.emcp.EMReposConfig uploadConfigDataToRepository
INFO: Uploading configuration data to EM repository (this may take a while) ...
May 10, 2019 4:56:28 PM oracle.sysman.emcp.EMReposConfig invoke
INFO: Uploaded configuration data successfully
May 10, 2019 4:56:28 PM oracle.sysman.emcp.ParamsManager getLocalListener
WARNING: Error retrieving listener for nsfcdc
May 10, 2019 4:56:31 PM oracle.sysman.emcp.util.DBControlUtil secureDBConsole
INFO: Securing Database Control (this may take a while) ...
May 10, 2019 4:56:50 PM oracle.sysman.emcp.util.DBControlUtil secureDBConsole
INFO: Database Control secured successfully.
May 10, 2019 4:56:50 PM oracle.sysman.emcp.util.DBControlUtil startOMS
INFO: Starting Database Control (this may take a while) ...
May 10, 2019 4:57:22 PM oracle.sysman.emcp.EMDBPostConfig performConfiguration
INFO: Database Control started successfully
May 10, 2019 4:57:22 PM oracle.sysman.emcp.EMDBPostConfig performConfiguration
INFO: >>>>>>>>>>> The Database Control URL is https://nsfcdc:1158/em <<<<<<<<<<<
May 10, 2019 4:57:33 PM oracle.sysman.emcp.EMDBPostConfig invoke
WARNING:
************************ WARNING ************************
Management Repository has been placed in secure mode wherein Enterprise Manager data will be encrypted. The encryption key has been placed in the file: /opt/oracle/app/product/11.2.0/dbhome_1/nxxxxc_nxxxxc/sysman/config/emkey.ora. Ensure this file is backed up as the encrypted data will become unusable if this file is lost.
***********************************************************
Enterprise Manager configuration completed successfully # 已成功完成 Enterprise Manager 的配置
FINISHED EMCA at May 10, 2019 4:57:33 PM
3.启动 dbconsole 进程
[oracle@nxxxxc ~]$ emctl start dbconsole
Oracle Enterprise Manager 11g Database Control Release 11.2.0.4.0
Copyright (c) 1996, 2013 Oracle Corporation. All rights reserved.
https://nxxxxc:1158/em/console/aboutApplication
- An instance of Oracle Enterprise Manager 11g Database Control is already running.
4.查看 dbconsole 进程的状态
执行emctl status dbconsole
命令,可以得到OEM是否运行、OEM的访问地址和日志存放位置。执行结果如下
[oracle@nxxxxc ~]$ emctl status dbconsole
Oracle Enterprise Manager 11g Database Control Release 11.2.0.4.0
Copyright (c) 1996, 2013 Oracle Corporation. All rights reserved.
https://nxxxxc:1158/em/console/aboutApplication
Oracle Enterprise Manager 11g is running.
------------------------------------------------------------------
Logs are generated in directory /opt/oracle/app/product/11.2.0/dbhome_1/nxxxxc_nxxxxc/sysman/log
[oracle@nxxxxc ~]$ emca -repos recreate
# 报错
Some of the possible reasons may be:
1) Listener port 1521 provided is incorrect. Provide the correct port.
2) Listener is not up. Start the Listener.
3) Database service nsfcdc.oracle.docker is not registered with listener. Register the database service.
4) Listener is up on physical host and ORACLE_HOSTNAME environment variable is set to virtual host. Unset ORACLE_HOSTNAME environment variable.
5) Listener is up on virtual host. Set environment variable ORACLE_HOSTNAME=.
6) /etc/hosts does not have correct entry for hostname.
解决方法:
1.检查一下$ORACLE_HOME/network/admin/listener.ora里面的端口号是否有正确的设置成1521
2.检查一下 监听器的状态:lsnrctl status 看一下是否正常启动
# 查看监听
[oracle@nxxxxc dbs]$ lsnrctl stat
LSNRCTL for Linux: Version 11.2.0.4.0 - Production on 10-MAY-2019 15:05:24
Copyright (c) 1991, 2013, Oracle. All rights reserved.
Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for Linux: Version 11.2.0.4.0 - Production
Start Date 05-MAY-2019 13:56:05
Uptime 5 days 1 hr. 9 min. 18 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Log File /opt/oracle/app/diag/tnslsnr/nxxxxc/listener/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=nsfcdc)(PORT=1521)))
Services Summary...
Service "nxxxxc.oracle.docker" has 1 instance(s).
Instance "nxxxxc", status READY, has 1 handler(s) for this service...
Service "nxxxxcXDB.oracle.docker" has 1 instance(s).
Instance "nxxxxc", status READY, has 1 handler(s) for this service...
The command completed successfully
3.如果监听器中没有注册orcl这个实例的服务的话需要注册一下。
[oracle@nxxxxc dbs]$ sqlplus / as sysdba
SQL> alter system register
5.就是说监听器只启动在虚拟主机上,这个要查看你的虚拟主机的ORACLE_HOSTNAME,很有可能是手残一不小心去更改了主机名后导致的错误。
export ORACLE_HOSTNAME= 服务名
6.如果你的服务器是自动获取IP地址的,而你在/etc/hosts下设置的ip地址又是设置成某一个值,一旦IP地址变化了以后就会报这个错误。
步骤:
7.如果以上方法都没有用的话,如果报错:用户名密码错误,请先创建口令文件:
orapwd file='/opt/oracle/app/product/11.2.0/dbhome_1/dbs/orapwnxx' password=oracle entries=5 force=y;
说明:
默认密码:
DBCA提供了图形化创建OEM的方式,首先启动DBCA。
这样,采用OEM database control管理这个数据库就配置完成,这种方式十分简单,全部通过DBCA可视化完成。
安装好ORACLE后,最后一个窗口会提示登录OEM的地址
(如果忘记了,也没有关系;可以到$ORACLE_HOME/11g/install/ 中查看portlist.ini 文件中的HTTP端口,或者看此目录中的readme.txt文件)
登录地址格式为: https://hostname:1158/em (10g 11g 的默认端口是1158)
步骤:
1.以oracle用户登录
2.开启监听:lsnrctl start
3.如果页面还是无法显示,则开启OEM服务:emctl start dbconsole
4.登录OEM
监听和OEM服务都开启,但是https://nxxxxc:1158/em登录不了,显示拒绝访问的解决办法:
用IP地址登录:https://192.xxx.x.162:1158/em
原因是:nxxxxc可能存在重名,但是IP地址是唯一的,所以登录不上可能是网络原因。
OEM提供了非常强大的监控和管理功能,下面介绍几种常见操作。
1.使用OEM启动和关闭数据库
首先确定监听已经运行
[oracle@nxxxxc ~]$ lsnrctl status
LSNRCTL for Linux: Version 11.2.0.4.0 - Production on 13-MAY-2019 11:12:00
Copyright (c) 1991, 2013, Oracle. All rights reserved.
Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for Linux: Version 11.2.0.4.0 - Production
Start Date 10-MAY-2019 15:35:31
Uptime 2 days 19 hr. 36 min. 28 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Log File /opt/oracle/app/diag/tnslsnr/nxxxxc/listener/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=nsfcdc)(PORT=1521)))
Services Summary...
Service "nxxxxc.oracle.docker" has 1 instance(s).
Instance "nxxxxc", status READY, has 1 handler(s) for this service...
Service "nxxxxcXDB.oracle.docker" has 1 instance(s).
Instance "nxxxxc", status READY, has 1 handler(s) for this service...
The command completed successfully
2.查看EM状态
[oracle@nxxxxc ~]$ emctl status dbconsole
Oracle Enterprise Manager 11g Database Control Release 11.2.0.4.0
Copyright (c) 1996, 2013 Oracle Corporation. All rights reserved.
https://nxxxxc:1158/em/console/aboutApplication
Oracle Enterprise Manager 11g is running.
------------------------------------------------------------------
Logs are generated in directory /opt/oracle/app/product/11.2.0/dbhome_1/nxxxxc_nxxxxc/sysman/log
3.访问EM的URL,单击“启动”按钮
4.进入主界面,单击“启动”,进入下面的界面,填写好了之后单击右上角的“确定”。
主目录部分呈现了数据库实例的整体状态,它通过图形的形式呈现,而更具体的指标和内容可以单击相应的内容获得。例如:要获得CPU具体情况,可以单击CPU图下面的带下划线的数据。其他情况类似,如下图所示:
单机监听程序:
性能部分主要提供了主机监控、用户连接监控及i/o性能,还有其他相关的连接选项用于辅助判断。
可用性部分主要针对备份和恢复的设置和管理,下面将使用OEM进行备份。
进入备份设置页面:
填写主机身份证明,用户名oracle,磁盘的备份采用默认,并行度为Q,最后单击“测试磁盘备份”。如果成功则设置完毕,否则根据提示重新填写。
单击“备份集”标签,填写备份片大小,压缩算法,单击“确定”完成设置。
单击“策略”标签,可以对备份策略、保留策略及其他策略进行设置,此处采用默认设置
设置完毕后,点击“确定”
备份设置完毕后,需要进行调度备份设置
填写正确的身份证明,单击“调度定制备份”
设置调度频率,选择“一次(立即)”,单击下一步
编辑脚本
提交作业
可以查看作业
调度备份成功后,可以“管理当前备份”
服务器包括存储、数据库配置、调度、统计、资源、安全、查询优化及更改数据管理功能
该界面以列表形式呈现了表空间的一些关键指标,如已分配大小、已用空间、是否自动扩展、空闲的已分配空间等
创建用户首先要创建表空间
添加数据文件
单击“确定”后,表空间创建完毕
点击“角色”,为用户分配角色,单击“编辑列表”
点击“确定”,创建用户
方案部分主要包括对数据库对象、程序、物化视图、字变更管理、用户自定义类型、XML数据库、工作区管理器及文本管理器的管理
使用最多的是“表”管理,下面为TEST用户新建一张表
有一个报错信息,是因为没指定BIRTH列的属性和大小
查看结果
数据移动包括移动行数据、移动数据文件、流管理及高级复制功能等。
下面利用移动行数据的导出功能,导出TEST方案
角色错误的解决办法,不能以sysdba的角色登录,所以可以更换为system用户登录操作
重新导出
导出文件位置是data_dump_dir目录所在位置
查看详细信息
到所在目录下查看
[oracle@nxxxxc ~]$ cd /opt/oracle/app/admin/nxxxxc/dpdump/
[oracle@nxxxxc dpdump]$ ll
total 12
-rw-r-----. 1 oracle oinstall 116 Oct 19 2018 dp.log
-rw-r-----. 1 oracle oinstall 4096 May 14 09:31 EXPDAT01.DMP
-rw-r--r--. 1 oracle oinstall 191 May 14 09:33 EXPDAT.LOG
软件和支持部分提供了丰富的软件管理内容,包括软件的配置管理、补丁管理、real application testing和部署过程管理器。
虽然OEM是图形化的,看起来比手敲命令要简单的多,但是在实际生产环境中,EM使用的并不多。因为EM 消耗服务器性能,一旦出现资源紧张,EM是第一个启动不来的,因此备份放在上面并不可靠。手敲命令熟练了,还是命令更方便。