oracle 的restrict模式(转)

上一篇 / 下一篇  2009-05-24 18:49:06 / 个人分类:Oracle

  • 文件版本: V1.0
  • 开发商: 本站原创
  • 文件来源: 本地
  • 界面语言: 简体中文
  • 授权方式: 免费
  • 运行平台: Win9X/Win2000/WinXP

Oracle中,有时候要执行一些管理性的操作,而这些操作运行的时候不能有其他用户同时访问数据库。对于这种情况可以设置系统进入RESTRICTED SESSION状态禁止普通用户登陆数据库。

*{ J9_+\x"jF1T(NF)xV0

数据库可以在启动的时候以RESTRICT方式来启动数据库:

y4M-QIY| g0

y7xK/Q h|} D}0SQL> conn / as sysdba已连接。
bs.\Q-t'E0SQL> shutdown immediate
数据库已经关闭。已经卸载数据库。51Testing软件测试网 jm"|:EZdK*ALp
ORACLE
例程已经关闭。51Testing软件测试网l9vaSX1XR2b.L(v1~.^
SQL> startup restrict
\&C9q5`zT\TE%x0ORACLE
例程已经启动。
51Testing软件测试网!o9pYd2Qc

)x/y6lfp;Dx)MY0Total System Global Area 5279498240 bytes
P`)CU e$l"x:a*A6r n0Fixed Size 2094528 bytes
g;o~4h\"U s|2M0Variable Size 3192597056 bytes51Testing软件测试网nw7BJ7B&`l'M
Database Buffers 2080374784 bytes51Testing软件测试网tUH*VAc
Redo Buffers 4431872 bytes
数据库装载完毕。数据库已经打开。
BS ]2wwA f0SQL> conn test/test51Testing软件测试网JX*ZjB,B(A%fv
ERROR:
6S\6F:GN0Bx0ORA-01035: ORACLE only available to users with RESTRICTED SESSION privilege

JY|X)^U;` w:_.u/X051Testing软件测试网$O(xu&Oo"S-C2[6z

警告:您不再连接到ORACLE51Testing软件测试网Nc roG4O2_
SQL> conn / as sysdba
已连接。51Testing软件测试网9a p(Z'p:n+~/OTN
SQL> select granted_role from dba_role_privs
tYl ^ J'SwnUT6Ek02 where grantee = 'TEST';

Qg v v'}.KBN}'r0

q6I Ra9mU0GRANTED_ROLE
`\XtP5q/E&V@0------------------------------------------------------------51Testing软件测试网Rjk,H;SC0C GX
CONNECT
J} CC%? ]0RESOURCE
51Testing软件测试网6drz] i3SJV? S

:|(nO2\ ~4z+e9d4a;G%f0SQL> grant dba to test;51Testing软件测试网O~!Kp5w@"]

51Testing软件测试网b+r2qpy

授权成功。51Testing软件测试网'U*N#mp D2K%T,wE j

51Testing软件测试网r;jK-ina _3[ x

SQL> conn test/test已连接。
\L`-x GU0SQL> conn / as sysdba
已连接。51Testing软件测试网7C9F)m/LT*`8tx
SQL> revoke dba from test;
51Testing软件测试网,P/J:RiIV5Zw5S

'dC0I P@0撤销成功。

ML9VStn+Z@B0

r6M,?6[ b6u~b0SQL> grant restricted session to test;51Testing软件测试网v&Ci2B9?Hz.Z

51Testing软件测试网vaw rA}!H2SJ

授权成功。

8I8c9m)G"C051Testing软件测试网8|UI6YN@e

SQL> conn test/test已连接。51Testing软件测试网'_}OC!W?:kI's&]0S

可以看到,当数据库以RESTRICT状态启动,或者进入到RESTRICT状态,则Oracle禁止普通用户连接数据库。

uW }GMY0

而拥有DBA角色的用户,或者拥有RESTRICTED SESSION权限的用户可以登陆数据库。

c!t$OwiX3FY7M0

Oracle11g的管理员手册文档中有一个地方的描述错误:51Testing软件测试网'Y*`P B1zM

