a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 200|回复: 3

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

[复制链接]
发表于 2012-8-4 13:41:06 | 显示全部楼层 |阅读模式
 三、LINUX和UNIX下/ A7 J4 }. p8 F- D( [
  转到操作系统下执行:kill -9 spid (以上语句所查出的)
1 n; j$ T2 N% }$ _: T+ r/ P9 _  
) V7 _4 }( Q% w1 y  N$ t/ B  36、ORACLE中检查表是否被锁的语句
) `- g0 t. ?9 d, g" I6 @! q  5 S; J+ m5 j+ l6 W1 b, Q6 L% l4 b
  SELECT A.OWNER,5 Z0 k5 F( e9 P. R5 ?
  A.OBJECT_NAME,1 a. j4 m( d9 ?( t) ?
  B.XIDUSN,
1 z6 L: @- t8 X& g" Q3 ^* r5 O  B.XIDSLOT,
$ `+ Z. Q% i; }+ k' r  B.XIDSQN,
$ |" u) o  r# [+ x6 _. L  B.SESSION_ID,6 e( p9 e9 U( M2 e! n; B# K
  B.ORACLE_USERNAME,
$ y: P3 f, z& U# G/ B# N, d  B.OS_USER_NAME,2 w9 D4 k5 y" i9 P
  B.PROCESS,
( m- A5 A: O5 i8 @* V; Z8 p- ~  B.LOCKED_MODE,3 ]8 Z9 m! `) @2 l/ S0 {  S6 M4 a$ D
  C.MACHINE,% M% E0 Z6 R/ m" M/ E! [9 T  f0 f" o
  C.STATUS," F+ t/ [. i7 O- u; M6 z8 l% b
  C.SERVER,6 w- ]7 F1 m% H0 |/ M" a+ k; l
  C.SID,
1 _& F8 y/ ^. F) h) ^9 j; V  C.SERIAL#,
1 r6 W% x7 l- s3 D* [' A  C.PROGRAM4 ~8 l$ w3 |% P0 W  g( u
  FROM ALL_OBJECTS A,9 y# u+ I( m# k5 b5 I, F; L& S
  V$LOCKED_OBJECT B,
* y4 o5 Y$ u$ q  SYS.GV_$SESSION C# e% O5 I1 Q4 C- L; b
  WHERE ( A.OBJECT_ID = B.OBJECT_ID )
2 b9 J) O" Y/ Q  AND (B.PROCESS = C.PROCESS )$ }5 E: a/ Y6 j
  ORDER BY 1,2
" S. m. c+ o5 h0 |% [8 e- J! C; `' k  杀掉:alter system kill session 'sid, serial#'
5 y! U; Q0 N! {( `* p/ _* e  37、ORACLE的登录问题,用户名和密码。1 S0 I6 z8 O5 X; Y/ J% `/ V1 y  d
  
: P3 M. A: c# x9 `3 ?  可以直接输入:0 C8 D8 c5 x: ~
  internal/oracle@serivce_name
: Z6 T. s! f: u. z  sys/change_on_install@serivce_name* F7 a  ^: k/ N: ]: c' n. E
  system/manager@serivce_name
4 K5 M' L& t, G: s1 E4 X1 q' Y  scott/tiger@serivce_name/ j; f7 Z' |, X$ L9 S# Y1 }' j) q- q2 h
  注意:: r. a) m4 s* V& P' [3 C
  9i中没有internal/oracle
6 T( l# J  K0 }( x+ f  V$ ~  如果选择典型安装则有 scott用户% a+ a5 M+ I$ P
  如果自定义可以不安装  scott用户1 p0 g$ a  z$ ?0 L) F& P" B
  如果是本机则可以省略@serivce_name9 e! S5 {$ Y2 X. L6 t
  9 N+ O2 p  ^  ^3 |' {7 Y
  oem:(ORACLE ENTERPRISE MANAGER)
' y% L( c" `# z! C' i  sysman/oem_temp& s* }4 t5 H* l6 D- ~1 s
  
