oracle 的restrict模式(转)

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

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

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

DK2y2Nq;bD7l%T0

数据库可以在启动的时候以RESTRICT方式来启动数据库:51Testing软件测试网*u{yP(T

0JGt;wTq b0SQL> conn / as sysdba已连接。
3?A.AV Y&Qo!Y0SQL> shutdown immediate
数据库已经关闭。已经卸载数据库。51Testing软件测试网,c!K G@T/In
ORACLE
例程已经关闭。51Testing软件测试网P5t6sMI0B
SQL> startup restrict51Testing软件测试网5]'^8UX(p!Oo.lS:Lz9[
ORACLE
例程已经启动。
51Testing软件测试网0{I;F*~6M$\~)|

9S3d6jI/py$w,u0Total System Global Area 5279498240 bytes
`#hb K3PJ"S3@ O9n0Fixed Size 2094528 bytes
6Wtp+p,s0Variable Size 3192597056 bytes
I0}1g4A-W:~(?r5|w0Database Buffers 2080374784 bytes
e:Af'Q DD,Ft4W'q0Redo Buffers 4431872 bytes
数据库装载完毕。数据库已经打开。51Testing软件测试网%h.NH1[(}zu f,K
SQL> conn test/test
Cf[1p%SO,L/u0ERROR:
!?imR wq0ORA-01035: ORACLE only available to users with RESTRICTED SESSION privilege

LZ3WG {r'^051Testing软件测试网']pF ReF7B

警告:您不再连接到ORACLE51Testing软件测试网T*MN0JR(n
SQL> conn / as sysdba
已连接。
+xK4aa Q0SQL> select granted_role from dba_role_privs
2f8g A!V+qCW02 where grantee = 'TEST';
51Testing软件测试网urJ wS'U9]r2W

.@'Q0i}Y3TBCK0GRANTED_ROLE
Gev2JV@8_x0------------------------------------------------------------
VU7]pF"q)X0e0CONNECT51Testing软件测试网b7c6b D.OV0]_
RESOURCE
51Testing软件测试网Nc \%~v6Z

#G [:@@;pjIFj:i+{k0SQL> grant dba to test;

v7CdO.Rg"F2vH?^051Testing软件测试网.~+pR8{:J7z8uj

授权成功。51Testing软件测试网6q2rFVpT!vX

WR$g%`6G#{3A6f0SQL> conn test/test已连接。51Testing软件测试网 y mmXx5k
SQL> conn / as sysdba
已连接。51Testing软件测试网s w$CXv,O"w
SQL> revoke dba from test;

%D*S;l9mKGj&|7m051Testing软件测试网/w/M"F,C8y)fL

撤销成功。

3S7J/xN2ve0

;x3je:V2|(S0SQL> grant restricted session to test;51Testing软件测试网-y%j Z,j&U'}\0z

51Testing软件测试网+ND)J.l9pg.{ Z

授权成功。

z9|MID)Y/g)y051Testing软件测试网?0\GC!G.J

SQL> conn test/test已连接。

Qx+x/}\!?%A0

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

