a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 202|回复: 2

[其他] Oracle认证:Oracle数据库开发的经验积累(一)

[复制链接]
发表于 2012-8-4 13:41:06 | 显示全部楼层 |阅读模式
pbvm70.dll pbdwe70.dll Pbo7370.dll PBO8470.DLL pbodb70.dll libjcc.dll
: C% d3 Q; Z% c: E' s% T; r  2 L; v4 U8 z0 J, k+ G2 \
  Oracle的客户端不安装让pb连上,我记得以前有帖子的,你可以搜索一下。
/ m( k* [$ g5 N5 z  具体步骤。+ S0 k  t, ?2 B- g9 C* Q0 q
  (1).先在某机器上安装好客户端(最好安装在c盘);
; y" m) K' n* q/ y  (2).复制此客户端oracle目录下的所有文件作为独立的oracle安装文件;7 A2 h8 d) C! A; X' w. X1 V
  (3).搜索注册表,找到 HKey_Local_machine\software\oracle,把此项目及分支全部导出。
( J. D8 R, w+ |& w4 Z+ K  (4).打包好你的pb程序,并独立打包好oracle客户端和注册表导出文件。1 V) v8 B2 n' S0 r7 u/ I: r8 w" q
  (5).到干净的客户端,解开两个包,导入注册表文件,然后加入路径支持:6 I, q: U: n& V
  path=%path%;"c:\Ora817\bin"
) {4 v% Q0 I% Q6 ^; z1 ]  这样处理,应该没有问题,因为我就是这样快速处理了几十个机器。
$ O* |1 B" _5 [8 g) U, v+ C  $ j, G# ^( t$ o8 }
  若不想搞注册表,你可以在程序中自己写注册表,构成Oracle客户端必要的注册表支持,至于路径,手工添加应该不难。2 ?! U- o4 o! a' ^3 ]& j: l
  
  g" J& U& ]1 R9 O  至于Oracle客户端那些文件不需要,这个不好说,你可以把那些bin目录下的所有exe删除,Oracle Document删除(7x兆)
/ U  n: \2 w1 C  3 }8 a- @- E  z6 b  |
  至于定义Oracle服务,找到 Ora817\net80\admin\TnsName.ora,参照格式,程序中生成一个也不麻烦。
% g* d! y$ W! f5 V  " D( G$ x$ T6 P. G
  =======================================================) b/ I# y8 _$ P* J
  2、在ORACLE中返回游标结果集
. d1 t6 |' k, D: N1 Z$ [7 }0 {9 E' K* J  7 x5 N1 Q" R3 k! G
  你需要写到一个包中:9 q4 O! ?( C% z! `- I, u
  create or replace package pag_cs_power as/ s# h$ v, j% Y5 x
  6 I8 c3 t$ G# y1 a* D  i/ D
  type c_Type is ref cursor;
" c0 I7 [/ [- U, `  # H  b% x' o7 u9 M1 }: o
  FUNCTION FUN_CS_GETDICTLIST(
7 y- @$ a2 i! d& ?2 T2 V* X) w6 w2 R# U  v_DictIndex in varchar2) return c_Type;) [& t' O3 c5 W+ \8 ^2 v1 E8 w
  
2 Y& }* P9 q& |; n+ e. p  end pag_cs_power;
; f9 y% z6 x1 t# |/ B  
9 A. d+ m5 S7 O( q  函数代码:8 f" s$ O/ g$ r% w! _  s9 a! q
  " Z) C0 y) Z# V+ f  D9 j* Z
  FUNCTION FUN_CS_GETDICTLIST(
. _8 O( P! w/ g' ~. h  v_DictIndex in varchar2) return c_Type/ d4 I9 d: a9 f; h; [' N4 C& }3 o
  as
- K7 |. r0 K+ ?, N! m8 w  c_cursor      c_Type;; `! k/ D- @9 N) l: \* O6 q" T% B
  begin* z" E9 H+ M  M7 M4 i# t
  open c_cursor for6 k+ V5 }$ x/ M3 j" b- z
  select DICTID,DICTNAME FROM SYS_DICT WHERE DICTINDEX = v_DictIndex;) e/ I# H( u& L
  return c_cursor;
9 b- O. t& \+ Q+ b  end FUN_CS_GETDICTLIST;
: u$ E/ Z( p* ~5 F$ m  ----------------------------------------------------------------------3 O9 N* s2 j6 \5 u
  3、P4机器安装ORACLE! e5 Y  [( ]4 m- t
  : O5 z8 A& V2 w
  (1)、将ORACLE安装软件拷贝到硬盘。) `6 t6 l5 D% y% c: t6 b
  (2)、将 硬盘目录文件\stage\Components\oracle.swd.jre\1.1.7.30/1
8 V  o2 R- |- M, ^9 o+ g0 G7 G7 d  \DataFiles\Expanded\jre\win32\bin\symcjit.dll的文件改名为symcjit.old+ x: x6 H1 b2 i
  (3).再运行SETUP.exe 文件进行安装。# S1 p7 C$ t& o# |6 m% Q* K$ `! l
  -----------------------------------------------------------------------
  c0 G: @/ I1 V' h2 P  4、单引号的插入问题
, d0 _$ ]. w  g) \  8 m1 F) W1 H: S+ H
  SQL> insert into a values('i''m good');       --两个''可以表示一个'
) n% S7 D6 Q( Q4 Y% r  Z: H1 T  
, O, E( I3 U6 S* x  SQL> insert into a values('i'||chr(39)||'m good'); --chr(39)代表字符'2 Z1 M7 v% Y5 t2 h' T
  6 ~: x. R2 Q0 o- A2 L
  SQL> insert into a values('a'||'&'||'b');
) f5 F- U3 X& }5 ]    i; Z7 F' f7 P
  -----------------------------------------------------------------------
