oracle tab 被删除,tab$被删除 – 提供7*24专业数据库(Oracle,SQL Server,MySQL等)恢复和Oracle技术服务@Tel:+86 13429648788 - 惜分...

以前在恢复过程中遇到过ORA-00600: internal error code, arguments: [16703], [1403], [28]错误(10g数据库遭遇ORA-600 16703)以为是因为10g版本的tab$记录被删除的原因导致报错和最常见的ORA-00600: internal error code, arguments: [16703], [1403], [20]不完全一致(警告:互联网中有oracle介质被注入恶意程序导致—ORA-600 16703),最近又遇到一个ORA-600 16703 1403 28错误的case,而且数据库版本是11.2.0.4 for aix平台,进一步说明该问题不是由于10g和11g的tab$被删除的区别导致,更多可能是由于操作系统不一样,数据库启动基表访问顺序不一致导致,特此进行说明.

数据库启动成功后报错

Wed Apr 01 22:36:19 2020

Completed: ALTER DATABASE OPEN /* db agent *//* {2:54387:2} */

Wed Apr 01 22:36:19 2020

Starting background process CJQ0

Wed Apr 01 22:36:19 2020

CJQ0 started with pid=53, OS id=7078224

Wed Apr 01 22:36:21 2020

Errors in file /u01/app/oracle/diag/rdbms/orcl/orcl2/trace/orcl2_ora_7668220.trc (incident=40337):

ORA-00600: internal error code, arguments: [kzrini:!uprofile], [], [], [], [], [], [], [], [], [], [], []

Incident details in: /u01/app/oracle/diag/rdbms/orcl/orcl2/incident/incdir_40337/orcl2_ora_7668220_i40337.trc

Wed Apr 01 22:36:21 2020

Errors in file /u01/app/oracle/diag/rdbms/orcl/orcl2/trace/orcl2_ora_6881718.trc (incident=40369):

ORA-00600: internal error code, arguments: [kzrini:!uprofile], [], [], [], [], [], [], [], [], [], [], []

Incident details in: /u01/app/oracle/diag/rdbms/orcl/orcl2/incident/incdir_40369/orcl2_ora_6881718_i40369.trc

Setting Resource Manager plan SCHEDULER[0x32DB]:DEFAULT_MAINTENANCE_PLAN via scheduler window

Setting Resource Manager plan DEFAULT_MAINTENANCE_PLAN via parameter

Wed Apr 01 22:51:16 2020

Errors in file /u01/app/oracle/diag/rdbms/orcl/orcl2/trace/orcl2_smon_7078802.trc:

ORA-00604: error occurred at recursive SQL level 1

ORA-00957: duplicate column name

Errors in file /u01/app/oracle/diag/rdbms/orcl/orcl2/trace/orcl2_smon_7078802.trc:

ORA-00604: error occurred at recursive SQL level 1

ORA-00957: duplicate column name

Errors in file /u01/app/oracle/diag/rdbms/orcl/orcl2/trace/orcl2_smon_7078802.trc:

ORA-00604: error occurred at recursive SQL level 1

ORA-00957: duplicate column name

Errors in file /u01/app/oracle/diag/rdbms/orcl/orcl2/trace/orcl2_m000_4850312.trc (incident=48045):

ORA-00600: internal error code, arguments: [kdfReserveSingle_1], [0], [65280], [], [], [], [], [], [], [], [], []

Incident details in: /u01/app/oracle/diag/rdbms/orcl/orcl2/incident/incdir_48045/orcl2_m000_4850312_i48045.trc

Thu Apr 02 00:59:35 2020

Errors in file /u01/app/oracle/diag/rdbms/orcl/orcl2/trace/orcl2_smon_7078802.trc:

ORA-00604: error occurred at recursive SQL level 1

ORA-00957: duplicate column name

Thu Apr 02 00:59:36 2020

DDE: Problem Key 'ORA 600 [kzrini:!uprofile]' was completely flood controlled (0x6)

Further messages for this problem key will be suppressed for up to 10 minutes

Thu Apr 02 00:59:37 2020

Use ADRCI or Support Workbench to package the incident.

See Note 411.1 at My Oracle Support for error and packaging details.

Errors in file /u01/app/oracle/diag/rdbms/orcl/orcl2/trace/orcl2_m000_4850312.trc (incident=48046):

ORA-00600: internal error code, arguments: [kewrose_1], [600],