.y8Cic{V4iM$e&F0

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

:`cp.F0?D,TW/Sj p/W0

Oracle11g的管理员手册文档中有一个地方的描述错误:

1x(ba |8E\ f8M0

^1U |h e }0Further, 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.51Testing软件测试网#Z5q'vpl5U

根据文档的描述,如果数据库处于RESTRICTED SESSION状态,则禁止用户采用NET服务方式登陆,而必须在服务器上直接登陆,但是测试发现,Oracle并没有这个限制。51Testing软件测试网;m'C4i^*}H;BD@

51Testing软件测试网H&D U(~7L

SQL> conn / as sysdba已连接。
j L"|/]){a,]N0SQL> alter system disable restricted session;
51Testing软件测试网;}r2bM iKd'W

EU,\r{ly+N0系统已更改。51Testing软件测试网([f)c.eaKO1s nH;}f

-n8f&fsjI0SQL> conn test/test@test11g已连接。
HJmd~;FmW'S0SQL> conn / as sysdba
已连接。
kLh7h9Xz,Hp`y(H0SQL> alter system enable restricted session;
51Testing软件测试网(X?3_V@$['R c

']A7B#z^0E%A0系统已更改。

+\l2\ ]s;w%]$H051Testing软件测试网xc8TA6}Xm

SQL> conn test/test@test11g已连接。51Testing软件测试网_5BxR Jo%DJT

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

下面再来看看RESTRICTED SESSION状态,对于已经登陆数据库的普通用户有何影响:51Testing软件测试网;e(OY$E@+x

D V(bGxnq0SQL> conn / as sysdba已连接。
*? @Eg$F2|x)~0SQL> revoke restricted session from test;

m ^+Q|E7n-mfGf+M051Testing软件测试网0Ck)@f2Alp

撤销成功。

WYx7T5?051Testing软件测试网Bk^XR*P]i[y

SQL> alter system disable restricted session;51Testing软件测试网gSg$OtJyJ

51Testing软件测试网3{,Y:^;e1e.sq#f

系统已更改。51Testing软件测试网u vn-E/k3`f

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

下面在会话2TEST用户登陆数据库:

UBA~0c7bkr0

,w!~Tv,s6G7W\0SQL> CONN TEST/test已连接。51Testing软件测试网P d6ny$E"X(b_`
SQL> SET SQLP 'SQL2> '
vV @|n;F5M1d'`BD$I0SQL2> SELECT * FROM SESSION_PRIVS;
51Testing软件测试网 i8X3L5LJ:I$yn p+mP X4M)h

51Testing软件测试网'~ CG O;e k

PRIVILEGE51Testing软件测试网2n6@f0B&t j3I
--------------------------------------------------------------------------------
7m P~ |#oEJ0CREATE SESSION51Testing软件测试网'xPAw$GmlcY
CREATE TABLE
,m%p9C5_VC m0CREATE CLUSTER51Testing软件测试网CxU%wjweP)I
CREATE SEQUENCE51Testing软件测试网)do^4t7B H\-bf:S,\
CREATE DATABASE LINK51Testing软件测试网h"}wy)rs/{
CREATE PROCEDURE51Testing软件测试网6@ z$p3Cq/z
CREATE TRIGGER
,HQ n-[8Q|0CREATE TYPE
3^k JKJ0CREATE OPERATOR
'_W,\$ld T3H0CREATE INDEXTYPE

6ulAx R1x0

G/E4q(u!i/xz0已选择10行。

"PR Xw;G0

下面回到会话1,将数据库置于RESTRICT SESSION状态:51Testing软件测试网y9_6WN6Tq_D

51Testing软件测试网t?YQ0zI?C c%Z

SQL> alter system enable restricted session;

*w"K LQ1B!@&]^051Testing软件测试网:g9s%s LK3^

系统已更改。51Testing软件测试网R#}*cs.n#{&g1kc/M~

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

3F,wd \,z [{X5@ e0SQL> conn test/test51Testing软件测试网*@]4p_K
ERROR:
1\O;Ct VO {M.]x0ORA-01035: ORACLE only available to users with RESTRICTED SESSION privilege

0\H |*p-wa051Testing软件测试网)]CM!` J ]#KB!au%E x

警告:您不再连接到ORACLE

sj D*T2G N0

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

oRwc[3A5J4p [?051Testing软件测试网RAfSn

SQL2> SELECT * FROM DUAL;

:q4f ] ^\6OO051Testing软件测试网!Wti a(v N,|$V;w

DU
3t5OFA-Y ^ L0--
ToEaJL$q mq6[0X
51Testing软件测试网]$[+Kn4kL,v0G7d

51Testing软件测试网s TT;Bi

SQL2> CREATE TABLE T1 (ID NUMBER);
s;Ou0[gVUH~0f#?0CREATE TABLE T1 (ID NUMBER)51Testing软件测试网 b/]t_'k/d%S
*
1行出现错误:
@ V#PES8L0ORA-01536:
超出表空间'YANGTK'的空间限额
51Testing软件测试网8^C#t$}.Pya-R/yl

o.T$c6MZ;\9i0
3u&s-|X3JME {]6h8t0SQL2> CREATE OR REPLACE PROCEDURE P AS
P:~[EQ8v XP'U_B8X02 BEGIN
j){7W;bE@l!{03 NULL;
j0TS^B.x04 END;51Testing软件测试网cI6w wZY6h
5 /
51Testing软件测试网A+v7WR8AK;_%C4~o

!\FZB:Dl0过程已创建。51Testing软件测试网#SK}!h)zvk

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

l5y%T2p%pw0

可以看到,虽然数据库处于RESTRICTED SESSION状态,但是数据库中已经登陆的会话可以继续执行任何操作,直到会话断开连接。51Testing软件测试网;_b@8~W0R

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

\4~v8e0f4{eU)lm0

最后来看看RESTRICTED SESSION状态和RAC环境的关系。

re Yk"\ gg0

RESTRICTED命令是在实例上执行的,因此Oracle是否将这个命令应用到整个RAC环境需要通过测试来说明。51Testing软件测试网\n3z!FZy)u

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

r0|B ~:rxR%W0

随后在实例1上发出ALTER SYSTEM ENABLE RESTRICTED SESSION语句,检查这个操作对实例2是否生效,将实例3启动,检查这个限制新启动的实例3是否有效。

m ?}5[NIa051Testing软件测试网oE_(]F`VP6p

bash-2.03$ srvctl status db -d testrac
+n0xbPkl"J0Instance testrac1 is running on node racnode151Testing软件测试网 u!Mz_"g2W/{K+A.A
Instance testrac2 is running on node racnode2
(Bh,x z!|+c p-d0Instance testrac3 is running on node racnode351Testing软件测试网1a|5LSSMveEK
bash-2.03$ srvctl stop inst -d testrac -i testrac3
8n J4A7~_9R6}3`0bash-2.03$ srvctl status db -d testrac51Testing软件测试网/F,WC/I*R5Y
Instance testrac1 is running on node racnode1
"ydb?1|/G0Instance testrac2 is running on node racnode2
Eg9d*B8U`!tVg;K0Instance testrac3 is not running on node racnode3
c2Ep6^ T6\0bash-2.03$ sqlplus test/test@testrac1

.I-u"^7U3KQ@:t9T`0

#v:bQn8IQm?0SQL*Plus: Release 10.2.0.3.0 - Production on星期四219 23:09:47 200951Testing软件测试网 _#Y'|9[V

51Testing软件测试网}xpV7e*F_

Copyright (c) 1982, 2006, Oracle. All Rights Reserved.51Testing软件测试网2W JH\8z9@%I

vz#k,Hs'p^H0连接到:51Testing软件测试网lIZU pW
Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - 64bit Production
1w.F,\,Phl~Nf0With the Partitioning, Real Application Clusters, OLAP and Data Mining options
51Testing软件测试网'?#yH`U9w

51Testing软件测试网6f7S&? Tg2C am'^3y {G

SQL> select * from session_privs;

4|^ pk9]e'N#lz#DDV-J051Testing软件测试网N6c-]*f6x[