7 y8 q# W) C" t$ `, z5 M 
回复

使用道具 举报

 楼主| 发表于 2012-8-4 13:41:07 | 显示全部楼层

Oracle认证:Oracle数据库开发的经验积累(一)

 5、全数据库的导入与导出
! a; e) J  s- K0 }' H; j  
2 ]7 n/ R2 p8 Z  exp username/password full=y file=yourdata.dmp grants=y rows=y3 J9 L# K! p) j+ d
  imp username/password full=y ignore=y file=yourdata.dmp grants=y: T, Y8 M: X- Q
    p( s, S, z$ n0 q( E5 C3 V( I. I  E
  6、exp与imp的具体用法
8 c! Y, T2 U3 D4 F% w) ?  $ T( K4 T; Z" m) D
  exp username/password@mzbs_61 full=y file=yourdata.dmp grants=y rows=y" _: q+ D% l$ H5 `
  imp username/password full=y ignore=y file=yourdata.dmp grants=y
. t! e, }( u4 a; z, t2 D, i1 A  
0 \3 [5 h! h5 A  _+ ]  exp mzbs/mzbs@mzbs_61 file = c:\zzzzzzz.dmp grants = y rows = y
! }  d2 x% ]+ ~) X' b2 a8 R  imp mzbs/mzbs@mzbs_61 file = c:\zzzzzzz.dmp grants = y ignore=y FULL=Y, \+ d: `3 J( d7 B5 q  s$ `: q
  
