除 Derby 以外,Oracle 和其他支持的数据库也可以执行警报持久性。不过,您必须进行一些更改才能使其正常工作。
如果打算使用 Oracle 持久保存警报,而不是使用 Derby,请确保阅读此主题。
修改 appserver/domains/domain1/jbi/config 下面的 eventmanagement.properties 文件。
将 DatabaseType 更改为 ORACLE。
将 AlertTablename 更改为 EMHOSTNAMEVistastccom8080。
必须执行此步骤,因为默认名称 EVENTMANAGEMENTHOSTNAMEistastccom8080 超过了 Oracle 对表名的限制(30 个字符)。
将 DBJndiName 更改为 OracleXPDB。
可以在管理控制台中创建该名称;步骤 2 中说明了这一点。
将 PersistenceEnbled 更改为 true。
通过使用 Enterprise Manager,在普通警报管理配置代理中设置 DatabaseType、DBJndiName 和 PersistenceEnabled 的值。
在启用持久性之前,可能已运行了数据库脚本。必须在文件中手动更改表名。
在 Sun Java System Application Server 管理控制台中创建 JDBC 连接池和资源。
手动创建警报持久性和日志功能所需的用户和表等。
对于 Derby,此操作是自动完成的。
appserver/jbi/lib 下面的 jbi_rt.jar 文件中打包了一些数据库脚本。但存在一些错误,因此,您需要手动更正这些脚本。
已修改了这些示例脚本以便用于 Oracle 10 GB 数据库;请参见Oracle 脚本示例。
以系统(管理员)用户身份依次运行 create_event_store_user.sql 和 create_event_store_schema.sql 脚本。
在此示例中进行的更正:
设置表空间数据文件的绝对路径(与数据库安装有关)
修改命令,以便与业务流程持久性相匹配
注释掉第二个数据文件
移动注释
修复表名引用,以便与上面在 eventmanagement.properties 中设置的用户模式和表名相匹配
修复列引用;即,将第二列的名称由 event_timestamp 更改为 timestamp
将数据类型由时间戳更改为十进制
修复序列引用
truncate_event_store_schema.sql
TRUNCATE TABLE eventdb_user.EMHostNameVistastccom8080;
create_event_store_schema.sql
create table eventdb_user.EMHostNameVistastccom8080( id NUMBER CONSTRAINT ID_PK PRIMARY KEY, timeStamp decimal, physicalHostName varchar(256), environmentName varchar(256), logicalHostName varchar(256), serverType varchar(256), serverName varchar(256), componentType varchar(256), componentProjectPathName varchar(1024), componentName varchar(256), eventType varchar(256), severity integer, operationalState int, messageCode varchar(256), messageDetail varchar(4000), observationalState int, deploymentName varchar(256)); ); -- INSERT statement need to use it to insure autoincrement functionality CREATE SEQUENCE eventdb_user.autoincrement_id; create index eventTime on eventdb_user.EMHostNameVistastccom8080(timeStamp);
create_event_store_user.sql
--Create a tablespace named EVENTDB_USER_DB. Change this value if a different name is desired. --Specify the name and the location of the file where the data related to the tablespace --created above will be stored. The location is by default the location determined by --the database server/instance on which this script is run --For example, for Windows c:\MyDatafiles\EVENTDB_USER_DB.dat, for Unix /dev/home1/EVENTDB_USER_DB.dat --Note that the name of the actual file need not be EVENTDB_USER_DB.dat --Specify the size constraints -- Window and Oracle 9i there is a limitation on file size, it is 2 GB. This by default creats 4GB, add more files if you need more than 4 GB. --- provide abosolute path if you preference is not default location 'C:\OracleDirectory\EVENTDB_USER_DB.dat' SIZE 2000M, CREATE TABLESPACE EM_EVENTSTORE_DB DATAFILE 'C:\oracle\product\10.2.0\oradata\orcl\EVENTDB_USER_DB.dat' SIZE 512M REUSE AUTOEXTEND ON NEXT 2048M MAXSIZE UNLIMITED; -- 'C:\oracle\product\10.2.0\oradata\orcl\EVENTDB_USER_DB1.dat' SIZE 512M REUSE AUTOEXTEND ON NEXT 2048M MAXSIZE UNLIMITED --- provide abosolute path if you preference is not defaultlocation 'C:\OracleDirectory\EVENTDB_USER_DB1.dat' SIZE 2000M -- when TABLESPACE is created with these options performance is degrading gradually as more and more records added to schema EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO --Create a new user EVENTDB_USER. Change the name if so desired. Password will be same as --the user name by default. This username and password will be used to create the --connection pool on the application server. Also specify the tablespace and the quota on --the tablespace the user has. Note that if you used a different tablespace name above, --you will have to specify that tablespace name here. CREATE USER EVENTDB_USER IDENTIFIED BY EVENTDB_USER DEFAULT TABLESPACE EM_EVENTSTORE_DB QUOTA UNLIMITED ON EM_EVENTSTORE_DB TEMPORARY TABLESPACE temp QUOTA 0M ON system; --Modify the user name if the default user name was changed GRANT CREATE session to EVENTDB_USER; GRANT CREATE table to EVENTDB_USER; GRANT CREATE procedure to EVENTDB_USER;
drop_event_store_schema.sql
DROP TABLE eventdb_user.EMHostNameVistastccom8080; drop sequence eventdb_user.autoincrement_id;
drop_event_store_user.sql
--Drop the user that was created earlier. Note that if you chose a different name for the --user while creating the user, you will have to specify that name here. DROP USER EVENTDB_USER CASCADE; --Drop the tablespace that was created earlier. Note that if you chose a different name for --the tablespace while creating the user, you will have to specify that name here. DROP TABLESPACE EM_EVENTSTORE_DB INCLUDING CONTENTS AND DATAFILES CASCADE CONSTRAINTS; --Manually delete the datafiles that were created. If you used the defaults while creating --the datafiles, the names would be EVENTDB_USER_DB1.dat'and 'EVENTDB_USER_DB2.dat'