精华内容
下载资源
问答
  • Oracle 运维书籍

    2018-03-05 14:36:57
    一本oracle 运维全解书籍,快速成为一名Oracle行业专家
  • oracle运维必要宝典

    2016-01-04 23:52:24
    oracle运维基础知识,无论是dba还是开发都能用到
  • oracle运维课堂笔记

    2012-05-08 09:37:15
    oracle维护,oracle运维
  • Oracle运维转型-运筹帷幄DB2,为数据库学习人员介绍
  • oracle运维手册

    2018-09-09 11:44:06
    Oracle DBA大牛运维手册,强烈推荐 本资料共包含以下附件: Oracle DBA大牛运维手册.pdf
  • Oracle运维最佳实践,大牛们的经验总结
  • 2015 Oracle 技术嘉年华(OTN)分会场10杨建荣 - Oracle运维中的那些事儿
  • Oracle运维手册

    2016-06-18 17:54:36
    运维手册、Oracle运维
  • Oracle运维视频

    2017-12-12 13:52:07
    接近30G的Oracle数据库运维教程百度云盘链接,欢迎大家下载观看学习
  • 实用文案 Oracle 运维手册 文案大全 实用文案 目录 文档修改记录 . 错误未定义书签 1. 前言 . 4 2. 简单命令使用 . 4 2.1 进入 SQL*Plus . 4 2.2 退出 SQL*Plus . 4 2.3 在 sqlplus 下得到帮助信息 . 4 2.4 显示表...
  • oracle运维命令指南

    2018-09-12 11:32:57
    oracle多年运维总结出来的常用运维命令,也包括数据库的登陆,开关顺序,归档开关,备份还原等,平时运维必备
  • Gdevops 全球敏捷运维峰会 抽丝剥茧 Oracle运维中的实战经验和应对技巧 演讲人 杨建荣 全球敏捷运维峰会 北京站 杨建荣 Oracle ACE-A DBA+联合发起人 YEP成员 Oracle 10g OCP,OCM MySQL OCP 对shell , Java有一定的...
  • Linux与Oracle运维必须要掌握的基础操作
  • 白鳝 - Oracle 运维的进阶与哲学之道
  • ORACLE DBA工作笔记 运维数据迁移与性能调优 简单,详细
  • LISTENER=(DESCRIPTION_LIST =(DESCRIPTION =(ADDRESS = (PROTOCOL = IPC)(KEY =racdb1))(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.137.10)(PORT =1521))))ADR_BASE_LISTENER = /u01/app/oracleSID_LIST_LISTENER...

    LISTENER

    =

    (DESCRIPTION_LIST =

    (DESCRIPTION =

    (ADDRESS = (PROTOCOL = IPC)(KEY =racdb1))

    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.137.10)(PORT =

    1521))

    )

    )

    ADR_BASE_LISTENER = /u01/app/oracle

    SID_LIST_LISTENER=

    (SID_LIST=

    (SID_DESC=

    #BEQUEATH

    CONFIG

    (GLOBAL_DBNAME=racdb1)

    (SID_NAME=racdb1)

    (ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1)

    #PRESPAWN CONFIG

    (PRESPAWN_MAX=20)

    (PRESPAWN_LIST=

    (PRESPAWN_DESC=(PROTOCOL=tcp)(POOL_SIZE=2)(TIMEOUT=1))

    )

    )

    )

    GLOBAL_DBNAME=racdb1

    Service 名称,在客户端一定配置和他相同

    SID_NAME=racdb1

    实例名称,这个要和SID相同

    GLOBAL_DBNAME可以不等于SID_NAME

    客户端根据tnsname.ora中的SERVICE_NAME和地址(ADDRESS = (PROTOCOL =

    TCP)(HOST =racdb1)(PORT = 1521)),到这个地址去访问监听器。然后监听器根据文件lisnter.ora文件中的GLOBAL_NAME来判断是否有一个

    GLOBAL_DBNAME 和 SERVICE_NAME 相等。如果相等,则建立客户端到SID标识的服务端实例的连接,在客户端上我们可以使用tnsping 命令来测试

    1.2.

    客户端tnsnames

    racdb1 =

    (description =

    (address_list =

    (address = (protocol = tcp)(host = 192.168.137.10)(port = 1521))

    )

    (connect_data =

    (service_name =racdb1)(ur=a)

    )

    )

    这里的service_name

    =racdb1 就是在服务器端的GLOBAL_DBNAME=racdb1

    [oracle@racdb1 ~]$ tnsping racdb1

    TNS Ping Utility for Linux: Version 11.2.0.1.0 -

    Production on 21-JAN-2015 14:51:49

    Copyright (c) 1997, 2009,

    Oracle. All rights reserved.

    TNS-03502: Insufficient

    arguments. Usage: tnsping

    []

    [oracle@racdb1 ~]$ tnsping racdb1

    TNS Ping Utility for Linux: Version 11.2.0.1.0 -

    Production on 21-JAN-2015 14:51:55

    Copyright (c) 1997, 2009,

    Oracle. All rights reserved.

    Used parameter files:

    Used TNSNAMES adapter to resolve the

    alias

    Attempting to contact (description = (address_list

    = (address = (protocol = tcp)(host = racdb1)(port = 1521)))

    (connect_data = (service_name = racdb1)(ur=a)))

    OK (0 msec)

    1.3.

    检查Oracle Listener

    lsnrctl stop

    lsnrctl start

    lsnrctl status

    lsnrctl service

    默认情况下我们oracle

    安装好后是使用操作系统用户的验证,所以这里如果我们使用sys用户不用密码就可以登录,如果我们想使用oracle 密码文件验证的话我们就要进入下列文件夹

    cd

    /u01/app/oracle/product/11.2.0/dbhome_1/network/admin修改sqlnet.ora

    增加下列命令

    SQLNET.AUTHENTICATION_SERVICES = NONE

    [oracle@racdb1 ~]$ sqlplus scott/111111@racdb1

    sqlplus

    /nolog

    使用scott登陆到指定数据库racdb1

    conn

    sys/111111@racdb1 AS SYSDBA;

    察看登陆到了哪个数据库实例

    select

    instance_name from v$instance

    使用sys用户登陆

    conn

    sys/change_on_installer as sysdba

    用sysdba

    登陆

    conn /as

    sysdba

    使用sys用户登录

    conn

    sys/change_on_install as sysdba;

    conn / as

    sysdba 连接数据库

    conn

    scott/111111 使用scott进行连接

    展开全文
  • 《运筹帷幄DB2——从Oracle运维转型》(数据库运维工作者的首选之作)基本信息作者: 王飞鹏 王富国 刘旭 孙岳 [作译者介绍]丛书名: 舞动DB2系列出版社:电子工业出版社ISBN:9787121177439上架时间:2012-8-20出版...

    《运筹帷幄DB2——从Oracle运维转型》(数据库运维工作者的首选之作)
    基本信息
    作者: 王飞鹏 王富国 刘旭 孙岳 [作译者介绍]
    丛书名: 舞动DB2系列
    出版社:电子工业出版社
    ISBN:9787121177439
    上架时间:2012-8-20
    出版日期:2012 年8月
    开本:16开
    页码:480
    版次:1-1
    所属分类: 计算机

    更多关于 》》》《运筹帷幄DB2——从Oracle运维转型》(数据库运维工作者的首选之作)
    内容简介
    书籍
    计算机书籍
      《运筹帷幄db2——从oracle运维转型》是舞动db2系列的第三本。
      全书用通俗易懂的语言诠释了db2 数据库的管理和维护工作,提出了db2 运维的新思路,并从实战角度阐述了db2 数据库在运维过程中的常见问题、分析思路和解决方案,配以典型的行业案例,环环相扣,精彩纷呈,是一本值得拥有的db2学习书籍。
      《运筹帷幄db2——从oracle运维转型》适合数据库管理员、数据库运维人员、数据库架构师、数据库咨询顾问以及学习数据库运维技术的高校学生或者从事相关课程教学的教师阅读使用。
    目录
    《运筹帷幄db2——从oracle运维转型》
    第1章 dba与db2运维 1
    1.1 dba们的困惑:从oracle向db2运维转型 2
    1.1.1 “库二代”的前世今生 2
    1.1.2 向oracle转型的挑战 4
    1.2 dba们,你们对自己的职业自信吗 6
    1.2.1 学哪个数据库更有前途:oracle还是db2 7
    1.2.2 “钱途”和提升能力哪个更重要 8
    1.3 dba的职责:无限风光在险峰 9
    1.3.1 日常维护 10
    1.3.2 处理故障 14
    1.4 dba修炼之道:运筹帷幄 决胜千里 17
    1.4.1 搭起黄金屋 17
    1.4.2 精通软硬件技术 18
    1.4.3 加强精神层面的修养 19
    1.4.4 熟练运用工具 20
    1.5 读者使用本书的方法 23
    1.6 运维攻略笔记——运筹帷幄从蒙古起步 23
    1.7 小结 25
    第2章 db2安装与配置——瑜伽式的运维启航 26
    2.1 找对版本 摸清特性——db2的版本与特性 27
    2.1.1 认识她选择她——db2版本 27
    2.1.2 了解她明白她——db2的特性 28
    2.2 并非“万事开头难”——db2的安装 30
    2.2.1 关键第一步——修改系统内核参数 30
    2.2.2 轻轻松松开始——通过安装向导在linux平台上安装db2 31
    2.2.3 db2高级安装方法(适合linux/unix平台) 40
    2.2.4 享受成果——数据库操作初体验 44
    2.2.5 理清在不同平台上安装的差异——windows、linux和unix平台安装要点 45
    2.2.6 db2安装常见问题 47
    2.3 配置决定一切——db2的环境与参数配置 49
    2.3.1 环境变量(environment variables) 50
    2.3.2 文件注册表 51
    2.3.3 数据库管理器配置参数(dbm cfg) 52
    2.3.4 数据库配置参数(db cfg) 53
    2.3.5 参数配置的实例 54
    2.4 db2数据库的系统编目 56
    2.4.1 什么是db2编目表 56
    2.4.2 syscat编目视图 57
    2.4.3 sysstat编目视图 60
    2.4.4 与oracle数据字典的比较 61
    2.5 运维攻略笔记——坐等扬帆时 62
    2.6 本章小结 63
    第3章 雾里看花——db2的管理和操作 64
    3.1 从db2体系结构开始 65
    3.1.1 db2体系结构:分层管理 65
    3.1.2 db2进程模型:线程vs进程 66
    3.1.3 掌握db2内存模型:不容易 69
    3.2 db2实例 75
    3.2.1 什么是实例 76
    3.2.2 你必须掌握的:实例管理命令 77
    3.3 db2数据库 78
    3.3.1 创建数据库:竟然有这么多学问 78
    3.3.2 你必须掌握的:数据库管理命令 80
    3.4 db2表空间 82
    3.4.1 表空间种类:真不少 82
    3.4.2 你必须掌握的绝活:db2存储规划 83
    3.4.3 表空间管理的三板斧 88
    3.4.4 攻克难关:降低表空间高水位标记 91
    3.5 db2访问与操作 95
    3.5.1 访问db2的接口 95
    3.5.2 访问远程数据库的方式 96
    3.5.3 实战:连接远程数据库 98
    3.5.4 你必须掌握的:实用db2命令 100
    3.6 db2安全控制 102
    3.6.1 什么是db2中的认证 102
    3.6.2 什么是db2中的授权 104
    3.6.3 如何对敏感数据加密 117
    3.6.4 三层架构的安全基石:可信上下文 120
    3.7 运维攻略笔记——当oracle使用者遇见db2 121
    3.8 本章小结 122
    第4章 芝麻开门——db2数据仓库 123
    4.1 数据仓库是什么 124
    4.1.1 数据仓库的误区 124
    4.1.2 数据仓库的体系结构 126
    4.2 支撑数据仓库的db2特性 127
    4.2.1 分区数据库 127
    4.2.2 灵活的数据分区 129
    4.2.3 分区环境中的连接(join)策略 132
    4.2.4 物化查询表 134
    4.3 db2数据仓库系统设计 135
    4.3.1 bcu/bpu的设计原则 135
    4.3.2 数据bpu上存储划分的原则 138
    4.3.3 数据库文件的系统划分 138
    4.3.4 仓库中诞生的数据库 139
    4.3.5 数据库分区组的设计 139
    4.3.6 缓冲池的设计 140
    4.3.7 数据库日志的设计 141
    4.3.8 表空间的设计 142
    4.3.9 表的存放技巧 142
    4.3.10 数据压缩 143
    4.4 数据仓库实战 143
    4.4.1 实战的硬件环境 143
    4.4.2 数据仓库中实例的规划与实施 144
    4.4.3 数据仓库中数据库的规划与实施 149
    4.4.4 数据仓库中的db2参数设置 152
    4.4.5 其他操作 154
    4.5 db2工作负载管理(wlm) 156
    4.5.1 创建wlm的监视器 156
    4.5.2 怎样控制已知工作的负载 158
    4.5.3 怎样控制不可预见的工作负载 159
    4.5.4 对并行load的工作负载限制 162
    4.6 数据仓库日常运维 163
    4.6.1 db2数据仓库可扩展吗 163
    4.6.2 对数据库分区的维护 163
    4.6.3 分区数据库中常用的两个命令 168
    4.6.4 数据仓库的备份与恢复 169
    4.7 与oracle数据仓库的比较 169
    4.8 运维攻略笔记:想买房 先预测一把地铁修到哪里 170
    4.9 本章小结 172
    第5章 运维中的锁处理与并发控制 173
    5.1 如履薄冰——并发环境下的数据库运维 174
    5.2 并发控制的法宝——db2锁机制解析 180
    5.2.1 锁与事务一致性 181
    5.2.2 锁的类型和相互关系 184
    5.3 定制并发——db2隔离级别 188
    5.3.1 隔离级别解析 188
    5.3.2 隔离级别设定 190
    5.3.3 隔离级别与锁常见问题 192
    5.4 样板戏——锁之案例解析 194
    5.4.1 解锁的“样板”套路 194
    5.4.2 沙家浜开始了 195
    5.4.3 锁等待分析 197
    5.4.4 锁超时分析 202
    5.4.5 锁升级分析 205
    5.4.6 死锁探秘 206
    5.5 精打细算——db2并发性的最大化 215
    5.5.1 并发性与性能问题 215
    5.5.2 并发性与应用程序设计 216
    5.5.3 如何实现并发性的最大化 217
    5.6 强力pk——db2和oracle并发机制比较 220
    5.7 经验之谈——提升系统并发能力的秘诀 221
    5.8 运维攻略笔记:体验过网络购票吗?感觉慢的话,来这里看看 224
    5.9 小结 225
    第6章 db2日常运维——监控 226
    6.1 运维人员的必修课——监控 227
    6.1.1 监控工作的原则 227
    6.1.2 监控的任务 228
    6.2 每天你需要做什么 230
    6.2.1 监控存储空间状态 231
    6.2.2 监控主机状态 234
    6.2.3 检查数据库状态 236
    6.2.4 每日监控任务与命令对照表 245
    6.3 每周你需要做什么 246
    6.3.1 检查全量备份 246
    6.3.2 检查是否需要runstats 248
    6.3.3 检查表是否需要重组 248
    6.3.4 查找并重新绑定无效包 250
    6.3.5 监控新对象和应用程序变动 250
    6.4 每月你需要做什么 252
    6.4.1 监控月结过程 252
    6.4.2 统计数据增长 253
    6.4.3 检查权限变更 254
    6.4.4 审计用户操作 255
    6.4.5 检查软件更新 258
    6.5 监控利器——db2监控工具 259
    6.5.1 快照监视器 259
    6.5.2 事件监视器 262
    6.5.3 监视器表函数 266
    6.5.4 管理视图 268
    6.5.5 db2pd 270
    6.5.6 db2top 273
    6.6 如何监控特定问题 274
    6.7 运维攻略笔记——女性运维指南 280
    6.8 小结 281
    第7章 有备无患——数据库备份与恢复 282
    7.1 db2金刚不坏之身的秘密 283
    7.1.1 运维人员必须看清的日志真相 283
    7.1.2 突然断电之灾难恢复 290
    7.1.3 归档日志很给力,也会吓坏人 292
    7.1.4 日志与备份恢复的关系 295
    7.2 挂一挡起步 295
    7.2.1 备份很简单吗 295
    7.2.2 手把手教你使用backup命令 298
    7.2.3 oracle、db2、版本恢复和前滚恢复 300
    7.2.4 手把手教你使用restore和rollforward命令 302
    7.2.5 有个捷径:recover命令恢复 306
    7.2.6 有个技巧:恢复被删除的表 309
    7.3 踩油门快跑 312
    7.3.1 备份和恢复机制 312
    7.3.2 增量备份与恢复 313
    7.3.3 全备份和表空间备份 316
    7.3.4 大容量磁带库备份恢复 318
    7.3.5 重定向恢复数据——应对机器损坏的招数 322
    7.3.6 flash copy——高级备份方式 326
    7.4 工具箱 327
    7.4.1 监控工具 327
    7.4.2 查看历史记录 329
    7.4.3 检查备份介质完整性 331
    7.4.4 实例参数导出导入 332
    7.5 dpf分区环境下的备份与恢复 333
    7.5.1 dpf分区环境下备份与恢复的特点 333
    7.5.2 再论backup与restore命令 334
    7.5.3 需要掌握:db2_all和rah命令 337
    7.6 最佳实践 338
    7.6.1 了解db2备份策略 338
    7.6.2 如何让我的备份井井有条 339
    7.6.3 还有哪些可供调整的参数 340
    7.7 运维攻略笔记——一条龙解决方案 342
    7.8 小结 343
    第8章 数据移动——搬运的年代 344
    8.1 数据移动 时刻准备着 345
    8.1.1 移动数据不容易 345
    8.1.2 移动手段 多多益善 345
    8.1.3 “移动的粮草”先行 346
    8.2 数据移动双胞胎——port兄弟 348
    8.2.1 手把手教你使用export命令导出数据 348
    8.2.2 手把手教你使用import命令导入数据 353
    8.3 load面面观 363
    8.3.1 手把手教你使用load命令导入数据 363
    8.3.2 你所要知道的load的四个阶段 366
    8.3.3 你所要知道的load过程中表的状态以及应对方法 368
    8.3.4 load提速与刘翔跨栏有一样的烦恼 371
    8.3.5 load好,还是import更棒 372
    8.4 还有什么移动方式可供选择 373
    8.4.1 使用db2move在数据库间移动数据 374
    8.4.2 使用admin_move_table在数据库内移动表 378
    8.4.3 使用admin_copy_schema在数据库内移动对象 382
    8.4.4 特殊对象的移动方式 383
    8.4.5 物理层面移动数据 389
    8.5 多分区环境下的数据移动 395
    8.5.1 多分区环境下的load 395
    8.5.2 多分区环境下load需要注意的问题 400
    8.6 oracle数据移动与db2数据移动的比较 401
    8.7 运维攻略笔记——检验的三个指标 402
    8.8 本章小结 403
    第9章 数据库故障诊断 404
    9.1 救场如救火 排障如救人 405
    9.1.1 数据库出了故障?急! 405
    9.1.2 常见问题与故障分类 407
    9.1.3 排障六诀 408
    9.1.4 日常运维“防患于未然” 409
    9.2 你必须掌握的故障诊断工具 410
    9.2.1 db2support收集诊断信息 410
    9.2.2 db2diag分析事故现场 413
    9.2.3 db2pd诊断和调优 415
    9.2.4 db2trc跟踪db2的内部运行 416
    9.3 一场惊心动魄的排障实战 417
    9.4 db2数据库排障案例集 420
    9.4.1 与实例相关的问题集锦 421
    9.4.2 存储规划问题 425
    9.4.3 db2日志、备份恢复一箩筐 431
    9.4.4 load,一定要hold住 433
    9.4.5 日常运维那些事儿 435
    9.4.6 数据仓库排障 436
    9.5 运维攻略笔记——呵呵,ibm的人喜欢在盘古大观上看问题 440
    9.6 小结 441
    附录a oracle和db2机制对比 442
    附录b oracle和db2术语对比 444
    附录c oracle和db2命令对比 446
    附录d 缩略语 450
    后记 455
    参考文献 456

    图书信息来源于:中国互动出版

    展开全文
  • 舞动DB2之3_运筹帷幄DB2 从Oracle运维转型
  • Oracle运维服务的四根救命稻草 企业信息化系统建设按生命周期可分为IT规划阶段、IT建设阶段和IT运维阶段,其中,IT运维阶段的时间最长,IT运维管理关乎着IT运维的质量、成本和速度,更关乎着IT系统的安全、连续和...

    Oracle运维服务的四根救命稻草

        企业信息化系统建设按生命周期可分为IT规划阶段、IT建设阶段和IT运维阶段,其中,IT运维阶段的时间最长,IT运维管理关乎着IT运维的质量、成本和速度,更关乎着IT系统的安全、连续和可用。大数据云计算时代的来临,使Oracle服务商需要集中精力提高运维服务核心竞争力,才能促使运维外包走向更深的发展。


    1.数据安全
        数据安全是第一位的,Oracle服务商的首要职责必须保证不丢数据,丢掉数据就丢掉了饭碗!
        1)在人为误操作的时候(update,insert,delete,drop,alter),能够恢复数据到正确的状态。主要靠备份来保证,因为复制可以容灾,却不可以容错(当然延迟备份在一定程度可以)。
        2)在机房,硬件故障或者操作系统,数据库软件故障的时候,能够恢复数据到正确的状态。可能用备份来恢复,也可能直接进行主库或者从库的切换来恢复服务。
        3)不丢事务,保证已经入库的数据能够被正确的查询到。采用最高安全级别的数据库软硬件设置以及冗余设备,目标是不丢任何1个事务,因为即使1个事务也可能造成大量金钱的损失,同时造成企业信誉的下降。
        4)还要注意到需要保证主从数据库的一致性,否则读写分离的情况下其实在用户看来仍然丢失了数据。


    2.无故障(停机)时间
        运维和开发不一样,开发最重要的是保证一定效率的情况下实现功能,同时程序Bug少。运维讲的是提供稳定服务的时间。用术语来说就是几个9,具体含义就是年度不可服务(不管是主动的还是被动的)时间除以全年时间,百分比越高越好(基本可用性:2个9;较高可用性:3个9;具有故障自动回复能力的可用性:4个9;极高可用性:5个9)。Oracle运维服务的最高境界当然就是5个9了,一年停机时间只有5分钟,这是相当难以达到的目标,往往一个大故障就会把全年的停机时间用完。
    多数情况下,网站可用性会是 SLA (Service Level Agreement, 服务水平协议) 中的一个重要度量指标。如果是做第三方托管,需要明确第三方的运维服务能力与责任。否则,IDC 经常断电或者断网,即使自身做的再好也无法保证服务时间了。
        但可用性是能够持续改进的东西,运维负责人不可希望一步登天。提高可用性的一些常规策略有消除单点,部署冗余设备等。如果要提供更高的可用性,比如 4 个 9 甚至 5 个9,就不是简单靠硬件就能做到的事情,还需要建立自动化的工具与平台,完善的流程制度与变更机制,7*24小时的专人值班等。


    3.响应时间
        响应时间是指一条查询或者更新语句从发出请求到接收完数据的时间。因为最大响应时间的不确定性和不可重复性,所以一般使用X%的查询响应时间作为指标。如果值为95%为10ms,意味着95%的查询会在10ms内返回。对于OLTP查询来说,在50ms内返回是比较理想的结果。超过200ms的查询可以视为慢查询。


    4.成本
        在解决了稳定和速度后,就是成本的问题了。成本的构成主要是硬件成本+软件成本+人力成本,因为互联网企业软件以自主开发和开源为主,所以其中主要是硬件和人力成本,硬件成本也包含了机房的机架,带宽,电力成本。Oracle运维构师的使命的确不仅仅是“完成”功能,如果说完成功能可以有50种方法,那么至少要找出相对较优的几种方法并进行最终的选择。因此Oracle服务商需要提高硬件的使用效率,降低人工运维成本,提高人均产出。

     

    转载于:https://www.cnblogs.com/xinjudba/p/3507124.html

    展开全文
  • Oracle运维日记

    2020-03-10 18:20:06
    最近实验室一直的一个运维项目频频在Oracle上出错,想着错误还挺典型,做一个记录,以供后续参考学习使用。 运维记录 1. ORA-01000: 超出打开游标的最大数 问题描述:需要开多进程遍历对象集合,并且将对象数据...

    前言

    最近实验室一直的一个运维项目频频在Oracle上出错,想着错误还挺典型,做一个记录,以供后续参考学习使用。 

    运维记录

    1. ORA-01000: 超出打开游标的最大数

    问题描述:需要开多进程遍历对象集合,并且将对象数据存入到Oracle数据库中,测试报超出Oracle游标最大数的错误。

    知识介绍:

    Oracle的游标数cursors:游标是SQL的一个内存工作区,由系统或用户以变量的形式定义。游标的作用就是用于临时存储从数据库中提取的数据块。在某些情况下,需要把数据从存放在磁盘的表中调到计算机内存中进行处理,最后将处理结果显示出来或最终写回数据库。这样数据处理的速度才会提高,否则频繁的磁盘数据交换会降低效率。(参考https://www.cnblogs.com/guohu/p/11007352.html

    游标一旦打开,数据就从数据库中传送到游标变量中,然后应用程序再从游标变量中分解出需要的数据,并进行处理

    一般Oracle默认游标数OPNE_CURSORS为300(足以够用),最大为1000

    解决方法:

    1. 手动在Oracle中增大游标数

    //查看系统配置游标数法1
    select value from v$parameter where name = 'open_cursors';
    //查看系统配置游标数法2
    show parameter open_cursors;
    
    //查看当前被打开的游标个数
    select count(*) from v$open_cursor;
    
    //修改Oracle游标数
    alter system set open_cursors=1000 scope=both;

    2. 程序中及时释放资源,这里需要明确一般释放的顺序是ResultSet(如果用到的话)、PreparedStatement、Connection。

    如果没有释放prepareStament就关闭了connection,虽然看起来是释放了资源,但是游标数并没有得到释放,如果数据量请求量特别大的情况下,每次请求都没有释放游标数,就有可能导致最终Oracle提供的游标数被占满从而报ORA-01000的错误。

    参考https://blog.csdn.net/wodestudy/article/details/23887279?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task

    一般有的可能有二:

    1) 关闭Connection(将连接放入连接池)前未关闭PreparedStatement(即游标)

    2) 在循环体中使用connection.prepareStatement(sql)初始化preparedStatement对象后,未在循环体执行完增/删/改/查后及时关闭到PreparedStatement,导致数据量过大的时候游标不够用

    for(int i = 0; i < vos.size(); i++){
        preparedStatement = connnection.prepareStatement(sql);
        preparedStatement.setString(1,vos.getXXX());
        preparedStatement.setString(2,vos.getXXX());
        preparedStatement.setString(3,vos.getXXX());
        preparedStatment.executeUpdate();
        //打开游标后使用完及时关闭
        if(preparedStatement != null){
            prepatedStatemnet.close();
        }
    }

    此处需要注意的是将程序修改为及时关闭游标,但是在多进程并发执行的过程中还是有可能出现ORA-01000的错误,这是因为oracle给的游标数就是那么大,如果当前进程数比较大所有的游标数都被占了,那么在有游标被释放前会有一段时间资源被用完线程无法执行,等待有游标可用时即可继续执行。

    2. Oracle操作缓慢

    业务中oracle相当于一个中间数据流转池,由于前期池子流出程序有点问题一直没及时解决 也没意识到可能会池子容量这一层,导致oracle数据积压。后续即使池子流出程序修复好也由于oracle数据积压太过严重,导致对oracle的操作执行效率极低。

    此时程序架构完善,参数调优已没啥用,干脆大刀阔斧直接先关闭池子进水,然后直接先把池子里的水导出来(导出数据删除数据),然后确保池子进水和出水功能速度都ok的情况下,开启出水进水,暂时缓解问题。后续等数据稳定后,或者有其他调优方案的时候重新导入数据。(可能硬件升级?或者其他)

    这次算是真正意识到项目的数据量之大,操作稍有不慎就会导致数据积压数据丢失等操作,因此在设计操作修复bug的时候一定要理清逻辑思路,分析好风险并做相应的规避应对措施。

    总结

    以问题为索引,不断学习,不断进步。

    展开全文
  • Oracle运维笔记

    2019-11-25 14:40:47
    1.修改Oracle数据库端口 vi listener.ora ,修改port=11521 注册监听 SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (GLOBAL_DBNAME = orcl) (ORACLE_HOME = /home/oracle/app/oracle/product...
  • oracle 运维需要掌握的内容: 1、在rhel 6、rhel 7上使用OUI和命令安装oracle 11g。 2、规划文件储存包括控制文件,数据文件,日志文件,创建表空间。 3、创建用户并授予基本的权限。 4、备份和恢复数据文件。 5、将...
  • oracle运维积累

    千次阅读 2019-07-19 15:54:52
    查看这些占用CPU资源很高的Oracle进程究竟是在做什么操作 select sql_text,spid,v$session.program,process from  v$sqlarea,v$session,v$process  where v$sqlarea.address=v$session.sql_address 1.查询表空间...
  • 数据库是商业的灵魂和大脑,作为核心IT业务模块,数据库的重要性毋庸置疑。管理数据库在做好系统前期部署后,在系统持续运行中,需要时刻关注系统自身和...通常我们把数据库Oracle运维管理工作分为反应性与前瞻性两种
  • Oracle数据库运维总结报告 起草 罗桃阳 校核 审查 2014年1月 目录 TOC \o "1-3" \h \z \u 1.说明 3 1.1报告说明 3 1.2系统概述 3 2当前配置情况说明 3 2.1主机配置 3 2.2数据库配置 3 3 操作系统可用性 5 3.1 文件...
  • oracle运维最佳实践

    2017-08-09 18:53:00
    10年老DBA沥血心得

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 36,157
精华内容 14,462
关键字:

oracle运维