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

本文涉及的产品
云原生数据库 PolarDB MySQL 版,Serverless 5000PCU 100GB
简介: 标签 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
相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
相关文章
|
13天前
|
SQL Oracle 关系型数据库
【Oracle】玩转Oracle数据库(一):装上去,飞起来!
【Oracle】玩转Oracle数据库(一):装上去,飞起来!
55 7
|
30天前
|
Oracle 关系型数据库 数据库
Oracle数据库基本概念理解(3)
Oracle数据库基本概念理解(3)
18 2
|
13天前
|
SQL Oracle 关系型数据库
【Oracle】玩转Oracle数据库(七):RMAN恢复管理器
【Oracle】玩转Oracle数据库(七):RMAN恢复管理器
40 5
|
30天前
|
Oracle 关系型数据库 数据库
Oracle数据库基本概念理解(2)
Oracle数据库基本概念理解(2)
13 1
|
5天前
|
存储 Oracle 关系型数据库
Oracle的模式与模式对象:数据库的“城市规划师”
【4月更文挑战第19天】在Oracle数据库中,模式是用户对象的集合,相当于数据库的城市规划,包含表、视图、索引等模式对象。模式对象是数据存储结构,如表用于存储数据,视图提供不同查看角度,索引加速数据定位。良好的模式与模式对象设计关乎数据效率、安全和稳定性。规划时需考虑业务需求、性能、安全和可扩展性,以构建高效数据库环境,支持企业业务发展。
|
13天前
|
存储 SQL Oracle
【Oracle】玩转Oracle数据库(二):体系结构、存储结构与各类参数
【Oracle】玩转Oracle数据库(二):体系结构、存储结构与各类参数
35 7
|
30天前
|
Oracle 关系型数据库 数据库
Oracle数据库基本概念理解(1)
Oracle数据库基本概念理解(1)
13 1
|
1月前
|
Oracle 关系型数据库 数据库
|
2月前
|
开发框架 Oracle 关系型数据库
ASP.NET实验室LIS系统源码 Oracle数据库
LIS是HIS的一个组成部分,通过与HIS的无缝连接可以共享HIS中的信息资源,使检验科能与门诊部、住院部、财务科和临床科室等全院各部门之间协同工作。 
37 4
|
1月前
|
关系型数据库 分布式数据库 数据库
PolarDB PostgreSQL版:Oracle兼容的高性能数据库
PolarDB PostgreSQL版是一款高性能的数据库,具有与Oracle兼容的特性。它采用了分布式架构,可以轻松处理大量的数据,同时还支持多种数据类型和函数,具有高可用性和可扩展性。它还提供了丰富的管理工具和性能优化功能,为企业提供了可靠的数据存储和处理解决方案。PolarDB PostgreSQL版在数据库领域具有很高的竞争力,可以满足各种企业的需求。

推荐镜像

更多