我们拒绝平庸,拒绝随波逐流,拒绝墨守成规,让梦想不再流浪。

ORACLE 常用的解决办法2

上一篇 / 下一篇  2014-05-28 10:30:32 / 个人分类:甲骨文

51Testing软件测试网0E(UL}+O7v3K

第二部分、ORACLE构架体系

@W CKF$}f3`;w051Testing软件测试网9te,[J-ZGt"P

menu51Testing软件测试网DC$xEm3b+J

Z/yBhX R @J!AY9u0[Q]ORACLE的有那些数据类型
E OJvH P'r9bZ0[Q]Oracle有哪些常见关键字,不能被用于对象名
x1YUn+DX0[Q]怎么查看数据库版本51Testing软件测试网~}0p:`:| W
[Q]怎么查看数据库参数51Testing软件测试网*\N _Y:Z OL%s
[Q]怎么样查看数据库字符集51Testing软件测试网b4QhB*Ht
[Q]怎么样修改字符集
B1K Qk5|7jI0[Q]怎样建立基于函数索引
5I1Vpav~0[Q]怎么样移动表或表分区51Testing软件测试网&IMI JA {]
[Q]怎么获得当前的SCN51Testing软件测试网N*sV/sU2v
[Q]ROWID的结构与组成51Testing软件测试网 b*Z'F;zq
[Q]怎么样获取对象的DDL语句
L6HP2DL'Vj9R{0[Q]如何创建约束的索引在别的表空间上51Testing软件测试网O!R4WIJ? a+]2A6w
[Q]dbms_output提示缓冲区不够,怎么增加51Testing软件测试网*AO?\z7?U,[%ED
[Q]怎么样修改表的列名
T!t&|![ T^I0[Q]怎么样给sqlplus安装帮助
fT/w:s!Yu"Sq(^0[Q]怎么样快速下载Oracle补丁
@.a pc a9W(mb*z0[Q]如何移动数据文件
L`Q h-`0[Q]如果管理联机日志组与成员51Testing软件测试网V1jl.p ?mC
[Q]怎么样计算REDO BLOCK的大小
0c7IC%X$qsP@@/]0[Q]控制文件包含哪些基本内容
\-z5e_h?0[Q]如果发现表中有坏块,如何检索其它未坏的数据51Testing软件测试网H(FyAXq
[Q]怎么知道那些表没有建立主键51Testing软件测试网W!w&b A8b5v
[Q]我创建了数据库的所有用户,我可以删除这些用户吗
y5pU6z&H0第二部分、ORACLE构架体系51Testing软件测试网"rr~9Yy d,}C@

-? D7qk(Dz%e5y051Testing软件测试网XdA7R$D Rh,K
[Q]ORACLE的有那些数据类型
j's Ig)fL0[A]常见的数据类型有51Testing软件测试网`&Hwz,nvX$r*]
CHAR固定长度字符域,最大长度可达2000个字节51Testing软件测试网q1?B Ta[I*qlJJ
NCHAR多字节字符集的固定长度字符域,长度随字符集而定,最多为2000个字符或2000个字节
}!Q!@ S1d i$|6fy0VARCHAR2可变长度字符域,最大长度可达4000个字符
~%a2?^~pk;N,A0NVARCHAR2多字节字符集的可变长度字符域,长度随字符集而定,最多为4000个字符或4000个字节
6\ I:e8zn0DATE用于存储全部日期的固定长度(7个字节)字符域,时间作为日期的一部分存储其中。除非51Testing软件测试网6k/[bgpa"y
通过设置init.ora文件的NLS_DATE_FORMAT参数来取代日期格式,否则查询时,日期以51Testing软件测试网0Q S~lG o
DD-MON-YY格式表示,如13-APR-99表示1999.4.13
f)p.vH O@%o)FJ0Tr0NUMBER可变长度数值列,允许值为0、正数和负数。NUMBER值通常以4个字节或更少的字节存储,最多21字节
D _#B]/` x:yH0LONG可变长度字符域,最大长度可到2GB51Testing软件测试网S{3GQ p
RAW表示二进制数据的可变长度字符域,最长为2000个字节
_Z eR@[1Q0LONGRAW表示二进制数据的可变长度字符域,最长为2GB51Testing软件测试网5YUja"{Eu
MLSLABEL只用于TrustedOracle,这个数据类型每行使用2至5个字节51Testing软件测试网 `y9t|(tN7Os
BLOB二进制大对象,最大长度为4GB
"e&R+e-f2G9X"a]yR0CLOB字符大对象,最大长度为4GB
Z!AK-yS0NCLOB多字节字符集的CLOB数据类型,最大长度为4GB
(F4V"K,m n+Z0BFILE外部二进制文件,大小由操作系统决定
{hg;|~e4vdc0ROWID表示RowID的二进制数据,Oracle8RowID的数值为10个字节,在Oracle7中使用的限定
;k"?#h,]nm0RowID格式为6个字节
TfS4is1V(W0UROWID用于数据寻址的二进制数据,最大长度为4000个字节
k3h:}W\'Chw051Testing软件测试网eiohV
[Q]Oracle有哪些常见关键字,不能被用于对象名
51Testing软件测试网7m X'vi6l M{
[A]以8i版本为例,一般保留关键字不能用做对象名51Testing软件测试网QMhD-u;~:\
ACCESS ADD ALL ALTER AND ANY AS ASC AUDIT BETWEEN BY CHAR CHECK CLUSTER COLUMN COMMENT COMPRESS CONNECT CREATE CURRENT DATE DECIMAL DEFAULT DELETE DESC DISTINCT DROP ELSE EXCLUSIVE EXISTS FILE FLOAT FOR FROM GRANT GROUP HAVING IDENTIFIED IMMEDIATE IN INCREMENT INDEX INITIAL INSERT INTEGER INTERSECT INTO IS LEVEL LIKE LOCK LONG MAXEXTENTS MINUS MLSLABEL MODE MODIFY NOAUDIT NOCOMPRESS NOT NOWAIT NULL NUMBER OF OFFLINE ON ONLINE OPTION OR ORDER PCTFREE PRIOR PRIVILEGES PUBLIC RAW RENAME RESOURCE REVOKE ROW ROWID ROWNUM ROWS SELECT SESSION SET SHARE SIZE SMALLINT START SUCCESSFUL SYNONYM SYSDATE TABLE THEN TO TRIGGER UID UNION UNIQUE UPDATE USER VALIDATE VALUES VARCHAR VARCHAR2 VIEW WHENEVER WHERE WITH51Testing软件测试网#N A2hh"_
详细信息可以查看v$reserved_words视图51Testing软件测试网,P a3Ch|[5Ht

Fv;D.i7^!rhoV0[Q]怎么查看数据库版本
51Testing软件测试网/mK3MN6@7d$O;G'H
[A]select * from v$version51Testing软件测试网r RN6~;o
包含版本信息,核心版本信息,位数信息(32位或64位)等
YsG(y5ma(w!Ty0至于位数信息,在linux/unix平台上,可以通过file查看,如51Testing软件测试网#~da0}ofM1H G
file $ORACLE_HOME/bin/oracle51Testing软件测试网B5Lr p/~tS#Y b

%PX:B%r OMTJ0[Q]怎么查看数据库参数
51Testing软件测试网!FC m?-{9^
[A]show parameter 参数名
A F$^&} f0如通过show parameter spfile可以查看9i是否使用spfile文件51Testing软件测试网n-A7tn,`WD6U7l D
或者select * from v$parameter51Testing软件测试网Tf2x,DMA*F
除了这部分参数,Oracle还有大量隐含参数,可以通过如下语句查看:51Testing软件测试网Kj,D/lf/T
SELECT NAME51Testing软件测试网(P'yP'u G
,VALUE51Testing软件测试网pP7](]*hB3t$hR#{
,decode(isdefault, 'TRUE','Y','N') as "Default"
|TN`R6]0,decode(ISEM,'TRUE','Y','N') as SesMod
U2?Q;KFXu0,decode(ISYM,'IMMEDIATE', 'I',51Testing软件测试网/v4J}1Z[@uA
'DEFERRED', 'D',
Kn?B5E&^@ _0'FALSE', 'N') as SysMod51Testing软件测试网6@l6n#@2},LR
,decode(IMOD,'MODIFIED','U',
I&xIw9Uyu0'SYS_MODIFIED','S','N') as Modified51Testing软件测试网:AYc4Sk|
,decode(IADJ,'TRUE','Y','N') as Adjusted51Testing软件测试网{R/R:Q8K3`W7q
,description51Testing软件测试网l7LR GG.se
FROM ( --GV$SYSTEM_PARAMETER
:g#nKsdf U,FNxYR0SELECT x.inst_id as instance
'{Vgsx:R1}T0,x.indx+1
q:g9J#r0J:X-^o4D1t0,ksppinm as NAME51Testing软件测试网-p_4spUSA*XZY){$d x
,ksppity51Testing软件测试网l#f?;Hn;}
,ksppstvl as VALUE
S5^ Z}6IPO&K%MI0,ksppstdf as isdefault
_ z,srjk7~0,decode(bitand(ksppiflg/256,1),1,'TRUE','FALSE') as ISEM
6O2]Iu;Wo0F)c0,decode(bitand(ksppiflg/65536,3),51Testing软件测试网[@YUS}!qk6A ~
1,'IMMEDIATE',2,'DEFERRED','FALSE') as ISYM
u E\]C0,decode(bitand(ksppstvf,7),1,'MODIFIED','FALSE') as IMOD51Testing软件测试网 I Q?+` q%RCe)m8M
,decode(bitand(ksppstvf,2),2,'TRUE','FALSE') as IADJ51Testing软件测试网Bo.B\o,W2X?*Y2R
,ksppdesc as DESCRIPTION51Testing软件测试网:lqL3DHHp
FROM x$ksppi x
;]'?#w-yA![&\i0,x$ksppsv y51Testing软件测试网Dl*Q3O"J w9j w
WHERE x.indx = y.indx51Testing软件测试网mG)E0M*soA8i&RE
AND substr(ksppinm,1,1) = '_'
'f"O(P _`0AND x.inst_id = USERENV('Instance')
9iu1e3o"j;?0)
MUZi iE0ORDER BY NAME
/I7S0bCo M~-v0
m WM%o-?hw0[Q]怎么样查看数据库字符集

.U$kJ9y-AD0[A]数据库服务器字符集select * from nls_database_parameters,其来源于props$,是表示数据库的字符集。51Testing软件测试网3FM6Q XCbAN
客户端字符集环境select * from nls_instance_parameters,其来源于v$parameter,51Testing软件测试网izX}z|h
表示客户端的字符集的设置,可能是参数文件,环境变量或者是注册表51Testing软件测试网)G+J"zz8o.\\
会话字符集环境 select * from nls_session_parameters,其来源于v$nls_parameters,表示会话自己的设置,可能是会话的环境变量或者是alter session完成,如果会话没有特殊的设置,将与nls_instance_parameters一致。51Testing软件测试网/F.e8`$k7L;C.~(@#f
客户端的字符集要求与服务器一致,才能正确显示数据库的非Ascii字符。如果多个设置存在的时候,alter session>环境变量>注册表>参数文件51Testing软件测试网p/|P? Ih,e#?\2Z
字符集要求一致,但是语言设置却可以不同,语言设置建议用英文。如字符集是zhs16gbk,则nls_lang可以是American_America.zhs16gbk。
H@F;hj6q!B0
a \DNe/_0[Q]怎么样修改字符集
51Testing软件测试网4k-^%z CF2U4?C0Q
[A]8i以上版本可以通过alter database来修改字符集,但也只限于子集到超集,不建议修改props$表,将可能导致严重错误。51Testing软件测试网Z$`(KcSjG4L
Startup nomount;51Testing软件测试网4~5J8SQ*M zbJ AM
Alter database mount exclusive;51Testing软件测试网"Zx#m9qGsBp'D
Alter system enable restricted session;51Testing软件测试网V8p&l:fd OPw
Alter system set job_queue_process=0;51Testing软件测试网5QY9| bE[i Q
Alter database open;
E9xy+o dM0y0Alter database character set zhs16gbk;
gG ^4q-Sg b0
gk-MBoH0[Q]怎样建立基于函数索引

:Nq}(S/G r&M,y5e k M6h0[A]8i以上版本,确保
5T/~Ub'L2z)i0Query_rewrite_enabled=true
0}%J?OMF^K0Query_rewrite_integrity=trusted
9ig*S;L-H H0Compatible=8.1.0以上51Testing软件测试网,lJ(A(G pl"@
Create index indexname on table (function(field));51Testing软件测试网EX s} @5M|

!h%O/_ VX)l0[Q]怎么样移动表或表分区

QPa(aQO0[A]移动表的语法
l9M w%q"ks:P7JS0Alter table tablename move
O;T7M`"F+s A%}e8KX0[Tablespace new_name
CSz8W@A$B0Storage(initial 50M next 50M51Testing软件测试网&mk i2}*@7D1^[]
pctincrease 0 pctfree 10 pctused 50 initrans 2) nologging]
h@2F,cl!s6m _+d0移动分区的语法51Testing软件测试网]#[z\E TI
alter table tablename move (partition partname)51Testing软件测试网_t aFd i4}+y7oH \
[update global indexes]
r&A!JIr*A0之后之后必须重建索引
4^D]"W3A t*i R,G*yG0Alter index indexname rebuild51Testing软件测试网v a$vX/JG:l
如果表有Lob段,那么正常的Alter不能移动Lob段到别的表空间,而仅仅是移动了表段,可以采用如下的方法移动Lob段51Testing软件测试网M;k6O {&c
alter table tablename move51Testing软件测试网8?(\@ uq#c O Wf
lob(lobsegname) store as (tablespace newts);
'} rX]VR$s:n/hq E0
u.C lj!J2l0SU0[Q]怎么获得当前的SCN
51Testing软件测试网 x%k.JoZ.cX^*f8n-B
[A]9i以下版本
)n!q5S*k4S0select max(ktuxescnw*power(2,32)+ktuxescnb) from x$ktuxe;
C3]Sa(K0如果是9i以上版本,还可以通过以下语句获取
.G/p6hx{Q2u0select dbms_flashback.get_system_change_number from dual;51Testing软件测试网7d1O4yOg"E,{
51Testing软件测试网Rt"VC;|E D4?
[Q]ROWID的结构与组成
51Testing软件测试网JG#]oq"z6qB
[A]8以上版本的ROWID组成
8Ed~4a{.ae0OOOOOOFFFBBBBBBRRR51Testing软件测试网/N9M,G3a mm5E;}K
8以下ROWID组成(也叫受限Rowid)
lu4K Q IdqB3z u%N4a0BBBBBBBB.RRRR.FFFF51Testing软件测试网Zz fHFs^D5Hv
其中,O是对象ID,F是文件ID,B是块ID,R是行ID51Testing软件测试网1Q!e%t ^,RHuE qAyE
如果我们查询一个表的ROWID,根据其中块的信息,可以知道该表确切占用了多少个块,进而知道占用了多少数据空间(此数据空间不等于表的分配空间)
sGB)a)F4SaR2F0
B1f)uH7J.c$~0[Q]怎么样获取对象的DDL语句

2w{7f5c~vHoH^2G0[A]第三方工具就不说了主要说一下9i以上版本的dbms_metadata51Testing软件测试网:CI iPo;p"R/~-a;vJ+z
1、获得单个对象的DDL语句
(y0t2D(SJ\,s(K0set heading off51Testing软件测试网pf6T tm5C g
set echo off51Testing软件测试网k5L4k4@k ue6u
set feedback off51Testing软件测试网,B? _~*o!w Dc
set pages off
D*X-{|n)iu:j0set long 9000051Testing软件测试网!I s0A,Z2aw
select dbms_metadata.get_ddl('TABLE','TABLENAME','SCAME') from dual;51Testing软件测试网F^X3kfB"_4k1k ] U
如果获取整个用户的脚本,可以用如下语句
/Pox0np'W { A0select dbms_metadata.get_ddl('TABLE',u.table_name) from user_tables u;
EJZ;N't*{ f0当然,如果是索引,则需要修改相关table到index
fp D``0
D%[ ah?"J,jk)k0[Q]如何创建约束的索引在别的表空间上
y%W:L9X!O5|-f0[A]1、先创建索引,再创建约束
`[G%OJ-B02、利用如下语句创建
nYn%g k6e/V6|r2X"@0create table test
TI_(E|2lH/GR6Q0(c1 number constraint pk_c1_id primary key
q1i h0F3v-L6{0using index tablespace useridex,51Testing软件测试网6R,V-ufi(vnp]]
c2 varchar2(10)
b)f2_ C%r6x7\9[ el0) tablespace userdate;51Testing软件测试网9r/g0I8MA:O!Q A
51Testing软件测试网?{"`V9FI;f
[Q]dbms_output提示缓冲区不够,怎么增加

Dw&D V1B0t(S&Ve0[A]dbms_output.enable(20000);51Testing软件测试网O[P4JpO @emy?#a
另外,如果dbms_output的信息不能显示,51Testing软件测试网\d&^ghaNa
需要设置51Testing软件测试网@n-}#v+sY;g@t6l8r
set serveroutput on51Testing软件测试网 O"Ad4L{ju {/Q
51Testing软件测试网2P!c9y)^Yms4t
[Q]怎么样修改表的列名

a U/b7|;Bw(j0[A]9i以上版本可以采用rname命令51Testing软件测试网:_*twN!J4b-{
ALTER TABLE UserName.TabName
q8t*Uve;@0RENAME COLUMN SourceColumn TO DestColumn51Testing软件测试网$FL+pY5M
9i以下版本可以采用create table …… as select * from SourceTable的方式。
8po\ atLV's0另外,8i以上可以支持删除列了
rZObo,F6J AY0ALTER TABLE UserName.TabName
2n$e%gIJ-u0SET UNUSED (ColumnName) CASCADE CONSTRAINTS51Testing软件测试网 L6q8]2@(I?)\I7D
ALTER TABLE UserName.TabName51Testing软件测试网s$z o:F)y1P"|
DROP (ColumnName) CASCADE CONSTRAINTS
E)U#D8k2izrb2G\0
^(p$W1K5V c X Zg0[Q]怎么样给sqlplus安装帮助
51Testing软件测试网6NC2l-t Y6}|a2t#Gj
[A]SQLPLUS的帮助必须手工安装,shell脚本为$ORACLE_HOME/bin/helpins51Testing软件测试网:p2HMI H#?
在安装之前,必须先设置SYSTEM_PASS环境变量,如:51Testing软件测试网5~7M2O.o!bl g4@A*u(x
$ setenv SYSTEM_PASS SYSTEM/MANAGER51Testing软件测试网TpQu r2`*l$Y&Xj
$ helpins
$l-wk%X+i\;CQ0如果不设置该环境变量,将在运行脚本的时候提示输入环境变量
'G5y'b6q)i6z1d.h0当然,除了shell脚本,还可以利用sql脚本安装,那就不用设置环境变量了,但是,我们必须以system登录。51Testing软件测试网fK5z$u+G
$ sqlplus system/manager51Testing软件测试网 oB7W]+k&x v3_Q
SQL> @?/sqlplus/admin/help/helpbld.sql helpus.sql51Testing软件测试网AR v W a,L&@0l3S*l)|
安装之后,你就可以象如下的方法使用帮助了
(Bk ]}Nqh0SQL> help index51Testing软件测试网2w!h Z-r*v

*I5D7rVp2Auc5~mMC }0[Q]怎么样快速下载Oracle补丁

\#S0x`D0[A]我们先获得下载服务器地址,在http页面上有
+h\.Sd`y0
ftp://updates.oracle.com
njB@dtm}0然后用ftp登录,用户名与密码是metalink的用户名与密码
6B7l2PsS.ib0如我们知道了补丁号3095277 (9204的补丁集),则
4M |#R3E1sVF+f{0ftp> cd 3095277
W zp H'L9k0250 Changed directory OK.
n#`])fYU%e&y0ftp> ls51Testing软件测试网-bA8~3o6y };KjF
200 PORT command OK.
`,sL;tnD3L0150 Opening data connection for file listing.51Testing软件测试网j4T4XT cTU }U
p3095277_9204_AIX64-5L.zip51Testing软件测试网n3C9U0l J!Z|#Z6S
p3095277_9204_AIX64.zip
W#jU.{*R| V+c4|0……51Testing软件测试网 fW2I wIF] g
p3095277_9204_WINNT.zip
G^M@1q0226 Listing complete. Data connection has been closed.51Testing软件测试网X$|q4k/n;f
ftp: 208 bytes received in 0.02Seconds 13.00Kbytes/sec.
&l6G;EoQ.UN K7gZ+w0ftp>51Testing软件测试网i'@1ja$n `
知道了这个信息,我们用用flashget,网络蚂蚁就可以下载了。51Testing软件测试网mX`'^m Ll] }/{R
添加如下连接51Testing软件测试网g l9B-l cG ]Z
ftp://updates.oracle.com/3095277/p3...04_AIX64-5L.zip51Testing软件测试网-L%r |*G B
或替换后面的部分为所需要的内容
B m B W9Y9oG p"vJ ?0注意,如果是flashget,网络蚂蚁请输入认证用户名及密码,就是你的metalink的用户名与密码!51Testing软件测试网 R]\i7md5J
51Testing软件测试网Tkr,Ux(\8DA$r?
[Q]如何移动数据文件51Testing软件测试网dj z"H5~
[A]1、关闭数据库,利用os拷贝
_L6R(D"{0a.shutdown immediate关闭数据库
|DuIUN0b.在os下拷贝数据文件到新的地点
o%MQm+YV0c.Startup mount 启动到mount下
#^r7i_lg^0d.Alter database rename datafile '老文件' to '新文件';51Testing软件测试网0P:k.WF0?aF H ]
e.Alter database open; 打开数据库
kAt,X-w s02、利用Rman联机操作
sXOV$qqK] `0RMAN> sql "alter database datafile ''file name'' offline";51Testing软件测试网 L*l8~T$|m4~
RMAN> run {51Testing软件测试网'fdQ,U8J.^X-L
2> copy datafile 'old file location'51Testing软件测试网%L6ASf/N!q6N8P(a
3> to 'new file location';
0g*fh PfVX04> switch datafile ' old file location'51Testing软件测试网.pY"Ek pu$F-_
5> to datafilecopy ' new file location';51Testing软件测试网 Ec'Z!HDX2Z&F4w
6> }51Testing软件测试网0k3O;Q)H2c ] KmV
RMAN> sql "alter database datafile ''file name'' online";51Testing软件测试网2N{0zSu%P
说明:利用OS拷贝也可以联机操作,不关闭数据库,与rman的步骤一样,利用rman与利用os拷贝的原理一样,在rman中copy是拷贝数据文件,相当于OS的cp,而switch则相当于alter database rename,用来更新控制文件。
51Testing软件测试网K6|8rGnE"U+`
3.
联机(不可移动system表空间,回滚段和临时表空间中的数据文件,命令为alter tablespace )
o!BY#n`!`zM0具体步骤为:1:connect internal as sysdba;
6}%E{A IX V$WZ0alter tablespace xxxx offline(如果非归档加drop);
*\#U?bi)[.?%Ca0w9h02:用os命令移动数据文件mv or move
XN$iXXl9A9Y03:alter tablespace xxxx rename datafile 'xxxx' to 'xxxxx';51Testing软件测试网 {5o3`|4g1e!M M3q1q
4:alter tablespace xxxx online;
P)t%^+rD o{:e0

%TRti$u6Mv0
H Rd{o1WVRX.z0[Q]如果管理联机日志组与成员
HK N R/~0[A]以下是常见操作,如果在OPA/RAC下注意线程号
!F&k1x5UZ Uo0增加一个日志文件组51Testing软件测试网` [+c YxjzE ~ lf
Alter database add logfile [group n] '文件全名' size 10M;
2Wnv;{8C w7T0在这个组上增加一个成员51Testing软件测试网I/zP0lRu'L
Alter database add logfile member '文件全名' to group n;
8@!Q8],?u$^ {:_3q&~5X0在这个组上删除一个日志成员51Testing软件测试网h;\ v,f7r\y
Alter database drop logfile member '文件全名';51Testing软件测试网^)~QA|
删除整个日志组
^}6TifrV?|0Alter database drop logfile group n;
~GH M r0
7M~;wL6pa7s0[Q]怎么样计算REDO BLOCK的大小
"[~}t:s*qQWEDS0[A]计算方法为(redo size + redo wastage) / redo blocks written + 1651Testing软件测试网3`I\"[3Uw,d
具体见如下例子51Testing软件测试网*Q"aTJUv#L&c6a
SQL> select name ,value from v$sysstat where name like '%redo%';51Testing软件测试网zfb4xg5l
NAME VALUE
-o9ox+O"L&\@ X0---------------------------------------------------------------- ----------
Z4dqV'G0redo synch writes 2
s8V*_sh _0redo synch time 051Testing软件测试网cC/mS? An[%Ku3Y
redo entries 7651Testing软件测试网9\ R;TyBzy
redo size 19412
g&m0VYoDq0redo buffer allocation retries 051Testing软件测试网*AYoyD
redo wastage 5884
`.x{\Xf8].tL0redo writer latching time 0
ng3K2q/hky&w0redo writes 2251Testing软件测试网b8w%dk!G.v/\9cr
redo blocks written 51
eL'@7u2S0redo write time 051Testing软件测试网-x"FtL8]w:LP%C$b
redo log space requests 051Testing软件测试网1r Z`!D0Y-v
redo log space wait time 0
\3MK\n7I L0redo log switch interrupts 0
G1X&?*Q2|*U0redo ordering marks 051Testing软件测试网;jR:}4c W5\
SQL> select (19412+5884)/51 + 16 '"Redo black(byte)" from dual;51Testing软件测试网 _V+v7RJP`j1L.\Z
Redo black(byte)51Testing软件测试网q$Pl.fU L7b\
------------------51Testing软件测试网*?#p%oJ_
512
x{Ysz#C~n~W0
!RZzz/yt(j0[Q]控制文件包含哪些基本内容
51Testing软件测试网}y(e:x{-J]cLx
[A]控制文件主要包含如下条目,可以通过dump控制文件内容看到51Testing软件测试网 s*HxC,U a
DATABASE ENTRY51Testing软件测试网/o7o;zh/K0t
CHECKPOINT PROGRESS RECORDS51Testing软件测试网)tTR J%|eS#_qt
REDO THREAD RECORDS51Testing软件测试网/xu/F2Tm
LOG FILE RECORDS
(Psn(@9q l0DATA FILE RECORDS
6?F1tE![0TEMP FILE RECORDS51Testing软件测试网"@&v6]U/Q2j Y y#z
TABLESPACE RECORDS
4w0hvIG'G#VyS0LOG FILE HISTORY RECORDS
uTl h4A;D0OFFLINE RANGE RECORDS
5s&V9?'`z1t'gsl0ARCHIVED LOG RECORDS
(d'{}!?'}0BACKUP SET RECORDS51Testing软件测试网q ? I7`,UVq
BACKUP PIECE RECORDS51Testing软件测试网7`J#NCp V1BR
BACKUP DATAFILE RECORDS
"r6pd.TH9|7pbk~x0BACKUP LOG RECORDS
[;e7e'I^0DATAFILE COPY RECORDS51Testing软件测试网$? {VSHb&a-_
BACKUP DATAFILE CORRUPTION RECORDS51Testing软件测试网h6{3lV/]9U!V{G
DATAFILE COPY CORRUPTION RECORDS51Testing软件测试网sa^Y7P
DELETION RECORDS
\p:[*Q~JTp!{0PROXY COPY RECORDS51Testing软件测试网lk\j6E
INCARNATION RECORDS51Testing软件测试网!f]2P/`c%f
51Testing软件测试网L AL BC{
[Q]如果发现表中有坏块,如何检索其它未坏的数据
51Testing软件测试网lP6_N4rY c6D V
[A]首先需要找到坏块的ID(可以运行dbverify实现),假设为<BID>,假定文件编码为<FID>。运行下面的查询查找段名:51Testing软件测试网'{'o/|?([l
SELECT segment_name,segment_type,extent_id,block_id, blocks
&p"\9U6h]3z j0from dba_extents t51Testing软件测试网l$i:h\#o.rs!cK
where51Testing软件测试网.D4}j]e+hn8p
file_id = <FID>51Testing软件测试网(| l5L(Kw#Ui)c2P
AND <BID> between block_id and (block_id + blocks - 1)
IZ)F/G'h K&V N}0一旦找到坏段名称,若段是一个表,则最好建立一个临时表,存放好的数据。若段是索引,则删除它,再重建。
fD+o$M n$Z0create table good_table
z x}QFM1Mn0as51Testing软件测试网k Kw#{ V-i*J
select from bad_table where rowid not in51Testing软件测试网&A)lt Y*k ?9F
(select rowid51Testing软件测试网 ]Fa;^.ac%Ry Zg\!_
from bad_table where substr(rowid,10,6) = <BID> )51Testing软件测试网9~rt"Zv$R&~
在这里要注意8以前的受限ROWID与现在ROWID的差别。
bzx"a!W7^n|+{"T0还可以使用诊断事件10231
&f?-^#s+N*b5R0SQL> ALTER SYSTEM SET EVENTS '10231 trace name context forever,level 10';
u3Me:f-s+d0创建一个临时表good_table的表中除坏块的数据都检索出来51Testing软件测试网^ X9O0S#H9A
SQL>CREATE TABLE good_table as select * from bad_table;
M)t4U?x0最后关闭诊断事件
F`3G#vf&rj^0SQL> ALTER SYSTEM SET EVENTS '10231 trace name context off ';51Testing软件测试网/o5Y b"@0~5T f V
关于ROWID的结构,还可以参考dbms_rowid.rowid_create函数。

X-P N4aW8| X/v0

c"m6m1R%\5\}0[Q]怎么知道那些表没有建立主键
j5K9Q d4XQR+L0[A]一般的情况下,表的主键是必要的,没有主键的表可以说是不符合设计规范的。
T!m/] m.UDC M0SELECT table_name
F~6FU1doP8U0FROM User_tables t
fvR[`L$|0WHERE NOT EXISTS
Zy)EV*V&lG|2?0(SELECT table_name
;mo0Y5ZOT+LZ0FROM User_constraints c
O6yAQ@Hg C0WHERE constraint_type = 'P'
h?QQ)I0AND t.table_name=c.table_name)
2K"j]~&g!e8a4Ns0其它相关数据字典解释
bS!k*Cr(W,O0user_tables 表
K?cUU7G4j0user_tab_columns 表的列
x(|3B@;cH&Yif?!n0user_constraints 约束
K0Z?w al6lvo[0user_cons_columns 约束与列的关系51Testing软件测试网X,Yn])z.?
user_indexes 索引51Testing软件测试网9W xnvjNi4L
user_ind_columns 索引与列的关系
$YhjM9s)i a+Dh7e0 

*M`$Vv UX b^4H0

jyJv h(b0[Q]我创建了数据库的所有用户,我可以删除这些用户吗
$f*f"@k i N0[A]ORACLE数据库创建的时候,创建了一系列默认的用户和表空间,以下是他们的列表51Testing软件测试网cc*UU.~3I
·SYS/CHANGE_ON_INSTALL or INTERNAL51Testing软件测试网WM.j$f*| X2T~
系统用户,数据字典所有者,超级权限所有者(SYSDBA)51Testing软件测试网Qn3HWu Pj3~'f
创建脚本:?/rdbms/admin/sql.bsq and various cat*.sql
v8_:pn,s#Y1g,Q0建议创建后立即修改密码
/@k"Tro3O ]0此用户不能被删除
d lw4H+C ~ B t*D0·SYSTEM/MANAGER
-xE7MI Yo0数据库默认管理用户,拥有DBA角色权限51Testing软件测试网.|h-MFm kP^Qk
创建脚本:?/rdbms/admin/sql.bsq51Testing软件测试网.yf3{R b}\(b"?X-{
建议创建后立即修改密码51Testing软件测试网5E5izw v/_sm7N2m
此用户不能被删除
a,yD3U5N0·OUTLN/OUTLN51Testing软件测试网 ]i&y'J M6c_ @
优化计划的存储大纲用户51Testing软件测试网 x3k0nS!G ~Te(P
创建脚本:?/rdbms/admin/sql.bsq
$sbn(q*g0建议创建后立即修改密码51Testing软件测试网;w1]c1Jb$d
此用户不能被删除51Testing软件测试网5`Ie[/rL:h1_ m:F
---------------------------------------------------
_sS-hOtd HIZ0·SCOTT/TIGER, ADAMS/WOOD, JONES/STEEL, CLARK/CLOTH and BLAKE/PAPER.51Testing软件测试网|6xL4Y/M%mB9{
实验、测试用户,含有例表EMP与DEPT51Testing软件测试网!Ui)mq&o7sQt
创建脚本:?/rdbms/admin/utlsampl.sql
K/m5a(Xn_V#F0可以修改密码
kXS?k-z9|uC0用户可以被删除,在产品环境建议删除或锁定
'iO,Y'Q O.x0·HR/HR (Human Resources), OE/OE (Order Entry), SH/SH (Sales History).51Testing软件测试网-f2M}vdP0o
实验、测试用户,含有例表EMPLOYEES与DEPARTMENTS51Testing软件测试网)P`-MoTJKlB-w
创建脚本:?/demo/schema/mksample.sql51Testing软件测试网1PXgDtS
可以修改密码51Testing软件测试网iad2G9[y6_Y
用户可以被删除,在产品环境建议删除或锁定
R%avi1h E3zO/[0·DBSNMP/DBSNMP
,] vBT.e0Oracle Intelligent agent
Z6c*V"d3Z9w0创建脚本:?/rdbms/admin/catsnmp.sql, called from catalog.sql51Testing软件测试网!fo C*K/U
可以改变密码--需要放置新密码到snmp_rw.ora文件51Testing软件测试网D'|_{u4u|$n
如果不需要Intelligent Agents,可以删除51Testing软件测试网!|NGs%I\
---------------------------------------------------51Testing软件测试网#Ai_!g(K|-g0U
以下用户都是可选安装用户,如果不需要,就不需要安装
_5e&B _5V `k0·CTXSYS/CTXSYS
$nlo1z u|ZA0Oracle interMedia (ConText Cartridge)管理用户
k(l;gJ/w*W QN$N0创建脚本:?/ctx/admin/dr0csys.sql
p"o/s%d HLA(?0·TRACESVR/TRACE51Testing软件测试网S DP'?D1C6L5N
Oracle Trace server
+O| hF-byr0创建脚本:?/rdbms/admin/otrcsvr.sql
4K'Y{]OC_&U%rXU0·ORDPLUGINS/ORDPLUGINS
'Kekc$F'|M"P0Object Relational Data (ORD) User used by Time Series, etc.51Testing软件测试网*@7rd%b'ss8j }
创建脚本:?/ord/admin/ordinst.sql
/`5Sc8Pu X+A5b jT0·ORDSYS/ORDSYS
JL1O6o4M+acXm0Object Relational Data (ORD) User used by Time Series, etc
H_Q)fH C0创建脚本:?/ord/admin/ordinst.sql
(NV%z$qW:|0·DSSYS/DSSYS
Sj$G)x!e%DB8u;Q$l0Oracle Dynamic Services and Syndication Server51Testing软件测试网Q:Ob,l'P
创建脚本:?/ds/sql/dssys_init.sql51Testing软件测试网)`2x'Xw.y1mI
·MDSYS/MDSYS
[A$U d*E+s N$t0Oracle Spatial administrator user
!X%J T [4Z8f0创建脚本:?/ord/admin/ordinst.sql51Testing软件测试网n+{X9z vY
·AURORA$ORB$UNAUTHENTICATED/INVALID51Testing软件测试网(d`"{;UK5l5X
Used for users who do not authenticate in Aurora/ORB
v2lF+x QE3A%Je0创建脚本:?/javavm/install/init_orb.sql called from ?/javavm/install/initjvm.sql
1h K]R;{E0·PERFSTAT/PERFSTAT
/OS-_N9}B0Oracle Statistics Package (STATSPACK) that supersedes UTLBSTAT/UTLESTAT51Testing软件测试网8C6v+ot0zo7C!r
创建脚本:?/rdbms/admin/statscre.sql

[9Z zY'Y!N(Q,J'K0

.M7JCZEY-e3Z0第三部分、备份与恢复51Testing软件测试网,}O/_.o1ukSm.o#k

2MlK5b/dn ]Y0menu

7rU)XhJvr0

:R'De_WUJ0[Q]如何开启/关闭归档
;~.js|/L2e)p0[Q]怎样设置定时归档51Testing软件测试网8q(b8X?']Ar9m$X
[Q]不同版本怎么导出/导入51Testing软件测试网4j i/M$T,E+Z;a$t
[Q]不同的字符集之前怎么导数据51Testing软件测试网 @w(Q)jV#R;Db
[Q]怎么样备份控制文件
w&U4{7Y*i o3K&[0[Q]控制文件损坏如何恢复51Testing软件测试网 L5@Z1[;z\
[Q]怎么样热备份一个表空间
K#_%zG$qhY0[Q]怎么快速得到整个数据库的热备脚本51Testing软件测试网 i6Di,X(t*H^O
[Q]丢失一个数据文件,但是没有备份,怎么样打开数据库
_&Pf]r0[Q]丢失一个数据文件,没有备份但是有该数据文件创建以来的归档怎么恢复
Hi9OI+\2X@ x0[Q]联机日志损坏如何恢复
y8x2z OWm R0[Q]怎么样在恢复的时候移动数据文件,恢复到别的地点
"q!u3P;ML;`0操作系统重装,如何恢复数据库?51Testing软件测试网5|$cD+E4UO-c [
[Q]执行exec dbms_logmnr_d.build('Logminer.ora','file directory'),提示下标超界,怎么办
,X)~Kp[!k0[Q]执行execute dbms_logmnr.start_logmnr(DictFileName=>'DictFileName')提示ORA-01843:无效的月份,这个是什么原因51Testing软件测试网M+A;a3P:A-J
[Q]怎么样创建RMAN恢复目录51Testing软件测试网x(Hb*?Vi&WM
[Q]Rman的format格式中的%s类似的东西代表什么意义51Testing软件测试网EP8YD/s*}-A/N
第三部分、备份与恢复
;H\[:wr:\051Testing软件测试网 E$~?)ZN x
[Q]如何开启/关闭归档51Testing软件测试网 ~g2yzUB"jk
[A]如果开启归档,请保证log_archive_start=true开启自动归档,否则只能手工归档,如果是关闭了归档,则设置该参数为false
/u~ G)m]8U5Db0注意:如果是OPS/RAC环境,需要先把parallel_server = true注释掉,然后执行如下步骤,最后用这个参数重新启动
:QT5Yh3d Mc01、开启归档51Testing软件测试网*^8saW/SS B2C,?
a. 关闭数据库shutdown immediate51Testing软件测试网 E| WL bx.V2U
b. startup mount
%oEN3N.o0c. alter database archivelog51Testing软件测试网(|Z0l XD)Cr
d. alter database opne51Testing软件测试网-@{9}N!pM6K&{0}2@6y
2、禁止归档
rB?d[/L(QX0a. 关闭数据库shutdown immediate51Testing软件测试网3OE'jT,D,dL
b. startup mount
L.d0Yed/u;]4n0c. alter database noarchivelog
IoW!T1`0d. alter database open51Testing软件测试网/Pa!GJ7Zf ^
归档信息可以通过如下语句查看
3sF9u&Pt.s&yg+Vd0SQL> archive log list
2z\X b i3K [4{0Database log mode Archive Mode
HrB {bc0Automatic archival Enabled51Testing软件测试网 ` Jf0Q9P z%{
Archive destination E:\oracle\ora92\database\archive
~A ilW)blx0Oldest online log sequence 13151Testing软件测试网/n{qv5r\%sy
Next log sequence to archive 133
6B p3LT Z2Q"b0Current log sequence 133
9? w6_o FE9T%n051Testing软件测试网wq @scg+h
[Q]怎样设置定时归档51Testing软件测试网[U.["w%vvz C
[A]9i以上版本,保证归档的最小间隔不超过n秒
rK y%?'pU:Q%ZH9e1k0设置Archive_lag_target = n51Testing软件测试网 iCT;m`1l)|
单位:秒 范围:0~720051Testing软件测试网%zVOL%x%^
51Testing软件测试网3[w*_k2QsWK6@4dW
[Q]不同版本怎么导出/导入
d gh9w"wKY6z0[A]导出用低版本,导入用当前版本
(y!D!Fe9o Me ]0如果版本跨越太大,需要用到中间版本过渡
@%t#[B(A/hy1w3n0
m+F&b"O k0[Q]不同的字符集之前怎么导数据
J6F W3H$Aw0X0[A]a.前条件是保证导出/导入符合其他字符集标准,如客户环境与数据库字符集一致。51Testing软件测试网 e\"ft7Fp
b.修改dmp文件的2、3字节为目标数据库的字符集,注意要换成十六进制。51Testing软件测试网&U-wf8v5aQP+\+Q
参考函数(以下函数中的ID是十进制的):51Testing软件测试网gxXl(u2~8jo(r
nls_charset_name 根据字符集ID获得字符集名称51Testing软件测试网]&Z7d)A7b0{
nls_charset_id 根据字符集名称获得字符集ID51Testing软件测试网&W$fy+J/q6k?,@/L

}e%Sh5t N+o)QQpI0[Q]怎么样备份控制文件51Testing软件测试网;| lvhN+f&lAI
[A]再线备份为一个二进制的文件51Testing软件测试网/V;c1PD g]Y
alter database backup controlfile to '$BACKUP_DEPT/controlfile.000' [reuse];
,]`1P9L$gU0备份为文本文件方式51Testing软件测试网L*J#y)w:Hon,M
alter database backup controlfile to trace [resetlogs|noresetlogs];51Testing软件测试网swQ0H:y

s*w!F1Q y| B#bK5e0[Q]控制文件损坏如何恢复51Testing软件测试网 R ?6}f"u|6r,w
[A]1、如果是损坏单个控制文件51Testing软件测试网't6Q{Xhw1C,}%v\8@-X7LO
只需要关闭数据库,拷贝一个好的数据文件覆盖掉坏的数据文件即可
s&@\ ziQbw0或者是修改init.ora文件的相关部分
:@QnL7eaZ02、如果是损失全部控制文件,则需要创建控制文件或从备份恢复
x(d`t}F!O,~]0创建控制文件的脚本可以通过alter database backup controlfile to trace获取。
Y+K G P.l051Testing软件测试网+V@!JX8Of!x C(f
[Q]怎么样热备份一个表空间51Testing软件测试网?)m:] F5L
[A]Alter tablespace 名称 begin backup;51Testing软件测试网D lUAM/JH(MB
host cp 这个表空间的数据文件 目的地;51Testing软件测试网 [.E5qH|+V
Alter tablespace 名称 end backup;51Testing软件测试网2AIRm"F7q
如果是备份多个表空间或整个数据库,只需要一个一个表空间的操作下来就可以了。51Testing软件测试网3F/N,oX,G![0X

;E6Y;U-Sl!zV I0[Q]怎么快速得到整个数据库的热备脚本51Testing软件测试网/Iku}.nr
[A]可以写一段类似的脚本51Testing软件测试网Sm&km#KzTe2v
SQL>set serveroutput on51Testing软件测试网$w~4~J!m
begin
@+X HX`iC#kx/|:K L0dbms_output.enable(10000);51Testing软件测试网ZzI%|X0^q
for bk_ts in (select t.ts#,t.name from v$tablespace t,v$datafile d where t.ts#=d.ts#) loop
'guQC.Mk6m!h`0s;|0dbms_output.put_line('--'||bk_ts.name);51Testing软件测试网-? a`W,WE+M6I
dbms_output.put_line('alter tablespace '||bk_ts.name||' begin backup;');
/n/G4W-l7H0for bk_file in (select file#,name from v$datafile where ts#=bk_ts.ts#) loop
gh,lXb{0dbms_output.put_line('host cp '||bk_file.name||' $BACKUP_DEPT/');
5SMDU2v,C(Q0end loop;
*j3pM#uMl8e0M4b0dbms_output.put_line('alter tablespace '||bk_ts.name||' end backup;');51Testing软件测试网Q:N%_i,e4n
end loop;
9^U6zk:uB@!i Q0end;
.G1z"P hO8P'x0/
0vX@h^A051Testing软件测试网s8EK9Ly
[Q]丢失一个数据文件,但是没有备份,怎么样打开数据库51Testing软件测试网}3J[5H2c7N(Ga"U
[A]如果没有备份只能是删除这个数据文件了,会导致相应的数据丢失。
%S2aY5Yypf)N0SQL>startup mount51Testing软件测试网4wZR2v&Dq
--ARCHIVELOG模式命令
7f ^0? y+L gEX0SQL>Alter database datafile 'file name' offline;51Testing软件测试网 iM5zX)wMo1[
--NOARCHIVELOG模式命令51Testing软件测试网2?-[i!s"x0e N
SQL>Alter database datafile 'file name' offline drop;
"~j0?q:N0SQLl>Alter database open;
:CkwvoL6x_0注意:该数据文件不能是系统数据文件51Testing软件测试网*\5I G k#k I8w,|2]Q

sD8kOC-zxuKT!R6B0[Q]丢失一个数据文件,没有备份但是有该数据文件创建以来的归档怎么恢复
3`^Fe5?%\!UB/R{0[A]保证如下条件
b:h9Fg"F5Q}`"K;|1k0a. 不能是系统数据文件
3i+I&KAEeB0f0b. 不能丢失控制文件
.j;oB Tp)x S~&\t0如果满足以上条件,则
fR5@7d6@6ml"``&A0SQL>startup mount51Testing软件测试网z.dg4k-uQ
SQL>Alter database create datafile 'file name' as 'file name' size ... reuse;
f4p(I`$u%H~3C0SQL>recover datafile n; -文件号
E2^Mye9I[(a%P$y'f0或者
&@(Dx&j R0SQL>recover datafile 'file name';51Testing软件测试网;@)p&j ^(N
或者51Testing软件测试网.F&T6Ih Ohd0x
SQL>recover database;51Testing软件测试网["q4b.G"Oc?]T
SQL>Alter database open;51Testing软件测试网AvM.C7IH['f

:}!r!G6kC$R~3l9P0[Q]联机日志损坏如何恢复51Testing软件测试网,bcHX L'F
[A]1、如果是非当前日志而且归档,可以使用51Testing软件测试网og+n:Z N#r?K!p0t
Alter database clear logfile group n来创建一个新的日志文件51Testing软件测试网JU j"y"n#W;|Ux
如果该日志还没有归档,则需要用51Testing软件测试网2S8g Q'?T
Alter database clear unarchived logfile group n
-K[1Ud$BC u02、如果是当前日志损坏,一般不能clear,则可能意味着丢失数据
-TlI7q_'I NePBp4q0如果有备份,可以采用备份进行不完全恢复
Tt _"fc$dJ ]2ad0如果没有备份,可能只能用_allow_resetlogs_corruption=true来进行强制恢复了,但是,这样的方法是不建议的,最好在有Oracle support的指导下进行。51Testing软件测试网4@+\Pf,P)Z,axhg%Hx
如果不是current and active 日志坏了,仅是 inactive 坏了,则 clear log51Testing软件测试网(dI]Q Yc L,G
startup mount
b.G0u+E/^4w C0alter database clear logfile '...';
N {kN1mW\0否则:
&V5xuB\~B?0做下面的步骤前先备份您的数据库!!!!!51Testing软件测试网FJm\;i/FJ
_ALLOW_RESETLOGS_CORRUPTION = true51Testing软件测试网-nW i$o!}X)]4f \
statup mount
,b:KtS?0recover database using backup controlfile until cancel;
M^$v;a:lcOq6d0cancel51Testing软件测试网-IwW-rw.U
alter database open resetlogs; ----- maybe error ,not serious51Testing软件测试网3~-rc,V.O"?cn$C
shutdown
i wV [iho v,E@!R0去掉该参数_ALLOW_RESETLOGS_CORRUPTION
k!yO5h)W@-x.Z0startup
$hE}2{ @'nc0
/W7a8d+J7^;O0[Q]怎么样在恢复的时候移动数据文件,恢复到别的地点51Testing软件测试网EmdF1M
[A]给一个RMAN的例子
`$g.xS8P_#H2L:`I0run {
h+~t a-l:SGEZv ?0set until time 'Jul 01 1999 00:05:00';
;D&P,{4H7^ \0m0allocate channel d1 type disk;
,_$D+]fQiP W"De-g0set newname for datafile '/u04/oracle/prod/sys1prod.dbf'51Testing软件测试网WINw \m
to '/u02/oracle/prod/sys1prod.dbf';51Testing软件测试网c%|(G5_)v&Pf.Q
set newname for datafile '/u04/oracle/prod/usr1prod.dbf'51Testing软件测试网1@g5CkBp+AO
to '/u02/oracle/prod/usr1prod.dbf';51Testing软件测试网O*J q^+S
set newname for datafile '/u04/oracle/prod/tmp1prod.dbf'
;_A)pT9{U,A0to '/u02/oracle/prod/tmp1prod.dbf';
` O"h.@Ag0restore controlfile to '/u02/oracle/prod/ctl1prod.ora';
6f%`T!F0B/UTr0replicate controlfile from '/u02/oracle/prod/ctl1prod.ora';51Testing软件测试网ZWFHP
restore database;51Testing软件测试网hv{"l-yD
sql "alter database mount";
._vD%l Z0switch datafile all;
%d\8~%[/p4w8o%O0recover database;
j#iteD'`E^HW0sql "alter database open resetlogs";51Testing软件测试网A7E:})QQo-|F
release channel d1;51Testing软件测试网2k)Ta&`Q2H%q
}

Gre Ci8K7J B I0

C1t7l3g6^1lf9`0[Q]操作系统重装,如何恢复数据库?
\h([gj*VF4k0
[A]两种方法
q{|/s.g+Zj#?X}"j0?o0首先都是需要安装Oracle软件,最好按照原来的目录结构51Testing软件测试网J4g+F0Ap]0~'kkx
1.把你的ORACLE文件全部COPY到另外一个分区51Testing软件测试网b8g4T Kq9g |#y Sb
再安装ORACLE,按以前的所有的配置安装(SID,服务名,字符集)目录完全一致,安装后停掉所有ORACLE相关的服务,再把备份的文件COPY回来,重新启动服务,一般就OK了51Testing软件测试网 D1Dzl"N$}o
2.你可以使用oradim创建一个实例,把所有文件恢复到原来的位置,就可以启动数据库了51Testing软件测试网P8D8u+JW T? Ae9d
这种方式省去了建库的过程

1a;~+U&['O+c[A0

}p/]0Ki x.iv0方法:51Testing软件测试网4a-r7OGN_
1。安装ORACLE软件
'aGJ9_\%Y8M02。运行DBCA,创建数据库,位置什么的随便,只要SID,DBNAME,CHARACTERSET相同就得,到最后一步选保存为脚本,不运行建库,保存退出。51Testing软件测试网'QhP6R3~6{'rsY
3。打开建库脚本(。BAT),手工运行语句(例子):
(^cCBXm#?0mkdir E:\oracle\admin\everac\bdump
#IVHc:q2O2[0mkdir E:\oracle\admin\everac\cdump
&{M&g Ev(M xHk0Q0mkdir E:\oracle\admin\everac\create
,~%w5KVjc1Px0mkdir E:\oracle\admin\everac\pfile
X"O7kCn(]"_'{0mkdir E:\oracle\admin\everac\udump51Testing软件测试网x y.V0B;K
mkdir v:\database
#q2foHJ {&R)B+X0mkdir v:\oradata\everac
oE-t Ym,@0set ORACLE_SID=everac151Testing软件测试网V*}%{I1ERj] z/[*f
E:\oracle\ora92\bin\oradim.exe -new -sid EVERAC1 -startmode m
k~&G.[:jo#{D0E:\oracle\ora92\bin\oradim.exe -edit -sid EVERAC1 -startmode a51Testing软件测试网 xzi QM
E:\oracle\ora92\bin\orapwd.exe file=E:\oracle\ora92\database\PWDeverac1.ora password=change_on_install51Testing软件测试网 t0} a B$P&MC3H it
4。可以联库,打开数据库。-----OVER
:_)I%b o8w:z0 
51Testing软件测试网!`4|5au,zk

51Testing软件测试网2\|?9s8N ]'w

[Q]怎么样在恢复的时候移动数据文件,恢复到别的地点51Testing软件测试网N5`,j3a'y$mq4l#gyn
[A]给一个RMAN的例子
o4H1A'vl^0run {
J4i/u,Q:S0set until time 'Jul 01 1999 00:05:00';
)ct]uN(ql#}+j0allocate channel d1 type disk;
?IX9z7c u*dh o0set newname for datafile '/u04/oracle/prod/sys1prod.dbf'51Testing软件测试网%WZg9I]3mc4b
to '/u02/oracle/prod/sys1prod.dbf';
`!r3E/Oj!H E#FU0set newname for datafile '/u04/oracle/prod/usr1prod.dbf'
%ekCt?/y4^-A)N0to '/u02/oracle/prod/usr1prod.dbf';51Testing软件测试网GFD*H3P{
set newname for datafile '/u04/oracle/prod/tmp1prod.dbf'51Testing软件测试网S/~0g C[1d0_ [4r-e N3o
to '/u02/oracle/prod/tmp1prod.dbf';
$zm;Za&o~I0restore controlfile to '/u02/oracle/prod/ctl1prod.ora';51Testing软件测试网)C.m3I#[o Q P)m%[
replicate controlfile from '/u02/oracle/prod/ctl1prod.ora';51Testing软件测试网X;u@5Ud(i
restore database;
&i&t2X(K I{@ dXB0sql "alter database mount";51Testing软件测试网C#h i bG
switch datafile all;
w.jh+C$Ij/Oww#B0recover database;
8wp-A7VKrd0sql "alter database open resetlogs";51Testing软件测试网K'Z2SZ%zEP9h ]U
release channel d1;
y e5{ [7[ g5\n0}
,O'fBP1\k#Wy0
~5m?P$K G0[Q]执行exec dbms_logmnr_d.build('Logminer.ora','file directory'),提示下标超界,怎么办51Testing软件测试网0x,kh2TOp
[A]完整错误信息如下,
$ABQ#U TPk+sN0SQL> exec dbms_logmnr_d.build('Logminer.ora','file directory')51Testing软件测试网(q.~;fA ~ E
BEGIN dbms_logmnr_d.build('Logminer.ora','file directory'); END;
7Z,{^cE W0_f0*
+PSz)V Mr_h}0ERROR 位于第 1 行:51Testing软件测试网#oG/b.zT6pf
ORA-06532: 下标超出限制51Testing软件测试网dh R:@nt._1K ~f/om
ORA-06512: 在"SYS.DBMS_LOGMNR_D", line 79351Testing软件测试网&@IUl lJy
ORA-06512: 在line 1
!@&xj(z-A4\#IA0解决办法为:51Testing软件测试网lK5nK@va
1.编辑位于"$ORACLE_HOME/rdbms/admin"目录下的文件"dbmslmd.sql"
N,W4F1iO&`e0J0改变行:51Testing软件测试网W8N9XK ]*T
TYPE col_desc_array IS VARRAY(513) OF col_description;
4wt:tVy;Zln[0
G&i$N0H6}p0TYPE col_desc_array IS VARRAY(700) OF col_description;51Testing软件测试网)EqDe&Q;rn
并保存文件51Testing软件测试网yxG0R2^_5T.[+v
2. 运行改变后的脚本51Testing软件测试网,c+g zG;}G
SQLPLUS> Connect internal51Testing软件测试网4v+a9p JQNU6fFn
SQLPLUS> @$ORACLE_HOME/rdbms/admin/dbmslmd.sql51Testing软件测试网%E0TNB"}-Vy:W9N_
3.重新编译该包
K1p8hh+If0SQLPLUS> alter package DBMS_LOGMNR_D compile body;51Testing软件测试网ad1|Y%Z^+P0a
51Testing软件测试网%h?iV3VIR!j
[Q]执行execute dbms_logmnr.start_logmnr(DictFileName=>'DictFileName')提示ORA-01843:无效的月份,这个是什么原因51Testing软件测试网}:v)hW {1Hh\
[A]我们分析start_logmnr包
{ E.i,e-\0PROCEDURE start_logmnr(51Testing软件测试网4GM0j]4k&v
startScn IN NUMBER default 0 ,
p-~6f8X2h?0endScn IN NUMBER default 0,
6tL:?GJ~0startTime IN DATE default TO_DATE('01-jan-1988','DD-MON-YYYY'),51Testing软件测试网|9SI5l9qI i&K q
endTime IN DATE default TO_DATE('01-jan-2988','DD-MON-YYYY'),51Testing软件测试网m#S'D~1Tz DUML
DictFileName IN VARCHAR2 default '',51Testing软件测试网 S J,X2~ ~ L(C8@
Options IN BINARY_INTEGER default 0 );
/F0HP1X~,v0可以知道,如果TO_DATE('01-jan-1988','DD-MON-YYYY')失败,将导致以上错误51Testing软件测试网u*QA.h}Z3rKz'n
所以解决办法可以为51Testing软件测试网'L%DeV!C] XZO%K
1、Alter session set NLS_LANGUAGE=American51Testing软件测试网 G f6f7er{(l
2、用类似如下的方法执行
9u+m#J+z8M'PQ)i_0execute dbms_logmnr.start_logmnr (DictFileName=> 'f:\temp2\TESTDICT.ora', starttime => TO_DATE(
v T5W(s PU \p1DP#e0'01-01-1988','DD-MM-YYYY'), endTime=>TO_DATE('01-01-2988','DD-MM-YYYY'));
51Testing软件测试网!}.EFT"t A S

51Testing软件测试网HE a/hoM5j

[Q]怎么样创建RMAN恢复目录51Testing软件测试网!Y.U(IB,b6]
[A]首先,创建一个数据库用户,一般都是RMAN,并给予recovery_catalog_owner角色权限51Testing软件测试网 Cqc4|7VB
sqlplus sys
G*vJBi0SQL> create user rman identified by rman;51Testing软件测试网-q lL'fz!h!p
SQL> alter user rman default tablespace tools temporary tablespace temp;51Testing软件测试网9We5o1G1AweW;xW,^
SQL> alter user rman quota unlimited on tools;51Testing软件测试网V&n8~AERI
SQL> grant connect, resource, recovery_catalog_owner to rman;51Testing软件测试网`1i+XhS3h!os b
SQL> exit;
U5Yr;]2[E!R0然后,用这个用户登录,创建恢复目录51Testing软件测试网/?N-QWof }~*mx9V
rman catalog rman/rman
S3F:oDJ0RMAN> create catalog tablespace tools;
cu8R G-LM3TM$U9OC0RMAN> exit;51Testing软件测试网"e @:W+x+BsA3q
最后,你可以在恢复目录注册目标数据库了51Testing软件测试网{&Q9h1aM0V:r:w'O
rman catalog rman/rman target backdba/backdba
M_8kw'o2f;w0RMAN> register database;51Testing软件测试网j#u[V;}%@#uy6~:D
 
51Testing软件测试网/B8~N;_8kP9`&j)U

!l?1c:C8{ t0[Q]Rman的format格式中的%s类似的东西代表什么意义51Testing软件测试网DN X2zu'Lr
[A]可以参考如下
w.]V G/U!N0%c 备份片的拷贝数51Testing软件测试网#u6Q;ag!mR BB
%d 数据库名称
:\3|E ~BC _8Up0%D 位于该月中的第几天 (DD)51Testing软件测试网dfs0h0qjL
%M 位于该年中的第几月 (MM)51Testing软件测试网gdK^s7t9m eR
%F 一个基于DBID唯一的名称,这个格式的形式为c-IIIIIIIIII-YYYYMMDD-QQ,其中IIIIIIIIII为该数据库的DBID,YYYYMMDD为日期,QQ是一个1-256的序列
DPM8~gr(?P(YC0%n 数据库名称,向右填补到最大八个字符
/ZsP9P5_W AD0%u 一个八个字符的名称代表备份集与创建时间51Testing软件测试网A_&dFZ9YWU
%p 该备份集中的备份片号,从1开始到创建的文件数51Testing软件测试网Eo&?q*oaFJ
%U 一个唯一的文件名,代表%u_%p_%c
sy0V"wO0r p0%s 备份集的号51Testing软件测试网 u*X0f?Jn
%t 备份集时间戳51Testing软件测试网 ?2zT)i8tY(h
%T 年月日格式(YYYYMMDD)
#t.\)SX3a3B.LBh0E0 
51Testing软件测试网s6XS a4[ siL


TAG:

 

评分:0

我来说两句

日历

« 2024-04-11  
 123456
78910111213
14151617181920
21222324252627
282930    

数据统计

  • 访问量: 109081
  • 日志数: 89
  • 图片数: 1
  • 文件数: 15
  • 建立时间: 2013-03-01
  • 更新时间: 2018-08-23

RSS订阅

Open Toolbar