当前位置: 首页 > wzjs >正文

荣成做网站的公司加快实施创新驱动发展战略

荣成做网站的公司,加快实施创新驱动发展战略,开发公司二级资质人员要求,做网站需要学什么语言PostgreSQL oracle_fdw 扩展解析 oracle_fdw 是 PostgreSQL 的一个外部数据包装器(Foreign Data Wrapper)扩展,允许 PostgreSQL 直接连接和操作 Oracle 数据库。以下是全面详细的使用指南: 一、安装与配置 1. 前置要求 Oracle 客户端库:必…

PostgreSQL oracle_fdw 扩展解析

oracle_fdw 是 PostgreSQL 的一个外部数据包装器(Foreign Data Wrapper)扩展,允许 PostgreSQL 直接连接和操作 Oracle 数据库。以下是全面详细的使用指南:

一、安装与配置

1. 前置要求

  • Oracle 客户端库:必须安装对应版本的 Oracle Instant Client 或完整客户端

    # Ubuntu 示例
    wget https://download.oracle.com/otn_software/linux/instantclient/216000/oracle-instantclient-basiclite-21.6.0.0.0-1.x86_64.rpm
    sudo rpm -ivh oracle-instantclient-*.rpm
    export LD_LIBRARY_PATH=/usr/lib/oracle/21/client64/lib:$LD_LIBRARY_PATH
    
  • PostgreSQL 开发包

    sudo apt-get install postgresql-server-dev-15
    

2. 编译安装

git clone https://github.com/laurenz/oracle_fdw.git
cd oracle_fdw
make
sudo make install# 验证安装
pg_config --sharedir | xargs -I {} find {}/extension -name "oracle_fdw*"

3. 数据库配置

-- 加载扩展
CREATE EXTENSION oracle_fdw;-- 查看可用版本
SELECT oracle_diag();

二、基本使用

1. 创建服务器连接

-- 基本连接
CREATE SERVER oradb FOREIGN DATA WRAPPER oracle_fdw 
OPTIONS (dbserver '//oracle.host:1521/ORCL');-- 高级连接选项
CREATE SERVER oradb_advanced FOREIGN DATA WRAPPER oracle_fdw
OPTIONS (dbserver '(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=oracle.host)(PORT=1521))(CONNECT_DATA=(SID=ORCL)))',nchar 'true',isolation_level 'read_committed'
);

2. 用户映射

-- 基本映射
CREATE USER MAPPING FOR postgres SERVER oradb
OPTIONS (user 'oracle_user', password 'oracle123');-- 代理用户
CREATE USER MAPPING FOR pg_app_user SERVER oradb
OPTIONS (user 'oracle_app', password 'app123', proxy_user 'oracle_proxy');

3. 创建外部表

-- 简单映射
CREATE FOREIGN TABLE ora_employees (emp_id integer OPTIONS (key 'true'),emp_name varchar(100),hire_date timestamp,salary numeric(10,2)
) SERVER oradb OPTIONS (schema 'HR', table 'EMPLOYEES');-- 选择性列映射
CREATE FOREIGN TABLE ora_dept (dept_id integer,dept_name varchar(50)
) SERVER oradb OPTIONS (schema 'HR', table 'DEPARTMENTS',only_cols 'dept_id, dept_name'
);-- 表分区映射
CREATE FOREIGN TABLE ora_sales_part (sale_id integer,sale_date date,amount numeric
) SERVER oradb OPTIONS (schema 'SH',table 'SALES',partition 'SALES_Q1_2023'
);

三、高级功能

1. 查询下推优化

-- WHERE 条件下推
EXPLAIN VERBOSE 
SELECT * FROM ora_employees 
WHERE emp_id = 100 AND salary > 5000;
-- 查看是否出现"Remote SQL"包含条件-- 连接下推
CREATE FOREIGN TABLE ora_departments (...) SERVER oradb...;EXPLAIN 
SELECT e.emp_name, d.dept_name 
FROM ora_employees e JOIN ora_departments d ON e.dept_id = d.dept_id;

2. 批量操作

-- 批量插入
INSERT INTO ora_employees
SELECT generate_series(1,1000), 'Employee-'||x, now() - (x||' days')::interval,5000 + random()*10000
FROM generate_series(1,1000) x;-- 批量更新(使用CTE)
WITH updates AS (SELECT emp_id, salary * 1.1 AS new_salaryFROM ora_employeesWHERE hire_date < '2020-01-01'
)
UPDATE ora_employees e
SET salary = u.new_salary
FROM updates u
WHERE e.emp_id = u.emp_id;

3. 事务管理

BEGIN;
-- Oracle和PostgreSQL在同一个事务中
INSERT INTO ora_employees VALUES (1001, 'New Hire', now(), 8000);
INSERT INTO local_audit VALUES ('Added employee 1001', current_user, now());
COMMIT; -- 两边的插入要么都成功,要么都失败

四、性能优化

1. 连接池配置

-- 会话级设置
ALTER SERVER oradb OPTIONS (ADD connections '5');-- 全局设置(需在postgresql.conf中)
oracle_fdw.max_connections_per_server = 10
oracle_fdw.idle_connection_timeout = '10min'

2. 批量获取设置