51Testing软件测试网:lm(K5?i(\k

Further, when the instance is in restricted mode, a database administrator cannot access the instance remotely through an Oracle Net listener, but can only access the instance locally from the machine that the instance is running on.

&ao&vwf:\%S0

根据文档的描述,如果数据库处于RESTRICTED SESSION状态,则禁止用户采用NET服务方式登陆,而必须在服务器上直接登陆,但是测试发现,Oracle并没有这个限制。

E3au Y2`/v\051Testing软件测试网qX'lBT ?'_

SQL> conn / as sysdba已连接。
-X(U'G$OxB p2t i4S0SQL> alter system disable restricted session;
51Testing软件测试网'~5e~{hO

Ll{J+K{ }GX0系统已更改。

v1NC3T*ql051Testing软件测试网go1Vs5BM]

SQL> conn test/test@test11g已连接。51Testing软件测试网aT*L-}S
SQL> conn / as sysdba
已连接。
m?.C;Wey7_0SQL> alter system enable restricted session;
51Testing软件测试网 EFo j#H};D@?

y3LU_ M0系统已更改。

0N"H6HA4c9q@0

!w7] Xz(O:t J ~@0SQL> conn test/test@test11g已连接。51Testing软件测试网 |!}J#S p N PV8O-y:s

无论是在本机通过服务名方式,还是在其他客户端通过服务名方式都可以连接到RESTRICTED SESSION状态的数据库,只要登陆用户拥有RESTRICTED SESSION权限。51Testing软件测试网z!k ~VJ2Frq$x

下面再来看看RESTRICTED SESSION状态,对于已经登陆数据库的普通用户有何影响:

0N lO-_E,a051Testing软件测试网^1u d\Fe#H

SQL> conn / as sysdba已连接。
&n~ ]A1KGv+JtK0SQL> revoke restricted session from test;

;^v.PuE)Q}/haV0

$BLW^5qR/m0撤销成功。

Fu dW;W%g't5da0

B L#H4o|g(z0SQL> alter system disable restricted session;

xpZ:sj ^"o051Testing软件测试网;R9yz&H8r9X x eNb

系统已更改。

\4_P Z oSl?0

在会话1,回收TEST用户的RESTRICTED SESSION权限,使其变为普通用户。并将数据库从RESTRICTED SESSION状态转为正常状态。51Testing软件测试网1}Sf(Tc5o7Q|?

下面在会话2TEST用户登陆数据库:51Testing软件测试网*b x\~e)?+fw#n

JK"m4v1n3Lr ?0SQL> CONN TEST/test已连接。51Testing软件测试网 M,h _A0W`5Vm4|
SQL> SET SQLP 'SQL2> '51Testing软件测试网-B5I3E O:?2E2m
SQL2> SELECT * FROM SESSION_PRIVS;
51Testing软件测试网'o5q(E5lS,i!|P:c

.\pbO|0PRIVILEGE51Testing软件测试网 v r1Te#?"l:X\
--------------------------------------------------------------------------------
;UQGH&MO]0CREATE SESSION51Testing软件测试网%ar^$l|rV.dE
CREATE TABLE
w)Zw0wk0CREATE CLUSTER51Testing软件测试网W2`q?1QnFe
CREATE SEQUENCE
J0WP.c5c?6{!aX0CREATE DATABASE LINK51Testing软件测试网3s0?9h @_'t"X}9Pu
CREATE PROCEDURE51Testing软件测试网6G-xB6G|f%c
CREATE TRIGGER51Testing软件测试网5U'l*XaL`o0f
CREATE TYPE
dRV7L}`d D0CREATE OPERATOR51Testing软件测试网k%D/lq8J+M
CREATE INDEXTYPE

]}*qB`aL#LN051Testing软件测试网2KfeM,v#IEh!Y1V.}

已选择10行。

'ZVI@X%\O-XV G0

下面回到会话1,将数据库置于RESTRICT SESSION状态:51Testing软件测试网$W uL$f(K'L

J/bK!s)K@'LJ+y0SQL> alter system enable restricted session;51Testing软件测试网:n'?7J7B"J;G

bI$~iB.?@0系统已更改。51Testing软件测试网iLyi%SZ

执行RESTRICTED SESSION命令很快就返回了,说明命令已经执行成功,下面尝试普通用户登陆:51Testing软件测试网&G:?M$x%N5UE

y4q-J2~2cJ0SQL> conn test/test
#|'C9J%Sb%QR5e#}#_0ERROR:51Testing软件测试网N.mDgRK8@5I*?
ORA-01035: ORACLE only available to users with RESTRICTED SESSION privilege

;IU)E4n+o7G0

o$Y%s TJ"w f1t0警告:您不再连接到ORACLE

,V:@6aM`~9z0

登陆报错,说明RESTRICT状态已经生效,回到会话2,看看数据库的RESTRICTED SESSION状态对已经登陆的普通会话是否有影响:

ai7y-C_1a+M!Zk0

X/m"m1JO0Z)h4U0SQL2> SELECT * FROM DUAL;

c&u n3|%["E0

FnT|~"q.Nj-mD!r0DU
u1j+}[*M0--51Testing软件测试网zqNt,iwv
X

~%l%~/m4J6tq0A051Testing软件测试网HX'_6n8o'c1\ p Fh

SQL2> CREATE TABLE T1 (ID NUMBER);
L e(Dx;i&u+x0CREATE TABLE T1 (ID NUMBER)51Testing软件测试网9x E^].YK&W
*
1行出现错误:
Q0{8dS+xr"X z+eZ0ORA-01536:
超出表空间'YANGTK'的空间限额
51Testing软件测试网aKSH+}%L

v gHQ+S5`0
7g2g8K&ID ]3e:^L0SQL2> CREATE OR REPLACE PROCEDURE P AS
D},j6n.ft#_I?02 BEGIN
#_:J2j0j _!pAd03 NULL;
:c$h4b*me04 END;
6E"Zr'O1TZz05 /
51Testing软件测试网 z"OL'YX,F xYe

