存档

2016年10月 的存档

解决在phpmyadmin中执行sql语句出现的错误:Unknown storage engine ‘InnoDB’

2016年10月3日 没有评论

问题:phpmyadmin报错——Unknown storage engine ‘InnoDB’

解决方法:解决方法:
1.关闭MySQL数据库
   2.修改my.ini文件,把skip-innodb这行注释掉
   3.打开MySQL数据库
当然把innodb改成MyISAM也行

原因:没有开启MySQL InnoDB存储引擎。

关于innodb引擎的资料:
事务型数据库的首选引擎,支持ACID事务,支持行级锁定。InnoDB是为处理巨大数据量时的最大性能设计。InnoDB存储引擎完全与MySQL服务器整合,InnoDB存储引擎为在主内存中缓存数据和索引而维持它自己的缓冲池。InnoDB存储它的表&索引在一个表空间中,表空间可以包含数个文件(或原始磁盘分区)。这与MyISAM表不同,比如在MyISAM表中每个表被存在分离的文件中。InnoDB 表可以是任何尺寸,即使在文件尺寸被限制为2GB的操作系统上。InnoDB默认地被包含在MySQL二进制分发中。Windows Essentials installer使InnoDB成为Windows上MySQL的默认表。

  简介   InnoDB 给 MySQL 提供了具有事务(transaction)、回滚(rollback)和崩溃修复能力(crash recovery capabilities)、多版本并发控制(multi-versioned concurrency control)的事务安全(transaction-safe (ACID compliant))型表。InnoDB 提供了行级锁(locking on row level),提供与 Oracle 类似的不加锁读取(non-locking read in SELECTs)。InnoDB锁定在行级并且也在SELECT语句提供一个Oracle风格一致的非锁定读。这些特色增加了多用户部署和性能。没有在InnoDB中扩大锁定的需要,因为在InnoDB中行级锁定适合非常小的空间。InnoDB也支持FOREIGN KEY强制。在SQL查询中,你可以自由地将InnoDB类型的表与其它MySQL的表的类型混合起来,甚至在同一个查询中也可以混合。这些特性均提高了多用户并发操作的性能表现。在InnoDB表中不需要扩大锁定(lock escalation),因为 InnoDB 的行级锁定(row level locks)适宜非常小的空间。InnoDB 是 MySQL 上第一个提供外键约束(FOREIGN KEY constraints)的表引擎。   在技术上,InnoDB 是一套放在 MySQL 后台的完整数据库系统,InnoDB 在主内存中建立其专用的缓冲池用于高速缓冲数据和索引。

MySQL

InnoDB 把数据和索引存放在表空间里,可能包含多个文件,这与其它的不一样,举例来说,在 MyISAM 中,表被存放在单独的文件中。InnoDB 表的大小只受限于操作系统的文件大小,可也可以每个表使用各自独立的表空间,只需要启用选项 innodb_file_per_table。   在 MySQL 的源代码中,从 3.23.34a 开始包含 InnoDB 表引擎,并在 MySQL -Max 的二进制版本中激活。

分类: Linux, 解决方案 标签: ,

ora-01033:oracle initialization or shutdown in progress 解决方法

2016年10月1日 没有评论

今天研究Oracle遇到了这个问题ora-01033:oracle initialization or shutdown in progress,经过分析研究终于解决了,写下来纪念一下。我的库是oracle 9i,具体就是90的。
一、首先:问题的产生原因,出现这个错误是因为我将oracle\oradata\oradb下的一个文件误删除掉后出现的。
二、现象:SQL*Plus无法连接,显示以下错误:ORA-01033: ORACLE initialization or shutdown in progress ,Enterprise Manager Console中也是同样的错误。
三、分析:应该是Oracle在启动后,用户登录时是要将方案中原有配置信息装载进入,装载过程中遇到原有文件指定的位置上没有找到,所以就报出错误。
四、解决过程:
1、我在解决时由于着急使用,便用Database Configuration Assistant工具重新创建了一个新的库,临时解决急用的问题,同时也给后期解决ora-01033问题埋下了隐患。
2、在9i中是没有svrmgrl 命令的,要用sqlplus。
3、先在windows下运行cmd,进入DOS环境。
4、以DBA用户登录,具体命令是
sqlplus /NOLOG
SQL>connect sys/change_on_install as sysdba
提示:已成功

SQL>shutdown normal
提示:数据库已经关闭
已经卸载数据库
ORACLE 例程已经关闭

SQL>startup mount
提示:ORACLE例程已经启动
Total System Global Area 118255568 bytes
Fixed Size 282576 bytes
Variable Size 82886080 bytes
Database Buffers 33554432 bytes
Redo Buffers 532480 bytes
数据库装载完毕

SQL>alter database open;
提示:
第1 行出现错误:
ORA-01157: 无法标识/锁定数据文件19 – 请参阅DBWR 跟踪文件
ORA-01110: 数据文件19: ””C:\oracle\oradata\oradb\FYGL.ORA”
这个提示文件部分根据每个人不同情况有点差别。

继续输入
SQL>alter database datafile 19 offline drop;
提示:数据库已更改。

循环使用最后两步,直到alter database open;后不再提示错误,出现“数据库已更改”。

如果出现以下。就按这样就可以恢复

第 1 行出现错误:
ORA-01172: 线程 1 的恢复停止在块 208 (在文件 3 中)
ORA-01151: 如果需要, 请使用介质恢复以恢复块和还原备份

SQL> recover database;
完成介质恢复。
SQL> alter database open;
数据库已更改。
SQL> select status from v$instance;
STATUS
————
OPEN

然后接着输入即可
SQL>shutdown normal
提示:数据库已经关闭
已经卸载数据库
ORACLE 例程已经关闭

SQL>startup
提示:ORACLE例程已经启动
Total System Global Area 118255568 bytes
Fixed Size 282576 bytes
Variable Size 82886080 bytes
Database Buffers 33554432 bytes
Redo Buffers 532480 bytes
数据库装载完毕
就可以解决了。建议是如果可以,直接重新服务器。

5、最后说一下,第一条提到的隐患,因为创建了新的库,ORACLE_SID也就发生了变化,在用户登录的时候会有ORA- 12560错误,解决这个问题是将系统注册表中的HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOME0 \ORACLE_SID
键值修改成之前那个SID就可以了,用户也能就能正常登录了