PRIVILEGE
sjP uh X-^/H0----------------------------------------
c-eRBik$@#e sh[0CREATE SESSION
,^-dy1?et~(\0UNLIMITED TABLESPACE51Testing软件测试网 v3PI;t*Y6c{y j
CREATE TABLE51Testing软件测试网quF,b6q)H
CREATE CLUSTER51Testing软件测试网mY:FPlf$v
CREATE SYNONYM
`!AJ(xxr0CREATE VIEW
7@I%A9U%x,B{0CREATE SEQUENCE
*`h` k[%x,_)Y0CREATE DATABASE LINK51Testing软件测试网(JoS*J:ce~w
CREATE PROCEDURE51Testing软件测试网%lY3O#R vG
CREATE TRIGGER
;W0i Okj$e au c[0CREATE MATERIALIZED VIEW
W/r*Y,Yyu(lbZ0CREATE TYPE
@eNK,YE\0CREATE OPERATOR51Testing软件测试网 O$M[9eL)O|
CREATE INDEXTYPE
51Testing软件测试网;hB/|q1L+P@

51Testing软件测试网4v0vF:Ov(X5Vv!@

已选择14行。51Testing软件测试网s#R D`9sq5Kl

51Testing软件测试网[r JS@/T r1_:J:`9f

SQL> select instance_name from v$instance;51Testing软件测试网#zOB2mon-B

w/u!?BI0INSTANCE_NAME
dE A)fW0----------------
-}G,jnF5` Or0testrac1
51Testing软件测试网i DsdF2^ L

将实例1变为RESTRICTED SESSION状态:51Testing软件测试网n-| J7?'Vd

51Testing软件测试网B-C2M\j]s*T

SQL> conn sys@testrac1 as sysdba输入口令:已连接。51Testing软件测试网u ZQ Xi5d x;W\!E
SQL> alter system enable restricted session;
51Testing软件测试网e ~4[1v0a(^

51Testing软件测试网6\p1l,y`J

系统已更改。

\n*B&L m:S051Testing软件测试网,KgMN"Ljm

SQL> conn test/test@testrac1
u5Q$m~,|8g$T2K-t)|)~0ERROR:
!M*m7{$Lw8E!M3uG0ORA-01035: ORACLE only available to users with RESTRICTED SESSION privilege
51Testing软件测试网;}'_K{"]_X

b] sjJ[B0警告:您不再连接到ORACLE51Testing软件测试网%n#Z`a iia0O*~-\
SQL> conn test/test@testrac2
已连接。
4x"{:I"rI pQ0SQL> select instance_name from v$instance;

!k1j)T"Ea%M0

G{\ S,b;]2Z\0INSTANCE_NAME
Z C1Xd8Ia0----------------51Testing软件测试网Z'xnzzi0N:a.c
testrac2
51Testing软件测试网7J8K ivD7a4N;x8[M

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

51Testing软件测试网YF(b wA

SQL> host
X-\ m2ZM&fgN0$ srvctl start inst -d testrac -i testrac351Testing软件测试网6tQ0}%S`p%T$[ Yf
$ exit

@AgX3}0R gJ051Testing软件测试网o4f7e,go)v(U

SQL> conn test/test@testrac1
J/c"NP3c,l.cZ2uq]0s%b0ERROR:
sr"k7Xf3j'_0ORA-01035: ORACLE only available to users with RESTRICTED SESSION privilege

6DBaw0Yh#a0

CGp$\jO$_R(F'z\J0警告:您不再连接到ORACLE51Testing软件测试网3@-l(dsrO
SQL> conn test/test@testrac3
已连接。51Testing软件测试网 V-T3B8Z|
SQL> select instance_name from v$instance;

P^z3|5A4G051Testing软件测试网#k ?IE8B7eP q.h

INSTANCE_NAME
?-Rh?\!V0----------------
w@*d2fO8t7C0testrac3
51Testing软件测试网9j5j7mV Z5?6|'QO

%\jS&`+_#U fq+PY)w0SQL> select instance_name, status, logins from gv$instance;51Testing软件测试网 ~KmZ'Z/A \

51Testing软件测试网Wc N,r[l,w

INSTANCE_NAME STATUS LOGINS51Testing软件测试网7Ie dDR} U
---------------- ------------ ----------
4gdp6tf|R0testrac3 OPEN ALLOWED51Testing软件测试网DO]EQ4y$x#L
testrac2 OPEN ALLOWED51Testing软件测试网;n!J^fa5~_?#^
testrac1 OPEN RESTRICTED
51Testing软件测试网R&}@`8R7X J_+~

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

&@Qh4x!?:_?0

TAG:

 

评分:0

我来说两句

Open Toolbar