-- 调整每次获取的行数
ALTER FOREIGN TABLE ora_employees OPTIONS (ADD fetch_size '10000');-- 服务器级设置
ALTER SERVER oradb OPTIONS (ADD prefetch '2000');

3. 并行查询

-- 启用并行扫描
ALTER FOREIGN TABLE ora_employees OPTIONS (ADD parallel '4');-- 解释计划查看并行度
EXPLAIN (ANALYZE, VERBOSE)
SELECT count(*) FROM ora_employees;

五、监控与维护

1. 诊断函数

-- 检查Oracle连接状态
SELECT oracle_diag();-- 查看外部表统计信息
SELECT * FROM oracle_fdw_relation_stats('ora_employees');-- 获取Oracle会话信息
SELECT * FROM oracle_fdw_get_sessions();

2. 性能监控

-- 查询执行时间统计
SELECT * FROM oracle_fdw_get_queries()
ORDER BY elapsed_time DESC
LIMIT 10;-- 资源使用情况
SELECT * FROM oracle_fdw_get_memory();

3. 维护操作

-- 刷新表元数据(当Oracle表结构变更后)
SELECT oracle_fdw_refresh_table('ora_employees');-- 断开所有Oracle连接
SELECT oracle_fdw_disconnect_all();

六、安全配置

1. 加密连接

-- 启用SSL
ALTER SERVER oradb OPTIONS (ADD ssl 'true',ADD ssl_cert '/path/to/client.crt',ADD ssl_key '/path/to/client.key'
);

2. 细粒度权限

-- 创建专用角色
CREATE ROLE fdw_user;
GRANT USAGE ON FOREIGN SERVER oradb TO fdw_user;-- 视图封装
CREATE VIEW safe_employees AS
SELECT emp_id, emp_name FROM ora_employees
WHERE dept_id = current_setting('app.current_dept')::int;-- 行级安全
ALTER TABLE ora_employees ENABLE ROW LEVEL SECURITY;
CREATE POLICY emp_policy ON ora_employeesUSING (dept_id = current_setting('app.current_dept')::int);

七、典型问题解决

1. 字符集问题

-- 指定字符集转换
ALTER FOREIGN TABLE ora_employees OPTIONS (ADD nls_lang 'AMERICAN_AMERICA.AL32UTF8',ADD ncharset 'AL32UTF8'
);

2. 日期时区处理

-- 显式时区转换
CREATE FOREIGN TABLE ora_events (event_id integer,event_time timestamp OPTIONS (timezone 'UTC')
) SERVER oradb OPTIONS (table 'EVENTS');-- 查询时转换
SELECT event_id, event_time AT TIME ZONE 'Asia/Shanghai' AS local_time
FROM ora_events;

3. 大对象处理

-- CLOB处理
CREATE FOREIGN TABLE ora_docs (doc_id integer,content text OPTIONS (lob 'true')
) SERVER oradb OPTIONS (table 'DOCUMENTS');-- 分块获取大对象
ALTER FOREIGN TABLE ora_docs OPTIONS (ADD lob_chunk_size '8192');

八、最佳实践

  1. 连接管理

    -- 使用连接池
    ALTER SERVER oradb OPTIONS (SET max_connections '5');-- 自动回收连接
    ALTER SYSTEM SET oracle_fdw.idle_connection_timeout = '30min';
    
  2. 查询优化

    -- 只查询必要列
    CREATE FOREIGN TABLE emp_names AS
    SELECT emp_id, emp_name FROM ora_employees;-- 使用物化视图缓存
    CREATE MATERIALIZED VIEW mv_emp_dept AS
    
http://www.dtcms.com/wzjs/191918.html

相关文章:

  • 定制网站建设服务公司黄页推广引流网站
  • 做网站包含的技术谷歌seo和百度seo区别
  • 空中花园做网站的公司手机优化大师哪个好
  • 建网站系统平台安卓手机优化神器
  • 长沙浏阳市疫情最新数据消息香港seo公司
  • 石狮建设局网站网络策划营销
  • wordpress站添加根部单页打不开广告设计公司
  • 免费做网页的网站线下引流的八种推广方式
  • 两个wordpress互通seo网站推广批发
  • 做便宜网站网页设计制作网站教程
  • 网站建设费用申请首页关键词排名代发
  • 企业网站开发上海韵茵seo关键词优化排名
  • 怎么做信息发布型网站软件开发公司排行榜
  • ps彩屏做的好的网站网站推广的方式和方法
  • 网站建设都有什么功能重庆seo服务
  • 能够做一镜到底的网站石家庄百度快速排名优化
  • 高端网站建设磐石网络好营销策划书案例
  • nodejs 网站开发模块网络优化是做什么的
  • 有哪些可以做翻译的网站免费网站安全检测
  • mac 做网站开发软文街官网
  • 甘肃省省建设厅网站沧州网站seo公司
  • 电子商务公司网站怎么建网络运营怎么学
  • 百度网站降权永久开源的免费建站系统
  • 给别人做软件的网站优化设计三年级上册答案语文
  • seo推广顾问大丰seo排名
  • 对招聘公司做评价的网站搜狗收录
  • 北京活动网站制作深圳seo优化排名公司
  • 做购物网站的开题报告流量精灵官网
  • seo整站优化方法关键词你们懂的
  • 如何免费创建企业网站谷歌下载安装