/ m6 B! g. @7 E. U- |% c( O4 n& s  (1)
2 p, N( ^! ~; {  , n* k# o% v& T( G
  exp参数:! U: }# |& H& ]8 @7 @4 V
  关键字  说明(默认)( V/ d& T& e8 I9 H; u! S) @& H
  ----------------------------------------------
! j. [* C- l/ I  USERID  用户名/口令
9 c% P" E- I% K7 h: h- d  FULL  导出整个文件 (N)
$ |, F( G: P  V; j8 x  BUFFER  数据缓冲区的大小4 I* d0 \+ N2 C
  OWNER  所有者用户名列表6 ?0 V4 ^& S% }2 J, t1 r! Q
  FILE  输出文件 (EXPDAT.DMP), ?1 k1 U8 i, V! C2 f
  TABLES  表名列表7 r5 S( O+ H& l  f4 I0 W) m0 q8 G1 ~
  COMPRESS 导入一个范围 (Y)
+ E- X/ I: s' m2 T8 q  RECORDLENGTH IO 记录的长度, v& g: U* c% `. A! j/ y# t2 `+ S
  GRANTS  导出权限 (Y), e* ?7 A0 H  {' n2 N
  INCTYPE  增量导出类型4 `5 F' f% D9 k0 ^
  INDEXES  导出索引 (Y)
; |' R1 ?: n  c8 l8 G  RECORD  跟踪增量导出 (Y)
4 p% u" M# D0 Y9 Q' R' ]  ROWS  导出数据行 (Y)7 f7 {) l% ~$ M. Z9 Q6 u" l. v
  PARFILE  参数文件名! O" H9 Q, |2 d, b5 J* K
  CONSTRAINTS 导出限制 (Y): b5 F8 ^' @# I" D# e
  CONSISTENT 交叉表一致性$ ]* o/ v3 I* D" s0 e
  LOG  屏幕输出的日志文件% p& Y  u7 Q. t& m, a
  STATISTICS 分析对象 (ESTIMATE)
) [" k/ |, Z/ ?, t) p! m  DIRECT  直接路径 (N)( m, m4 b% f' X9 a  q
  TRIGGERS 导出触发器 (Y)
! C' k) `6 [& |( q0 H  FEEDBACK 显示每 x 行 (0) 的进度2 D+ X  T( q% l7 a) v
  FILESIZE 各转储文件的最大尺寸) @4 ]+ y3 p$ ~/ P
  QUERY  选定导出表子集的子句6 N# O9 f# Z4 E( ]% ]+ S
  3 I, b4 Z" m( k
  imp参数:" z& m7 B. J3 L* h
  关键字  说明(默认)+ x, _7 A# k7 a" t
  ----------------------------------------------
9 D) |1 G+ ]# k  USERID  用户名/口令
5 {3 g* J* Z- q: y4 n  FULL  导入整个文件 (N)& ~+ m$ a8 g& C/ V6 n2 J1 l6 G
  BUFFER  数据缓冲区大小
% O. l# j# P7 _2 J  e* e  FROMUSER 所有人用户名列表7 q/ f# t- B2 X) v- ^
  FILE  输入文件 (EXPDAT.DMP)
- i$ j: }+ o" o6 M  TOUSER  用户名列表* m4 A' j0 h' f8 b
  SHOW  只列出文件内容 (N)
* s. c/ j; k/ R3 s# r5 s* m: p  TABLES  表名列表
: E4 n8 k; c: N# O! v' _! V7 l  IGNORE  忽略创建错误 (N)) z9 W# X8 _3 |7 n2 R
  RECORDLENGTH IO 记录的长度6 a8 B( H3 J) q: ~
  GRANTS  导入权限 (Y)
& B- g9 m' k% P$ ~  INCTYPE  增量导入类型
/ Q9 B1 E3 x, C% |+ U. d  INDEXES  导入索引 (Y)
9 ~3 L3 o! q( Z  N/ ~" f& M  COMMIT  提交数组插入 (N)
- l5 M+ |5 M$ W  ROWS  导入数据行 (Y)
3 S: t& ^0 w5 t( d& D  PARFILE  参数文件名
, V. J3 H1 \& w$ G6 D  LOG  屏幕输出的日志文件
- @+ z) F  X/ d% a4 l& y' x7 ]  CONSTRAINTS 导入限制 (Y)
' _. i0 W2 a6 ~8 _9 @  DESTROY  覆盖表空间数据文件 (N)* X! |8 G/ D2 f9 D  N' f
  INDEXFILE 将表/索引信息写入指定的文件7 e* g& G  D2 Q4 s
  SKIP_UNUSABLE_INDEXES 跳过不可用索引的维护 (N)
  N& x! i, ?2 Y% `+ m( V2 _  ANALYZE  执行转储文件中的 ANALYZE 语句 (Y)) M4 v. E0 h$ H7 V0 I# W
  FEEDBACK 显示每 x 行 (0) 的进度& _8 G0 j$ t( ?9 ?4 d6 z' E/ L5 I& O
  TOID_NOVALIDATE 跳过指定类型 id 的校验* T8 d0 M$ y9 g1 x  o" I. U( R$ C
  FILESIZE 各转储文件的最大尺寸$ N, {/ f6 I- ^( H: O: ^
  RECALCULATE_STATISTICS 重新计算统计值 (N)
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-8-4 13:41:08 | 显示全部楼层

Oracle认证:Oracle数据库开发的经验积累(一)

 (2)
% t, u* D3 T) P! s/ E. u  G  # t% N+ ^0 ]: `, @& z2 J! n
  一、建立一个expdata.sql文件  N2 ?  m6 M2 r5 W8 ]( I
  " {' K0 f( ?" C$ i" g
  USERID=RMTAFIS/3    这里写你的用户名和密码
* u+ i2 l2 W) W( f1 {  BUFFER=32768# @+ _7 I( K. l
  OWNER=RMTAFIS     这里写导出的用户, Y- A5 ~; n! m  p. u0 ]
  FILE=E:\Exp\RMTAFIS.DMP   导出的文件,可以是相对路径
$ C1 e7 q4 k9 D) c2 `: L  ROWs=Y
% x0 ?2 @8 K+ `/ e8 A6 ?  GRANTS=Y$ [! N& l7 S7 t' Z
  COMPRESS=Y
" P( L" m5 c8 F- B& R, B  CONSISTENT=Y
- R2 ?9 L- ~; n# R$ ]  0 u" v. u( c* V/ b4 k
  二、建立一个expdata.bat
4 }4 ]$ K" Q8 K2 C8 j  exp parfile=expdata.sql
6 L7 ~  h$ N/ P  如果是805
* p9 r% i6 l, j1 o. d$ E3 u% g  exp80 parfile=expdata.sql8 L6 n7 D5 M: p. X
  双击expdata.bat就导出数据了: m' W" W3 ]+ \4 o5 E
  
# {- `; R3 k$ T$ z& l9 d  7、如果在like的变量中,是以‘%’开头的话,是不会使用index的。反之,不是以‘%‘开头,而又有相应的index,是会使用index的。具体可以用plain plan来看一下。+ L  ?! ^8 {* O
  
( e5 U# V* [! {# \  8、复制空表结构: a1 E! o' J+ n& E# H5 w3 E4 K# l  ?3 w
  create table new_table
2 F* u1 K5 \; U) L; U7 O  as select * from old_table where 1=2;8 v7 L& H% i/ |6 A
  复制表(含记录)
9 d+ l) I% j2 r# H% n  create table new_table
, ^# f. P+ ^  ]5 G" F  as select * from old_table ;2 X" z7 l# S4 B6 \+ _/ \# a: X
  
