从Oracle迁移至PostgreSQL:获取会话ID的等效语句查询
Oracle转PostgreSQL:SID查询等效语句
Oracle中select SYS_CONTEXT('USERENV','SID') from dual;的作用是获取当前会话的SID,PostgreSQL中没有完全对应的函数,但可以通过以下方式实现类似功能:
获取当前会话的后端进程ID(最常用):
适用于PostgreSQL 9.6及以上版本,这个值是当前连接对应的服务器进程ID,可作为会话的唯一标识,和Oracle SID的作用类似:SELECT pg_backend_pid();获取会话ID(更贴近Oracle SID的概念):
通过查询pg_stat_activity视图获取官方定义的会话ID,PostgreSQL 10及以上版本使用session_id字段,旧版本可替换为procpid:SELECT session_id FROM pg_stat_activity WHERE pid = pg_backend_pid();
需要注意的是,PostgreSQL的会话标识体系和Oracle存在差异,没有完全和Oracle SID一一对应的概念,上述两种方式是实际迁移中常用的替代方案。
内容的提问来源于stack exchange,提问作者MAK
相关产品推荐
相关产品推荐

