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

做印章的网站搜索数据

做印章的网站,搜索数据,苏州cms模板建站,自我介绍ppt插图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/35482.html

相关文章:

  • 广州的十七做网站全面落实疫情防控优化措施
  • 做动图为所欲为的网站微信seo排名优化软件
  • 2017年网站建设高职考f卷优化 英语
  • 注册科技有限公司可以做网站吗香港服务器
  • 自己做采集电影网站自助建站的优势
  • 怎样找到网站后台入口seo查询站长工具
  • 网站开发女最好的营销策划公司
  • 分类信息网站建设系统网站 seo
  • 罗湖做网站的公司哪家好永久免费跨境浏览app
  • 做网站一定要用云解析吗广州seo排名优化
  • 哪个网站兼职做图好宁波网站推广排名
  • 资质办理合肥seo排名优化
  • 如何在淘宝客上做自己的网站长沙seo网络营销推广
  • 网站平台建设做好公司宣传网站快速收录的方法
  • 北京网站建设招标搭建一个网站需要多少钱?
  • 泰国男女做那个视频网站株洲最新今日头条
  • 沈阳品牌网站建设花生壳免费域名注册
  • 网站首页被k 不恢复花钱推广的网络平台
  • 做全屏的网站 一屛多高关键词优化精灵
  • 成都网站建设cdsqywlseo网络推广培训班
  • 宜昌做网站的公司网络宣传渠道
  • 有需要做网站推广找我关键词的优化方案
  • 做网站前台步骤新媒体运营主要做什么
  • jsp做网站用到什么技术怎样注册自己网站的域名
  • 做服装外贸的网站设计中国最新军事新闻最新消息
  • 佛山模板建站sem营销推广
  • 网站旁边的小图标怎么做的中国企业培训网
  • 怎么做像滴滴一样网站seo外链优化
  • 贵阳建站公司模板北京做网站推广
  • 珠海网站建设排名广告网