2 D4 V- M' b0 X& F  9、把一个用户下的表导入到另一个用户下,但需要改名6 J0 Q* d4 N+ f
  1 J8 M$ k4 R( e) K/ D: E8 s1 V1 m
  先用exp导出所有的表;
; f) r& k- [* L6 V" f  用imp将导出的表导入到新用户;
$ p% U; i4 o1 H0 O3 h  在新用户下,执行# i8 N  G+ z. L& a, g* ]
  select 'RENAME TABLE '||tname||' TO NEW_'||tname||';'
) s% B  \6 N* W9 f& K0 d$ Z  from tab
; q0 G' q! A9 z/ h; a  R  where tabtype='TABLE';! q* M/ y2 T: E1 S. Y) ~) t
  将上面的查询结果保存到一个sql文件中,处理后执行就可以了。0 |0 H+ D3 Y& q- t
  
1 h5 `8 `, G1 J+ a4 ^6 |  10、审计步骤
/ a( k9 U9 @1 ]: ]  i0 [  # N; P  p2 m& B7 Q3 c  A. W; p
  修改参数文件init.ora,参数audit_trail值为true;
* f! ~' J/ K5 K& C! d8 O1 D9 \  l  重新启动数据库;
, K" _# Z8 x8 ^7 X4 g  打开审计audit session; (audit session by username)
2 |3 h, X- e* ~' J9 p$ ]# k) v$ N* Z  执行登录操作;
/ \7 G0 {% x+ W' M  g  察看审计结果:# f! N- Y1 V9 t2 U. Y6 H% V; {
  select * from dba_audit_session;
( ~% c2 l3 R+ M% i  select * from sys.aud$;& n. b, W) I& ?! I2 }* ]
  select * from dba_audit_trail;+ `) e; ^; w2 k; L
  select * from dba_audit_exists;: C* B, }5 {2 c  k' S
  关于审计:: P/ [' }5 [* S6 F. C: p
  
" j/ W9 r- H& L7 J, Q/ S/ u  为了使oracle8i的审计功能可用,必须在数据库参数文件中修改audit_trail初始参数,而这个修改并不支配oracle8i把生成的审计记录记入审计痕迹中,0 ?$ g, _. A" [
  由于状态,特权和模式对象已被修改,因而审计的默认值不可用,其参数应设置为none.下面列出了audit_trail 可用的参数
% h/ B! H' V3 P# X1 d: u  8 \5 Q3 C% n3 ~- j5 m  G
  db_使数据库审计和全部直属审计记录到数据库审计的痕迹中
# S: v$ Y) x+ F& x% H& y4 f  os_是数据库审计依据直属审计记入到操作系统的审计很集中+ ?2 l) |, r3 M& |
  none_不可用
- ^) n$ ]+ G. V5 f  8 U% \6 h) a6 c" `' n, U) x- \
  11、BFILE的用法
