推荐:Oracle数据库DBA原文经典书籍
最近总是在整理Oracle的专业书籍并推荐给别人,也是对自己收集的一大堆资料和书籍的很好的回顾。发现推荐给人的都是英文原版书籍,因为Oralce这东西本就是英文的,看原版书籍对概念和思路体会得更清晰。遂,寻教于业内各位大牛,整理出以下一个原版书籍推荐列表,以供参考。排名分先后,前面的推荐度高,但并不代表后面的书不经典。书不在多,而在于精,精则灵。不是每本书都适合自己,尽阅书不如无书,笔者建议可以通读以下书籍(哪怕就看个目录),找到合适的(也就是自己觉得好的)再精读。[@more@]第一类、Oracle官方东西,虽然写得很
Oracle数据库的非常规恢复
一、损坏联机日志的恢复方法1.1 损坏非当前联机日志大家都清楚,联机日志分为当前联机日志和非当前联机日志,非当前联机日志的损坏是比较简单的,一般通过clear命令就可以解决问题。1、启动数据库,遇到ORA-00312 or ORA-00313错误,如ORA-00313: open failed for members of log group 1 of thread 1ORA-00312: online log 1 thread 1: 'D:ORACLEORADATATESTREDO01.LOG'从这里我们知道日志组1的数据文件损坏了从报警文件可以看到更详细的信息2、查看V$log视图SQL> select group#,sequence#,archived,status from v$log; GROUP# SE
数据库常规恢复案例
一、非归档模式下的备份与恢复备份方案:采用OS冷备份1.连接数据库并创建测试表SQL*Plus: Release 8.1.6.0.0 - Production on Tue May 6 13:46:32 2003(c) Copyright 1999 Oracle Corporation. All rights reserved.SQL> connect internal/password as sysdba;Connected.SQL> create table test(a int);Table createdSQL> insert into test values(1);1 row insertedSQL> commit;Commit complete2.备份数据库SQL> @coldbak.sql 或在DOS下 svrmgrl @coldbak.sql3.再插入记录SQL> insert into test values(2);1 row inse
数据库备份方案
RMAN备份概述采用数据库提供的RMAN备份工具有以下的优点: 支持在线热备份 支持多级增量备份 支持并行备份,恢复 减小所需要备份量 备份,恢复使用简单 在线热备份是指备份不需要关闭数据库进行,在备份的同时可以进行正常的数据库的各种操作,满足了7*24的系统的需要,对于本系统而言,数据库的备份将不会影响INTERNET或INTRANET用户对数据库的访问。多级增量备份多级增量备份是指第N级的备份只需要备份最后一次同级或N-1级备份以后发生的改变的数据。可以通过下图来说明: 上图是一个增量备份的例子,即在第一个星期天做一个增量的
DBA自我深化及可持续性发展路线之讨论
各位奋斗在DBA领域的兄弟姐妹们,你们好吗?也许各位大都会回答:“还行吧。”在这一行当做了三五七八年了,年长一点的前辈就更长了。不知道各位还有多少当初的狂热和激情呢?Oracle现在也是越来越普及了,终有一...
独立打开Oracle的Standby库
1. 在主库上,关闭archive log传送:SQL> alter system set log_archive_dest_2=''; 2. 在备库上,用sys用户登陆,停止日志的应用:SQL> alter database recover managed standby database cancel; SQL> shutdown immediateSQL> startup nomountSQL> alter database mount standby database;3. 在备库上,备份控制文件到trace:SQL> alter database backup controlfile to trace;SQL> shutdown immediate4. 用trace文件重建控制文件:在trace文件中,复制resetlogs部分的重建脚本到create_control.sql,并修改init.o
Oracle在各类操作上LOCK_SGA的设置
AIX 5L(AIX 4.3.3以上)1. aix参数v_pinshm=1,默认是0,表示aix将支持pin住内存,设置方法为#vmo -p -o v_pinshm=12. aix参数maxpin%=内存百分比,默认80%,表示支持的最大的可pin住内存的比例,设置方法为#vmo -p -o maxpin%=903. oracle参数LOCK_SGA=true,表示oracle将使用这部分被pin住的内存,其实就是告诉oracle使用另外一种内存调用方法。HP UNIX1. root用户,创建权限配置文件/etc/privgroup# touch /etc/privgroup# vi /etc/privgroup添加"dba MLOCK"到该文件2. root用户,执行命令# /etc/setprivgrp -f /etc/privgr
使用Logmnr恢复误删的数据
1. 确认测试表T1当前的记录数SQL> alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';会话已更改。SQL> select count(*) from t1;COUNT(*)----------222. 测试delete操作,并记录前后时间戳(实战中,为了尽可能准确定位数据,也需要尽可能准确的获取时间戳)SQL> select sysdate from dual;SYSDATE-------------------2008-09-22 11:32:25SQL> delete from t1 where rownum<11;已删除10行。SQL> commit;提交完成。SQL> select count(*) from t1;COUNT(*)----------12SQL> select sysdate from dual;SY
创建测试物理Standby日志
操作系统: WindowsOracle版本:10.2.0.1主库SID: ALEX (192.168.217.1)从库SID: MYDG (192.168.217.201)一、创建过程:1、在主库执行force loggingSQL> alter database force logging;2、设置主库的参数文件和从库的参数文件:主库确认以下参数:--主库必要db_name='alex'DB_UNIQUE_NAME='alex'SERVICE_NAMES='alex'INSTANCE_NAME='alex'control_files='D:/oracle/oradata/alex/control01.ctl','D:/oracle/oradata/alex/control02.ctl','D:/oracle/oradata/alex/control03.ctl'LOG_ARCHIVE_CONFIG='DG_CONFIG=(alex,mydg)'LOG_ARCHIVE_
关于Listener Log的信息的深度挖掘
原址:http://aluocp.itpub.net/post/17417/4709521. 创建一个目录,以创建外部表,目录指向Listener_Log的目录create directory LISTENER_LOG_DIR as 'D:\oracle\ora92\network\log' /2. 创建一个完全读取L...
Oracle开发路线
A pretty simple mantra when it comes to developing database software:1. You should do it in a single SQL statement if at all possible.我们应该尽量使用单个SQL语句来实现应用需求;2. If you cannot do it in a single SQL Statement, then do it in PL/SQL.如果单个SQL无法实现,考虑使用PL/SQL来实现;3. If you cannot do it in PL/SQL, try a Java Stored Procedure.如果PL/SQL无法实现,接下来可以尝试使用Java存储过程来实现;4. If you cannot do it in Java, do it in a C external procedure.如果Java过程也不行,尝试使用
关于library cache lock和library cache pin严重等待的问题
今天系统出现严重等待问题,表现如下:1. 现象SQL> select count(*) from v$session; COUNT(*)---------- 379SQL> select count(*) from v$session where status='ACTIVE'; COUNT(*)---------- 120当前情况,较正常时候,total session有所减少,active session增加了9倍。[@more@]SQL> select * from v$session_wait where event not like 'SQL%' and event not like 'rdbms%';发现大量的library cache lock和library cache pin等待,最长等待session约为半小时。此时CPU使用率和内存使用率呈趋势性下降。2. 查看
在Oracle 10g下单机Physical Standby
参见: http://aluocp.itpub.net/post/17417/457564操作系统: WindowsOracle版本:10.2.0.1主库SID: ALEX从库SID: ALUOCP一、创建过程:1、在主库执行force loggingSQL> alter database force logging;...
使用BBED
1. 创建测试表空间SQL> CREATE TABLESPACE test DATAFILE2 'Y:/TEST01.DBF' SIZE 10M AUTOEXTEND OFF3 LOGGING4 ONLINE5 PERMANENT6 EXTENT MANAGEMENT LOCAL UNIFORM SIZE 1M7 BLOCKSIZE 8K8 SEGMENT SPACE MANAGEMENT AUTO;Tablespace created[@more@]2. 创建测试表SQL> create table bbed tablespace test as select * from dba_tables;Table createdSQL> select count(*) from bbed;COUNT(*)----------4068SQL> select segment_name,file_id,block_id from dba_extents where segment_name='BBED';SEGMENT_NAME FILE_ID B
自动生成Statspack的脚本
以下为Oracle数据库,自动生成Statspack的脚本。可以设置在每天的23点许,一次性生成当天的数据库Statspack Report,时间范围为9:00~18:00的工作时间,抓取周期为1小时一次。以下为sql的脚本,shell部分可以根据具体OS环境确定,笔者环境为Windows 2003 Server。[@more@]set serveroutput onset feedback offset trims onspool sp_temp.sqldeclarecursor cursnap(sdate varchar2) isselect a.snap_id beginid,b.snap_id endid,'Z:dbashellmonitordba_logspcas_' || substr(sdate,5) || '_' || a.snap_time || b.snap_time ||'.log' repna
突破oracle for win2K的2G内存限制
众所周知,在32位的操作系统如win2K上,操作系统能管理的内存为4GB(power(2,32) =4G) ,oracle使用的总内存有2G限制。目前大多数信息系统都能为数据库服务器配上4G物理内存甚至更多,但无论你为系统配置多大的物理内存,正常情况下都不能使oracle使用超过2G的内存(包含SGA、PGA等),从而造成系统资源浪费。那么,有没有什么办法能使运行在windows系统上的oracle使用超过2G的内存呢?windows 提供了一种叫4GT(4G Tuning)的技术,使得oracle使用超过2G(不超过3G)的内存成为可能。而为了让应用程序使用更大的内存,还有一种PSE36的技术,
Oracle分区表的管理
1.1 分区表PARTITION table在ORACLE里如果遇到特别大的表,可以使用分区的表来改变其应用程序的性能。1.1.1 分区表的建立: 某公司的每年产生巨大的销售记录,DBA向公司建议每季度的数据放在一个分区内,以下示范的是该公司1999年的数据(假设每月产生30M的数据),操作如下: 范围分区表:CREATE TABLE sales (invoice_no NUMBER, ... [@more@]sale_date DATE NOT NULL ) PARTITION BY RANGE (sale_date) (PARTITION sales1999_q1 VALUES LESS THAN (TO_DATE(‘1999-04-01’,’YYYY-MM-DD’) TABLESPACE ts_sale1999q1, PARTITION sales199
ORA-3136的应对
1. 在alert.log中发现:Thu Aug 9 21:21:17 2007WARNING: inbound connection timed out (ORA-3136)2. 同时在sqlnet.ora中发现:Fatal NI connect error 12170. VERSION INFORMATION:...
Oracle10g RAC环境VoteDisk的添加、删除、备份
VD的添加1. 查看当前用户$ whoamioracle2. 查看当前VD$ crsctl query css votedisk  ...
Oracle10g RAC环境OCR的添加、删除、备份
OCR的添加1. 确认使用root用户操作# whoamiroot2. 初始化raw分区# dd if=/dev/zero of=/dev/vg01/rora_vote bs=8192 count=128003. 对OCR逻辑备份# ocrconfig -export /orabackup/rora_ocr_24. 所有节点...