这可能是目前Oracle兼容性最好的数据库 - 十四年Oracle兼容性淬炼-阿里云开发者社区

开发者社区> 数据库> 正文

这可能是目前Oracle兼容性最好的数据库 - 十四年Oracle兼容性淬炼

简介: 标签 PostgreSQL , EDB , ppas , epas , enterprisedb , 阿里云 背景 Oracle兼容性越高,迁移改造工作量越少,时间成本越低。对于大多数传统企业来说,去O已势在必行。 PostgreSQL 数据库本身与O的兼容性还行,同时功能覆盖度也还是很不错的,所以自己有专业研发团队的企业,选择PG来去O是不错的选择,其中也有很多非常成功的案例,例如平

标签

PostgreSQL , EDB , ppas , epas , enterprisedb , 阿里云


背景

Oracle兼容性越高,迁移改造工作量越少,时间成本越低。对于大多数传统企业来说,去O已势在必行。

PostgreSQL 数据库本身与O的兼容性还行,同时功能覆盖度也还是很不错的,所以自己有专业研发团队的企业,选择PG来去O是不错的选择,其中也有很多非常成功的案例,例如平安集团,邮储银行。

去O需要耗费较多研发资源,对于已有系统来说,多多少少都会涉及改造应用程序。并不是所有企业都有这个条件,所以去O去到哪里?目标数据库的Oracle兼容性至关重要。

PostgreSQL 数据库生态的商业数据库中,EDB为首,从2005年开始基于PostgreSQL的代码适配Oracle,已经有14年的Oracle兼容性适配积累,应该来说是PG生态中,ORACLE兼容性最好的产品了。

Oracle兼容性涉及

1、SQL语法

2、类型

3、函数

4、包

5、索引类型

6、操作符

7、格式(内部存储格式,输入输出格式)

8、样式(使用样式,例如 null='')

9、编程语言

10、自定义pl/sql 存储过程

11、自定义pl/sql 函数

12、自定义pl/sql 包

13、客户端驱动(OCI)

14、客户端编程(PRO*C)

2015年,阿里云与EDB合作推出云端RDS PPAS,兼容Oracle的版本。兼具了PostgreSQL社区版本特性,以及Oracle兼容性。EDB在以上兼容性做得非常到位。

截止目前,已有很多传统客户借助PPAS产品,几乎无痛地成功去O(从8i到12c都有非常成功的案例)。

2018年云栖大会阿里云与EDB达成深层战略合作。为客户去O提供更好的服务与产品。

兼容性评估、不兼容转换、整体迁移工具

去O除了数据库引擎,还有一个更不可或缺的是去O工具与生态。

ADAM是阿里云提供的去O兼容性评估、不兼容转换、整体迁移工具。提供能力:

1、兼容性评估,改造工作量

2、不兼容转换

3、schema迁移

4、全量数据迁移

5、增量迁移

6、一致性校验

7、SQL、存储过程调用一致性校验

8、仿真回放与结果一致性校验

9、引擎独特特性优化

10、风险揭示(慢SQL揭示)

11、拆库建议

12、分库建议

13、一键迁移

14、优化与诊断

15、迁移过程植入人工干预(DDL允许改动(结构变更、索引变更...),迁移数据允许增加WHERE条件(部分、满足条件迁移))

16、并行迁移

17、多合一迁移

18、一拆多迁移

O兼容性对比

以内置系统表、包的兼容性入手,分析Oracle兼容性是否到了深水区。

一、pg 社区版本 orafce

pg社区版本,通过增加orafce插件,实现了少部分的Oracle兼容性。

1、少量包

2、一些O常用函数

3、一些O的类型

4、一些系统视图

5、dual

6、少量系统表

1 包

postgres=# select oid,nspname,obj_description(oid) from pg_namespace order by 2;    
   oid   |      nspname       |         obj_description              
---------+--------------------+----------------------------------    
 1912706 | dbms_alert         |     
 1912769 | dbms_assert        |     
 1912527 | dbms_output        |     
 1912593 | dbms_pipe          |     
 1912797 | dbms_random        |     
 1912725 | dbms_utility       |     
   12989 | information_schema |     
 1912485 | oracle             |     
      11 | pg_catalog         | system catalog schema    
   11804 | pg_temp_1          |     
      99 | pg_toast           | reserved schema for TOAST tables    
   11805 | pg_toast_temp_1    |     
 1912778 | plunit             |     
 1912684 | plvchr             |     
 1912626 | plvdate            |     
 1912728 | plvlex             |     
 1912480 | plvstr             |     
 1912716 | plvsubst           |     
    2200 | public             | standard public schema    
 1912730 | utl_file           |     
(20 rows)    

2 包内支持方法

postgres=# select proname from pg_proc where pronamespace=(select oid from pg_namespace where nspname='dbms_random') order by 1;    
  proname       
------------    
 initialize    
 normal    
 random    
 seed    
 seed    
 string    
 terminate    
 value    
 value    
(9 rows)    
    
postgres=# select proname from pg_proc where pronamespace=(select oid from pg_namespace where nspname='dbms_output') order by 1;    
   proname        
--------------    
 disable    
 enable    
 enable    
 get_line    
 get_lines    
 new_line    
 put    
 put_line    
 serveroutput    
(9 rows)    

3 包内支持方法的源代码

postgres=# select pronamespace::regnamespace,proname,prosrc,probin from pg_proc where proname='put_line';    
 pronamespace | proname  |                     prosrc                     |     probin         
--------------+----------+------------------------------------------------+----------------    
 dbms_output  | put_line | dbms_output_put_line                           | $libdir/orafce    
 utl_file     | put_line | utl_file_put_line                              | $libdir/orafce    
 utl_file     | put_line | SELECT utl_file.put_line($1, $2::text);        |     
 utl_file     | put_line | utl_file_put_line                              | $libdir/orafce    
 utl_file     | put_line | SELECT utl_file.put_line($1, $2::text, true);  |     
(5 rows)    

4 系统表

postgres=#              select distinct on (relkind,relnamespace,relname) oid,relkind,relname,relnamespace::regnamespace from pg_class where relname ~ '^dba|^user|^all|^v\$|^dbms' order by 2,4,3;    
   oid   | relkind |       relname        |    relnamespace        
---------+---------+----------------------+--------------------    
   16610 | v       | all_permissions      | public    
   13196 | v       | user_defined_types   | information_schema    
   13264 | v       | user_mapping_options | information_schema    
   13268 | v       | user_mappings        | information_schema    
 1913061 | v       | dba_segments         | oracle    
 1913024 | v       | user_cons_columns    | oracle    
 1913028 | v       | user_constraints     | oracle    
 1913056 | v       | user_ind_columns     | oracle    
 1913037 | v       | user_objects         | oracle    
 1913042 | v       | user_procedures      | oracle    
 1913047 | v       | user_source          | oracle    
 1913016 | v       | user_tab_columns     | oracle    
 1913020 | v       | user_tables          | oracle    
 1913051 | v       | user_views           | oracle    
(14 rows)    

二、某个基于PG的产品

1 系统表

未支持 dblink , 同义词, 策略, profile, schedule, 高级队列, job, 角色, 触发器等。

postgres=> select distinct on (relkind,relname) oid,relkind,relname from pg_class where relname ~ '^dba|^user|^all|^v\$|^dbms' order by 2,3;    
  oid  | relkind |       relname            