! q% l: [; s9 j' E1 n  
3 a9 p) C# X( k, L% Y  (1)、create or replace directory
0 ~% f- X4 p) Q& e' U# P, b  BFILE_TEST
: s% n. L( [5 R3 S; B2 n  as
2 O4 D4 o3 D/ b9 v- N' ]  '/oracle/oradata/bfiles';/ w5 |0 W  Z. h" H
  
& b: _, H# h' f, q: ^  (2)、grant read on directory BFILE_TEST to SCOTT;
# ]0 L3 {' y  b5 ^  
0 [- T' w% O* n( q* n+ p  (3)、host ls -l /oracle/oradata/bfiles/1.TXT
9 R! D! b1 p( q  
) T: K' S0 Z7 @0 S7 j% j1 }  (4)、connect SCOTT/TIGER
3 j0 m3 N/ M0 f- }3 c1 }% |  create table BFILES (ID number, TEXT bfile );
( |& b6 e: y' i1 @% F3 h  
3 {2 Y0 B  T1 N7 j# @( K  (5)、insert into BFILES values ( 1,' K. n2 C9 P8 p  V
  bfilename ( 'BFILE_TEST', '1.TXT' ) );
  z! _7 p6 F: [  J  0 k: ]1 ~0 r7 o$ G; A+ _. E+ @
  12、如何在Windows 2000下将Oracle完全卸载?
' @  J$ O8 {9 s1 m% n  : _2 P7 e" q+ G- m7 {
  一、系统环境:
/ S5 C# J$ X  |9 \4 ]6 T9 k  (1)、操作系统:Windows 2000 Server,机器内存128M
% s  N* F  u- ~& y+ C- O  (2)、数据库: Oracle 8i R2 (8.1.6) for NT 企业版! q; U6 W7 H9 x1 v
  (3)、安装路径:D:\ORACLE8 Q, W, V, k# g7 p
  " `. X6 C9 O: S2 z. u( T
  二、卸载步骤:
- W5 @; V' J' o  (1)、开始->设置->控制面板->管理工具->服务
4 e6 |) d+ m" P1 H# f  停止所有Oracle服务。
* ^9 c  W5 B: _9 s" F3 y  4 y* C5 o/ n  [2 ^5 c9 [
  (2)、开始->程序->Oracle - OraHome81->Oracle Installation Products->Universal Installer% B0 v0 r! }$ _+ k9 ?
  卸装所有Oracle产品
) W% ^0 `" r1 T: s) T+ V* ?  
: F3 [- S& n- h, S# m1 Q% C! Y  (3)、运行regedit,选择HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE,按del键删除这个入口。
4 M6 v; v( W% A5 f4 u% F* V) w0 K  
- n; H0 Z& p% d+ g/ {, \- a# l  (4)、运行regedit,选择HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Servi
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Woexam.Com ( 湘ICP备18023104号 )

GMT+8, 2024-5-4 23:38 , Processed in 0.326403 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表