51Testing软件测试网9B"b/A'Uo&k `!fE

过程已创建。51Testing软件测试网3Hx%ir"Z

虽然建表语句失败了,但是这时由于刚才回收DBA角色,导致UNLIMITED TABLESPACE权限被连带回收造成的,与RESTRICTED SESSION的状态无关。

$cv6l9Y:EkkI7gO6h0

可以看到,虽然数据库处于RESTRICTED SESSION状态,但是数据库中已经登陆的会话可以继续执行任何操作,直到会话断开连接。

6Y,t1`Wb;nw/uvaP&j0

这个现象说明,如果希望数据库处于RESTRICTED SESSION状态,且此时不希望普通用户登陆数据库,那么最好的方法是采用STARTUP RESTRICT的方式来启动数据库,这样可以确保没有普通用户登陆。而ALTER SYSTEM ENABLE RESTRICTED SESSION的方式虽然可以使得数据库进入RESTRICT状态,但是不能保证现有的连接用户都是具有RESTRICTED SESSION权限的。即使是在STARTUP之后,马上发出ENABLE RESTRICTED SESSION命令也是不可靠的,因为这个时间差可能使得后台JOB运行了。因此如果是使用ENABLE RESTRINCTED SESSION方式,还需要在后台通过ALTER SYSTEM KILL SESSION的方式清除掉所有的普通用户连接。

J4i!S'E$KJ?0

最后来看看RESTRICTED SESSION状态和RAC环境的关系。51Testing软件测试网B)by/vc"G/C

RESTRICTED命令是在实例上执行的,因此Oracle是否将这个命令应用到整个RAC环境需要通过测试来说明。51Testing软件测试网:b*nol2]+pmZ

为了更好的说明情况,下面的测试在一个三节点的RAC环境中进行,其中两个节点处于启动状态,另一个节点关闭。

D:` D#zv k0^-G"U[0

随后在实例1上发出ALTER SYSTEM ENABLE RESTRICTED SESSION语句,检查这个操作对实例2是否生效,将实例3启动,检查这个限制新启动的实例3是否有效。51Testing软件测试网^8qi#tT

51Testing软件测试网#@r"R9Yj:sd

bash-2.03$ srvctl status db -d testrac51Testing软件测试网0i;f'_g-J6T$Nd
Instance testrac1 is running on node racnode1
'C2h"t!\7z)X0Instance testrac2 is running on node racnode251Testing软件测试网dT oaM iz!PJ
Instance testrac3 is running on node racnode3
4hGV(q{"h0bash-2.03$ srvctl stop inst -d testrac -i testrac3
%Z$g5^$]L0bash-2.03$ srvctl status db -d testrac
aH){u'Pe0Instance testrac1 is running on node racnode1
/lrY1j W1~u0Instance testrac2 is running on node racnode251Testing软件测试网}(r(a1o,i$y
Instance testrac3 is not running on node racnode3
/ax*V5_$Q)V-E"G'k0bash-2.03$ sqlplus test/test@testrac1
51Testing软件测试网-I$Jy[0zV9uO

#n8TMhf7B:EqI0SQL*Plus: Release 10.2.0.3.0 - Production on星期四219 23:09:47 200951Testing软件测试网6~~QS!skO i

51Testing软件测试网+HtF2h2|5~]

Copyright (c) 1982, 2006, Oracle. All Rights Reserved.

%^)lL1\6vn0

j6TH)^ m3i3T'E0连接到:
s|,_N;Uk/VI9u4y9V0Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - 64bit Production51Testing软件测试网edPB? d"C
With the Partitioning, Real Application Clusters, OLAP and Data Mining options

