解决Oracle LogMiner获取数据字典文件需要修改UTL_FILE_DIR的问题

按照Oracle官方文档,在用logminer获取数据字典文件时,需要设置UTL_FILE_DIR参数,然而设置这个参数必须要重新启动数据库,在某些7×24的关键业务是做不到的,是否有其他的方法能够构造字典信息呢?答案是肯定的。

具体的步骤为:

1.数据库设置为归档

2.添加supplement log data

3. 将数据字典存储在redolog中,EXECUTE DBMS_LOGMNR_D.BUILD ( - 2 OPTIONS=>DBMS_LOGMNR_D.STORE_IN_REDO_LOGS);

4.查看数据字典对应的归档日志

SQL> SELECT NAME FROM V$ARCHIVED_LOG WHERE DICTIONARY_BEGIN='YES';  -- 查询开始

SQL> SELECT NAME FROM V$ARCHIVED_LOG WHERE DICTIONARY_END='YES'; -- 查询结束的归档日志

5.通过LogMiner,解析归档日志,将归档日志解析成sql语句

SQL> EXECUTE DBMS_LOGMNR.START_LOGMNR(OPTIONS => DBMS_LOGMNR.DICT_FROM_ONLINE_CATALOG);

6.查询v$logmnr_contents的sql_redo,将结果spool到某个文件中。

7.通过其他相同版本的测试数据库创建数据字典文件,调出其中的create_table语句,放入到你输出spool的文件中。

8.验证其中的数据,与过程生成的数据字典文件比较,重要的ID值都是一样的,测试后我们构造的数据字典文件可用。

最后鄙视一下Oracle,到11gR2了仍然需要设置这个参数,应该早就改成自己设置directory了。

你可能感兴趣的:(解决Oracle LogMiner获取数据字典文件需要修改UTL_FILE_DIR的问题)