-------+---------+----------------------    
 12047 | v       | all_all_tables    
 11888 | v       | all_col_comments    
 11929 | v       | all_directories    
 11952 | v       | all_objects    
 12113 | v       | all_procedures    
 11935 | v       | all_sequences    
 11975 | v       | all_source    
 12075 | v       | all_tab_cols    
 12071 | v       | all_tab_columns    
 12023 | v       | all_tables    
 12001 | v       | all_users    
 11871 | v       | all_views    
 12035 | v       | dba_all_tables    
 11988 | v       | dba_data_files    
 11926 | v       | dba_directories    
 11857 | v       | dba_indexes    
 11920 | v       | dba_jobs    
 12106 | v       | dba_procedures    
 14235 | v       | dba_sequences    
 11972 | v       | dba_source    
 12059 | v       | dba_tab_cols    
 12051 | v       | dba_tab_columns    
 12015 | v       | dba_tables    
 11845 | v       | dba_tablespaces    
 11905 | v       | dba_triggers    
 11994 | v       | dba_users    
 11868 | v       | dba_views    
 11894 | v       | user_col_comments    
 14150 | v       | user_defined_types    
 12142 | v       | user_indexes    
 14218 | v       | user_mapping_options    
 14222 | v       | user_mappings    
 11962 | v       | user_objects    
 12116 | v       | user_procedures    
 11945 | v       | user_sequences    
 11985 | v       | user_source    
 12095 | v       | user_tab_cols    
 12087 | v       | user_tab_columns    
 12027 | v       | user_tables    
 12150 | v       | user_tablespaces    
 11911 | v       | user_triggers    
 11878 | v       | user_views    
 12158 | v       | v$session    
(43 rows)    
postgres=> select distinct on (relkind,relnamespace,relname) oid,relkind,relname,relnamespace::regnamespace from pg_class where relname ~ '^dba|^user|^all|^v\$|^dbms' order by 2,4,3;    
  oid  | relkind |       relname        |    relnamespace        
-------+---------+----------------------+--------------------    
 12047 | v       | all_all_tables       | pg_catalog    
 11891 | v       | all_col_comments     | pg_catalog    
 11932 | v       | all_directories      | pg_catalog    
 11956 | v       | all_objects          | pg_catalog    
 12113 | v       | all_procedures       | pg_catalog    
 11939 | v       | all_sequences        | pg_catalog    
 11979 | v       | all_source           | pg_catalog    
 12079 | v       | all_tab_cols         | pg_catalog    
 12071 | v       | all_tab_columns      | pg_catalog    
 12023 | v       | all_tables           | pg_catalog    
 12004 | v       | all_users            | pg_catalog    
 11875 | v       | all_views            | pg_catalog    
 12039 | v       | dba_all_tables       | pg_catalog    
 11991 | v       | dba_data_files       | pg_catalog    
 11926 | v       | dba_directories      | pg_catalog    
 11857 | v       | dba_indexes          | pg_catalog    
 11920 | v       | dba_jobs             | pg_catalog    
 12106 | v       | dba_procedures       | pg_catalog    
 14235 | v       | dba_sequences        | pg_catalog    
 11972 | v       | dba_source           | pg_catalog    
 12063 | v       | dba_tab_cols         | pg_catalog    
 12055 | v       | dba_tab_columns      | pg_catalog    
 12015 | v       | dba_tables           | pg_catalog    
 11849 | v       | dba_tablespaces      | pg_catalog    
 11908 | v       | dba_triggers         | pg_catalog    
 11998 | v       | dba_users            | pg_catalog    
 11868 | v       | dba_views            | pg_catalog    
 11897 | v       | user_col_comments    | pg_catalog    
 12142 | v       | user_indexes         | pg_catalog    
 11962 | v       | user_objects         | pg_catalog    
 12119 | v       | user_procedures      | pg_catalog    
 11945 | v       | user_sequences       | pg_catalog    
 11985 | v       | user_source          | pg_catalog    
 12095 | v       | user_tab_cols        | pg_catalog    
 12087 | v       | user_tab_columns     | pg_catalog    
 12031 | v       | user_tables          | pg_catalog    
 12150 | v       | user_tablespaces     | pg_catalog    
 11914 | v       | user_triggers        | pg_catalog    
 11881 | v       | user_views           | pg_catalog    
 12158 | v       | v$session            | pg_catalog    
 12043 | v       | all_all_tables       | sys    
 11888 | v       | all_col_comments     | sys    
 11929 | v       | all_directories      | sys    
 11952 | v       | all_objects          | sys    
 12109 | v       | all_procedures       | sys    
 11935 | v       | all_sequences        | sys    
 11975 | v       | all_source           | sys    
 12075 | v       | all_tab_cols         | sys    
 12067 | v       | all_tab_columns      | sys    
 12019 | v       | all_tables           | sys    
 12001 | v       | all_users            | sys    
 11871 | v       | all_views            | sys    
 12035 | v       | dba_all_tables       | sys    
 11988 | v       | dba_data_files       | sys    
 11923 | v       | dba_directories      | sys    
 11853 | v       | dba_indexes          | sys    
 11917 | v       | dba_jobs             | sys    
 12103 | v       | dba_procedures       | sys    
 14231 | v       | dba_sequences        | sys    
 11969 | v       | dba_source           | sys    
 12059 | v       | dba_tab_cols         | sys    
 12051 | v       | dba_tab_columns      | sys    
 12011 | v       | dba_tables           | sys    
 11845 | v       | dba_tablespaces      | sys    
 11905 | v       | dba_triggers         | sys    
 11994 | v       | dba_users            | sys    
 11865 | v       | dba_views            | sys    
 11894 | v       | user_col_comments    | sys    
 12138 | v       | user_indexes         | sys    
 11959 | v       | user_objects         | sys    
 12116 | v       | user_procedures      | sys    
 11942 | v       | user_sequences       | sys    
 11982 | v       | user_source          | sys    
 12091 | v       | user_tab_cols        | sys    
 12083 | v       | user_tab_columns     | sys    
 12027 | v       | user_tables          | sys    
 12146 | v       | user_tablespaces     | sys    
 11911 | v       | user_triggers        | sys    
 11878 | v       | user_views           | sys    
 12154 | v       | v$session            | sys    
 14150 | v       | user_defined_types   | information_schema    
 14218 | v       | user_mapping_options | information_schema    
 14222 | v       | user_mappings        | information_schema    
(83 rows)    
postgres=> select distinct on (relkind,relname) oid,relkind,relname from pg_class where relnamespace='sys'::regnamespace order by 2,3;    
  oid  | relkind |      relname          
-------+---------+-------------------    
 12043 | v       | all_all_tables    
 11888 | v       | all_col_comments    
 11929 | v       | all_directories    
 11952 | v       | all_objects    
 12109 | v       | all_procedures    
 11935 | v       | all_sequences    
 11975 | v       | all_source    
 12075 | v       | all_tab_cols    
 12067 | v       | all_tab_columns    
 12019 | v       | all_tables    
 12001 | v       | all_users    
 11871 | v       | all_views    
 12035 | v       | dba_all_tables    
 11988 | v       | dba_data_files    
 11923 | v       | dba_directories    
 11853 | v       | dba_indexes    
 11917 | v       | dba_jobs    
 12103 | v       | dba_procedures    
 14231 | v       | dba_sequences    
 11969 | v       | dba_source    
 12059 | v       | dba_tab_cols    
 12051 | v       | dba_tab_columns    
 12011 | v       | dba_tables    
 11845 | v       | dba_tablespaces    
 11905 | v       | dba_triggers    
 11994 | v       | dba_users    
 11865 | v       | dba_views    
 11894 | v       | user_col_comments    
 12138 | v       | user_indexes    
 11959 | v       | user_objects    
 12116 | v       | user_procedures    
 11942 | v       | user_sequences    
 11982 | v       | user_source    
 12091 | v       | user_tab_cols    
 12083 | v       | user_tab_columns    
 12027 | v       | user_tables    
 12146 | v       | user_tablespaces    
 11911 | v       | user_triggers    
 11878 | v       | user_views    
 12154 | v       | v$session    