F/T;FSi{0Z0

1R ~3Mu} I(J0SQL> select * from session_privs;51Testing软件测试网1o fNy#Y:z |!Y(y

51Testing软件测试网-N mdD'R yG&T

PRIVILEGE51Testing软件测试网$mP-RB8s(B%A%C-l
----------------------------------------
)\ a4huC0CREATE SESSION51Testing软件测试网 n3HbeXK5Q%H1Ja
UNLIMITED TABLESPACE51Testing软件测试网nG&{1_ ]/[0f
CREATE TABLE
%J.SAZG0d0CREATE CLUSTER51Testing软件测试网u%|E@4t F"N:T
CREATE SYNONYM51Testing软件测试网4W5w z._2c?!d
CREATE VIEW
/S#gSU'B%N+BJ/[0CREATE SEQUENCE51Testing软件测试网*YC&x Dkk/?*dnO
CREATE DATABASE LINK
bp\0b"A2p%L y\[0CREATE PROCEDURE
{;dxfq/O9h(]?b0CREATE TRIGGER
&C3S*`GF!iBSHh0CREATE MATERIALIZED VIEW51Testing软件测试网&Np$c{"l
CREATE TYPE
1[Rr8Mmj:wt0CREATE OPERATOR51Testing软件测试网1qs[&r)j'W
CREATE INDEXTYPE
51Testing软件测试网r^y:yO+DX V.o

Ide2AM/b}0已选择14行。

%hq-n-I;x A0

[ w Sww0SQL> select instance_name from v$instance;51Testing软件测试网B8Tj6Cs,R8U,[dO

P e h9F!F_w#CW8Q0INSTANCE_NAME
4jL4n0Q i ]\6N0----------------
-I*u eSJ]2w0testrac1
51Testing软件测试网v8Aw:Yj

将实例1变为RESTRICTED SESSION状态:51Testing软件测试网2kn?0j5Y-fs^

|BNs ];XH`|0SQL> conn sys@testrac1 as sysdba输入口令:已连接。
o'o7z k,H&n,s4Y0SQL> alter system enable restricted session;

6|fta.yH#b_a051Testing软件测试网q]YxH P9|

系统已更改。51Testing软件测试网2V!~5q"?'x+p/h/iw

51Testing软件测试网SQ!lE1s+Oy$E!j

SQL> conn test/test@testrac151Testing软件测试网n0]"uze6V w
ERROR:51Testing软件测试网&{t2Mx c gSz/r
ORA-01035: ORACLE only available to users with RESTRICTED SESSION privilege

"R!j.yI2YV,u0

WX5T |g2\0警告:您不再连接到ORACLE51Testing软件测试网;u1q/`Sl3A3_
SQL> conn test/test@testrac2
已连接。
J,Y2]ly}-t|*{0SQL> select instance_name from v$instance;

v"maE8GP's*SX0

F&aHE)pXz&F0INSTANCE_NAME51Testing软件测试网:\FO+k6dw3\+p
----------------51Testing软件测试网;hOj/pk&|6?x;S4t
testrac2

"v3x3d^ G)k0

显然实例1上的设置与实例2无关,对于实例3而言其实都不用测试,因为数据库启动的时候没有指定STARTUP RESTRICT,自然不会启用RESTRICTED SESSION状态,不过为了严谨,还是测试一下:51Testing软件测试网9jl9px(q4F

51Testing软件测试网8X5iL-[}I

SQL> host
5O"yjL&UHj0$ srvctl start inst -d testrac -i testrac3
,Tb:g3FX0$ exit

UR!b!mb(~s051Testing软件测试网@Y3d"D{6\#e?

SQL> conn test/test@testrac1
gFq&Bq0ERROR:
B'dVbt0ORA-01035: ORACLE only available to users with RESTRICTED SESSION privilege

FRE3c e(RG051Testing软件测试网E@/i5n,L z

警告:您不再连接到ORACLE
G2Ig(~jr\l0SQL> conn test/test@testrac3
已连接。
3{J$uE0m| eB{5d|0SQL> select instance_name from v$instance;
51Testing软件测试网1h#O,u;A~!~5P

51Testing软件测试网'\MT)J Bt ~C

INSTANCE_NAME
u:TA`0db-H4h*b'\!W0----------------
L8}5o Nc+|$l0testrac3
51Testing软件测试网#Y;J3GnMn

51Testing软件测试网(z,DDAibz6C

SQL> select instance_name, status, logins from gv$instance;51Testing软件测试网+jp'ky&Z5c^ ` t ]

51Testing软件测试网O1h k'D[:jKIL

INSTANCE_NAME STATUS LOGINS
` t!FG(JF,@N0---------------- ------------ ----------
bb}T&~;ZV#P{0testrac3 OPEN ALLOWED51Testing软件测试网!n @0K aT
testrac2 OPEN ALLOWED
@4~7f1S2}P4b U l0testrac1 OPEN RESTRICTED

3mf*E(qG9X0

对于RESTRICTED SESSION状态,RAC环境的各个实例之间是相互独立的,各自的状态完全由各自的实例进行设置。

g7W g@[D@,qp:ek0

TAG:

 

评分:0

我来说两句

Open Toolbar