[ORA-00600: internal error code, arguments: [kdfReserveSingle_1], [0], [65280], [], [], [], []

数据库再次重启报错

Completed: ALTER DATABASE MOUNT /* db agent *//* {1:25340:2} */

ALTER DATABASE OPEN /* db agent *//* {1:25340:2} */

This instance was first to open

Picked broadcast on commit scheme to generate SCNs

Thu Apr 02 02:17:59 2020

Thread 2 opened at log sequence 13485

Current log# 3 seq# 13485 mem# 0: +DATA/orcl/onlinelog/group_3.265.1003137665

Current log# 3 seq# 13485 mem# 1: +FLASH/orcl/onlinelog/group_3.259.1003137677

Successful open of redo thread 2

MTTR advisory is disabled because FAST_START_MTTR_TARGET is not set

Thu Apr 02 02:17:59 2020

SMON: enabling cache recovery

Instance recovery: looking for dead threads

Instance recovery: lock domain invalid but no dead threads

Errors in file /u01/app/oracle/diag/rdbms/orcl/orcl2/trace/orcl2_ora_7799020.trc (incident=48395):

ORA-00600: internal error code, arguments: [16703], [1403], [28], [], [], [], [], [], [], [], [], []

Incident details in: /u01/app/oracle/diag/rdbms/orcl/orcl2/incident/incdir_48395/orcl2_ora_7799020_i48395.trc

Thu Apr 02 02:18:01 2020

Thu Apr 02 02:18:01 2020

Use ADRCI or Support Workbench to package the incident.

See Note 411.1 at My Oracle Support for error and packaging details.

Errors in file /u01/app/oracle/diag/rdbms/orcl/orcl2/trace/orcl2_ora_7799020.trc:

ORA-00704: bootstrap process failure

ORA-00704: bootstrap process failure

ORA-00600: internal error code, arguments: [16703], [1403], [28], [], [], [], [], [], [], [], [], []

Errors in file /u01/app/oracle/diag/rdbms/orcl/orcl2/trace/orcl2_ora_7799020.trc:

ORA-00704: bootstrap process failure

ORA-00704: bootstrap process failure

ORA-00600: internal error code, arguments: [16703], [1403], [28], [], [], [], [], [], [], [], [], []

Error 704 happened during db open, shutting down database

USER (ospid: 7799020): terminating the instance due to error 704

Instance terminated by USER, pid = 7799020

ORA-1092 signalled during: ALTER DATABASE OPEN /* db agent *//* {1:25340:2} */...

对于此类问题,通过分析,确定也是由于DBMS_SUPPORT_DBMONITORP恶意脚本导致tab$记录被删除,导致数据库启动异常,处理方法基本上就是对tab$进行恢复,然后open数据库.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用Java编写一个程序,通过JDBC连接Oracle数据库,读取其中的表和数据,然后将其转换为MySQL语法,并通过JDBC连接MySQL数据库,将数据写入其中。 下面是一个简单的代码示例: ```java import java.sql.*; public class OracleToMySQL { public static void main(String[] args) { String oracleUrl = "jdbc:oracle:thin:@localhost:1521:ORCL"; String oracleUser = "username"; String oraclePassword = "password"; String mysqlUrl = "jdbc:mysql://localhost:3306/mysql"; String mysqlUser = "root"; String mysqlPassword = "password"; try { // Connect to Oracle database Connection oracleConnection = DriverManager.getConnection(oracleUrl, oracleUser, oraclePassword); Statement oracleStatement = oracleConnection.createStatement(); // Connect to MySQL database Connection mysqlConnection = DriverManager.getConnection(mysqlUrl, mysqlUser, mysqlPassword); Statement mysqlStatement = mysqlConnection.createStatement(); // Read tables from Oracle ResultSet tables = oracleStatement.executeQuery("SELECT table_name FROM user_tables"); while (tables.next()) { String tableName = tables.getString(1); // Read columns from Oracle ResultSet columns = oracleStatement.executeQuery("SELECT column_name, data_type FROM user_tab_columns WHERE table_name = '" + tableName + "'"); StringBuilder createTableSql = new StringBuilder("CREATE TABLE " + tableName + " ("); while (columns.next()) { String columnName = columns.getString(1); String dataType = columns.getString(2); createTableSql.append(columnName + " " + dataType + ","); } createTableSql.setLength(createTableSql.length() - 1); createTableSql.append(")"); mysqlStatement.execute(createTableSql.toString()); // Read data from Oracle and insert into MySQL ResultSet data = oracleStatement.executeQuery("SELECT * FROM " + tableName); while (data.next()) { StringBuilder insertSql = new StringBuilder("INSERT INTO " + tableName + " VALUES ("); ResultSetMetaData metaData = data.getMetaData(); for (int i = 1; i <= metaData.getColumnCount(); i++) { String value = data.getString(i); insertSql.append("'" + value + "',"); } insertSql.setLength(insertSql.length() - 1); insertSql.append(")"); mysqlStatement.execute(insertSql.toString()); } } // Close connections mysqlStatement.close(); mysqlConnection.close(); oracleStatement.close(); oracleConnection.close(); } catch (SQLException e) { e.printStackTrace(); } } } ``` 需要注意的是,该代码仅供参考,实际应用中需要考虑更多的细节和异常情况。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值