(40 rows)    

2 存储过程语言

未支持 pl/sql

postgres=> select * from pg_pltemplate ;    
 tmplname | tmpltrusted | tmpldbacreate |     tmplhandler      |       tmplinline       |   tmplvalidator   |   tmpllibrary   | tmplacl     
----------+-------------+---------------+----------------------+------------------------+-------------------+-----------------+---------    
 plpgsql  | t           | t             | plpgsql_call_handler | plpgsql_inline_handler | plpgsql_validator | $libdir/plpgsql |     
(1 row)    

3 包

1、支持的包较少

postgres=> select oid,nspname,obj_description(oid) from pg_namespace order by 2;    
  oid  |      nspname       |         obj_description              
-------+--------------------+----------------------------------    
 12130 | dbms_output        |     
 12133 | dbms_random        |     

2、包的方法较少

postgres=> select proname from pg_proc where pronamespace=(select oid from pg_namespace where nspname='dbms_output') order by 1;    
 proname      
----------    
 put    
 put_line    
(2 rows)    
      
postgres=> select proname from pg_proc where pronamespace=(select oid from pg_namespace where nspname='dbms_random') order by 1;    
 proname     
---------    
 seed    
 seed    
 value    
 value    
(4 rows)    

包的方法的源代码内容

postgres=> select pronamespace::regnamespace,proname,prosrc,probin from pg_proc where proname='put_line';    
 pronamespace | proname  |        prosrc        |     probin          
--------------+----------+----------------------+-----------------    
 dbms_output  | put_line | dbms_output_put_line | $libdir/plpgsql    
(1 row)    

4、一些语义一致性问题

语义上支持varchar2(byte|char),实际上并没有按实际约束。

postgresdb=> create table test (id varchar2(10 char));  
CREATE TABLE  
postgresdb=> drop table test;  
DROP TABLE  
postgresdb=> create table test (id varchar2(10 char));  
CREATE TABLE  
postgresdb=> \d+ test  
                                           Table "public.test"  
 Column |         Type          | Collation | Nullable | Default | Storage  | Stats target | Description   
--------+-----------------------+-----------+----------+---------+----------+--------------+-------------  
 id     | character varying(10) |           |          |         | extended |              |   
  
postgresdb=> drop table test;  
DROP TABLE  
postgresdb=> create table test (id varchar2(10 byte));  
CREATE TABLE  
postgresdb=> \d+ test  
                                           Table "public.test"  
 Column |         Type          | Collation | Nullable | Default | Storage  | Stats target | Description   
--------+-----------------------+-----------+----------+---------+----------+--------------+-------------  
 id     | character varying(10) |           |          |         | extended |              |   
  
限制的是BYTE,实际上是CHAR。  
postgresdb=> insert into test values ('abcdefg');  
INSERT 0 1  
postgresdb=> insert into test values ('abcdefg你好');  
INSERT 0 1  
postgresdb=> insert into test values ('中国你好你好');  
INSERT 0 1  

5、一些SQL语法深水区问题

1、例如对connect by语法并未支持。