5 o& D( [4 _$ I. K1 g0 l  38、修改表的列名
4 E; X6 Y0 [% O' U, L  2 P: N  k2 U- h- j8 P+ _
  Oracle9i:( v  P& k: w% I
  alter table xxx rename column xx to yy;
, a, i; W1 Z  V* [' u0 ^  
& b7 {; |0 M' ~* }" d0 G" Q  Oracle8i & lower version
' _* [0 U7 m1 C" g' X- k+ @" s3 e  connect sys/passed;
" D3 I* i$ m4 e' I/ ]* C" z  t  update col$ set name=xx where obj#=对象id and name = 字段
: V+ X9 j$ p6 ^0 L5 I  (一般不要这样用,会造成意想不到的结果)
  D2 e# G& a9 g8 s  注:最好是删除再建立新的列; N& G4 F9 r; [
  1 M; d: w$ P% `& E
  39、把用户模式对象所在的表空间移到新的表空间9 M$ T3 o0 M! I" o
  (1). create the new tablesapce5 P  C+ m4 ?. }* z3 E; X' [( l
  (2). alter user test default tablespace test_data;
% _% b9 Q4 s1 j  (3). alter user test quota unlimited on test_data;
( A. N/ @+ u' B  (4). alter table the_table_name move tablespace test_data;
) _9 e! F# W* H& h) J  生成脚本:
6 B8 O' h0 R1 I# I2 W' h* F  select 'alter table'||tname||' move tablespace test_date;') w, G+ V/ [5 L3 i, B- a# V
  from tab
- A: ^3 x% R, K+ k  where tabtype='TABLE'* Z! V! y( y! ^$ T' ~1 j3 j+ ?# A: m
  (5). rebuild the indexes;5 K1 K6 i3 @" y' {9 b
  
" E% V1 w2 u# ]) p  
回复

使用道具 举报

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

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

40、使用OEM备份或者EXP的步骤
) I3 W4 @  t% s  O* V. T1 z  WIN2000下:& d/ }+ r, d7 r8 C: d9 o
  5 _2 f2 C2 G. N& P! ^
  (1). 控制面板――>管理工具―― >计算机管理――>本地用户和组――>用户――>新建用户sys和sysman(sys和sysman 的帐号要和登陆数据库的帐号相同);
! n% @( s5 E/ A! `* v  (2).控制面板――>管理工具―― >本地安全策略――>本地策略――>用户权利指派――>
+ y3 G0 o- @6 |7 N" R  作为批处理作业登陆――>添加sys和sysman两个帐号。; {$ `- o; x9 ?: m7 l+ \/ V
  (3).使用Enterprise Manager配置辅助工具  x# `, W( Z( F0 U  j* C. ~
  开始→程序→Oracle - OraHome81→Enterprise Manager→Configuration Assistant  F; A( d, R3 W; g
  a、使用Configuration Assistant工具来创建一个新的资料档案库。
& F) ^! W: m8 `8 m" i1 s3 x  
" e5 D% f+ F) K# Y8 e4 l  (4).控制面板――>管理工具―― > 服务,查看OracleOraHome81ManagementServer是否启动,如果没有启动,则手动启动该服务。) T7 o2 W  O+ ~# q
  (5).以sysman/oem_temp(default)登陆DBA Studio4 A9 S; F) c$ Q- s  ~& P
  (第二个选项:登陆到Oracle Management Server),立即修改密码为你刚才在NT下建的用户sysman的密码。6 H1 w( {* O5 v1 d, H
  (6). 以sysman/ *** (bluesky) 从开始→程序→Oracle - OraHome81→Console 登陆到 控制台。
0 z9 F" P0 d$ l5 C% M  在 系统→首选项→首选身份证明(我的首选身份设置如下:)
/ P/ n" D# p! z( [) c  DEFAULT节点:name:sysman4 Q% r" {# m$ D/ V$ l  \
  DEFAULT数据库:name:sys5 w4 _* o2 b2 L8 z# A
  (7). 在搜索/添加结点后,以sysman/ *** 登陆到该结点,以sys/ *** as sysdba登陆数据库(也就是在首选身份设置的结果)。& ]3 J( [& k5 [* [; \
  (8). 在工具→备份管理→向导→预定义备份策略(自定义备份策略)→提交备份计划
$ F6 c. o0 Q/ G' N1 D$ |  (9).从开始→程序→Oracle - OraHome81→Console 登陆到 控制台,查看活动(历史记录)可以看到你的备份是否成功,如果不成功,可以点击备份看明细。(我第一次也没成功,后来我修改系统的临时目录C:\WINNT\Temp→c:\temp\systmp,重新启动机器就ok了)
+ o+ u1 R  U4 x' @8 b  
& [3 ^, T6 w. m8 a7 ^0 l6 d. i2 t  41、如何修改INTERNAL的口令8 e9 z4 j' A8 K2 Z
  
+ ]: @' d# O. [! j  以下是oracle8的8i你可以仿照来做
  ~% p( U& N6 S5 }: G" g  7 c9 ^0 n2 `+ r" G: O, [( J
  (1)、进入DOS下( n* G  L% r* c# P3 X  H: L
  3 }9 B) ~3 O0 ]2 G7 t
  (2)、默认internal密码文件在c:\orant\database下,是隐藏属性,文件名称与数据库实例名有关0 k& [) Y: R3 D
  
3 l" e" ?* N" h2 J3 U  如默认ORACLE实例名为ORCL,则internal密码文件名为pwdorcl.ora
$ }5 T& F1 M4 \8 |$ i  : V% b( }! v/ I# j
  (3)、建立新的internal密码文件,起个新名字为pwdora8.ora
' j* d5 l5 U+ ], }0 E9 M  
7 g9 N, t3 ?) u% R" T  orapwd80 file=pwdora8.ora password=B entries=5     --注:password项一定要用大写,并且不要用单引号5 ~; L( f7 m& [& W; c. s3 [: X4 E
  
5 ]3 {4 a! r7 m. L6 @% h9 D  (4)、拷贝pwdora8.ora文件到c:\orant\database目录下0 h! Q& I+ s+ J$ C# O  W
  ! G; R7 N2 c9 h$ V9 k8 o
  (5)、运行regedit,修改口令文件指向
: a% Z. s0 K. h$ V. S, e  6 t- h+ W# \* ]
  (6)、找到HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE项/ A, g( @3 `# Z* b
  
. F% g3 I2 t+ |* r. S4 ^+ ^  定位ORA_ORCL_PWFILE子项,改变其值为c:\orant\database\pwdora8.ora, H/ `8 P, q8 {- W+ {1 ~
  
- o. Y6 f3 \/ T1 G* T( b  (7)、关闭ORACLE数据库,重新启动
( x) P# q* n$ C  " ?; G! `, e( _# A9 Y
  (8)、进入svrmgr30服务程序,测试internal密码是否更改成功
回复 支持 反对

使用道具 举报

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

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

 42、凭证检索失败的决绝方法。
! l$ L9 v7 F$ J. {+ _; W  
& |1 H: o5 N7 Q& x  G( P  原因: 由于Oracle不能应用OS认证而导致凭证检索失败
9 W' O. e( T  {6 }2 Y6 y  ; e" w7 O, t2 g* O) Q. ?" c+ N
  解决办法:1 p  n" l6 W- z
    S$ q& h) m3 D- i8 C: D; S
  (1).打开network/admin下的sqlnet.ora
3 {" T* Z# J. _2 x8 X8 q4 h& d/ m  修改SQLNET.AUTHENTICATION _SERVICES=(NONE)。1 y: C  F4 [5 y" w# `5 ~
  ) w  _  v, Z& I- h. G& j" v1 x! |
  (2).启动Net8 configuration assistant-->选第三项本地网络服务名配置
, m' |1 Y6 H- a8 T4 T( k  -->删除...(删除原来的本地网络服务名)
) f/ _/ f3 T: N$ W& j- `  
% Q: F% A9 z/ `1 e7 d  (3).重复第二步5 j& ^9 t! r' j: a
  -->添加.. (新建本地网络服务名)
4 Y  `; p5 x7 n  4 _7 @7 W( ^* T( t
  (4).restart oracle4 ^9 k6 _% u' P! ^4 P8 j. U
  
& G: B1 D( t& x  注意:NTS是WinNT的认证方式, X( o4 o& G+ g3 h2 i& F" W
  2 z$ ^" _4 z4 O
  43、命令行编译存储过程
; x' B. I( P4 p2 E! N( C  
: l; Q- E' A! P' x3 r  ALTER PROCEDURE procedure_name COMPILE;
! n- W# o+ @( o" Y  $ F' c! h1 L% n/ ]
  44、关于如何建立数据库链接(DBlink)
1 L% j# Z7 ]( b  
! l' c9 G# U2 B( J  可以通过建立客户机数据库网络服务名的办法,将服务器的名字或是IP地址设置为你需要连接的那个机器就行/ Q% F3 k* q$ Q
  
6 y4 Y0 ?: ?+ [7 F! Y. {  如果你要在一个应用中连接它,现在做好上步工作,然后按如下处理
. v; f, m+ Q/ J5 d* Q  
! H, l5 Z! X- R' h8 `  建立数据库连接
. l1 X* |7 }, c  e6 S8 ~" ?  CREATE DATABASE LINK DBaseLinkName CONNECT TO UserName IDENTIFIED BY Password USING 'NetServiceName';/ f" `1 k5 \1 s- Z: _2 m% c
  DBaseLinkName 是建立的数据连接名称9 ^; A3 H1 @! p
  UserName    是可以连接到的用户名& z6 v) \- i- i( v0 y0 d
  Password    是可以连接到的用户的密码+ z( R  L  t" k) W
  NetServiceName 是可以连接的数据库网络服务名或是数据库名
% Q' n3 ?( s- E6 ~$ r% p* S6 e  
9 S% ^, l' N- H  v1 g: s  查询建立数据连接的表实例
- f+ i5 M( ~# b  Select * From TableName@ DBaseLinkName;
% U# Q9 h- }# [7 J/ v. H  
9 q9 Y" f' U3 r  e9 S' t  注意:如果在CREATE DATABASE LINK DBaseLinkName CONNECT TO UserName IDENTIFIED BY Password USING 'NetServiceName';中NetServiceName 是数据库名修改init.ora中:global_names = true5 n# U* \9 X" r, [
  否则global_names = false. ^& u! m) t3 r" z: b4 d/ Y
  init.ora中:global_names = false
' l6 d$ Y7 H& W$ K! M  & \7 g) Y% h) N' ]( K4 v9 v9 Q" G6 g2 I
  45、Object Browser7.0中文版的破解方法
( R) y6 Q! T7 T& \  6 W% d. L8 v) @! C  S& _0 q5 W
  到OBJECT BROWSER的目录里,找到DeIsL1.isu文件,用记事本打开,看到的是乱码吧?没关系,将Stirling Technologies ,Inc 这个字符串前面的乱码去掉(如果有的话),让后在Stirling之前加一个空格(一定要加的),保存,退出,重新运行一下看看,虽然还有提示输入验证信息,但是不用管他,直接确定就行。是不是可以用了呢?保证好使。0 h, @! u1 |) x8 m- S. A
  
$ R" k6 M+ t% Y9 V1 p  46、错误号ORA-01536:space quota exceeded for table space 'ALCATEL'的解决办法
- `' Y0 N1 s$ H* M# K. {% |/ |+ A* q  % [' D2 Q% U& n4 L
  
回复 支持 反对

使用道具 举报

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

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

三个解决办法,任你选择:
8 d! U' ?' H6 y& z  Q; Q- [  (1) alter user USERNAME quota 100M on TABLESPACENAME;
% K+ B" u& ^9 ^" b/ w  (2) alter user USERNAME quota unlimited on TABLESPACENAME;- z. o0 I6 e! d* \2 C
  (3) grant unlimited tablespace to USERNAME;# Q4 Y* ?7 U: _4 x) J
  
0 _( }; q. F; R" j% L7 q' ^4 }  47、如何在Oracle中捕获到SQL语句的全部操作内容1 ]0 {" N9 o/ q7 q8 E, {! ^
  ' p" F4 f! _% I) h8 L/ k% Q7 G
  SELECT osuser, username, sql_text from v$session a, v$sqltext b6 b4 B5 v) H5 r7 y6 X% a/ a. I. |
  where a.sql_address =b.address order by address, piece;
. r9 h3 b* l1 |8 b7 J  
& P: N( H2 u) w" w" H  48、ORACLE中如何实现自增字段:$ D; z) q$ |7 f) {3 Y9 w
  
1 c7 x* ~/ s+ k! u6 M; S' ?  (1)第一种方法
6 u4 h# }+ }5 a2 F% J9 r  h' l5 P  ORACLE一般的做法是同时使用序列和触发器来生成一个自增字段.
7 F2 A; e0 Q' ~, A  CREATE SEQUENCE SEQname
! F0 p- W/ W4 {- m/ a5 \  INCREMENT BY 1
' x( O8 s! L4 V9 Q" u& r  START WITH 1* d' z5 U8 |4 l- D! H# n: h  Y
  MAXVALUE 99999999! ^' v% M4 H2 a( O4 R
  /8 {$ X) V, |2 P
  CREATE TRIGGER TRGname  x3 O/ p7 `6 s! n6 a& K
  BEFORE INSERT ON table_name! n+ }# b- N) g6 e+ c# S
  REFERENCING* Y  N8 k0 j: }  A" V% h( f5 o
  NEW AS :NEW
- e$ Q2 o# l, Y5 {  FOR EACH ROW: D0 D- H1 z1 G5 Z) b& T) I3 ~3 j
  Begin
$ W- ~9 ^% E$ H5 J  SELECT SEQname.NEXTVAL
/ W, L- t$ h! V# F  Q$ i' Z# W! n  INTO :NEW.FIELDname: \9 Q, e. T9 E" ]7 [
  FROM DUAL;
$ b/ c# s6 K2 i  End;( ]' N  ]! c* B1 k
  ) Z: h8 [" N+ V6 W7 z" a
  (2)第二种方法:
- G5 n4 W6 V; i* F  CREATE OR REPLACE TRIGGER TR1. w% A: X& b  r& j4 B
  BEFORE INSERT ON temp_table
7 |$ \* R) S9 E4 H3 q5 p  FOR EACH ROW" K# o! X& [$ p! F- A. a# ]
  declare
- t1 J/ l$ k+ Y2 ]  com_num NUMBER;: S& [7 S5 t! i+ V+ e9 i
  BEGIN1 e% }# h3 L1 }+ k. u8 w
  SELECT MAX(ID) INTO COM_NUM FROM TEMP_TABLE;3 A3 s3 K2 Y$ L
  :NEW.ID:=COM_NUM+1;4 D( Y; o0 e' T6 R1 C( T/ E1 [
  END TR1;7 p3 L% ~# q( u6 l
  
5 b7 V  u1 i5 {1 g  49、job的使用:6 ], T% E5 T* l6 {* _6 U& N
  
4 U% ]7 M1 a" ^! n! d- V  C* c. A  修改initsid.ora参数7 U) B5 a) ?4 W. C& ~' q  m
  job_queue_processes = 4      8i,9i (允许同时执行的JOB数)
4 b0 B+ S! Q; v1 Z, _& e  job_queue_interval = 10      8i# q. X  r# ?' X- ?
  job_queue_keep_connections=true    8i/ S" I8 B/ \. f4 o$ b
  % ~. p# x+ H8 W5 l  B; o" E2 ]( ]  v- y9 ?+ y
  DBMS_JOB.SUBMIT(:jobno,//job号
& f' q! B' X+ l1 v' B9 m  'your_procedure;',//要执行的过程
7 [5 a2 n; H# r: {  trunc(sysdate)+1/24,//下次执行时间" o+ h; [  d' J; N& k: j6 J
  'trunc(sysdate)+1/24+1'//每次间隔时间
# q' ]7 y6 i  o* S  );
+ \6 e8 K5 D0 J9 E. l  删除job:dbms_job.remove(jobno);) O. T/ u# o2 K3 Y' [$ U
  修改要执行的操作:dbms_job.what(jobno,what);6 v6 k: S; \6 V8 t8 Y( Q$ Z
  修改下次执行时间:dbms_job.next_date(job,next_date);- d* i/ |1 k' e+ O6 E1 t' j
  修改
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-5 02:19 , Processed in 0.194721 second(s), 27 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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