- 浏览: 81547 次
- 性别:
- 来自: 上海
-
文章分类
最新评论
-
li445970924:
我每次做项目是就只用了一个Dao 用的Spring框架的D ...
DAO的一个讨论问题 -
iKing:
引用form提交的数据校验应该是放在action中进行校验的
...
DAO的一个讨论问题 -
arafat:
carrot 写道最近的项目设计中,淡化dao层设计,dao层 ...
DAO的一个讨论问题 -
lzg3267373:
iKing 写道<div class="quo ...
DAO的一个讨论问题 -
iKing:
<div class="quote_title ...
DAO的一个讨论问题
3 XX网Oracle数据库SYSTEM表空间文件坏块的解决办法
故障现象:
NetBackup备份出错,日志如下:
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03009: failure of backup command on ch01 channel at 06/15/2005 02:28:44
ORA-19566: 超出损坏块限制 0 (文件 /u01/app/oradata/unicom/system01.dbf)
故障分析:
由于事前发生过别的表空间(cookdbs:/u01/app/oradata/unicom/cokdbs.dbf)也有坏块的情况,根据李智他们的建议,使用迁移数据后删除表空间的办法解决(仅适用于普通表空间)。
这是查询该表空间上的表和索引对象的一个脚本:
GXdb% more query.sql
conn /as sysdba
col owner for a25
col segment_name for a40
spool table.log
select distinct OWNER,SEGMENT_NAME from dba_extents
where TABLESPACE_NAME=’COOKDB’
and SEGMENT_TYPE=’TABLE’;
spool off
spool index.log
select distinct OWNER,SEGMENT_NAME from dba_extents
where TABLESPACE_NAME=’COOKDB’
and SEGMENT_TYPE=’INDEX’;
spool off
exit
查询完毕后,使用一个迁移的脚本迁移到新的表空间:
GXdb% more move.sh
#!/bin/ksh
sqlplus /nolog @query.sql
NEWTBS="cookdbs1"
echo "conn /as sysdba" > move.sql
for TNAME in `cat table.log | awk ’
/^COOKDB/ {print $2}
’`
do
echo "alter table cookdb.$TNAME move tablespace $NEWTBS;" >>move.sql
done
for INAME in `cat index.log | awk ’
/^COOKDB/ {print $2}
’`
do
echo "alter INDEX cookdb.$INAME REBUILD TABLESPACE $NEWTBS;" >>move.sql
done
echo "exit" >>move.sql
sqlplus /nolog @move.sql
本次经过检查,发现包括有System在内的四个表空间的四个数据文件有坏块。为了能使用NetBackup备份,对NetBackup脚本做以下修改(对相应的数据文件设置maxcorrupt):
run {
allocate channel ch00 type ’sbt_tape’;
set maxcorrupt for datafile 1,27,28,44 to 10;
backup 。。。。。。
release channel ch00;
}
如果有归档日志没有丢失,都备份过,可以使用rman的blockrecover来修复文件的坏块,例如:
run {
allocate channel ch00 type ’sbt_tape’;
blockrecover datafile 27 block 302089,302090,332823,332824,332825,332826;
blockrecover datafile 28 block 340846,340847,340848,340849;
blockrecover datafile 44 block 380381,380382,380383,380384,380405,380406,380407,380408;
blockrecover datafile 1 block 1703064,1703065,1703066,1703067,1703088,1703089,1703090,1703091;
release channel ch00;
}
但是中间由于备份失败,本地维护删除过归档日志。此方法不适用。
本次由于有SYSTEM表空间,不同于普通用户表空间,它有自己的特殊性。所以有些问题的解决方法也不尽相同。经多方探讨协商(Oracle India engineer、项目经理、本地维护、开发部门和系统工程部经理),总结了以下处理办法:
解决SYSTEM表空间文件坏块的方法是导出全库数据,删除数据库,重建数据库,导入全库数据。具体的操纵步骤,经过讨论,见如下:主要是考虑到优化可以在线进行,也需要在线进行,还考虑到优化的万一出错性,既便出错至少还可以恢复到原始状态,如果优化没有成功,再做导出导入也不能恢复到初始状态。所以就先做导出导入工作再做优化处理。步骤是:
1. 导出整个数据库(数据库在线),参考命令:exp system/manager
file=/oraclebak/unicomdbfull.dmp full=Y log=/oraclebak/unicomfull.log
2. 备份配置文件 cp $ORACLE_HOME/dbs/* /Oraclebak,记录数据库名及实例名,参考字典视图V$DATABASE,V$INSTANCE
3. 删除数据库DBCA(/u02/app/oracle/product/9.2.0.1/bin/dbca)图形化配置工具。注意:建议不要删除数据文件、重做日志文件和控制文件以及归档日志文件,处理方法是:一)就数据文件、重做日志文件和控制文件分别改名为xxx.bak.xxx文件,例如mv datafile001.dbf datafile001.bak.dbf ;二)就归档日志文件,只改名归档日志文件所在的目录名即可,例如mv archivedir archivedirbak。要参考的数据字典视图有V$DATAFILE、V$LOGFILE、V$CONTROLFILE和archive log list 参数
4. 重建数据库DBCA(/u02/app/oracle/product/9.2.0.1/bin/dbca)图形化配置工具,
5. 导入整个数据库,imp system/unicom@unicom full=y ignore=y file=xxx.dmp log=yyy.log
6. 启动数据库,严格测试。
dbv file= /u02/app/oracle/oradata/unicom/system01.dbf blocksize=8192检查还有没有坏块。
7. 使用3.2SQL脚本检查表空间情况.
4 一个使用Oracle归档日志恢复数据库的案例
案例环境:XX网Oracle 816数据库。
需求描述:
备份主机(装有oracle)上备份了7月13日的数据,但是主数据库服务器当前日期是7月15日。为了把备份主机上的库跟主数据库服务器同步,使用归档日志把7月13日的库前滚到7月15日。
处理步骤:
a) 备份备份主机上的控制文件,然后把主用数据库的最新控制文件备份并拷贝到备份主机相应目录
备份控制文件的方法:
sqlplus /nolog<<EOF
connect internal
alter database backup controlfile to ’${BACKUP_DIR}/controlfile.bkp’;
alter database backup controlfile to trace;
EOF
b) 拷贝主库的归档日志到备份数据库的归档日志目录(这个前滚操作需要从13号到15号的归档日志完整,若备份数据库的归档日志目录不知道,可以从参数文件中看
c) 启动数据库到mount状态,使用recover database前滚数据库
SQL> startup restrict mount pfile="${ORACLE_BASE}/admin/sdh21/pfile/init${service_names}.ora"
SQL> recover database using backup controlfile:
选择AUTO模式
d) 如果到了最后一个日志它还需要前滚,此时可以在主库上把当前redolog切换,然后把产生的归档继续拷贝到备份主机,继续前滚。
e) 前滚完成之后,它可能还继续要求下一个归档日志,此时可以CANCEL
f) 使用reselogs选项打开数据库
SQL> alter database open resetlogs;
注意:如果打开时报错可能是还需要把日志继续前滚,可重复使用recover database命令
5 Oracle 补丁p3948480_9206_SOLARIS64.zip的安装步骤
升级说明:
是从Oracle 9.2.0.1.0升级到9.2.0.6.0,解决一系列bug问题。
安装步骤:
解压文件包
%unzip p3948480_9206_SOLARIS64.zip
%cd Disk1
停掉数据库
sql>shutdown immediate
启动安装程序
%./runInstaller
执行catpatch.sql脚本
%sqlplus /nolog
SQL>conn / as sysdba
SQL> SPOOL patch.log
SQL> startup migrate;
SQL>@?/rdbms/admin/catpatch.sql //执行catpatch.sql脚本
SQL> SPOOL OFF
执行utlrp.sql脚本
SQL> shutdown
SQL>startup
SQL>@?/rdbms/admin/utlrp.sql //执行utlrp.sql脚本
验证
select comp_name,version from dba_registry;
注意事项:
若不是在本地安装,指定X应用程序的所在主机。
Bourne, Bash, or Korn shell:
$ DISPLAY=local_host:0.0 ; export DISPLAY
C shell:
% setenv DISPLAY local_host:0.0
来源:IT168 作者:李连国
故障现象:
NetBackup备份出错,日志如下:
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03009: failure of backup command on ch01 channel at 06/15/2005 02:28:44
ORA-19566: 超出损坏块限制 0 (文件 /u01/app/oradata/unicom/system01.dbf)
故障分析:
由于事前发生过别的表空间(cookdbs:/u01/app/oradata/unicom/cokdbs.dbf)也有坏块的情况,根据李智他们的建议,使用迁移数据后删除表空间的办法解决(仅适用于普通表空间)。
这是查询该表空间上的表和索引对象的一个脚本:
GXdb% more query.sql
conn /as sysdba
col owner for a25
col segment_name for a40
spool table.log
select distinct OWNER,SEGMENT_NAME from dba_extents
where TABLESPACE_NAME=’COOKDB’
and SEGMENT_TYPE=’TABLE’;
spool off
spool index.log
select distinct OWNER,SEGMENT_NAME from dba_extents
where TABLESPACE_NAME=’COOKDB’
and SEGMENT_TYPE=’INDEX’;
spool off
exit
查询完毕后,使用一个迁移的脚本迁移到新的表空间:
GXdb% more move.sh
#!/bin/ksh
sqlplus /nolog @query.sql
NEWTBS="cookdbs1"
echo "conn /as sysdba" > move.sql
for TNAME in `cat table.log | awk ’
/^COOKDB/ {print $2}
’`
do
echo "alter table cookdb.$TNAME move tablespace $NEWTBS;" >>move.sql
done
for INAME in `cat index.log | awk ’
/^COOKDB/ {print $2}
’`
do
echo "alter INDEX cookdb.$INAME REBUILD TABLESPACE $NEWTBS;" >>move.sql
done
echo "exit" >>move.sql
sqlplus /nolog @move.sql
本次经过检查,发现包括有System在内的四个表空间的四个数据文件有坏块。为了能使用NetBackup备份,对NetBackup脚本做以下修改(对相应的数据文件设置maxcorrupt):
run {
allocate channel ch00 type ’sbt_tape’;
set maxcorrupt for datafile 1,27,28,44 to 10;
backup 。。。。。。
release channel ch00;
}
如果有归档日志没有丢失,都备份过,可以使用rman的blockrecover来修复文件的坏块,例如:
run {
allocate channel ch00 type ’sbt_tape’;
blockrecover datafile 27 block 302089,302090,332823,332824,332825,332826;
blockrecover datafile 28 block 340846,340847,340848,340849;
blockrecover datafile 44 block 380381,380382,380383,380384,380405,380406,380407,380408;
blockrecover datafile 1 block 1703064,1703065,1703066,1703067,1703088,1703089,1703090,1703091;
release channel ch00;
}
但是中间由于备份失败,本地维护删除过归档日志。此方法不适用。
本次由于有SYSTEM表空间,不同于普通用户表空间,它有自己的特殊性。所以有些问题的解决方法也不尽相同。经多方探讨协商(Oracle India engineer、项目经理、本地维护、开发部门和系统工程部经理),总结了以下处理办法:
解决SYSTEM表空间文件坏块的方法是导出全库数据,删除数据库,重建数据库,导入全库数据。具体的操纵步骤,经过讨论,见如下:主要是考虑到优化可以在线进行,也需要在线进行,还考虑到优化的万一出错性,既便出错至少还可以恢复到原始状态,如果优化没有成功,再做导出导入也不能恢复到初始状态。所以就先做导出导入工作再做优化处理。步骤是:
1. 导出整个数据库(数据库在线),参考命令:exp system/manager
file=/oraclebak/unicomdbfull.dmp full=Y log=/oraclebak/unicomfull.log
2. 备份配置文件 cp $ORACLE_HOME/dbs/* /Oraclebak,记录数据库名及实例名,参考字典视图V$DATABASE,V$INSTANCE
3. 删除数据库DBCA(/u02/app/oracle/product/9.2.0.1/bin/dbca)图形化配置工具。注意:建议不要删除数据文件、重做日志文件和控制文件以及归档日志文件,处理方法是:一)就数据文件、重做日志文件和控制文件分别改名为xxx.bak.xxx文件,例如mv datafile001.dbf datafile001.bak.dbf ;二)就归档日志文件,只改名归档日志文件所在的目录名即可,例如mv archivedir archivedirbak。要参考的数据字典视图有V$DATAFILE、V$LOGFILE、V$CONTROLFILE和archive log list 参数
4. 重建数据库DBCA(/u02/app/oracle/product/9.2.0.1/bin/dbca)图形化配置工具,
5. 导入整个数据库,imp system/unicom@unicom full=y ignore=y file=xxx.dmp log=yyy.log
6. 启动数据库,严格测试。
dbv file= /u02/app/oracle/oradata/unicom/system01.dbf blocksize=8192检查还有没有坏块。
7. 使用3.2SQL脚本检查表空间情况.
4 一个使用Oracle归档日志恢复数据库的案例
案例环境:XX网Oracle 816数据库。
需求描述:
备份主机(装有oracle)上备份了7月13日的数据,但是主数据库服务器当前日期是7月15日。为了把备份主机上的库跟主数据库服务器同步,使用归档日志把7月13日的库前滚到7月15日。
处理步骤:
a) 备份备份主机上的控制文件,然后把主用数据库的最新控制文件备份并拷贝到备份主机相应目录
备份控制文件的方法:
sqlplus /nolog<<EOF
connect internal
alter database backup controlfile to ’${BACKUP_DIR}/controlfile.bkp’;
alter database backup controlfile to trace;
EOF
b) 拷贝主库的归档日志到备份数据库的归档日志目录(这个前滚操作需要从13号到15号的归档日志完整,若备份数据库的归档日志目录不知道,可以从参数文件中看
c) 启动数据库到mount状态,使用recover database前滚数据库
SQL> startup restrict mount pfile="${ORACLE_BASE}/admin/sdh21/pfile/init${service_names}.ora"
SQL> recover database using backup controlfile:
选择AUTO模式
d) 如果到了最后一个日志它还需要前滚,此时可以在主库上把当前redolog切换,然后把产生的归档继续拷贝到备份主机,继续前滚。
e) 前滚完成之后,它可能还继续要求下一个归档日志,此时可以CANCEL
f) 使用reselogs选项打开数据库
SQL> alter database open resetlogs;
注意:如果打开时报错可能是还需要把日志继续前滚,可重复使用recover database命令
5 Oracle 补丁p3948480_9206_SOLARIS64.zip的安装步骤
升级说明:
是从Oracle 9.2.0.1.0升级到9.2.0.6.0,解决一系列bug问题。
安装步骤:
解压文件包
%unzip p3948480_9206_SOLARIS64.zip
%cd Disk1
停掉数据库
sql>shutdown immediate
启动安装程序
%./runInstaller
执行catpatch.sql脚本
%sqlplus /nolog
SQL>conn / as sysdba
SQL> SPOOL patch.log
SQL> startup migrate;
SQL>@?/rdbms/admin/catpatch.sql //执行catpatch.sql脚本
SQL> SPOOL OFF
执行utlrp.sql脚本
SQL> shutdown
SQL>startup
SQL>@?/rdbms/admin/utlrp.sql //执行utlrp.sql脚本
验证
select comp_name,version from dba_registry;
注意事项:
若不是在本地安装,指定X应用程序的所在主机。
Bourne, Bash, or Korn shell:
$ DISPLAY=local_host:0.0 ; export DISPLAY
C shell:
% setenv DISPLAY local_host:0.0
来源:IT168 作者:李连国
发表评论
文章已被作者锁定,不允许评论。
-
SQL在oracle和SQLserver将查询结果创建为新表的不同之处
2016-05-25 18:20 585SQL在oracle和SQLserver将查询结果创建为新 ... -
oracle 函数调用存储过程操作
2014-01-02 15:16 1237create or replace function fun ... -
SQL Server 事务、异常和游标
2013-12-26 12:39 948--小测:输出各部门员工的部门名称和工号、姓名,工资。 要 ... -
Oracle跨数据库查询并插入
2013-03-15 13:51 6151. 为你需要操作的远程数据库服务器建立本地服务名: ... -
针对oracle指定用户的临时表空间 和 永久存储表空间操作
2013-01-31 13:33 1811针对 dome1 用户操作 创建临时表空间 ... -
Oracle 释放过度使用的Undo表空间
2013-01-23 10:36 7210Oracle 释放过度使用的Undo表空间 故障现象: ... -
Oracle 回滚(ROLLBACK)和撤销(UNDO)
2013-01-23 10:34 1584--============================ ... -
Oracle 表空间与数据文件
2013-01-17 11:32 808一、概念 表空间:是一个或多个数据文件的逻辑集合 ... -
Oracle查询表空间使用情况
2013-01-17 09:05 816Oracle查询表空间使用情况 --查询表空间使 ... -
怎样实现每天自动执行oracle的存储过程一次
2013-01-08 15:30 1319用joboracle定时器调用存储过程 1.创 ... -
PLSQL Developer 乱码解决
2012-11-01 11:45 1057日文乱码: 1. 开始-> 运行 -> ... -
Oracle合并行范例
2012-03-28 21:30 906现有如下数据id name1 a12 a23 a31 b13 ... -
oracle over()函数技术详解2
2010-04-09 11:30 1748来一个综合的例子,求和规则有按部门分区的,有不分区的例子 ... -
oracle over()函数技术详解 1
2010-04-09 11:26 1179SQL> select deptno,ename,sal ... -
Spring调用ORACLE存储过程的结果集(二)
2008-09-27 16:29 2107以上是对于通用的存 ... -
Spring调用ORACLE存储过程的结果集(一)
2008-09-27 16:28 1513oracle对于高级特性总是与众不同(我极力讨厌这一点,如 ... -
ORACLE SQL 语句分类
2008-09-27 16:26 1063Oracle SQL 语句可以分为以下几类: 数据操作语 ... -
Oracle: 用数据交换方式把表数据迁移到分区表实例(二)
2008-09-27 16:10 1230--进行数据交换 alter ta ... -
Oracle: 用数据交换方式把表数据迁移到分区表实例(一)
2008-09-27 16:08 1292--把kingstar.emp表的数据迁移到kingstar. ... -
Oracle数据库常见真实问题处理步骤(四)
2008-09-27 15:58 121610 数据库服务器字符集更改步骤 问题描述: 在客 ...
相关推荐
在IT行业中,JSP(JavaServer Pages)与Oracle数据库的结合使用是构建高效、可扩展的企业级Web应用程序的常见选择。本主题将深入探讨“JSP+Oracle数据库开发与实例”,帮助开发者理解如何利用这两种技术进行高效的...
中兴公司的培训教程将涵盖Oracle数据库的安装步骤,包括选择合适的版本、配置硬件环境、规划数据库存储等。你还将学习如何创建数据库实例、设置初始化参数文件,并理解网络配置的重要性,如Listener和TNSNames服务。...
首先,Oracle数据库的安装通常分为几个关键步骤。第一步是下载适合你操作系统的Oracle数据库软件,这可能包括Oracle Database Server、Client工具以及相关的管理工具。确保选择正确的版本,以匹配你的硬件架构(如32...
这些数据库不仅展示了Oracle 10g的数据模型设计,还提供了丰富的业务数据,帮助用户更好地了解如何在真实的业务环境中操作和管理数据库。 在"oracle试验附录.txt"文件中,可能会包含以下内容: 1. 数据库创建和...
在这个项目中,Kettle被用来生成一亿条信用卡号模拟数据,并将这些数据成功地导入到Oracle数据库中,同时避免了常见的内存溢出问题。 【描述】提到的"生成了一亿条信用证卡号"展示了Kettle在生成测试数据方面的强大...
本章介绍了Oracle数据库的导入导出技术,包括工具的使用方法和常见问题的解决方案。掌握这些知识对于维护数据库的安全性和可用性非常重要。 通过上述内容的介绍,我们可以看到Oracle是一款功能强大且应用广泛的...
- **紧急性能情况处理步骤**:提供了一套标准化的操作流程,帮助快速定位和解决性能问题。 **2. Oracle数据库系统优化安装** - **应用系统类型考虑** - **联机事务处理(OLTP)**:针对频繁更新的小型交易数据...
本教程主要关注JMeter在进行数据库测试方面的应用,特别是针对Oracle和MySQL这两种常见的关系型数据库。 首先,我们要理解JMeter的基本架构。JMeter是一款基于Java的图形化工具,可以通过创建线程组来模拟多个用户...
本文档《【数据泵】EXPDP导出表结构(真实案例).pdf》记录了作者在使用数据泵导出表结构的实践经验,并详细列出了关键知识点和操作步骤。以下是文档中的主要知识点总结: 1. 数据泵EXPDP和IMPDP工具的基本使用: - ...
《PeopleSoft for the Oracle DBA》是一本专为Oracle数据库管理员(DBA)设计的指南,旨在帮助读者深入了解如何在Oracle环境中有效地管理和维护PeopleSoft系统。PeopleSoft是Oracle公司的一个企业级应用软件套件,用于...
在Oracle数据库中,Blob是一种用来存储二进制数据的数据类型,比如图像、音频或视频文件等。本篇文章将详细介绍如何通过SQL查询语句获取存储在Blob字段中的JPEG格式照片的像素大小。 ### 1. 了解Blob数据类型 在...
7. **安装流程**:安装Oracle数据库通常包括以下几个步骤:系统准备(如安装依赖、配置环境变量)、安装软件包、创建数据库实例、配置网络服务和安全管理。 8. **集群配置**:部署Oracle RAC需要额外的硬件和软件...
在Oracle数据库的日常管理中,会遇到各种各样的问题,如ORA-12547:TNS:lost contact和ORA-01031:insufficient privilege等。这些问题往往与网络连接、权限配置有关,解决方法通常涉及检查网络配置、重新配置监听器、...
- **常见问题及解决方案**:本书收集并整理了一系列Oracle数据库管理过程中常见的问题,并提供了实用的解决思路和方法。 - **实战案例研究**:通过真实的案例分析,帮助读者更好地理解和掌握Oracle数据库管理的关键...
这本书旨在帮助初学者掌握Oracle数据库的基本操作,并引导有经验的DBA深入理解Oracle的高级特性,同时提供实用的诊断和问题解决策略。 在Oracle数据库管理中,DBA的主要任务包括系统规划、安装配置、性能优化、安全...
在IT行业中,Oracle数据库系统是广泛应用的企业级数据库解决方案,它提供了多种高级功能,其中包括透明网关(Transparent Gateway)服务。透明网关允许Oracle数据库通过一个中间层与非Oracle数据库进行通信,例如SQL...
Oracle RAC,全称为Real Application Clusters,是Oracle数据库的一项高级特性,旨在提供高可用性和负载均衡。在Oracle RAC架构中,多个数据库实例同时运行在同一份物理数据上,形成一个集群,共享存储,共同处理...