postgresdb=> CREATE TABLE TBL_TEST    
postgresdb-> (    
postgresdb(> ID    NUMBER,    
postgresdb(> NAME VARCHAR2(100 BYTE),    
postgresdb(> PID   NUMBER                                  DEFAULT 0    
postgresdb(> );   
CREATE TABLE  
postgresdb=> INSERT INTO TBL_TEST(ID,NAME,PID) VALUES('1','10','0');    
INSERT INTO TBL_TEST(ID,NAME,PID) VALUES('2','11','1');    
INSERT INTO TBL_TEST(ID,NAME,PID) VALUES('3','20','0');    
INSERT INTO TBL_TEST(ID,NAME,PID) VALUES('4','12','1');    
INSERT 0 1  
postgresdb=> INSERT INTO TBL_TEST(ID,NAME,PID) VALUES('2','11','1');    
INSERT INTO TBL_TEST(ID,NAME,PID) VALUES('5','121','2');  INSERT 0 1  
postgresdb=> INSERT INTO TBL_TEST(ID,NAME,PID) VALUES('3','20','0');    
INSERT 0 1  
postgresdb=> INSERT INTO TBL_TEST(ID,NAME,PID) VALUES('4','12','1');    
INSERT 0 1  
postgresdb=> INSERT INTO TBL_TEST(ID,NAME,PID) VALUES('5','121','2');    
INSERT 0 1  
postgresdb=> select * from TBL_TEST    
postgresdb-> start with id=1    
postgresdb-> connect by prior id = pid;    
ERROR:  syntax error at or near "with"  
LINE 2: start with id=1    
              ^  

2、不支持分区表语法

postgresdb=> CREATE table TABLE_PARTITION(  
postgresdb(>        COL1   NUMBER,  
postgresdb(>        COL2   VARCHAR2(10)  
postgresdb(> )   
postgresdb-> partition by range(COL1)(  
postgresdb(>           partition TAB_PARTOTION_01 values less than (450000),  
postgresdb(>           partition TAB_PARTOTION_02 values less than (900000),  
postgresdb(>           partition TAB_PARTOTION_03 values less than (1350000),  
postgresdb(>           partition TAB_PARTOTION_04 values less than (1800000),  
postgresdb(>           partition TAB_PARTOTION_OTHER values less THAN (MAXVALUE)  
postgresdb(> );  
ERROR:  syntax error at or near "("  
LINE 5: partition by range(COL1)(  
                                ^  

3、不支持rowid

postgresdb=> select rowid from test limit 1;  
ERROR:  column "rowid" does not exist  
LINE 1: select rowid from test limit 1;  
               ^  

4、rownum的支持方法有点问题,依赖临时sequence,调用频繁的话会导致元数据膨胀

postgresdb=> select * from tbl_test where rownum<10;  
 id | name | pid   
----+------+-----  
  1 | 10   |   0  
  2 | 11   |   1  
  3 | 20   |   0  
  4 | 12   |   1  
  5 | 121  |   2  
(5 rows)  
  
postgresdb=> explain select * from tbl_test where rownum<10;  
                         QUERY PLAN                           
------------------------------------------------------------  
 Seq Scan on tbl_test  (cost=0.00..78.25 rows=87 width=282)  
   Filter: ("rownum"() < 10)  
(2 rows)  
  
postgresdb=> \df rownum  
                          List of functions  
   Schema   |  Name  | Result data type | Argument data types | Type   
------------+--------+------------------+---------------------+------  
 pg_catalog | rownum | integer          |                     | func  
(1 row)  
    
postgresdb=> \sf rownum  
CREATE OR REPLACE FUNCTION pg_catalog."rownum"()  
 RETURNS integer  
 LANGUAGE plpgsql  
AS $function$   
DECLARE myid int := 0;   
func_cmd varchar(200) :='';   
myret int := 23;   
BEGIN   
  PERFORM setseed(0.4);  
  select trunc(random()*100000000) into myid;   
  SET client_min_messages = 'error';   
  func_cmd := 'create TEMP sequence IF NOT EXISTS  rownum_' || myid ||' maxvalue 9223372036854775807 nocache';   
  EXECUTE func_cmd;   
  func_cmd = 'select nextval(''rownum_' ||myid|| ''') '  ;   
  EXECUTE func_cmd into myret;   
  RETURN myret;    
END;   
$function$;  

三、EDB, 阿里云RDS PPAS

1、支持哪些ORACLE相关系统视图

支持的系统视图非常多

postgres=# select distinct on (relkind,relname) oid,relkind,relname from pg_class where relname ~ '^dba|^user|^all|^v\$|^dbms' order by 2,3;    
  oid  | relkind |           relname               
-------+---------+-----------------------------    
 33757 | r       | dbms_job_user    
 15009 | v       | all_all_tables    
 15093 | v       | all_cons_columns    
 14995 | v       | all_constraints    
 15176 | v       | all_db_links    
 15189 | v       | all_directories    
 15121 | v       | all_ind_columns    
 15107 | v       | all_indexes    
 33777 | v       | all_jobs    
 15198 | v       | all_objects    
 15271 | v       | all_part_key_columns    
 15226 | v       | all_part_tables    
 15212 | v       | all_policies    
 15299 | v       | all_queue_tables    
 15313 | v       | all_queues    
 33954 | v       | all_scheduler_job_args    
 33940 | v       | all_scheduler_jobs    
 33910 | v       | all_scheduler_program_args    
 33898 | v       | all_scheduler_programs    
 33922 | v       | all_scheduler_schedules    
 15163 | v       | all_sequences    
 15333 | v       | all_source    
 15285 | v       | all_subpart_key_columns    
 15065 | v       | all_synonyms    
 15051 | v       | all_tab_columns    
 15241 | v       | all_tab_partitions    
 15256 | v       | all_tab_subpartitions    
 14981 | v       | all_tables    
 15023 | v       | all_triggers    
 15135 | v       | all_types    
 14963 | v       | all_users    
 15037 | v       | all_view_columns    
 15079 | v       | all_views    
 15004 | v       | dba_all_tables    
 15088 | v       | dba_cons_columns    
 14990 | v       | dba_constraints    
 15172 | v       | dba_db_links    
 15185 | v       | dba_directories    
 15116 | v       | dba_ind_columns    
 15102 | v       | dba_indexes    
 33767 | v       | dba_jobs    
 15193 | v       | dba_objects    
 15266 | v       | dba_part_key_columns    
 15221 | v       | dba_part_tables    
 15207 | v       | dba_policies    
 14971 | v       | dba_profiles    
 15294 | v       | dba_queue_tables    
 15308 | v       | dba_queues    
 15148 | v       | dba_role_privs    
 15144 | v       | dba_roles    
 33950 | v       | dba_scheduler_job_args    
 33935 | v       | dba_scheduler_jobs    
 33906 | v       | dba_scheduler_program_args    
 33894 | v       | dba_scheduler_programs    
 33918 | v       | dba_scheduler_schedules    
 15158 | v       | dba_sequences    
 15328 | v       | dba_source    
 15280 | v       | dba_subpart_key_columns    
 15060 | v       | dba_synonyms    
 15046 | v       | dba_tab_columns    
 15236 | v       | dba_tab_partitions    
 15251 | v       | dba_tab_subpartitions    
 14976 | v       | dba_tables    
 15018 | v       | dba_triggers    
 15130 | v       | dba_types    
 14958 | v       | dba_users    
 15032 | v       | dba_view_columns    
 15074 | v       | dba_views    
 14476 | v       | dbms_aq_stat_databases    
 14485 | v       | dbms_aq_stat_messages    
 14471 | v       | dbms_aq_stat_queues    
 14480 | v       | dbms_aq_stat_waiters    
 15014 | v       | user_all_tables    
 15098 | v       | user_cons_columns    
 15000 | v       | user_constraints    
 15181 | v       | user_db_links    
 13871 | v       | user_defined_types    
 15126 | v       | user_ind_columns    
 15112 | v       | user_indexes    
 33772 | v       | user_jobs    
 13940 | v       | user_mapping_options    
 13944 | v       | user_mappings    
 15203 | v       | user_objects    
 15276 | v       | user_part_key_columns    
 15231 | v       | user_part_tables    
 15217 | v       | user_policies    
 15304 | v       | user_queue_tables    
 15318 | v       | user_queues    
 15153 | v       | user_role_privs    
 33958 | v       | user_scheduler_job_args    
 33945 | v       | user_scheduler_jobs    
 33914 | v       | user_scheduler_program_args    
 33902 | v       | user_scheduler_programs    
 33926 | v       | user_scheduler_schedules    
 15168 | v       | user_sequences    
 15338 | v       | user_source    
 15290 | v       | user_subpart_key_columns    
 15070 | v       | user_synonyms    
 15056 | v       | user_tab_columns    
 15246 | v       | user_tab_partitions    
 15261 | v       | user_tab_subpartitions    
 14986 | v       | user_tables    
 15028 | v       | user_triggers    
 15140 | v       | user_types    
 14967 | v       | user_users    
 15042 | v       | user_view_columns    
 15084 | v       | user_views    
 13959 | v       | v$version    
(108 rows)    

2、支持哪些ORACLE相关系统视图,收敛到schema层级

postgres=#  select distinct on (relkind,relnamespace,relname) oid,relkind,relname,relnamespace::regnamespace from pg_class where relname ~ '^dba|^user|^all|^v\$|^dbms' order by 2,4,3;    
  oid  | relkind |           relname           |    relnamespace        
-------+---------+-----------------------------+--------------------    
 33757 | r       | dbms_job_user               | sys    
 15009 | v       | all_all_tables              | sys    
 15093 | v       | all_cons_columns            | sys    
 14995 | v       | all_constraints             | sys    
 15176 | v       | all_db_links                | sys    
 15189 | v       | all_directories             | sys    
 15121 | v       | all_ind_columns             | sys    
 15107 | v       | all_indexes                 | sys    
 33777 | v       | all_jobs                    | sys    
 15198 | v       | all_objects                 | sys    
 15271 | v       | all_part_key_columns        | sys    
 15226 | v       | all_part_tables             | sys    
 15212 | v       | all_policies                | sys    
 15299 | v       | all_queue_tables            | sys    
 15313 | v       | all_queues                  | sys    
 33954 | v       | all_scheduler_job_args      | sys    
 33940 | v       | all_scheduler_jobs          | sys    
 33910 | v       | all_scheduler_program_args  | sys    
 33898 | v       | all_scheduler_programs      | sys    
 33922 | v       | all_scheduler_schedules     | sys    
 15163 | v       | all_sequences               | sys    
 15333 | v       | all_source                  | sys    
 15285 | v       | all_subpart_key_columns     | sys    
 15065 | v       | all_synonyms                | sys    
 15051 | v       | all_tab_columns             | sys    
 15241 | v       | all_tab_partitions          | sys    
 15256 | v       | all_tab_subpartitions       | sys    
 14981 | v       | all_tables                  | sys    
 15023 | v       | all_triggers                | sys    
 15135 | v       | all_types                   | sys    
 14963 | v       | all_users                   | sys    
 15037 | v       | all_view_columns            | sys    
 15079 | v       | all_views                   | sys    
 15004 | v       | dba_all_tables              | sys    
 15088 | v       | dba_cons_columns            | sys    
 14990 | v       | dba_constraints             | sys    
 15172 | v       | dba_db_links                | sys    
 15185 | v       | dba_directories             | sys    
 15116 | v       | dba_ind_columns             | sys    
 15102 | v       | dba_indexes                 | sys    
 33767 | v       | dba_jobs                    | sys    
 15193 | v       | dba_objects                 | sys    
 15266 | v       | dba_part_key_columns        | sys    
 15221 | v       | dba_part_tables             | sys    
 15207 | v       | dba_policies                | sys    
 14971 | v       | dba_profiles                | sys    
 15294 | v       | dba_queue_tables            | sys    
 15308 | v       | dba_queues                  | sys    
 15148 | v       | dba_role_privs              | sys    
 15144 | v       | dba_roles                   | sys    
 33950 | v       | dba_scheduler_job_args      | sys    
 33935 | v       | dba_scheduler_jobs          | sys    
 33906 | v       | dba_scheduler_program_args  | sys    
 33894 | v       | dba_scheduler_programs      | sys    
 33918 | v       | dba_scheduler_schedules     | sys    
 15158 | v       | dba_sequences               | sys    
 15328 | v       | dba_source                  | sys    
 15280 | v       | dba_subpart_key_columns     | sys    
 15060 | v       | dba_synonyms                | sys    
 15046 | v       | dba_tab_columns             | sys    
 15236 | v       | dba_tab_partitions          | sys    
 15251 | v       | dba_tab_subpartitions       | sys    
 14976 | v       | dba_tables                  | sys    
 15018 | v       | dba_triggers                | sys    
 15130 | v       | dba_types                   | sys    
 14958 | v       | dba_users                   | sys    
 15032 | v       | dba_view_columns            | sys    
 15074 | v       | dba_views                   | sys    
 14476 | v       | dbms_aq_stat_databases      | sys    
 14485 | v       | dbms_aq_stat_messages       | sys    
 14471 | v       | dbms_aq_stat_queues         | sys    
 14480 | v       | dbms_aq_stat_waiters        | sys    
 15014 | v       | user_all_tables             | sys    
 15098 | v       | user_cons_columns           | sys    
 15000 | v       | user_constraints            | sys    
 15181 | v       | user_db_links               | sys    
 15126 | v       | user_ind_columns            | sys    
 15112 | v       | user_indexes                | sys    
 33772 | v       | user_jobs                   | sys    
 15203 | v       | user_objects                | sys    
 15276 | v       | user_part_key_columns       | sys    
 15231 | v       | user_part_tables            | sys    
 15217 | v       | user_policies               | sys    
 15304 | v       | user_queue_tables           | sys    
 15318 | v       | user_queues                 | sys    
 15153 | v       | user_role_privs             | sys    
 33958 | v       | user_scheduler_job_args     | sys    
 33945 | v       | user_scheduler_jobs         | sys    
 33914 | v       | user_scheduler_program_args | sys    
 33902 | v       | user_scheduler_programs     | sys    
 33926 | v       | user_scheduler_schedules    | sys    
 15168 | v       | user_sequences              | sys    
 15338 | v       | user_source                 | sys    
 15290 | v       | user_subpart_key_columns    | sys    
 15070 | v       | user_synonyms               | sys    
 15056 | v       | user_tab_columns            | sys    
 15246 | v       | user_tab_partitions         | sys    
 15261 | v       | user_tab_subpartitions      | sys    
 14986 | v       | user_tables                 | sys    
 15028 | v       | user_triggers               | sys    
 15140 | v       | user_types                  | sys    
 14967 | v       | user_users                  | sys    
 15042 | v       | user_view_columns           | sys    
 15084 | v       | user_views                  | sys    
 13959 | v       | v$version                   | sys    
 13871 | v       | user_defined_types          | information_schema    
 13940 | v       | user_mapping_options        | information_schema    
 13944 | v       | user_mappings               | information_schema    
(108 rows)    

3、经过改造的sys下包含哪些对象

14年兼容性打磨,已经支持了很多对象兼容

postgres=# select distinct on (relkind,relname) oid,relkind,relname from pg_class where relnamespace='sys'::regnamespace order by 2,3;    
  oid  | relkind |                   relname                       
-------+---------+---------------------------------------------    
 14552 | S       | plsql_profiler_runid    
 33792 | S       | scheduler_0200_program_dsp_program_id_seq    
 33825 | S       | scheduler_0300_schedule_dss_schedule_id_seq    
 15743 | S       | snapshot_num_seq    
  1322 | c       | aq$_agent    
  1132 | c       | aq$_descriptor    
  1135 | c       | aq$_queued_callback    
  1117 | c       | aq$_reg_info    
  2801 | c       | edb_dbms_redact_full_default_values_type    
   536 | c       | lineno_text    
  1129 | c       | msg_prop_t    
   417 | c       | scheduler_0100_component_name_type    
   519 | c       | scheduler_0200_program_type    
   522 | c       | scheduler_0250_program_argument_type    
   525 | c       | scheduler_0300_schedule_type    
   528 | c       | scheduler_0400_job_type    
   533 | c       | scheduler_0450_job_argument_type    
  1228 | i       | aq$_callback_queue_table_i    
 14002 | i       | at_most_one_row_con1    
 33764 | i       | dju_jobid_idx    
 33877 | i       | dsj_job_name_idx    
 33806 | i       | dsp_program_name_idx    
 33852 | i       | dss_schedule_name_idx    
 15788 | i       | edb$stat_db_pk    
 15778 | i       | edb$stat_idx_pk    
 15783 | i       | edb$stat_tab_pk    
 15793 | i       | edb$statio_idx_pk    
 15798 | i       | edb$statio_tab_pk    
  1227 | i       | edb_qt_1220_msgid    
  1226 | i       | edb_qt_1220_next_event_time    
 14560 | i       | plsql_profiler_runs_pkey    
 33789 | i       | scheduler_0100_component_name_dsc_name_key    
 33804 | i       | scheduler_0200_program_pkey    
 33818 | i       | scheduler_0250_program_argument_pkey    
 33850 | i       | scheduler_0300_schedule_pkey    
 33865 | i       | scheduler_0400_job_pkey    
 33887 | i       | scheduler_0450_job_argument_pkey    
 15773 | i       | session_waits_hist_pk    
 15766 | i       | session_waits_pk    
 15751 | i       | snap_pk    
 15759 | i       | system_waits_pk    
  1220 | r       | callback_queue_table    
 33757 | r       | dbms_job_user    
 13966 | r       | dual    
 15767 | r       | edb$session_wait_history    
 15760 | r       | edb$session_waits    
 15745 | r       | edb$snap    
 15775 | r       | edb$stat_all_indexes    
 15780 | r       | edb$stat_all_tables    
 15785 | r       | edb$stat_database    
 15790 | r       | edb$statio_all_indexes    
 15795 | r       | edb$statio_all_tables    
 15753 | r       | edb$system_waits    
 13994 | r       | edb_dbms_redact_full_default_values    
 14546 | r       | plsql_profiler_rawdata    
 14554 | r       | plsql_profiler_runs    
 14562 | r       | plsql_profiler_units    
 13956 | r       | product_component_version    
 33783 | r       | scheduler_0100_component_name    
 33794 | r       | scheduler_0200_program    
 33809 | r       | scheduler_0250_program_argument    
 33827 | r       | scheduler_0300_schedule    
 33855 | r       | scheduler_0400_job    
 33880 | r       | scheduler_0450_job_argument    
 15532 | v       | _utl_file_dir    
 15009 | v       | all_all_tables    
 15093 | v       | all_cons_columns    
 14995 | v       | all_constraints    
 15176 | v       | all_db_links    
 15189 | v       | all_directories    
 15121 | v       | all_ind_columns    
 15107 | v       | all_indexes    
 33777 | v       | all_jobs    
 15198 | v       | all_objects    
 15271 | v       | all_part_key_columns    
 15226 | v       | all_part_tables    
 15212 | v       | all_policies    
 15299 | v       | all_queue_tables    
 15313 | v       | all_queues    
 33954 | v       | all_scheduler_job_args    
 33940 | v       | all_scheduler_jobs    
 33910 | v       | all_scheduler_program_args    
 33898 | v       | all_scheduler_programs    
 33922 | v       | all_scheduler_schedules    
 15163 | v       | all_sequences    
 15333 | v       | all_source    
 15285 | v       | all_subpart_key_columns    
 15065 | v       | all_synonyms    
 15051 | v       | all_tab_columns    
 15241 | v       | all_tab_partitions    
 15256 | v       | all_tab_subpartitions    
 14981 | v       | all_tables    
 15023 | v       | all_triggers    
 15135 | v       | all_types    
 14963 | v       | all_users    
 15037 | v       | all_view_columns    
 15079 | v       | all_views    
 15004 | v       | dba_all_tables    
 15088 | v       | dba_cons_columns    
 14990 | v       | dba_constraints    
 15172 | v       | dba_db_links    
 15185 | v       | dba_directories    
 15116 | v       | dba_ind_columns    
 15102 | v       | dba_indexes    
 33767 | v       | dba_jobs    
 15193 | v       | dba_objects    
 15266 | v       | dba_part_key_columns    
 15221 | v       | dba_part_tables    
 15207 | v       | dba_policies    
 14971 | v       | dba_profiles    
 15294 | v       | dba_queue_tables    
 15308 | v       | dba_queues    
 15148 | v       | dba_role_privs    
 15144 | v       | dba_roles    
 33950 | v       | dba_scheduler_job_args    
 33935 | v       | dba_scheduler_jobs    
 33906 | v       | dba_scheduler_program_args    
 33894 | v       | dba_scheduler_programs    
 33918 | v       | dba_scheduler_schedules    
 15158 | v       | dba_sequences    
 15328 | v       | dba_source    
 15280 | v       | dba_subpart_key_columns    
 15060 | v       | dba_synonyms    
 15046 | v       | dba_tab_columns    
 15236 | v       | dba_tab_partitions    
 15251 | v       | dba_tab_subpartitions    
 14976 | v       | dba_tables    
 15018 | v       | dba_triggers    
 15130 | v       | dba_types    
 14958 | v       | dba_users    
 15032 | v       | dba_view_columns    
 15074 | v       | dba_views    
 14476 | v       | dbms_aq_stat_databases    
 14485 | v       | dbms_aq_stat_messages    
 14471 | v       | dbms_aq_stat_queues    
 14480 | v       | dbms_aq_stat_waiters    
 14568 | v       | plsql_profiler_data    
 15014 | v       | user_all_tables    
 15098 | v       | user_cons_columns    
 15000 | v       | user_constraints    
 15181 | v       | user_db_links    
 15126 | v       | user_ind_columns    
 15112 | v       | user_indexes    
 33772 | v       | user_jobs    
 15203 | v       | user_objects    
 15276 | v       | user_part_key_columns    
 15231 | v       | user_part_tables    
 15217 | v       | user_policies    
 15304 | v       | user_queue_tables    
 15318 | v       | user_queues    
 15153 | v       | user_role_privs    
 33958 | v       | user_scheduler_job_args    
 33945 | v       | user_scheduler_jobs    
 33914 | v       | user_scheduler_program_args    
 33902 | v       | user_scheduler_programs    
 33926 | v       | user_scheduler_schedules    
 15168 | v       | user_sequences    
 15338 | v       | user_source    
 15290 | v       | user_subpart_key_columns    
 15070 | v       | user_synonyms    
 15056 | v       | user_tab_columns    
 15246 | v       | user_tab_partitions    
 15261 | v       | user_tab_subpartitions    
 14986 | v       | user_tables    
 15028 | v       | user_triggers    
 15140 | v       | user_types    
 14967 | v       | user_users    
 15042 | v       | user_view_columns    
 15084 | v       | user_views    
 13959 | v       | v$version    
(170 rows)    

4、支持哪些存储过程、函数编程语言

edbspl即pl/sql兼容性LANGUAGE。

postgres=# select * from pg_pltemplate ;    
  tmplname  | tmpltrusted | tmpldbacreate |      tmplhandler       |        tmplinline        |    tmplvalidator    |    tmpllibrary    | tmplacl     
------------+-------------+---------------+------------------------+--------------------------+---------------------+-------------------+---------    
 edbspl     | t           | t             | spl_call_handler       | spl_inline_handler       | spl_validator       | $libdir/edb-spl   |     
 plpgsql    | t           | t             | plpgsql_call_handler   | plpgsql_inline_handler   | plpgsql_validator   | $libdir/plpgsql   |     
 pltcl      | t           | t             | pltcl_call_handler     |                          |                     | $libdir/pltcl     |     
 pltclu     | f           | f             | pltclu_call_handler    |                          |                     | $libdir/pltcl     |     
 plperl     | t           | t             | plperl_call_handler    | plperl_inline_handler    | plperl_validator    | $libdir/plperl    |     
 plperlu    | f           | f             | plperlu_call_handler   | plperlu_inline_handler   | plperlu_validator   | $libdir/plperl    |     
 plpythonu  | f           | f             | plpython_call_handler  | plpython_inline_handler  | plpython_validator  | $libdir/plpython2 |     
 plpython2u | f           | f             | plpython2_call_handler | plpython2_inline_handler | plpython2_validator | $libdir/plpython2 |     
 plpython3u | f           | f             | plpython3_call_handler | plpython3_inline_handler | plpython3_validator | $libdir/plpython3 |     
(9 rows)    

5、支持哪些包

支持的包非常多

postgres=# select oid,nspname,obj_description(oid) from pg_namespace order by 2;    
  oid  |      nspname       |         obj_description              
-------+--------------------+----------------------------------    
 14380 | aq$_agent          |     
 14406 | aq$_descriptor     |     
 14403 | aq$_reg_info       |     
 14068 | dbms_alert         |     
 14407 | dbms_aq            |     
 14381 | dbms_aqadm         |     
 14750 | dbms_crypto        |     
 14085 | dbms_job           |     
 33756 | dbms_job_procedure | dbms_job what procedures    
 14102 | dbms_lob           |     
 14705 | dbms_lock          |     
 14791 | dbms_mview         |     
 14158 | dbms_output        |     
 14179 | dbms_pipe          |     
 14504 | dbms_profiler      |     
 14573 | dbms_random        |     
 14586 | dbms_redact        |     
 14213 | dbms_rls           |     
 14707 | dbms_scheduler     |     
 14806 | dbms_session       |     
 14228 | dbms_sql           |     
 14322 | dbms_utility       |     
 13663 | information_schema |     
 14405 | msg_prop_t         |     
 33583 | pgagent            | pgAgent system tables    
     9 | sys                | sys schema    
 15342 | utl_encode         |     
 15536 | utl_file           |     
 15367 | utl_http           |     
 15643 | utl_mail           |     
 15681 | utl_raw            |     
 15590 | utl_smtp           |     
 15572 | utl_tcp            |     
 15674 | utl_url            |     

6、包支持哪些方法(函数)

包内的方法丰富

postgres=# select proname from pg_proc where pronamespace=(select oid from pg_namespace where nspname='dbms_mview') order by 1;    
       proname            
----------------------    
 _get_mv_dependencies    
 _refresh    
 _refresh_all_mviews    
 _refresh_dependent    
 get_dependent_mvs    
 get_mv_dependencies    
 get_relid    
 refresh    
 refresh    
 refresh_all_mviews    
 refresh_dependent    
 refresh_dependent    
 validate_list    
 validate_method    
(14 rows)    
    
postgres=# select proname from pg_proc where pronamespace=(select oid from pg_namespace where nspname='dbms_output') order by 1;    
   proname        
--------------    
 cons    
 disable    
 enable    
 enable    
 get_line    
 get_lines    
 get_lines    
 new_line    
 put    
 put_line    
 serveroutput    
(11 rows)    
    
postgres=# select proname from pg_proc where pronamespace=(select oid from pg_namespace where nspname='dbms_random') order by 1;    
  proname       
------------    
 initialize    
 normal    
 random    
 seed    
 seed    
 string    
 terminate    
 value    
 value    
(9 rows)    

所有支持的方法如下

postgres=# select pronamespace::regnamespace,proname from pg_proc where pronamespace in (select oid from pg_namespace where nspname ~ '^dbms|^utl') order by 1,2;
  pronamespace  |                  proname                   
----------------+--------------------------------------------
 dbms_alert     | _signal
 dbms_alert     | register
 dbms_alert     | remove
 dbms_alert     | removeall
 dbms_alert     | set_defaults
 dbms_alert     | signal
 dbms_alert     | waitany
 dbms_alert     | waitone
 dbms_job       | _check_pgagent
 dbms_job       | _create_validate_interval_function
 dbms_job       | _create_what_procedure
 dbms_job       | _run_job
 dbms_job       | broken
 dbms_job       | change
 dbms_job       | interval
 dbms_job       | next_date
 dbms_job       | remove
 dbms_job       | run
 dbms_job       | submit
 dbms_job       | updatepgajob
 dbms_job       | validate_job
 dbms_job       | what
 dbms_lob       | append
 dbms_lob       | append
 dbms_lob       | arguments_bad
 dbms_lob       | bytesleft
 dbms_lob       | check_db_csid
 dbms_lob       | compare
 dbms_lob       | compare
 dbms_lob       | converttoblob
 dbms_lob       | converttoclob
 dbms_lob       | copy
 dbms_lob       | copy
 dbms_lob       | erase
 dbms_lob       | erase
 dbms_lob       | get_storage_limit
 dbms_lob       | get_storage_limit
 dbms_lob       | getlength
 dbms_lob       | getlength
 dbms_lob       | instr
 dbms_lob       | instr
 dbms_lob       | read
 dbms_lob       | read
 dbms_lob       | substr
 dbms_lob       | substr
 dbms_lob       | trim
 dbms_lob       | trim
 dbms_lob       | validate_arguments
 dbms_lob       | validate_length
 dbms_lob       | write
 dbms_lob       | write
 dbms_lob       | write_to_lob
 dbms_lob       | write_to_lob
 dbms_lob       | writeappend
 dbms_lob       | writeappend
 dbms_output    | cons
 dbms_output    | disable
 dbms_output    | enable
 dbms_output    | enable
 dbms_output    | get_line
 dbms_output    | get_lines
 dbms_output    | get_lines
 dbms_output    | new_line
 dbms_output    | put
 dbms_output    | put_line
 dbms_output    | serveroutput
 dbms_pipe      | create_pipe
 dbms_pipe      | next_item_type
 dbms_pipe      | pack_message
 dbms_pipe      | pack_message
 dbms_pipe      | pack_message
 dbms_pipe      | pack_message_raw
 dbms_pipe      | purge
 dbms_pipe      | receive_message
 dbms_pipe      | remove_pipe
 dbms_pipe      | reset_buffer
 dbms_pipe      | send_message
 dbms_pipe      | unique_session_name
 dbms_pipe      | unpack_message
 dbms_pipe      | unpack_message
 dbms_pipe      | unpack_message
 dbms_pipe      | unpack_message_raw
 dbms_rls       | add_policy
 dbms_rls       | drop_policy
 dbms_rls       | enable_policy
 dbms_sql       | bind_variable
 dbms_sql       | bind_variable
 dbms_sql       | bind_variable
 dbms_sql       | bind_variable
 dbms_sql       | bind_variable
 dbms_sql       | bind_variable
 dbms_sql       | bind_variable
 dbms_sql       | bind_variable
 dbms_sql       | bind_variable_char
 dbms_sql       | bind_variable_raw
 dbms_sql       | close_cursor
 dbms_sql       | column_value
 dbms_sql       | column_value
 dbms_sql       | column_value
 dbms_sql       | column_value
 dbms_sql       | column_value
 dbms_sql       | column_value
 dbms_sql       | column_value
 dbms_sql       | column_value
 dbms_sql       | column_value
 dbms_sql       | column_value
 dbms_sql       | column_value
 dbms_sql       | column_value
 dbms_sql       | column_value
 dbms_sql       | column_value
 dbms_sql       | column_value
 dbms_sql       | column_value
 dbms_sql       | column_value
 dbms_sql       | column_value
 dbms_sql       | column_value
 dbms_sql       | column_value
 dbms_sql       | column_value
 dbms_sql       | column_value
 dbms_sql       | column_value
 dbms_sql       | column_value
 dbms_sql       | column_value_char
 dbms_sql       | column_value_char
 dbms_sql       | column_value_char
 dbms_sql       | column_value_char
 dbms_sql       | column_value_raw
 dbms_sql       | column_value_raw
 dbms_sql       | column_value_raw
 dbms_sql       | column_value_raw
 dbms_sql       | define_column
 dbms_sql       | define_column
 dbms_sql       | define_column
 dbms_sql       | define_column
 dbms_sql       | define_column
 dbms_sql       | define_column
 dbms_sql       | define_column_char
 dbms_sql       | define_column_raw
 dbms_sql       | describe_columns
 dbms_sql       | execute
 dbms_sql       | execute_and_fetch
 dbms_sql       | fetch_rows
 dbms_sql       | is_open
 dbms_sql       | last_row_count
 dbms_sql       | open_cursor
 dbms_sql       | parse
 dbms_utility   | analyze_database
 dbms_utility   | analyze_part_object
 dbms_utility   | analyze_schema
 dbms_utility   | appendtostring
 dbms_utility   | canonicalize
 dbms_utility   | comma_to_table
 dbms_utility   | comma_to_table
 dbms_utility   | db_version
 dbms_utility   | exec_ddl_statement
 dbms_utility   | format_call_stack
 dbms_utility   | get_cpu_time
 dbms_utility   | get_dependency
 dbms_utility   | get_hash_value
 dbms_utility   | get_parameter_value
 dbms_utility   | get_time
 dbms_utility   | getdependency
 dbms_utility   | getoid
 dbms_utility   | gettoken
 dbms_utility   | name_tokenize
 dbms_utility   | showerror
 dbms_utility   | showerror
 dbms_utility   | table_to_comma
 dbms_utility   | table_to_comma
 dbms_aqadm     | _dbms_aqadm_validate_name
 dbms_aqadm     | alter_queue
 dbms_aqadm     | alter_queue_table
 dbms_aqadm     | create_queue
 dbms_aqadm     | create_queue_table
 dbms_aqadm     | drop_queue
 dbms_aqadm     | drop_queue_table
 dbms_aqadm     | purge_queue_table
 dbms_aqadm     | start_queue
 dbms_aqadm     | stop_queue
 dbms_aq        | _dbms_aq_build_dequeue_query
 dbms_aq        | _dbms_aq_callback_operation
 dbms_aq        | _dbms_aq_open_dequeue_cursor
 dbms_aq        | _enqueue
 dbms_aq        | dequeue
 dbms_aq        | enqueue
 dbms_aq        | get_qualified_object_name
 dbms_aq        | register
 dbms_aq        | unregister
 dbms_profiler  | _install
 dbms_profiler  | _reset
 dbms_profiler  | _write_runs
 dbms_profiler  | _write_units
 dbms_profiler  | cons
 dbms_profiler  | flush_data
 dbms_profiler  | flush_data
 dbms_profiler  | get_version
 dbms_profiler  | internal_version_check
 dbms_profiler  | pause_profiler
 dbms_profiler  | pause_profiler
 dbms_profiler  | resume_profiler
 dbms_profiler  | resume_profiler
 dbms_profiler  | start_profiler
 dbms_profiler  | start_profiler
 dbms_profiler  | start_profiler
 dbms_profiler  | start_profiler
 dbms_profiler  | stop_profiler
 dbms_profiler  | stop_profiler
 dbms_random    | initialize
 dbms_random    | normal
 dbms_random    | random
 dbms_random    | seed
 dbms_random    | seed
 dbms_random    | string
 dbms_random    | terminate
 dbms_random    | value
 dbms_random    | value
 dbms_redact    | _get_qualified_table_name
 dbms_redact    | _get_redact_func_call
 dbms_redact    | add_policy
 dbms_redact    | alter_policy
 dbms_redact    | disable_policy
 dbms_redact    | drop_policy
 dbms_redact    | enable_policy
 dbms_redact    | update_full_redaction_values
 dbms_lock      | sleep
 dbms_scheduler | _check_job_arg_has_value
 dbms_scheduler | _check_pgagent
 dbms_scheduler | _get_job_action_for_stored_procedure
 dbms_scheduler | _get_job_action_procedure
 dbms_scheduler | _scheduler_convert_int_array_to_bool_array
 dbms_scheduler | _scheduler_create_job
 dbms_scheduler | _scheduler_create_program
 dbms_scheduler | _scheduler_create_schedule
 dbms_scheduler | _scheduler_evaluate_calendar_string
 dbms_scheduler | _scheduler_execute_job_action_string
 dbms_scheduler | _scheduler_get_job_id
 dbms_scheduler | _scheduler_get_job_program_schedule_id
 dbms_scheduler | _scheduler_get_next_run_date
 dbms_scheduler | _scheduler_get_next_run_from_now
 dbms_scheduler | _scheduler_get_program_id
 dbms_scheduler | _scheduler_get_schedule_id
 dbms_scheduler | _scheduler_raise_invalid_parameter_value
 dbms_scheduler | _scheduler_raise_undefined_object
 dbms_scheduler | _scheduler_resolve_calender_string
 dbms_scheduler | _scheduler_run_job
 dbms_scheduler | create_job
 dbms_scheduler | create_job
 dbms_scheduler | create_program
 dbms_scheduler | create_schedule
 dbms_scheduler | define_program_argument
 dbms_scheduler | define_program_argument
 dbms_scheduler | disable
 dbms_scheduler | drop_job
 dbms_scheduler | drop_program
 dbms_scheduler | drop_program_argument
 dbms_scheduler | drop_program_argument
 dbms_scheduler | drop_schedule
 dbms_scheduler | enable
 dbms_scheduler | evaluate_calendar_string
 dbms_scheduler | run_job
 dbms_scheduler | set_job_argument_value
 dbms_scheduler | set_job_argument_value
 dbms_crypto    | convert_typ_to_pg
 dbms_crypto    | decrypt
 dbms_crypto    | decrypt
 dbms_crypto    | decrypt
 dbms_crypto    | encrypt
 dbms_crypto    | encrypt
 dbms_crypto    | encrypt
 dbms_crypto    | hash
 dbms_crypto    | hash
 dbms_crypto    | mac
 dbms_crypto    | mac
 dbms_crypto    | randombytes
 dbms_crypto    | randominteger
 dbms_crypto    | randomnumber
 dbms_mview     | _get_mv_dependencies
 dbms_mview     | _refresh
 dbms_mview     | _refresh_all_mviews
 dbms_mview     | _refresh_dependent
 dbms_mview     | get_dependent_mvs
 dbms_mview     | get_mv_dependencies
 dbms_mview     | get_relid
 dbms_mview     | refresh
 dbms_mview     | refresh
 dbms_mview     | refresh_all_mviews
 dbms_mview     | refresh_dependent
 dbms_mview     | refresh_dependent
 dbms_mview     | validate_list
 dbms_mview     | validate_method
 dbms_session   | set_role
 utl_encode     | base64_decode
 utl_encode     | base64_encode
 utl_encode     | base64_encode
 utl_encode     | get_losize
 utl_encode     | mimeheader_decode
 utl_encode     | mimeheader_encode
 utl_encode     | quoted_printable_decode
 utl_encode     | quoted_printable_encode
 utl_encode     | text_decode
 utl_encode     | text_encode
 utl_encode     | uudecode
 utl_encode     | uuencode
 utl_http       | begin_request
 utl_http       | end_request
 utl_http       | end_response
 utl_http       | get_body_charset
 utl_http       | get_body_charset
 utl_http       | get_follow_redirect
 utl_http       | get_header
 utl_http       | get_header_by_name
 utl_http       | get_header_count
 utl_http       | get_response
 utl_http       | get_response_error_check
 utl_http       | get_transfer_timeout
 utl_http       | read_line
 utl_http       | read_raw
 utl_http       | read_text
 utl_http       | request
 utl_http       | request_pieces
 utl_http       | set_body_charset
 utl_http       | set_body_charset
 utl_http       | set_body_charset
 utl_http       | set_follow_redirect
 utl_http       | set_follow_redirect
 utl_http       | set_header
 utl_http       | set_response_error_check
 utl_http       | set_transfer_timeout
 utl_http       | set_transfer_timeout
 utl_http       | write_line
 utl_http       | write_raw
 utl_http       | write_text
 utl_file       | fclose
 utl_file       | fclose_all
 utl_file       | fcopy
 utl_file       | fflush
 utl_file       | fopen
 utl_file       | fopen
 utl_file       | fremove
 utl_file       | frename
 utl_file       | get_line
 utl_file       | get_nextline
 utl_file       | is_open
 utl_file       | new_line
 utl_file       | new_line
 utl_file       | put
 utl_file       | put
 utl_file       | put
 utl_file       | put
 utl_file       | put
 utl_file       | put_line
 utl_file       | put_line
 utl_file       | put_line
 utl_file       | put_line
 utl_file       | putf
 utl_file       | putf
 utl_file       | putf
 utl_file       | putf
 utl_file       | putf
 utl_file       | putf
 utl_tcp        | close_all_connections
 utl_tcp        | close_connection
 utl_tcp        | cons
 utl_tcp        | open_connection
 utl_tcp        | prv_write_text
 utl_tcp        | read_line
 utl_tcp        | write_line
 utl_tcp        | write_raw
 utl_tcp        | write_text
 utl_smtp       | close_data
 utl_smtp       | close_data
 utl_smtp       | command
 utl_smtp       | command
 utl_smtp       | command_replies
 utl_smtp       | data
 utl_smtp       | data
 utl_smtp       | ehlo
 utl_smtp       | ehlo
 utl_smtp       | get_reply_record
 utl_smtp       | helo
 utl_smtp       | helo
 utl_smtp       | help
 utl_smtp       | imp_close_data
 utl_smtp       | imp_command
 utl_smtp       | imp_command_replies
 utl_smtp       | imp_data
 utl_smtp       | imp_ehlo
 utl_smtp       | imp_get_tcp_from_smtp
 utl_smtp       | imp_helo
 utl_smtp       | imp_mail
 utl_smtp       | imp_noop
 utl_smtp       | imp_open_connection
 utl_smtp       | imp_open_data
 utl_smtp       | imp_quit
 utl_smtp       | imp_rcpt
 utl_smtp       | imp_rset
 utl_smtp       | mail
 utl_smtp       | mail
 utl_smtp       | noop
 utl_smtp       | noop
 utl_smtp       | open_connection
 utl_smtp       | open_data
 utl_smtp       | open_data
 utl_smtp       | quit
 utl_smtp       | q

版权声明:如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件至:developerteam@list.alibaba-inc.com 进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
+ 订阅

分享数据库前沿,解构实战干货,推动数据库技术变革

其他文章