oracle 介质恢复简介
如果数据文件损坏,会遇到1157 和 1110的错误。这时候需要介质恢复数据库。
恢复数据库需要有相应的备份和备份以来产生的所有的归档日志文件和联机日志文件。
如果在mount到open的时候发现普通的数据文件损坏,数据库会停留在mount状态下,这时候可以执行alter database datafile x offline drop 和alter database open 命令使数据库处于open状态。然后copy备份的数据文件,在执行recover datafile x(如果是人工干预的备份)。 或用rman执行resotre datafile x;recover datafile x;最后不要忘了把数据文件联机alter dabase datafile x online;当然,你不可能使用这种方法来恢复系统数据文件。
如果在open状态下某个普通的数据文件丢失,也可以使用上述方法。不过如果在open状态下system表空间损坏,数据库就崩掉,这时候可以重启数据库在mount下恢复。 也就是说mount状态下是可以恢复普通的表空间也可以恢复system表空间的。
还有,有时候你丢失了多个数据文件,但sqlplus只会提示第一个损坏数据库文件。当你把第一个数据文件恢复完以后,他会提示第二个数据文件需要恢复。为避免这种麻烦,我们可以查询select * from v$recover_file 来查看几个数据文件需要恢复,或者到告警日志文件中查看详细的信息。
相关文档:
有一些没有使用数据库中间件的软件可能会碰到在不同的应用场景需要用不同的数据库,这样可能就需要将数据库代码做移植,我这里整理了一些从oracle到mysql的移植过程中的注意事项:
1。sequence生成
可以用类似的东西来做,如下:
create table myseq ( &nb ......
/**
* 更新记录,原子操作,不会commit
* @param sql_id
* @param condition
* @return
* @throws SQLException
*/
&nbs ......
trunc()函数有两种用法 1:后面跟日期 2: 后面跟数字
A: SELECT a.times,to_date(a.times,'yyyymmdd'),trunc(to_date(a.times,'yyyymmdd'),'month') from dmf_loan_limit a
显示的结果为:
1 20080131 2008-1-31 2008-1-1
2 20080131 &nb ......
束,索引
1、查找表的所有索引(包括索引名,类型,构成列):
select t.*,i.index_type from user_ind_columns t,user_indexes i where t.index_name = i.index_name and t.table_name = i.table_name and t.table_name = 要查询的表
2、查找表的主键(包括名称,构成列):
select cu.* from user_cons_columns cu ......
首先搞清下几个概念:
ORACLE中,约束分deferred 跟 immediate 2种:
deferred:如果 Oracle 在事务提交(commit)时才对约束执行检查,则称此约束是延迟的(deferred)。如果数据违反了延迟约束,提交操作将导致事务被回滚(undo)。
immediate:如果约束是即时的(immediate)(非延迟的),则此约束将在 ......