DBMS_RLS Package
Is there any way I can use this package in the standard version.
It is the only 'extra' from the enterprise edition that i require and cannot justify the upgrade purely based on this.
Can the package be installed on the standard edition or does it require other packages only present within the enterprise edition.
Is there any way I can use this package in the
standard version.Depends how you feel about being in breach of your licence I guess.
Cheers, APC
Similar Messages
-
Install dbms_rls package
Hi All,
I want to use dbms_rls package in one of my applications and I dont know which script to apply to create the package. Kindly guide me. My DB version is 10.2.0.1.0.I hope you have enterprise edition, and its installed be default
sql> desc dbms_rls
If its not installed,
run the below as SYS
$ORACLE_HOME/rdbms/admin/dbmsrlsa.sql
$ORACLE_HOME/rdbms/admin/prvtrlsa.plb -
DBMS_RLS를 이용한 FINE GRANED ACCESS CONTROL (FGAC)의 개념 및 사용방법 (8I ~ 10G)
제품 : ORACLE SERVER
작성날짜 : 2005-11-23
DBMS_RLS를 이용한 FINE GRANED ACCESS CONTROL (FGAC)의 개념 및 사용방법 (8I ~ 10G)
=====================================================================
PURPOSE
여러 사용자가 같은 테이블을 조회하더라도, 각 사용자마다 자신의 정보만을
표시해 준다거나, 특정 시간 범위 내에서는 다른 조건의 데이타만 보여지는 등
row level의 security및 context를 지정하는 것이 8i부터
FGAC (Fine Graned Access Control)을 통해 가능해졌다.
이것은 VPD (Virtual Private Database)라는 용어로도 언급되어지는대,
dbms_rls pacakge를 통해 policy 및 predicate을 생성하여 사용되어진다.
Explanation & Examples
FGAC는 row level로 security 및 context를 부여하는 것으로 결국 tranparent하게
수행하는 SQL문장에 where절 조건을 추가하는 것이다.
이렇게 추가되는 where 조건을 predicate이라고 부른다.
1. FGAC의 간단한 예제
scott의 emp table에 대해서 login한 username과 같은 ename에 대한 정보만을
보여주는 예제를 제시한다. super_user라는 role을 가진 user에 대해서는
전체 emp table이 모두 display되는 방법도 첨부한다.
(1) dbms_rls package에 대한 실행 권한을 scott에게 부여한다.
SQL> grant execute on dbms_rls to scott;
(2) emp table의 ename에 해당하는 user몇명을 생성하고 권한을 부여한다.
SQL> create user king identified by king;
SQL> create user adams identified by adams;
SQL> grant connect to king, adams, james;
SQL> connect scott/tiger
SQL> grant select on emp to king, adams, james, eykim;
(3) scott user에서 다음과 같이 predicate을 포함한 function을 생성한다.
SQL> connect scott/tiger
SQL> create or replace function predicate
(obj_schema varchar2, obj_name varchar2)
return varchar2 is d_predicate varchar2(2000);
BEGIN
d_predicate := 'ename = sys_context (''USERENV'', ''SESSION_USER'')';
RETURN d_predicate;
END predicate;
policy이 제대로 만들어졌는지 다음과 같이 scott user에서 확인한다.
SQL> select predicate('dummy','dummy') from dual;
PREDICATE('DUMMY','DUMMY')
ename = sys_context ('USERENV', 'SESSION_USER')
(4) 다음 문장을 system 혹은 scott user에서 실행한다.
이때 parameter의 의미는, object_schema, object_name, policy_name,
function_schema, policy_function 순이다. 이 외의 parameter가 더 있지만
나머지는 default값을 이용한다.
SQL> exec dbms_rls.add_policy('scott', 'emp', 'pol1', 'scott', 'predicate');
기존의 같은 policy name이 존재하는 경우에는 다음과 같이 지우고 새로 생성할
수 있다.
SQL> exec dbms_rls.drop_policy( 'SCOTT', 'EMP', 'pol1' );
(5) king/scott등 user로 접속하여 emp table을 조회해 본다.
SQL> connect king/king
SQL> select * from scott.emp;
EMPNO ENAME JOB MGR HIREDATE SAL COMM
DEPTNO
7839 KING PRESIDENT 17-NOV-81 5000
10
SQL> connect scott/tiger
SQL> select * from emp;
EMPNO ENAME JOB MGR HIREDATE SAL COMM
DEPTNO
7788 SCOTT ANALYST 7566 19-APR-87 3000
20
(6) emp table의 ename에 속해있지 않은 user로 접속하여 조회해 본다.
eykim user에 대해서 emp table의 select권한은 (2)번 단계에서 제공되었다.
SQL> connect eykim/eykim
SQL> select * from scott.emp;
no rows selected
(7) super_user라는 role을 생성하고 이 role을 가진 사용자는 모두 데이타가 조회
가능하도록 policy function을 변경하여 본다.
SQL> grant select on dba_role_privs to scott;
SQL> create or replace function predicate (obj_schema varchar2, obj_name varchar2)
return varchar2 is d_predicate varchar2(2000);
counter number;
begin
select count(*) into counter
from dba_role_privs
where granted_role='SUPER_USER'
and grantee = sys_context ('USERENV', 'SESSION_USER');
if counter = 1 then
d_predicate := '';
else
d_predicate := 'ename = sys_context (''USERENV'', ''SESSION_USER'')';
end if;
return d_predicate;
end predicate;
(8) king user에게 super_user role을 부여한 후 (5)번과 어떻게 결과가 다르게
나오는지 확인한다.
SQL> create role super_user;
SQL> grant super_user to king;
SQL> connect king/king
SQL> select * from emp;
EMPNO ENAME JOB MGR HIREDATE SAL COMM
DEPTNO
7369 SMITH CLERK 7902 17-DEC-80 800
20
7499 ALLEN SALESMAN 7698 20-FEB-81 1600 300
30
7902 FORD ANALYST 7566 03-DEC-81 3000
20
7934 MILLER CLERK 7782 23-JAN-82 1300
10
14 rows selected.
RELATED DOCUMENTS
<Note 67977.1> Oracle8i Fine Grained Access Control - Working Examples -
제품 : ORACLE SERVER
작성날짜 : 2005-11-24
FINE GRAINED ACCESS CONTROL(FGAC)를 위한 DBMS_RLS.ADD_POLICY의 VERSION별 특징
=======================================================================
PURPOSE
row leve의 security 및 context관리 방법인 FGAC에 대한 간단한 개념 및 사용방법은
<bul 23026>에 제시하였다.
이 문서에는 FGAC를 위한 dbms_rls package의 8i ~ 10g까지의 version별 특징을
정리하며, STATIC_POLICY와 POLCICY_TYPE parameter에 대해서는 예제를 이용하여
자세히 살펴보도록 한다.
Explanation & Examples
dbms_rls.add_policy를 사용할 때 일반적으로 주는 value값의 예제는 다음과 같다.
이중 대부분은 default값을 이용하여, 일반적으로는 앞의 5개의 parameter만
value를 주면 된다.
SQL> exec DBMS_RLS.ADD_POLICY ( -
> object_schema => 'SCOTT', -
> object_name => 'EMP', -
> policy_name => 'POL1', -
> function_schema => 'SYS', -
> policy_function => 'PREDICATE', -
> statement_types => 'SELECT', -
> static_policy => false, -
> policy_type => DBMS_RLS.DYNAMIC
> long_predicate => false);
1. FGAC의 version별 특징
(1) sec_relevant_cols/sec_relevant_cols_opt : 10G
위에 기술한 add_policy procedure의 parameter외에 10g에서 추가된
parameter로 다음 두 parameter가 존재한다.
이 parameter는 해당되는 column이 조회될때만 policy가 작동하게 하기 위한
것으로 metalink.oracle.com site에서 <Note 250795.1> 를 살펴보면 사용 방법
및 예제를 확인 가능하다.
- sec_relevant_cols
- sec_relevant_cols_opt
(2) long_predicate : 10G
default는 false이며, true로 지정하는 경우 predicate이 4000 bytes이상이
될 수 있다.
(3) statement_types : 10G부터 INDEX type추가
9i까지는 SELECT, INSERT, UPDATE, DELETE에 대해서는 FGAC를 적용할 수
있었으나, 10g부터는 INDEX type도 지정 가능하다.
index를 지정하는 경우, function-based index 생성을 제한할 수 있으며,
자세한 예제는 metalink.oracle.com site에서 <Note 315687.1>를 조회하여
확인할 수 있다.
(4) EXEMPT ACCESS POLICY 권한 : 9i
특정 user가 모든 fine-grained access control policy의 영향을 받지
않도록 하려면 exempt access policy권한을 grant하면 되며, 이것은 9i부터
소개되었다.
SQL> grant exempt access policy to scott;
와 같은 방식으로 권한을 부여하면 되며, 이에 대한 자세한 예제는
metalink.oracle.com site에서 <Note 174799.1>를 통해 확인 가능하다.
(5) synonym에 대한 policy설정 : 9.2
synonym에 대해서 VPD (Virtudal Private Database)에 대한 policy를 설정하는
것이 가능해 졌으며 이에 대해서는 metalink.oracle.com에서 <Note 174368.1>를
조회하여 자세한 방법 및 예제를 살펴볼 수 있다.
(6) static_policy : 8.1.7.4
static_policy paramter는 8i에는 없던 것으로 9i에서 도입되면서, 8.1.7.4에도
반영되었다. default값은 false이며, 8173까지는 항상 false인 형태로 동작한다.
즉, policy function이 매번 object를 access할때마다 실행된다.
8.1.7.4부터는 이 parameter를 true로 설정할 수 있는대, 이렇게 되면
해당 session에서 policy function이 한번 실행되고 그 function이 shared pool에
cache되어 있으면 재실행없이 그대로 사용된다.
10g부터는 (7)번에 설명하는 policy_type parameter가 추가되어,
이 parameter에 true로 지정하는 대신, static_type은 false로 두고,
policy_type을 dbms_rls.static 으로 지정하면,
9i와 8174에서 static_policy를 true로 한것과 같은 결과가 나타난다.
(7) policy_type: 10g
다음과 같이 5가지 value가 가능하며, 이 중 default는 dynamic이다.
- STATIC
policy fuction에 포함된 predicate이 runtime환경에 따라 다른 결과를 내지
않는 경우 사용하게 된다. 예를 들어 sysdate의해 다른 결과를 return하는
경우에는 사용하면 사용하면 문제가 될 수 있다.
static을 사용하는 경우 policy function은 한번 실행되어 SGA에 올라온 다음
이후 같은 session에서 같은 object를 사용시에는 재실행 없이 해당 predicate의
결과를 그대로 사용한다.
- SHARD_STATIC
STATIC과 같으나, 이 값은 다른 object에 대해서도 같은 predicate function이
사용되는 경우, 먼저 cache된 predicate을 찾아서 있으면 그 값을 이용한다.
STATIC의 경우는 다른 object 사이에서는 공유하지 않으며 같은 object에
대해서만 cache된 값을 사용한다.
- CONTEXT_SENSITIVE
한 session에서 context가 변경되면 그때 predicate를 재 실행시킨다.
WAS(web application server)를 사용하는 경우 connection pooling방법을
기본적으로 사용하는대, 이 경우 하나의 session을 여러 사용자가 이어서
교대로 사용하는 방식이 된다. 이 경우 middle tier단에서 context를 설정해
주면 context가 변경될때마다 predicate를 새로 실행시켜 변경된 sysdate나
session_user등의 값을 다시 계산하게 되는것이다.
jdbc에서 context설정에 관한 예제는 metalink.oracle.com에서
<Note 110604.1>에서 확인가능하다.
- SHARED_CONTEXT_SENSITIVE
context_sensitive와 동일하며, 단 shared_static과 마찬가지로 여러 object에
대해서 같은 predicate을 사용하는 경우 다른 object에 대한 같은 predicate이
cache되어 있는지를 먼저 살펴본다.
존재하면 session private application context가 변경되기 전까지 그 predicate의
결과를 그대로 사용한다.
- DYNAMIC
이 값이 default값이다. 즉, predicate function이나 시스템이나 환경에
영향을 받는다고 판단하여 statement가 실행될때마다 매번 predicate function을
재 실행하여 환경에 맞는 값을 return하여 준다.
아래에서 sysdate 값에 따라 다른 결과를 return하게 되어 있는
predicate을 이용한 예제를 통해 정확한 메카니즘을 확인한다.
2. static_policy 및 policy_type의 value에 따른 policy function의 작동예제
(a) STATIC_POLICY => TRUE and POLICY_TYPE => NULL
(1) 기존에 pol1 policy가 존재하는 경우 다음과 같이 drop시킨다.
SQL> exec DBMS_RLS.DROP_POLICY ('SCOTT', 'EMP','POL1');
(2) 다음과 같이 predicate function을 scott user로 만들어둔다.
SQL> create or replace function PREDICATE (obj_schema varchar2, obj_name varchar2)
2 return varchar2 is d_predicate varchar2(2000);
3 begin
4 if to_char(sysdate, 'HH24') >= '06' and to_char(sysdate, 'MI')<'05' then
5 d_predicate := 'ename = sys_context (''USERENV'' , ''SESSION'');
6 else d_predicate := 'sal>=3000';
7 end if;
8 return d_predicate;
9 end predicate;
10 /
(3) pol1을 새로 add시킨다.
SQL> exec DBMS_RLS.ADD_POLICY ( -
object_schema => 'SCOTT', -
object_name => 'EMP', -
policy_name => 'POL1', -
function_schema => 'SCOTT', -
policy_function => 'PREDICATE', -
statement_types => 'SELECT', -
static_policy => TRUE, -
policy_type => NULL);
(4) adams user에서 scott.emp를 조회해 본다.
단 다음과 같이 scott.emp에 대한 select권한을 king에게 주어야 한다.
SQL>grant select on emp to king;
SQL>!date
Thu Nov 24 14:01:13 EST 2005
SQL> connect king/king
SQL> select * from scott.emp;
EMPNO ENAME JOB MGR HIREDATE SAL COMM
DEPTNO
7839 KING PRESIDENT 17-NOV-81 5000
10
5분이후가 되어 predicate function의 if조건을 만족하지 않아도,
king user는 같은 값을 emp table에 대해서 return한다.
SQL>!date
Thu Nov 24 14:10:13 EST 2005
SQL> connect king/king
SQL> select * from scott.emp;
EMPNO ENAME JOB MGR HIREDATE SAL COMM
DEPTNO
7839 KING PRESIDENT 17-NOV-81 5000
10
(b) STATIC_POLICY => FALSE and POLICY_TYPE => DBMS_RLS.DYNAMIC
(1) 기존의 policy를 다음과 같이 drop시킨다.
SQL> exec DBMS_RLS.DROP_POLICY ('SCOTT', 'EMP','POL1');
(2) pol1을 새로 add시키는대 이대 static_policy와 policy_type을 다음과 같이
변경한다.
SQL> exec DBMS_RLS.ADD_POLICY ( -
object_schema => 'SCOTT', -
object_name => 'EMP', -
policy_name => 'POL1', -
function_schema => 'SCOTT', -
policy_function => 'PREDICATE', -
statement_types => 'SELECT', -
static_policy => flase, -
policy_type => dbms_rls.dynamic);
(3) king user에서 조회해본다.
predicate function은 위의 2-(a)에서 실행한 것을 그대로 사용한다.
즉 (a)를 실행하지 않은 경우, 조회전에 (a)-(2)번을 실행해야 한다.
SQL>!date
Thu Nov 24 15:01:13 EST 2005
SQL> connect king/king
SQL> select * from scott.emp;
EMPNO ENAME JOB MGR HIREDATE SAL COMM
DEPTNO
7839 KING PRESIDENT 17-NOV-81 5000
10
5분 이후가 되어 다시한번 king user에서 실행해본다.
SQL>!date
Thu Nov 24 15:10:13 EST 2005
SQL> select * from scott.emp;
EMPNO ENAME JOB MGR HIREDATE SAL COMM
DEPTNO
7788 SCOTT ANALYST 7566 19-APR-87 3000
20
7839 KING PRESIDENT 17-NOV-81 5000
10
7902 FORD ANALYST 7566 03-DEC-81 3000
20
RELATED DOCUMENTS
<Note 281970.1> 10g Enhancement on STATIC_POLICY with POLICY_TYPE Behaviors
in DBMS_RLS.ADD_POLICY Procedure
<Note 281829.1> Evolution of Fine Grain Access Control FGAC Feature From 8i
to 10gfirst you could use default column values, not a trigger, which is more expensive.
if your apps already assumes full access to table to get max id ( another RT ), this is bad. Current RLS can not really help if you can not change the apps because of this flaw logic ( you can store the maxid anywhere, why scanning the whole table to find it ) -
Populating the cache with VPD tables fails
Using the Add Tables wizard I am trying to add tables to an Oracle Database cache. The tables have had RLS policies applied using the DBMS_RLS package. The Add Tables wizard fails with an ORA-28112 error (failed to execute policy function).
Are there any known problems with cacheing tables of a virtual private database?
Of course we want to cache an entire table, not just a portion as defined by that table's security policy. We have a procedure call that can cause the security policy to return a null predicate (effectively turning off security for all tables). We have set up a logon trigger to run this procedure for the user that populates the cache (we have done this successfully for other users), but we still get the error.
Any help?
Cache system:
SPARC/Solaris 8
9iAS 1.0.2.1
Oracle EE 8.1.7.0
Origin database:
SPARC/Solaris 8
Oracle EE 8.1.7.0
Thanks,
SteveSteve,
In my opinion you should look first into the trace files. They are generally located under
USER_DUMP_DEST directory. I believe that this error normally generates a trace file. So in the trace file you can see that it was trying to do and what happened. Also this may be happening due to some permission problems as well e.g. logged user versus policy user etc.
HTH
Prakash
null -
Oracle Database VM Template - too many issues
Just wanted to offer my experience with the Oracle VM Template, specifically for 64-bit Oracle Database 11g (11.1). We decided to try out Oracle VM and the templates on a new server, we thought the promise of the templates could drastically decrease our time spent installing and setting up new boxes.
Setting up the template and getting it running was a breeze, although Oracle could have better documented things. Some passwords and important steps were left out that I had to figure out after the fact.
The real nightmare is the Oracle database installation it comes with. I guess they call this an OEM installation - but it's complete crap. Nothing really works like it should, and I found it to be a lost-cause trying to get it to work after awhile. Enterprise Manager comes disabled - what kind of database installation is this without enterprise manager? I guess they think everyone is using Grid Control - although I'm not even convinced Grid Control would have worked with all the issues going on.
I spent a day trying configure the installation to get things working, then realized packages were missing, needed for anything other than the database engine to run, due to the stripped version of oracle linux the template uses.
None of this was documented or explained at all. There's nothing on metalink..pretty much nothing. If you want a simple database that you can connect to and run sql queries through sql plus, this might just work. But it's far from a typical production setup. I would steer clear of this.Hi there,
VPD (Virtual Private Database) is a feature of the Oracle Enterprise Edition:
http://www.oracle.com/technology/deploy/security/database-security/virtual-private-database/index.html
It's in the dbms_rls package.
HTH, Peter -
Help With FGAC (VPD, RLS...)
Hi all.
I'm trying to create a Discoverer Trigger to implement FGAC. The point is:
Discoverer DEMANDS you to create a DB function without any argument, returning integer (that won't be used anywhere), and register it in Disco. Adm. Edition. This is the easy part.
Then I created two db. functions. The first one configures Policies (INFO_SEC). The second one (this is the one I try to invoke in discoverer - EUL_TRIGGER$POST_LOGIN), simply creates the policy using DBMS_RLS package.
SQL> create or replace function info_sec( p_schema in varchar2) return varchar2
2 as
3 v_user varchar2(30);
4 begin
5 select sys_context('USERENV', 'SESSION_USER')
6 into v_user
7 FROM DUAL;
8 if (v_user = 'DWH_ADMIN' ) then
9 return '';
10 else
11 return 'upper(nm_emp) = '||v_user;
12 end if;
13 end;
14 /
Function created.
SQL> create or replace FUNCTION EUL_TRIGGER$POST_LOGIN RETURN INTEGER
2 as
3 begin
4 dbms_rls.add_policy
5 ( object_schema => 'DWH_ADMIN',
6 object_name => 'EMP_T',
7 policy_name => 'POL_EMP',
8 function_schema => NULL,
9 policy_function => 'INFO_SEC',
10 statement_types => 'select, insert, update, delete' ,
11 update_check => TRUE );
12 RETURN(10000);
13 end;
14 /
Function created.
SQL> select EUL_TRIGGER$POST_LOGIN FROM DUAL;
select EUL_TRIGGER$POST_LOGIN FROM DUAL
ERROR at line 1:
ORA-14552: cannot perform a DDL, commit or rollback inside a query or DML
ORA-06512: at "SYS.DBMS_RLS", line 308
ORA-06512: at "DWH_ADMIN.EUL_TRIGGER$POST_LOGIN", line 4I understand this is due to the insert that dbms_rls tries to perform in order to create the policy.
My question is if anyone has an alternative for setting this using pl/sql. I need to set the RLS policy in discoverer only, so, i MUST use Discoverer Triggers.
If you need more info about Discoverer Triggers, you cand find it in:
http://www.huihoo.com/oracle/docs/B25016_04/doc/dl/bi/B13916_04/appendix_b.htm
Anything you guys input here will be highly appreciate!
Regards,
MarcosYou do not want any part of a system which intends to apply different FGAC policies to the same Oracle user based on the application they are using. Assuming you managed to set things up so that each application was setting up its own FGAC policy, FGAC policies apply to the instance. So the policy that would apply to the Discoverer session, for example, could change when some other application created a session and set its own policy. This is a disaster waiting to happen.
Your policy function could look at information about the session to try to determine the application being used and tailor the policy accordingly. This is generally a bad idea since this information is being passed in by the client, meaninging that it is relatively easy to spoof a different application.
Justin -
Row and Column Level Select Permission
Hello Friends,
I am using Oracle Oracle9i Enterprise Edition Release 9.2.0.1.0 and Windows XP. I have two questions. How to set :
1. Row Level Select Permission?
2.Column Level Select Permission?
1. I have a table having 100 records in it. I don’t want to allow all the user to see them; means, if user1, user2 and user3 are going to select * from mytable then only they can get all the rows; while other users (including sys) should not able to get all rows, they should be capable of from 11th record.
Though it can be managed by using another table, but I am just finding the other solution.
2. Likewise, if I don’t want to allow to fetch all the columns; suppose column4 is having confidential info and only be visible by user1,user2 and user3 only, not by any othr user; what should I do?
Please guide and help me.
RegardsYou would need to use Virtual Private Database (VPD)/ row level security (RLS) to apply row-level security policies to the table. The DBMS_RLS package is used for this
http://download.oracle.com/docs/cd/B19306_01/appdev.102/b14258/d_rls.htm#sthref6168
Unfortunately, column-level security wasn't available in 9.2. You would need to upgrade to Oracle 10g to get that functionality. Before that, you would have to create views that selected appropriate subsets of columns and grant permissions on those views to different users.
Justin -
Hi.
Currently we are running oracle 8.0.5 (client/server mode). We will very soon swith to 9iAS 3-tier web interface with oracle8i database, but before that we would like to know if row-level security or VPD is also supported by oracle8i database.
People here, in my company, still don't have the full picture about oracle9i and they prefer to install oracle8i for stability reasons. Do you recommend us to go for oracle9i instead?Hi,
Row-level security is very much supported in
8i (8.1.6.x) using the dbms_rls package.
You can search the documentation on OTN for examples and more information. A note of caution, be careful where and how you plan to use it, due to performance implications, expecially if you are trying to filter a large number of rows. -
Hello folks,
I just would like to know that how to hide rows except dbms_rls package? I mean, it has been said that I can hide rows to create views but lets said that I have got 200 students and each student can see only their rows in students table, in that scenerio I have to create 200 views, isn't it? I just would like to learn that how to hide rows with using views? Do you have any ideas?
Note: I know dbms_rls package, except this solution I am tryin to find onather solution.
Thanks a lot.Hi,
Polat wrote:
Hello folks,
I just would like to know that how to hide rows except dbms_rls package? I mean, it has been said that I can hide rows to create views but lets said that I have got 200 students and each student can see only their rows in students table, in that scenerio I have to create 200 views, isn't it? No! As you realized, that's not practical.
If every student is a separate Oracle user, the USER fucntion will return the name of the current user. A view definition can reference that function, like this:
CREATE OR REPLACE VIEW view_x
AS
SELECT *
FROM table_x
WHERE student_account = USER;If you logged in to Oracle as POLAT, then the view will contain only rows where student_account='POLAT'.
If you logged in to Oracle as SYSTEM, then the view will contain only rows where student_account='SYSTEM'.
If students do not have thier own Oracle accounts, then they are probably authenitcated by some procedure in your package. That procedure can set a SYS_CONTEXT variable, or write data to a global temporary table, which you can then use instead of the USER function in view definitions.
Note: I know dbms_rls package, except this solution I am tryin to find onather solution.Why can't you use dbms_rls, or why don't you want to use it? It's a very powerful tool, and not vey hard to use.
I'm not saying there's never a good reason not to use dbms_rls; I'm just asking if you have one.
I hope this answers your question.
If not, give a specific example of what you want. Post CREATE TABLE and INSERT statements for some sample data for all tables involved. Identify 2 or 3 different students, and show what the contents of the view should be for each student, given the same sample data. If students do not log in to Oracle with their own usernames, then explain how you know which student is currently logged in. -
Hi all,
What does anyone know or have an opinion regarding 10g's ability with Virtual Private Databases/Row level security and Unix based servers providing client-server forms and reports services to browser based windows and unix clients?
My organisation has been stuck in Forms 6 land because of heavy limitations of Forms 9's ability to handle row level security in this situation and I was curious to know if anyone has upgraded to 10g and resolved any issues in that regards.
Thanks all.This is another article:
TECHNOLOGY: Security
Keeping Information Private with VPD
By Arup Nanda
Oracle's row-level security gives users their own virtual private databases.
Ensuring appropriate information privacy is a pressing concern for many businesses today, given privacy legislation such as the United States' HIPAA (Health Insurance Portability and Accountability Act), Gramm-Leach-Bliley Act, Sarbanes-Oxley Act, and the EU's Safe Harbour Law. Other privacy mandates, such as Visa's Cardholder Information Security Program (CISP), also require businesses to ensure that access to information is tightly controlled.
Oracle has always included the ability to grant (or deny) users access to database objects, but these privileges are defined at the object levelfor an entire table, not for specific rows in that table. Although that approach is sufficient for many applications, any application touching on financial, health, or other kinds of personal information usually requires more-discrete controls over access and authorization.
Oracle's row-level security (RLS) feature, introduced in Oracle8i, provides fine-grained access controlfine-grained means at the individual row level. Rather than opening up an entire table to any individual user who has any privileges on the table, row-level security restricts access to specific rows in a table. The result is that any individual user sees a completely different set of dataonly the data that person is authorized to seeso the overall capabilities are sometimes referred to as Oracle's virtual private database, or VPD, feature.
Using Oracle's VPD capabilities not only ensures that companies can build secure databases to adhere to privacy policies but also provides a more manageable approach to application development, because although the VPD-based policies restrict access to the database tables, they can be easily changed when necessary, without requiring modifications to application code.
For example, say a bank's account managers (AMs) provide personal customer support to high-net-worth account holders. AMs use a custom banking application to help them check their customers' balances, deposit or withdraw funds, and decide on loan requirements, for example. At one time, the bank's policy was to allow all AMs to access all account holder information, but that policy was recently changed. Now, AMs are assigned to a particular set of customers, and they need to be able to access information pertaining only to those customers. The policy change needs to be reflected in the application, which currently shows all customer information to each AM, not just information on the customers to whom each particular AM is assigned.
To make the application comply with the new privacy policy, the bank has three choices:
Modify the application code to include a predicate (a WHERE clause) for all SQL statements. This option doesn't ensure privacy policy enforcement outside the application, however, and if there are other changes in the future, the code will once again have to be modified, so this is not a good approach in the long term.
Leave the application intact, creating views with the necessary predicates and creating synonyms with the same name as the table names for these views. This option is better from the perspective of application changes and security, but it can be difficult to administer, because of the potentially large number of views to track and manage.
Create a VPD for each of the AMs by creating policy functions that generate dynamic predicates, which can then be applied across all objects, regardless of how they are accessed, by setting up policies with the row-level-security built-in package (DBMS_RLS).
This last option offers the best security without administrative overhead and ensures complete privacy of informationall the account managers see a different view of the table, according to their own credentials.
This article shows you how to set up a VPD security model. It goes through the process by using the foregoing bank scenario to create policy functions, define policies, and then test results. (Note that the tables are not completely defined, to keep the example simple.)
Basic Setup for the Example Application
Briefly, here are the basic assumptions about the example bank application:
A BANK schema owns two key tables that make up the applicationa CUSTOMERS table:
Name Null? Type
CUST_ID NOT NULL NUMBER
CUST_NAME NOT NULL VARCHAR2(20)
and an ACCOUNTS table:
Name Null? Type
ACCT_NO NOT NULL NUMBER
CUST_ID NOT NULL NUMBER
BALANCE NUMBER(15,2)
Listing 1 comprises the SQL script for creating and populating these two basic example tables.
User SECMAN (security manager) owns an ACCESS_POLICY table that identifies the AMs and their respective customer accounts:
Name Null? Type
AM_NAME NOT NULL VARCHAR2(20)
CUST_ID NOT NULL NUMBER
ACCESS_TYPE NOT NULL CHAR(1)
The AM_NAME column stores the user ID of the account manager; CUST_ID identifies the customer; and ACCESS_TYPE defines the specific access entitlementS (SELECT), I (INSERT), D (DELETE), or U (UPDATE). Some example records from the ACCESS_POLICY table follow:
AM_NAME CUST_ID ACCESS_TYPE
SCOTT 123 S
SCOTT 123 I
SCOTT 123 D
SCOTT 123 U
SCOTT 456 S
SCOTT 789 S
LARA 456 I
LARA 456 D
LARA 456 U
LARA 456 S
As you can see, SCOTT, the AM for customer 123, has all privilegesS, I, D, and Uas does LARA for customer 456. Also, because SCOTT can confirm account balances for one customer of LARA, he has S privileges on customer 456.
Step 1. Create a Policy Function
The bank's access rules (contained in the ACCESS_POLICY table) must be applied somehow, dynamically, whenever an AM tries to look into customer account information. The first step is to create a policy function that returns the appropriate predicate to be applied to the table. As with the ACCESS_POLICY table, the policy functions are created and controlled by user SECMAN, for security purposes. It's best to keep privacy rules separate from the tables to which they apply.
Let's examine the policy function, get_sel_cust_idshown in Listing 2 in detail:
Accepts exactly two parameters: the schema name (p_schema in varchar2) and the table name (p_table in varchar2)
Returns one value only, a stringreturn varchar2 as l_retstr varchar2(2000);comprising the predicate that will be appended to every query on the table
Uses a cursor routinefor cust_ rec into get the list of values, because each user may have several cust_ids listed in the table
Returns a constructed stringl_retstrto be used as a predicate whenever any user attempts to access the underlying table
The function returns the predicate where cust_id in with the appended list of customer accounts (cust_id), separated by commas, that the user (am_name = USER) is allowed to see.
Note that before entering the loop that builds the list of cust_ids for the user, the code in Listing 2 checks to see if the user is the table owner BANK, in which case the function returns a NULL predicate, as follows:
if (p_schema = user) then
1_retstr := null;
After building this function, you want to make sure it returns the appropriate predicate, by testing some sample data. Connect to the database as SECMAN, and insert some records into the ACCESS_POLICY table, giving SECMAN read privileges on a few sample accounts, as follows:
insert into access_policy values ('SECMAN',123,'S');
insert into access_policy values ('SECMAN',456,'S');
insert into access_policy values ('SECMAN',789,'S');
Now execute the function:
select get_sel_cust_id
('BANK','CUSTOMERS') from dual;
The function returns a string that will be applied as a predicate, as shown in the following sample output:
GET_SEL_CUST_ID('BANK','CUSTOMERS')
CUST_ID IN (123,456,789)
You need to create similar functions for the other types of access. For simplicity's sake, create a single function for all the other access typesUPDATE, DELETE, INSERTas shown in Listing 3. However, note that for a real-world application, each type of access should have its own individual function defined, to ensure appropriate privacy.
The policy function in Listing 3 is nearly identical to the policy function in Listing 2, except that the predicate is further qualified by use of the information from the ACCESS_CONTROL table:
and access_type in ('I', 'U', 'D')
Creating a policy function is just the first step. You now need to ensure that the function will be used, by defining the policy that should control its use in your system.
Step 2. Define a Policy
Policies are defined with the DBMS_RLS package, which is Oracle-supplied. Be aware that the policies themselves are not database objects owned by any user (schema); they are logical constructs. Any user who has the execute privilege on the DBMS_RLS package can modify or drop a policy created by another user. Privileges to DBMS_RLS should be judiciously controlled and granted with caution.
In the following example, user SECMAN is granted execute privileges (by SYS) on the DBMS_RLS package:
grant execute on dbms_rls to secman;
Listing 4 creates a policy named CUST_SEL_POLICY on the table CUSTOMERS of schema BANK. This policy applies the predicate returned by the function GET_SEL_CUST_ID (which is shown in Listing 2) owned by schema SECMAN to all SELECT statements on the table.
Similarly, you place another policy on the table for other access types, as shown in Listing 5. This policy applies to inserts, updates, and deletes in the CUSTOMERS table.
It is almost identical to the SELECT policy, except that this policy includes a check that ensures that the policy will remain compliant even after an update:
update_check => TRUE
Data cannot be added to the table unless it adheres to the policy.
Step 3. Test the Setup
Now that the building blocks are in place, let's see how they work. Connecting as user BANK and issuing a simple select * from customers; query displays the following:
CUST_ID CUST_NAME
123 Jay Kulkarni
456 Wim Patel
These two records are the full contents of the CUSTOMERS table, and both records are shown because BANK owns the table, so the predicate clause is NULLthat is, no predicate is applied. However, when user LARA makes the same query, she sees the following:
select * from customers;
CUST_ID CUST_NAME
456 WIM PATEL
LARA sees only CUST_ID 456, not 123, because that is the row she is authorized to see, as determined by the ACCESS_ POLICY table. Note that the query has no WHERE clause but that the selection from the table is automatically filtered to show only the authorized rows.
If user SCOTT makes the same query, his results are different from the results for LARA: select * from customers;
CUST_ID CUST_NAME
123 Jay Kulkarni
456 Wim Patel
User SCOTT sees both rows, because he is authorized to do so, as shown in the ACCESS_POLICY table. When user LARA issues the query, the policy function get_sel_cust_id returns the predicate where cust_id in (456). Lara's original query select * from customers is rewritten as
select * from
(select * from customers)
where cust_id in (456)
The predicate is automatically appended to the user's original query. The same thing happens when the user updates the table:
SQL> update bank.customers
2 set cust_name = 'PAT TERRY';
1 row updated.
Note that in this example, only one row is updated, even though there are actually two rows in the underlying table. The policy (CUST_IUD_POLICY) appends the predicate where cust_id in (456) to the update statement. Similarly, while the table is being deleted, only the rows for which the user is authorized are deleted.
Attempting to insert a row containing data for which the user is not authorized results in an error message. For example, in this query, LARA is attempting to add a record to the CUSTOMER table for an account not under her purview: Next Steps
READ more about
VPD Oracle9i Supplied PL/SQL Packages and Types Reference
Oracle Privacy Security Auditing
SQL> insert into bank.customers
2 values (789,'KIM PARK');
insert into bank.customers
ERROR at line 1:
ORA-28115: policy with check option
violation
According to the ACCESS_POLICY table, Scott has SELECT privileges on account 789no other privileges for any other AM are listed in the table.
Using policies in conjunction with functions ensures authorized access to specific records of a table. The rules are applied regardless of how the table is accessed, whether through an application or directly through an ad hoc query tool, such as SQL*Plus. Users see only rows for which they have been authorized.
Policies can be applied to multiple tables, and a single policy function can be used by any number of policies. Listing 6 shows a policy on an ACCOUNTS table that uses the get_sel_cust_id function initially created for use with the CUSTOMERS table.
Arup Nanda ([email protected]) is the chief database architect at Proligence Solutions ( Printer View
http://otn.oracle.com/oramag/oracle/04-mar/o24tech_security.html
Joel Pérez
http://otn.oracle.com/experts -
Hi,
I am trying to implement Virtual Private Database policy to restrict the user data access.
I am creating this with Scott schema with 11g R1.
While accessing DBMS_RLS package I am getting below error.
SQL> begin
2 dbms_rls.add_policy (
3 user,
4 'department_secrets',
5 'choosable policy name',
6 user,
7 'pck_vpd.predicate',
8 'select,update,delete');
9 end;
10 /
dbms_rls.add_policy (
ERROR at line 2:
ORA-06550: line 2, column 1:
PLS-00201: identifier 'DBMS_RLS' must be declared
ORA-06550: line 2, column 1:
PL/SQL: Statement ignoredCan someone help me to identify what's the issue here?Mak1980 wrote:
Just wanted to know why we have to give grant to this package as this is also one of the Oracle supplied package like UTL_FILE and others.The DBMS_RLS package allows SQL injection in simplistic terms. The VPDB user function defined for the policy, changes the SQL statement by adding predicates to it that needs to be met. This allows certain rows to be hidden from the code that issued that SQL statement - and that code and user/developer is totally oblivious that SQL statements send to the database are changed by the VPDB function.
How does it make sense to allow public access to all schemas to perform this type of SQL injection?
Robust security is about giving code and users the absolute minimum set of privs needed, for that code/user to do the required job.
UTL_FILE is no different. It allows the code/user to step outside of Oracle schema and database, and directly into operating system's file system. What is the first step in pwning a server? Getting backdoor code onto that server for execution. And UTL_FILE allows exactly that. -
Hi all!
I have a problem and I would like to get your oppinion.
The customer wants implement VPD. The database is Oracle 9i (9.2.0.7) on RHEL4AS Server. Initially, this step was included in Database Migration to Oracle 10g, but, the application runs very slowly! After this situation, the IT Manager wants to implement VPD in 9i and then migrate your database to 10g, after the application have been modified by development team.
But, in Oracle 9i, the procedure ADD_POLICY in DBMS_RLS package haven't SEC_RELEVANT_COLS and SEC_RELEVANT_COLS_OPT options. How can I implement VPD in vertical and horizontal levels in Oracle 9i?
Thanks!
Marcus ViniciusIn 9i, VPD didn't allow you to selectively permit access to particular columns in a table, just particular rows. In 9i, you could create a series of views that expose different sets of columns, grant appropriate users appropriate access on one of these views, and create appropriate private synonyms that point to the appropriate view in each user's schema. That's probably more work than figuring out how to fix the performance issues that followed the 10g migration.
Justin -
Views - Security Loop Hole ?
Dear Friends
To my understanding VIEWS can be used to provided elementary security to data. New Features like VPD (DBMS_RLS package) and Oracle Lable Security have been introduced in Oracle.
Can you please tell me what is limitation of using views from security point of view ? i.e I want a simple demonstration that reflects security loop hole due to VIEWS.
ThanksHere's an elementary example of using a view for security:
CREATE TABLE person (
person_id NUMBER(3),
first_name VARCHAR2(25),
last_name VARCHAR2(25),
title_1 VARCHAR2(10),
title_2 VARCHAR2(10),
socsecno VARCHAR2(11));
INSERT INTO person
VALUES (1, 'Dan', 'Morgan', 'BS', 'PhD', '123-54-0987');
INSERT INTO person
VALUES (1, 'Jack', 'Cline', 'BA', 'MA', '987-03-4793');
INSERT INTO person
VALUES (1,'Tara','Havemeyer','BA',NULL,'402-87-1005');
CREATE OR REPLACE VIEW person_security_view AS
SELECT first_name || ' ' || last_name NAME,
'***-**-' || SUBSTR(socsecno,8) SSN
FROM person;A loophole? How about putting it into the same schema with the table and granting SELECT on both.
Here's another example a bit more sophisticated:
exec dbms_application_info.set_client_info('747');
CREATE OR REPLACE FUNCTION app_info_wrapper RETURN VARCHAR2 IS
x VARCHAR2(64);
BEGIN
dbms_application_info.read_client_info(x);
RETURN x;
END app_info_wrapper;
CREATE OR REPLACE VIEW airplanes_view AS
SELECT *
FROM airplanes
WHERE program_id = app_info_wrapper;Source:
http://www.psoug.org/reference/dbms_applic_info.html
A loophole? Grant the end user the ability to alter the context for starters. -
Is "unsuccessful export" any good?
Hi:
I did an export with full=Y direct=Y consistent=Y. It did everything OK except for...
. exporting roles
EXP-00008: ORACLE error 4045 encountered
ORA-04045: errors during recompilation/revalidation of SYS.DBMS_AQ_SYS_EXP_INTERNAL
ORA-06552: PL/SQL: Compilation unit analysis terminated
ORA-06553: PLS-905: object SYS.AQ$_SUBSCRIBERS is invalid
ORA-06508: PL/SQL: could not find program unit being called
ORA-06512: at "SYS.DBMS_AQ_EXP_QUEUES", line 141
ORA-06512: at line 1
EXP-00083: The previous problem occurred when calling SYS.DBMS_AQ_EXP_QUEUES.grant_sysprivs_exp
But it went ahead and exported millions and millions of data records, generating a evry large export file in the end.
Q: Will I be able to IMPORT using this export file in the future should I need to do that?
I don't want to experiment with this, because I'll clobber my DB in the process. My development DB instance does not have this problem, so I can't test there.
Any insights as to what might be wrong with the DB instance to create this problem?
Oracle8i 8.1.7.0.0 on Alpha Tru64
Thanks891 INVALIDS (gulp!)
SVRMGR> select object_name, object_type from dba_objects where status = 'INVALID';
OBJECT_NAME OBJECT_TYPE
ALL_POLICIES VIEW
ALL_PROBE_OBJECTS VIEW
ALL_QUEUES VIEW
ALL_QUEUE_TABLES VIEW
ALL_REGISTERED_SNAPSHOTS VIEW
ALL_REPCAT VIEW
ALL_REPCATLOG VIEW
ALL_REPCAT_REFRESH_TEMPLATES VIEW
ALL_REPCAT_TEMPLATE_OBJECTS VIEW
ALL_REPCAT_TEMPLATE_PARMS VIEW
ALL_REPCAT_TEMPLATE_SITES VIEW
ALL_REPCAT_USER_AUTHORIZATIONS VIEW
ALL_REPCAT_USER_PARM_VALUES VIEW
ALL_REPCOLUMN VIEW
ALL_REPCOLUMN_GROUP VIEW
ALL_REPDDL VIEW
ALL_REPFLAVOR_COLUMNS VIEW
ALL_REPFLAVOR_OBJECTS VIEW
ALL_REPGENERATED VIEW
ALL_REPGENOBJECTS VIEW
ALL_REPGROUP VIEW
ALL_REPGROUPED_COLUMN VIEW
ALL_REPGROUP_PRIVILEGES VIEW
ALL_REPKEY_COLUMNS VIEW
ALL_REPOBJECT VIEW
ALL_REPPROP VIEW
ALL_SNAPSHOTS VIEW
ALL_SNAPSHOT_LOGS VIEW
ALL_SNAPSHOT_REFRESH_TIMES VIEW
ALL_SOURCE VIEW
AQ$_DEQUEUE_HISTORY TYPE
AQ$_DEQUEUE_HISTORY_T TYPE
AQ$_DUMMY_T TYPE
AQ$_HISTORY TYPE
AQ$_JMS_BYTES_MESSAGE TYPE
AQ$_JMS_HEADER TYPE
AQ$_JMS_MAP_MESSAGE TYPE
AQ$_JMS_OBJECT_MESSAGE TYPE
AQ$_JMS_STREAM_MESSAGE TYPE
AQ$_JMS_TEXT_MESSAGE TYPE
AQ$_JMS_USERPROPARRAY TYPE
AQ$_JMS_USERPROPERTY TYPE
AQ$_NOTIFY_MSG TYPE
AQ$_RECIPIENTS TYPE
AQ$_SUBSCRIBERS TYPE
CLIENT_IP_ADDRESS FUNCTION
DATABASE_NAME FUNCTION
DBA_CACHEABLE_OBJECTS VIEW
DBA_IAS_GEN_STMTS VIEW
DBA_IAS_GEN_STMTS_EXP VIEW
DBA_IAS_OBJECTS VIEW
DBA_IAS_OBJECTS_BASE VIEW
DBA_IAS_POSTGEN_STMTS VIEW
DBA_IAS_PREGEN_STMTS VIEW
DBA_IAS_TEMPLATES VIEW
DBA_QUEUES VIEW
DBA_QUEUE_SCHEDULES VIEW
DBA_REGISTERED_SNAPSHOTS VIEW
DBA_REPCAT VIEW
DBA_REPCAT_USER_AUTHORIZATIONS VIEW
DBA_REPCAT_USER_PARM_VALUES VIEW
DBA_REPCOLUMN VIEW
DBA_REPFLAVOR_COLUMNS VIEW
DBA_REPFLAVOR_OBJECTS VIEW
DBA_REPGENERATED VIEW
DBA_REPGENOBJECTS VIEW
DBA_REPGROUP VIEW
DBA_REPGROUP_PRIVILEGES VIEW
DBA_REPOBJECT VIEW
DBA_REPPRIORITY_GROUP VIEW
DBA_REPPROP VIEW
DBA_REPSITES VIEW
DBA_RULESETS VIEW
DBA_SEGMENTS VIEW
DBA_SNAPSHOTS VIEW
DBA_SNAPSHOT_LOGS VIEW
DBA_TRIGGERS VIEW
DBA_TRIGGER_COLS VIEW
DBJ_LONG_NAME FUNCTION
DBJ_SHORT_NAME FUNCTION
DBMSOBJG PACKAGE
DBMSOBJG PACKAGE BODY
DBMSOBJG2 PACKAGE
DBMSOBJG2 PACKAGE BODY
DBMSOBJGWRAPPER PACKAGE
DBMSOBJGWRAPPER PACKAGE BODY
DBMS_ALERT PACKAGE
DBMS_ALERT PACKAGE BODY
DBMS_AQ PACKAGE
DBMS_AQ PACKAGE BODY
DBMS_AQADM PACKAGE BODY
DBMS_AQADM_SYS PACKAGE BODY
DBMS_AQADM_SYSCALLS PACKAGE
DBMS_AQADM_SYSCALLS PACKAGE BODY
DBMS_AQIN PACKAGE
DBMS_AQIN PACKAGE BODY
DBMS_AQJMS PACKAGE
DBMS_AQJMS PACKAGE BODY
DBMS_AQ_EXP_HISTORY_TABLES PACKAGE
DBMS_AQ_EXP_HISTORY_TABLES PACKAGE BODY
DBMS_AQ_EXP_INDEX_TABLES PACKAGE
DBMS_AQ_EXP_INDEX_TABLES PACKAGE BODY
DBMS_AQ_EXP_QUEUE_TABLES PACKAGE
DBMS_AQ_EXP_QUEUE_TABLES PACKAGE BODY
DBMS_AQ_EXP_SUBSCRIBER_TABLES PACKAGE
DBMS_AQ_EXP_SUBSCRIBER_TABLES PACKAGE BODY
DBMS_AQ_EXP_TIMEMGR_TABLES PACKAGE
DBMS_AQ_EXP_TIMEMGR_TABLES PACKAGE BODY
DBMS_AQ_EXP_ZECURITY PACKAGE BODY
DBMS_AQ_IMPORT_INTERNAL PACKAGE BODY
DBMS_AQ_IMP_INTERNAL PACKAGE
DBMS_AQ_IMP_INTERNAL PACKAGE BODY
DBMS_AQ_IMP_ZECURITY PACKAGE BODY
DBMS_AQ_SYS_EXP_ACTIONS PACKAGE
DBMS_AQ_SYS_EXP_ACTIONS PACKAGE BODY
DBMS_AQ_SYS_EXP_INTERNAL PACKAGE BODY
DBMS_AQ_SYS_IMP_INTERNAL PACKAGE
DBMS_AQ_SYS_IMP_INTERNAL PACKAGE BODY
DBMS_ASYNCRPC_PUSH PACKAGE
DBMS_ASYNCRPC_PUSH PACKAGE BODY
DBMS_BACKUP_RESTORE PACKAGE
DBMS_BACKUP_RESTORE PACKAGE BODY
DBMS_DDL_INTERNAL PACKAGE BODY
DBMS_DEBUG PACKAGE
DBMS_DEBUG PACKAGE BODY
DBMS_DEBUG_VC2COLL TYPE
DBMS_DEFER PACKAGE
DBMS_DEFER PACKAGE BODY
DBMS_DEFERGEN PACKAGE
DBMS_DEFERGEN PACKAGE BODY
DBMS_DEFERGEN_AUDIT PACKAGE
DBMS_DEFERGEN_AUDIT PACKAGE BODY
DBMS_DEFERGEN_INTERNAL PACKAGE
DBMS_DEFERGEN_INTERNAL PACKAGE BODY
DBMS_DEFERGEN_LOB PACKAGE
DBMS_DEFERGEN_LOB PACKAGE BODY
DBMS_DEFERGEN_PRIORITY PACKAGE
DBMS_DEFERGEN_PRIORITY PACKAGE BODY
DBMS_DEFERGEN_RESOLUTION PACKAGE
DBMS_DEFERGEN_RESOLUTION PACKAGE BODY
DBMS_DEFERGEN_UTIL PACKAGE
DBMS_DEFERGEN_UTIL PACKAGE BODY
DBMS_DEFERGEN_WRAP PACKAGE
DBMS_DEFERGEN_WRAP PACKAGE BODY
DBMS_DEFER_ENQ_UTL PACKAGE
DBMS_DEFER_ENQ_UTL PACKAGE BODY
DBMS_DEFER_INTERNAL_QUERY PACKAGE
DBMS_DEFER_INTERNAL_QUERY PACKAGE BODY
DBMS_DEFER_INTERNAL_SYS PACKAGE
DBMS_DEFER_INTERNAL_SYS PACKAGE BODY
DBMS_DEFER_QUERY PACKAGE
DBMS_DEFER_QUERY PACKAGE BODY
DBMS_DEFER_QUERY_UTL PACKAGE
DBMS_DEFER_QUERY_UTL PACKAGE BODY
DBMS_DEFER_REPCAT PACKAGE
DBMS_DEFER_REPCAT PACKAGE BODY
DBMS_DEFER_SYS PACKAGE BODY
DBMS_DEFER_SYS_PART1 PACKAGE
DBMS_DEFER_SYS_PART1 PACKAGE BODY
DBMS_DESCRIBE PACKAGE
DBMS_DESCRIBE PACKAGE BODY
DBMS_DISTRIBUTED_TRUST_ADMIN PACKAGE
DBMS_DISTRIBUTED_TRUST_ADMIN PACKAGE BODY
DBMS_EPGC PACKAGE
DBMS_EPGC PACKAGE BODY
DBMS_HS PACKAGE
DBMS_HS PACKAGE BODY
DBMS_HS_ALT PACKAGE
DBMS_HS_ALT PACKAGE BODY
DBMS_HS_CHK PACKAGE
DBMS_HS_CHK PACKAGE BODY
DBMS_HS_EXTPROC PACKAGE
DBMS_HS_EXTPROC PACKAGE BODY
DBMS_HS_UTL PACKAGE
DBMS_HS_UTL PACKAGE BODY
DBMS_IAS_CONFIGURE PACKAGE
DBMS_IAS_CONFIGURE PACKAGE BODY
DBMS_IAS_INST PACKAGE
DBMS_IAS_INST PACKAGE BODY
DBMS_IAS_INST_UTL PACKAGE
DBMS_IAS_INST_UTL PACKAGE BODY
DBMS_IAS_MT_INST PACKAGE
DBMS_IAS_MT_INST PACKAGE BODY
DBMS_IAS_QUERY PACKAGE
DBMS_IAS_QUERY PACKAGE BODY
DBMS_IAS_SESSION PACKAGE BODY
DBMS_IAS_TEMPLATE PACKAGE
DBMS_IAS_TEMPLATE PACKAGE BODY
DBMS_IJOB PACKAGE BODY
DBMS_INTERNAL_REPCAT PACKAGE
DBMS_INTERNAL_REPCAT PACKAGE BODY
DBMS_INTERNAL_TRIGGER PACKAGE
DBMS_INTERNAL_TRIGGER PACKAGE BODY
DBMS_IREFRESH PACKAGE
DBMS_IREFRESH PACKAGE BODY
DBMS_ISNAPSHOT PACKAGE
DBMS_ISNAPSHOT PACKAGE BODY
DBMS_JAVA_TEST PACKAGE
DBMS_JAVA_TEST PACKAGE BODY
DBMS_JOB PACKAGE BODY
DBMS_LOB PACKAGE
DBMS_LOB PACKAGE BODY
DBMS_LOCK PACKAGE BODY
DBMS_LOGMNR PACKAGE
DBMS_LOGMNR PACKAGE BODY
DBMS_LOGMNR_D PACKAGE
DBMS_LOGMNR_D PACKAGE BODY
DBMS_MAINT_GEN PACKAGE
DBMS_MAINT_GEN PACKAGE BODY
DBMS_NAMESPACE PACKAGE
DBMS_NAMESPACE PACKAGE BODY
DBMS_OBFUSCATION_TOOLKIT PACKAGE
DBMS_OBFUSCATION_TOOLKIT PACKAGE BODY
DBMS_OBFUSCATION_TOOLKIT_FFI PACKAGE
DBMS_OBFUSCATION_TOOLKIT_FFI PACKAGE BODY
DBMS_OFFLINE_INTERNAL PACKAGE
DBMS_OFFLINE_INTERNAL PACKAGE BODY
DBMS_OFFLINE_OG PACKAGE
DBMS_OFFLINE_OG PACKAGE BODY
DBMS_OFFLINE_RGT PACKAGE
DBMS_OFFLINE_RGT PACKAGE BODY
DBMS_OFFLINE_SNAPSHOT PACKAGE
DBMS_OFFLINE_SNAPSHOT PACKAGE BODY
DBMS_OFFLINE_UTL PACKAGE
DBMS_OFFLINE_UTL PACKAGE BODY
DBMS_ORACLE_TRACE_AGENT PACKAGE
DBMS_ORACLE_TRACE_AGENT PACKAGE BODY
DBMS_ORACLE_TRACE_USER PACKAGE
DBMS_ORACLE_TRACE_USER PACKAGE BODY
DBMS_PCLXUTIL PACKAGE
DBMS_PCLXUTIL PACKAGE BODY
DBMS_PICKLER PACKAGE
DBMS_PICKLER PACKAGE BODY
DBMS_PIPE PACKAGE
DBMS_PIPE PACKAGE BODY
DBMS_PITR PACKAGE
DBMS_PITR PACKAGE BODY
DBMS_PLUGTS PACKAGE
DBMS_PLUGTS PACKAGE BODY
DBMS_PRVTAQIM PACKAGE
DBMS_PRVTAQIM PACKAGE BODY
DBMS_PRVTAQIP PACKAGE
DBMS_PRVTAQIP PACKAGE BODY
DBMS_PRVTAQIS PACKAGE
DBMS_PRVTAQIS PACKAGE BODY
DBMS_PSP PACKAGE
DBMS_PSP PACKAGE BODY
DBMS_PSWMG_IMPORT PACKAGE
DBMS_PSWMG_IMPORT PACKAGE BODY
DBMS_RANDOM PACKAGE
DBMS_RANDOM PACKAGE BODY
DBMS_RCVMAN PACKAGE
DBMS_RCVMAN PACKAGE BODY
DBMS_RECTIFIER_DIFF PACKAGE
DBMS_RECTIFIER_DIFF PACKAGE BODY
DBMS_RECTIFIER_FRIENDS PACKAGE
DBMS_RECTIFIER_FRIENDS PACKAGE BODY
DBMS_REFRESH PACKAGE
DBMS_REFRESH PACKAGE BODY
DBMS_REPAIR PACKAGE
DBMS_REPAIR PACKAGE BODY
DBMS_REPCAT PACKAGE
DBMS_REPCAT PACKAGE BODY
DBMS_REPCAT_ADMIN PACKAGE
DBMS_REPCAT_ADMIN PACKAGE BODY
DBMS_REPCAT_AUTH PACKAGE
DBMS_REPCAT_AUTH PACKAGE BODY
DBMS_REPCAT_CACHE PACKAGE
DBMS_REPCAT_CACHE PACKAGE BODY
DBMS_REPCAT_CONF PACKAGE
DBMS_REPCAT_CONF PACKAGE BODY
DBMS_REPCAT_DECL PACKAGE
DBMS_REPCAT_DECL PACKAGE BODY
DBMS_REPCAT_FLA PACKAGE
DBMS_REPCAT_FLA PACKAGE BODY
DBMS_REPCAT_FLA_MAS PACKAGE
DBMS_REPCAT_FLA_MAS PACKAGE BODY
DBMS_REPCAT_FLA_UTL PACKAGE
DBMS_REPCAT_FLA_UTL PACKAGE BODY
DBMS_REPCAT_INSTANTIATE PACKAGE
DBMS_REPCAT_INSTANTIATE PACKAGE BODY
DBMS_REPCAT_INTERNAL PACKAGE
DBMS_REPCAT_INTERNAL PACKAGE BODY
DBMS_REPCAT_INTERNAL_PACKAGE PACKAGE
DBMS_REPCAT_INTERNAL_PACKAGE PACKAGE BODY
DBMS_REPCAT_MAS PACKAGE
DBMS_REPCAT_MAS PACKAGE BODY
DBMS_REPCAT_MIG PACKAGE
DBMS_REPCAT_MIG PACKAGE BODY
DBMS_REPCAT_MIG_INTERNAL PACKAGE
DBMS_REPCAT_MIG_INTERNAL PACKAGE BODY
DBMS_REPCAT_OUTPUT PACKAGE
DBMS_REPCAT_OUTPUT PACKAGE BODY
DBMS_REPCAT_RGT PACKAGE
DBMS_REPCAT_RGT PACKAGE BODY
DBMS_REPCAT_RGT_ALT PACKAGE
DBMS_REPCAT_RGT_ALT PACKAGE BODY
DBMS_REPCAT_RGT_CHK PACKAGE
DBMS_REPCAT_RGT_CHK PACKAGE BODY
DBMS_REPCAT_RGT_CUST PACKAGE
DBMS_REPCAT_RGT_CUST PACKAGE BODY
DBMS_REPCAT_RGT_CUST2 PACKAGE
DBMS_REPCAT_RGT_CUST2 PACKAGE BODY
DBMS_REPCAT_RGT_UTL PACKAGE
DBMS_REPCAT_RGT_UTL PACKAGE BODY
DBMS_REPCAT_RPC PACKAGE
DBMS_REPCAT_RPC PACKAGE BODY
DBMS_REPCAT_RPC_UTL PACKAGE
DBMS_REPCAT_RPC_UTL PACKAGE BODY
DBMS_REPCAT_SNA PACKAGE
DBMS_REPCAT_SNA PACKAGE BODY
DBMS_REPCAT_SNA_UTL PACKAGE
DBMS_REPCAT_SNA_UTL PACKAGE BODY
DBMS_REPCAT_UNTRUSTED PACKAGE
DBMS_REPCAT_UNTRUSTED PACKAGE BODY
DBMS_REPCAT_UTL PACKAGE
DBMS_REPCAT_UTL PACKAGE BODY
DBMS_REPCAT_UTL2 PACKAGE
DBMS_REPCAT_UTL2 PACKAGE BODY
DBMS_REPCAT_UTL3 PACKAGE
DBMS_REPCAT_UTL3 PACKAGE BODY
DBMS_REPCAT_UTL4 PACKAGE
DBMS_REPCAT_UTL4 PACKAGE BODY
DBMS_REPCAT_VALIDATE PACKAGE
DBMS_REPCAT_VALIDATE PACKAGE BODY
DBMS_REPUTIL PACKAGE
DBMS_REPUTIL PACKAGE BODY
DBMS_REPUTIL2 PACKAGE
DBMS_REPUTIL2 PACKAGE BODY
DBMS_RESOURCE_MANAGER PACKAGE
DBMS_RESOURCE_MANAGER PACKAGE BODY
DBMS_RESOURCE_MANAGER_PRIVS PACKAGE
DBMS_RESOURCE_MANAGER_PRIVS PACKAGE BODY
DBMS_RLS PACKAGE
DBMS_RLS PACKAGE BODY
DBMS_RMIN PACKAGE
DBMS_RMIN PACKAGE BODY
DBMS_ROWID PACKAGE
DBMS_ROWID PACKAGE BODY
DBMS_RULE PACKAGE
DBMS_RULE PACKAGE BODY
DBMS_RULE_ADM PACKAGE
DBMS_RULE_ADM PACKAGE BODY
DBMS_RULE_EXIMP PACKAGE
DBMS_RULE_EXIMP PACKAGE BODY
DBMS_SESSION PACKAGE BODY
DBMS_SNAPSHOT PACKAGE
DBMS_SNAPSHOT PACKAGE BODY
DBMS_SNAPSHOT_UTL PACKAGE
DBMS_SNAPSHOT_UTL PACKAGE BODY
DBMS_SNAP_INTERNAL PACKAGE
DBMS_SNAP_INTERNAL PACKAGE BODY
DBMS_SNAP_REPAPI PACKAGE
DBMS_SNAP_REPAPI PACKAGE BODY
DBMS_SPACE PACKAGE
DBMS_SPACE PACKAGE BODY
DBMS_SUMADV PACKAGE
DBMS_SUMADV PACKAGE BODY
DBMS_SUMMARY PACKAGE
DBMS_SUMMARY PACKAGE BODY
DBMS_SUMREF_CHILD PACKAGE
DBMS_SUMREF_CHILD PACKAGE BODY
DBMS_SUMREF_PARENT PACKAGE
DBMS_SUMREF_PARENT PACKAGE BODY
DBMS_SUMREF_UTIL PACKAGE
DBMS_SUMREF_UTIL PACKAGE BODY
DBMS_SUMREF_UTIL2 PACKAGE
DBMS_SUMREF_UTIL2 PACKAGE BODY
DBMS_SUMVDM PACKAGE
DBMS_SUMVDM PACKAGE BODY
DBMS_SYSTEM PACKAGE
DBMS_SYSTEM PACKAGE BODY
DBMS_SYS_ERROR PACKAGE BODY
DBMS_TRACE PACKAGE
DBMS_TRACE PACKAGE BODY
DBMS_TRANSACTION PACKAGE
DBMS_TRANSACTION PACKAGE BODY
DBMS_TTS PACKAGE
DBMS_TTS PACKAGE BODY
DBMS_XMLQUERY PACKAGE
DBMS_XMLQUERY PACKAGE BODY
DBMS_XMLSAVE PACKAGE
DBMS_XMLSAVE PACKAGE BODY
DEFCALL VIEW
DEFCALLDEST VIEW
DEFTRANDEST VIEW
DES_ENCRYPTED_PASSWORD FUNCTION
DIANA PACKAGE BODY
DICTIONARY_OBJ_NAME_LIST FUNCTION
DICTIONARY_OBJ_OWNER FUNCTION
DICTIONARY_OBJ_OWNER_LIST FUNCTION
DIUTIL PACKAGE BODY
GET_ERROR$ PACKAGE
GET_ERROR$ PACKAGE BODY
GRANTEE FUNCTION
HS_CLASS_CAPS VIEW
HS_CLASS_DD VIEW
HS_CLASS_INIT VIEW
HS_EXTERNAL_OBJECTS VIEW
HS_FDS_CLASS VIEW
HS_FDS_INST VIEW
HS_INST_CAPS VIEW
HS_INST_DD VIEW
HS_INST_INIT VIEW
HTF PACKAGE
HTF PACKAGE BODY
HTP PACKAGE
HTP PACKAGE BODY
HTTP_EXP PACKAGE
HTTP_EXP PACKAGE BODY
IFR_EXP PACKAGE
IFR_EXP PACKAGE BODY
INITJVMAUX PACKAGE
INITJVMAUX PACKAGE BODY
INSTANCE_NUM FUNCTION
IS_ALTER_COLUMN FUNCTION
IS_CREATING_NESTED_TABLE FUNCTION
IS_DROP_COLUMN FUNCTION
IS_SERVERERROR FUNCTION
JAVA_AUTONOMOUS_TRANSACTION PACKAGE
JAVA_AUTONOMOUS_TRANSACTION PACKAGE BODY
JAVA_XA PACKAGE
JAVA_XA PACKAGE BODY
JIS$INTERCEPTOR$ PACKAGE
JIS$INTERCEPTOR$ PACKAGE BODY
JIS_EXIT_JAVA_SESSION PROCEDURE
JIS_EXP PACKAGE
JIS_EXP PACKAGE BODY
JIS_EXP_AUX PACKAGE
JIS_EXP_AUX PACKAGE BODY
JIS_IMP_AUX PACKAGE
JIS_IMP_AUX PACKAGE BODY
LOGIN_USER FUNCTION
NameFromLastDDL FUNCTION
ODCIARGDESC TYPE
ODCIARGDESCLIST TYPE
ODCICOLINFO TYPE
ODCICOLINFODUMP PROCEDURE
ODCICOLINFOLIST TYPE
ODCICONST PACKAGE
ODCICOST TYPE
ODCIFUNCINFO TYPE
ODCIINDEXALTEROPTIONDUMP PROCEDURE
ODCIINDEXCTX TYPE
ODCIINDEXINFO TYPE
ODCIINDEXINFODUMP PROCEDURE
ODCIOBJECT TYPE
ODCIOBJECTLIST TYPE
ODCIPREDINFO TYPE
ODCIPREDINFODUMP PROCEDURE
ODCIQUERYINFO TYPE
ODCIQUERYINFODUMP PROCEDURE
ODCIRIDLIST TYPE
ODCISTATSOPTIONS TYPE
ODCISTATSOPTIONSDUMP PROCEDURE
ORB_EXP PACKAGE
ORB_EXP PACKAGE BODY
OWA PACKAGE
OWA PACKAGE BODY
OWA_CACHE PACKAGE
OWA_CACHE PACKAGE BODY
OWA_COOKIE PACKAGE
OWA_COOKIE PACKAGE BODY
OWA_CUSTOM PACKAGE
OWA_CUSTOM PACKAGE BODY
OWA_IMAGE PACKAGE
OWA_IMAGE PACKAGE BODY
OWA_OPT_LOCK PACKAGE
OWA_OPT_LOCK PACKAGE BODY
OWA_PATTERN PACKAGE
OWA_PATTERN PACKAGE BODY
OWA_SEC PACKAGE
OWA_SEC PACKAGE BODY
OWA_TEXT PACKAGE
OWA_TEXT PACKAGE BODY
OWA_UTIL PACKAGE
OWA_UTIL PACKAGE BODY
PBREAK PACKAGE
PBREAK PACKAGE BODY
PBRPH PACKAGE
PBRPH PACKAGE BODY
PBSDE PACKAGE
PBSDE PACKAGE BODY
PBUTL PACKAGE
PIDL PACKAGE BODY
PRIVILEGE_LIST FUNCTION
PRVT_EGUTL PACKAGE
PRVT_EGUTL PACKAGE BODY
PRVT_EPGC PACKAGE
PRVT_EPGC PACKAGE BODY
PSTUB PROCEDURE
PSTUBT PROCEDURE
REPCAT$_CDEF VIEW
REPCAT_GENERATED VIEW
REPCAT_REPCAT VIEW
REPCAT_REPOBJECT VIEW
REPCAT_REPOBJECT_BASE VIEW
REVOKEE FUNCTION
RMJVM PACKAGE
RMJVM PACKAGE BODY
SERVER_ERROR FUNCTION
SESSION_CONTEXT VIEW
SM$INTEGRITY_CONS VIEW
SM$TS_USED VIEW
SM_$VERSION VIEW
SNS_EXP PACKAGE
SNS_EXP PACKAGE BODY
SQLJUTL PACKAGE
SQLJUTL PACKAGE BODY
SYSEVENT FUNCTION
TS_PITR_OBJECTS_TO_BE_DROPPED VIEW
USER_JOBS VIEW
USER_QUEUES VIEW
USER_QUEUE_SCHEDULES VIEW
USER_REGISTERED_SNAPSHOTS VIEW
USER_REPCAT VIEW
USER_REPCATLOG VIEW
USER_REPCAT_REFRESH_TEMPLATES VIEW
USER_REPCAT_TEMPLATE_OBJECTS VIEW
USER_REPCAT_TEMPLATE_PARMS VIEW
USER_REPCAT_TEMPLATE_SITES VIEW
USER_REPCAT_USER_AUTHORIZATION VIEW
USER_REPCAT_USER_PARM_VALUES VIEW
USER_REPCOLUMN VIEW
USER_REPDDL VIEW
USER_REPFLAVOR_COLUMNS VIEW
USER_REPFLAVOR_OBJECTS VIEW
USER_REPGENERATED VIEW
USER_REPGENOBJECTS VIEW
USER_REPGROUP VIEW
USER_REPGROUP_PRIVILEGES VIEW
USER_REPKEY_COLUMNS VIEW
USER_REPOBJECT VIEW
USER_REPPROP VIEW
USER_REPSCHEMA VIEW
USER_REPSITES VIEW
USER_SEGMENTS VIEW
USER_SNAPSHOTS VIEW
USER_SNAPSHOT_LOGS VIEW
UTL_COLL PACKAGE
UTL_COLL PACKAGE BODY
UTL_FILE PACKAGE
UTL_FILE PACKAGE BODY
UTL_HTTP PACKAGE
UTL_HTTP PACKAGE BODY
UTL_INADDR PACKAGE
UTL_INADDR PACKAGE BODY
UTL_RAW PACKAGE BODY
UTL_REF PACKAGE
UTL_REF PACKAGE BODY
UTL_SMTP PACKAGE
UTL_SMTP PACKAGE BODY
UTL_TCP PACKAGE
UTL_TCP PACKAGE BODY
WAR_DEPLOYMENT PACKAGE
WAR_DEPLOYMENT PACKAGE BODY
WITH_GRANT_OPTION FUNCTION
WPG_DOCLOAD PACKAGE
WPG_DOCLOAD PACKAGE BODY
WPIUTL PACKAGE
WPIUTL PACKAGE BODY
XMLATTRCOVER PACKAGE
XMLCHARDATACOVER PACKAGE
XMLDOCUMENTCOVER PACKAGE
XMLDOM PACKAGE
XMLDOM PACKAGE BODY
XMLDOMIMPLCOVER PACKAGE
XMLDTDCOVER PACKAGE
XMLELEMENTCOVER PACKAGE
XMLENTITYCOVER PACKAGE
XMLGEN PACKAGE
XMLGEN PACKAGE BODY
XMLNNMCOVER PACKAGE
XMLNODECOVER PACKAGE
XMLNODELISTCOVER PACKAGE
XMLNOTATIONCOVER PACKAGE
XMLPARSER PACKAGE
XMLPARSER PACKAGE BODY
XMLPARSERCOVER PACKAGE
XMLPICOVER PACKAGE
XMLTEXTCOVER PACKAGE
XSLPROCESSOR PACKAGE
XSLPROCESSOR PACKAGE BODY
XSLPROCESSORCOVER PACKAGE
XSLSTYLESHEETCOVER PACKAGE
ALLREPCOLUMN VIEW
ALLREPFLAVOR_OBJECTS VIEW
DBMS_REPCAT_AUTH PACKAGE
DBMS_REPCAT_AUTH PACKAGE BODY
DEF$_PROPAGATOR_TRIG TRIGGER
ORA$_SYS_REP_AUTH PROCEDURE
REPCATLOGTRIG TRIGGER
CARTRIDGE PACKAGE
CARTRIDGE PACKAGE BODY
IM PACKAGE
IM PACKAGE BODY
ORDANNOTATION TYPE
ORDANNOTATIONLIST TYPE
ORDANNOTATIONS TYPE
ORDANNOTATIONS PACKAGE BODY
ORDAUDIO TYPE
ORDAUDIO PACKAGE BODY
ORDAUDIO_PKG PACKAGE
ORDAUDIO_PKG PACKAGE BODY
ORDIMAGE TYPE
ORDIMAGE PACKAGE BODY
ORDIMAGECONSTANTS PACKAGE
ORDIMERRORCODES PACKAGE
ORDIMERRORCODES PACKAGE BODY
ORDIMGB TYPE
ORDIMGB PACKAGE BODY
ORDIMGF TYPE
ORDIMGF PACKAGE BODY
ORDIMG_PKG PACKAGE
ORDIMG_PKG PACKAGE BODY
ORDSOURCE TYPE
ORDSOURCE PACKAGE BODY
ORDVIDEO TYPE
ORDVIDEO PACKAGE BODY
ORDVIDEO_PKG PACKAGE
ORDVIDEO_PKG PACKAGE BODY
ORDVIR TYPE
ORDVIR PACKAGE BODY
ORDVIRATTR_VARRAY TYPE
ORDVIRB TYPE
ORDVIRB PACKAGE BODY
ORDVIREXCEPTIONS PACKAGE
ORDVIRF TYPE
ORDVIRF PACKAGE BODY
ORDVIRIDX INDEXTYPE
ORDVIRIDXMETHODS TYPE
ORDVIRIDXMETHODS PACKAGE BODY
ORDVIRIDXSTATS TYPE
ORDVIRIDXSTATS PACKAGE BODY
ORDVIRROWID_TABLE TYPE
ORDVIRSCR_VARRAY TYPE
ORDVIR_PKG PACKAGE
ORDVIR_PKG PACKAGE BODY
PVTCARTRIDGE PACKAGE
PVTCARTRIDGE PACKAGE BODY
VIRSCORE OPERATOR
VIRSIMILAR OPERATOR
ORDX_AIFC_AUDIO PACKAGE
ORDX_AIFC_AUDIO PACKAGE BODY
ORDX_AIFF_AUDIO PACKAGE
ORDX_AIFF_AUDIO PACKAGE BODY
ORDX_AUFF_AUDIO PACKAGE
ORDX_AUFF_AUDIO PACKAGE BODY
ORDX_AVI_VIDEO PACKAGE
ORDX_AVI_VIDEO PACKAGE BODY
ORDX_DEFAULT_AUDIO PACKAGE
ORDX_DEFAULT_AUDIO PACKAGE BODY
ORDX_DEFAULT_VIDEO PACKAGE
ORDX_DEFAULT_VIDEO PACKAGE BODY
ORDX_FILE_SOURCE PACKAGE
ORDX_FILE_SOURCE PACKAGE BODY
ORDX_HTTP_SOURCE PACKAGE
ORDX_HTTP_SOURCE PACKAGE BODY
ORDX_MOOV_VIDEO PACKAGE
ORDX_MOOV_VIDEO PACKAGE BODY
ORDX_MPEG_VIDEO PACKAGE
ORDX_MPEG_VIDEO PACKAGE BODY
ORDX_MPGA_AUDIO PACKAGE
ORDX_MPGA_AUDIO PACKAGE BODY
ORDX_RMFF_VIDEO PACKAGE
ORDX_RMFF_VIDEO PACKAGE BODY
ORDX_WAVE_AUDIO PACKAGE
ORDX_WAVE_AUDIO PACKAGE BODY
ALL_GEOMETRY_COLUMNS VIEW
ALL_MD_COLUMNS VIEW
ALL_MD_DIMENSIONS VIEW
ALL_MD_EXCEPTIONS VIEW
ALL_MD_LOADER_ERRORS VIEW
ALL_MD_PARTITIONS VIEW
ALL_MD_TABLES VIEW
ALL_MD_TABLESPACES VIEW
ALL_SDO_GEOM_METADATA VIEW
ALL_SDO_INDEX_INFO VIEW
DBA_MD_COLUMNS VIEW
DBA_MD_PARTITIONS VIEW
DBA_MD_TABLES VIEW
DBA_MD_TABLESPACES VIEW
DBA_SDO_GEOM_METADATA VIEW
DBA_SDO_INDEX_INFO VIEW
DBA_SDO_INDEX_METADATA VIEW
F81_INDEX_OBJECT TYPE
F81_INDEX_OBJ_ARRAY TYPE
F81_NT_IND_TYPE TYPE
GEOCODER_HTTP PACKAGE
GEOCODER_HTTP PACKAGE BODY
GEOCODE_RESULT TYPE
GEODETIC_SRIDS VIEW
H81_INDEX_OBJECT TYPE
H81_INDEX_OBJ_ARRAY TYPE
H81_NT_IND_TYPE TYPE
LOCATOR_WITHIN_DISTANCE OPERATOR
MD PACKAGE
MD PACKAGE BODY
MD1 PACKAGE
MD1 PACKAGE BODY
MD2 PACKAGE
MD2 PACKAGE BODY
MDBOOTSTRAP PACKAGE
MDBOOTSTRAP PACKAGE BODY
MDDICT PACKAGE
MDDICT PACKAGE BODY
MDERR PACKAGE
MDERR PACKAGE BODY
MDEXEC PACKAGE
MDEXEC PACKAGE BODY
MDEXEX PACKAGE
MDEXEX PACKAGE BODY
MDGEN PACKAGE
MDGEN PACKAGE BODY
MDLEXR PACKAGE
MDLEXR PACKAGE BODY
MDLIB PACKAGE
MDLIB PACKAGE BODY
MDTRIG PACKAGE
MDTRIG PACKAGE BODY
MDVERIFY PACKAGE
MDVERIFY PACKAGE BODY
MD_DDL PACKAGE
MD_DDL PACKAGE BODY
MD_DML PACKAGE
MD_DML PACKAGE BODY
MD_PART PACKAGE
MD_PART PACKAGE BODY
PRVT_IDX PACKAGE
PRVT_IDX PACKAGE BODY
RTREE_FILTER OPERATOR
RTREE_IDX PACKAGE
RTREE_IDX PACKAGE BODY
RTREE_INDEX INDEXTYPE
RTREE_INDEX_METHOD TYPE
RTREE_INDEX_METHOD PACKAGE BODY
RTREE_NN OPERATOR
SDO PACKAGE
SDO PACKAGE BODY
SDO_3GL PACKAGE
SDO_3GL PACKAGE BODY
SDO_ADMIN PACKAGE
SDO_ADMIN PACKAGE BODY
SDO_CATALOG PACKAGE
SDO_CATALOG PACKAGE BODY
SDO_CS PACKAGE
SDO_CS PACKAGE BODY
SDO_DIM_ARRAY TYPE
SDO_DIM_ELEMENT TYPE
SDO_ELEM_INFO_ARRAY TYPE
SDO_FILTER OPERATOR
SDO_GEOM PACKAGE
SDO_GEOM PACKAGE BODY
SDO_GEOMETRY TYPE
SDO_GEOM_TRIG_DEL1 TRIGGER
SDO_GEOM_TRIG_INS1 TRIGGER
SDO_GEOM_TRIG_UPD1 TRIGGER
SDO_IDX PACKAGE
SDO_IDX PACKAGE BODY
SDO_INDEX_METHOD TYPE
SDO_INDEX_METHOD PACKAGE BODY
SDO_INT2_FILTER OPERATOR
SDO_INT2_RELATE OPERATOR
SDO_INT_FILTER OPERATOR
SDO_INT_RELATE OPERATOR
SDO_LRS PACKAGE
SDO_LRS PACKAGE BODY
SDO_MBR TYPE
SDO_META PACKAGE
SDO_META PACKAGE BODY
SDO_MIGRATE PACKAGE
SDO_MIGRATE PACKAGE BODY
SDO_NN OPERATOR
SDO_ORDINATE_ARRAY TYPE
SDO_POINT_TYPE TYPE
SDO_RELATE OPERATOR
SDO_RELATEMASK_TABLE VIEW
SDO_RELATE_MASK PACKAGE
SDO_RELATE_MASK PACKAGE BODY
SDO_RTREE_ADMIN PACKAGE
SDO_RTREE_ADMIN PACKAGE BODY
SDO_RTREE_FILTER OPERATOR
SDO_RTREE_RELATE OPERATOR
SDO_TUNE PACKAGE
SDO_TUNE PACKAGE BODY
SDO_VPOINT_TYPE TYPE
SDO_WITHIN_DISTANCE OPERATOR
SERV_PART PACKAGE
SERV_PART PACKAGE BODY
SPATIAL_INDEX INDEXTYPE
USER_MD_COLUMNS VIEW
USER_SDO_GEOM_METADATA VIEW
USER_SDO_INDEX_INFO VIEW
USER_SDO_INDEX_METADATA VIEW
V81_INDEX_OBJECT TYPE
V81_INDEX_OBJ_ARRAY TYPE
V81_NT_IND_TYPE TYPE
CATINDEXMETHODS TYPE
CATINDEXMETHODS PACKAGE BODY
CATSEARCH OPERATOR
CONTAINS OPERATOR
CONTEXT INDEXTYPE
CTXCAT INDEXTYPE
CTX_ADM PACKAGE
CTX_ADM PACKAGE BODY
CTX_CATSEARCH PACKAGE
CTX_CONTAINS PACKAGE
CTX_DDL PACKAGE
CTX_DDL PACKAGE BODY
CTX_DOC PACKAGE
CTX_DOC PACKAGE BODY
CTX_FEEDBACK_ITEM_TYPE TYPE
CTX_FEEDBACK_ITEM_TYPE PACKAGE BODY
CTX_FEEDBACK_TYPE TYPE
CTX_OUTPUT PACKAGE
CTX_OUTPUT PACKAGE BODY
CTX_QUERY PACKAGE
CTX_QUERY PACKAGE BODY
CTX_SERVERS VIEW
CTX_THES PACKAGE
CTX_THES PACKAGE BODY
DRIACC PACKAGE
DRIACC PACKAGE BODY
DRIADM PACKAGE
DRIADM PACKAGE BODY
DRICON PACKAGE
DRICON PACKAGE BODY
DRIDDL PACKAGE
DRIDDL PACKAGE BODY
DRIDDLC PACKAGE
DRIDDLC PACKAGE BODY
DRIDISP PACKAGE
DRIDISP PACKAGE BODY
DRIDML PACKAGE
DRIDML PACKAGE BODY
DRIDOC PACKAGE
DRIDOC PACKAGE BODY
DRIEXP PACKAGE
DRIEXP PACKAGE BODY
DRIG PACKAGE
DRIIMP PACKAGE
DRIIMP PACKAGE BODY
DRILIST PACKAGE
DRILIST PACKAGE BODY
DRILOAD PACKAGE
DRILOAD PACKAGE BODY
DRIOBJ PACKAGE
DRIOPT PACKAGE
DRIOPT PACKAGE BODY
DRIPARSE PACKAGE
DRIPARSE PACKAGE BODY
DRIPIPE PACKAGE
DRIPIPE PACKAGE BODY
DRIPREF PACKAGE
DRIPREF PACKAGE BODY
DRIREC PACKAGE
DRIREC PACKAGE BODY
DRISCORE PACKAGE
DRITHS PACKAGE
DRITHS PACKAGE BODY
DRITHSC PACKAGE
DRITHSC PACKAGE BODY
DRITHSD PACKAGE
DRITHSD PACKAGE BODY
DRITHSL PACKAGE
DRITHSL PACKAGE BODY
DRITHSX PACKAGE
DRITHSX PACKAGE BODY
DRIUTL PACKAGE
DRIUTL PACKAGE BODY
DRIVAL PACKAGE
DRIVAL PACKAGE BODY
DRIXTAB PACKAGE
DRIXTAB PACKAGE BODY
DRUE PACKAGE
DRUE PACKAGE BODY
DR_DEF PACKAGE
SCORE OPERATOR
SYNCRN PROCEDURE
TEXTINDEXMETHODS TYPE
TEXTINDEXMETHODS PACKAGE BODY
TEXTOPTSTATS TYPE
TEXTOPTSTATS PACKAGE BODY
FOOTESTCREATE FUNCTION
IMP_GET_SOFT_CONNS PROCEDURE
IMP_LOAD_ALLCONNINFO PROCEDURE
LOAD_DANGLE_REPORT PROCEDURE
NQT_INFO PROCEDURE
RTL_LEAF_DANGLE_REPORT PROCEDURE
TOPSIGNAME FUNCTION
TOPSIGNAME_RTL FUNCTION
891 rows selected.
SVRMGR>
Maybe you are looking for
-
Access denied. Error in File C:\WINDOWS\TEMP\
I have searched on Google and all over this forum and none of the solutions have fixed my problem. Crystal Version: Crsytal.Net for Visual Studio.Net 2005 Server: Windows Server 2003 Error: Access denied. Error in File C:\WINDOWS\TEMP\JuryDutyReport
-
10.8.5 Update - Finder and Lots of apps crash
Hi All - I've been anxiously awaiting for the screensaver fixes to be resolved that were caused in recent updates, so I installed 10.8.5 which apparently came out today and my 2013 iMac now is constantly telling me that apps are quitting unexpectedly
-
RFC-XI-JDBC testing is not working
Hi, I created rfc-xi-jdbc. I created 2 dt, 2 msg types, 2 msg mappings, 1 msg interface(synchronous, abstract), 1 interface mapping. In the CD, I defined, 1 sender, 1 receiver agreement. 1 receiver, 1 sender determination, 1 interface determination,
-
Is Dynamic Loading of Text from an external file possible in Captivate?
Hello all, I am wondering if Dynamic loading of text is possible in captivate or not. As we can load an external file in flash. & which is the universal font to be used for the text entry box which will visible on any media? Thanks & Regards, Chirag
-
Can't set memory or northbridge voltage
Hello, i have a MSI P35 Neo-F, and if i try to increase the memory or northbridge voltage just 0.1v, the board wont boot. I think the default vdimm voltage is 1.8 or 1.9, but my memory sticks require 2.2v. But my pc starts up fine and is stable when