我有一个Oracle数据库,为不同的客户提供了几个公共dblink。所有客户的所有链接数据库都是相同的。另外,我只在主机上有一个模式,在那里我用一些数据检索逻辑存储DB视图。目前,如果我想从不同的客户检索相同的数据,我必须为每个客户端分别创建几乎相同的视图:
CREATE VIEW my_view_for_cliet1 AS
SELECT *
FROM table1@dblink1;
CREATE VIEW my_view_for_cliet2 AS
SELECT *
FROM table1@dblink2
是否可以为会话(或类似的内容)设置默认dblink,并且只有一个没有显式dbl
select /* all_rows */x1,x2,x3
from view_x
where x1 in
(select a.b1 from mytable a,mytable2 b
where a.b2=b.c2)
因为view_x是一个视图,它试图从另一个源(@othertable_dblink获取数据)
我有b1的索引。但是,由于view_x是一个视图,所以我无权在此创建索引。
注意:由于这个原因,mytable和mytable2出现了“表访问满”之类的错误。
我的问题:如何通过不允许它进入“表访问满”来减少时间?
如果有任何查询调优技术,请告诉我。
每隔一段时间,当我执行以下语句时:
alter session set skip_unusable_indexes=true;
我得到了以下错误:
ORA-03135: connection lost contact
ORA-02063: preceding line from my_dblink
跳过索引与dblink有什么关系?
如何检测出有问题的索引?
如何将上述语句的范围仅限于本地索引?
我有两个dbs,让我们称它们为写b和readdb。Readdb有一个用于写b的dblink,还有一个指向该dblink上的表的视图。
我对该表进行了更新,该表的视图指向dblink,然后从该表读取。即使我将隔离级别设置为SERIALIZABLE,在事务提交之后,我似乎也会看到几秒钟的旧值。
这说得通吗?
B.书面形式:
create table mk.dblink_test (
id varchar2(16),
status varchar2(16));
insert into mk.dblink_test
SELECT rownum, 'ACTIVE'
FROM du
我关心的是,我有一个远程视图abc@DBLINK和一个本地表xyz。我需要映射一个远程视图和一个本地表,并从abc@DBLINK视图中获取少量数据,然后插入到其他一些本地表中,比如pst。即
INSERT INTO pst
SELECT remote.col1, remote.col2, remote.col3, remote.col4
FROM
abc@dblink remote,
xyz local
WHERE remote.col1=local.col1
AND remote.col2=local.col2;
有人能给我一些建议吗?我怎样才能更快地完成这项任务?请
我的查询是这样的-
INSERT INTO localdb_image select * from
dblink('host=10.1.1.1
user=user
password=password
dbname=oat', 'SELECT e.* FROM image e JOIN archived f ON e.image_id=f.image_id AND e.dd=f.dd') tt(
id int ,
drive_id character varying(255) ,
) ;
我希望能够再次运行此查询,但请检查行是否已经存在,
我们使用在Oracle上运行的基于web的服务。他们严格要求只允许选择ODBC访问。我们所做的一些报告不能很好地说明公司提供的视图,因此我们使用Oracle11g的express版设置了一个db_link,并使用刷新将一些更重要的查询重写为物化视图:指定设置以每小时重新运行查询,这对于我们的目的来说已经足够了。到目前为止一切都很好。
我注意到一些MVs会停止刷新,其背后没有真正的模式。进一步调查,它看起来有时外部数据库(我们通过db_link连接的数据库)不会不时地完成查询,刷新过程耐心地等待事件'SQL*Net more data from dblink‘。
下面是我运行的查询,以获
我知道我可以通过执行
select view_name, text from user_views where view_name like '%VIEW_NAME%';
如何调整该命令以使用DBLINK?我正在尝试以下操作,但它在ORA-00942中失败,表或视图不存在。
select view_name, text from user_name.user_views@dblink where view_name like '%VIEW_NAME%';
如何通过DB链接为视图选择视图定义?
在使用dblink访问远程数据库对象时,我们遇到了一些关于执行计划的问题。下面是在远程数据库上运行的查询本身: select --+ index_desc (d DAY_OPERATIONAL_PK)
d.oper_day
from day_operational d
where rownum = 1 此查询的计划如下: Plan Hash Value : 2761870770
---------------------------------------------------------------------------------------------
| Id
我已经成功地创建了dblink,以便从Oracle 12访问SQL Server 2000。我正在使用Oracle PL/SQL访问它。执行
select * from table1@dblink where id=1
即时生成输出到pl/sql窗口。但是,如果我先创建视图,然后执行select语句,结果会明显变慢。
"create view view1 as select * from table1@dblink;"
"select * from view1 where id=1"
据我所知,它只是从同一个表中选择,而我创建视图只是为了简化名称。
谢谢。
我正在使用dblink对远程数据库进行一些数据操作(插入、更新或删除)。具体来说,我使用视图和视图的规则来进行插入、更新或删除。例如:
-- SQL
-- Note: get_remote_db() is a function returning the connection string
CREATE VIEW remote_table AS
SELECT * FROM dblink(get_remote_db(), 'SELECT id, name FROM example_table')
AS rec(id NUMERIC, name VARCHAR);
CREATE
我们有两个关于AWS RDS、OMS和SFMS的数据库,每个数据库都有自己的read副本。我们使用dblink从表A中提取数据。它很好地工作在我的SFMS实例和主角色上,但是在我们的读副本DB上得到了一个ERROR: could not establish connection。
下面是如何设置dblink:
SELECT * FROM dblink( 'dbname=<DB End Point> user=<username> password=<password>', 'SELECT id, <
我有两个来自不同数据库的表,db1.name和db2.names_rep。名称不断地获得新数据,我需要它在db2.names_rep中反映出来。
我在db1中为db2创建了一个名为dblink_db1的dblink。
CREATE DATABASE LINK dblink_db1
CONNECT TO user IDENTIFIED BY pass
USING '(DESCRIPTION=
(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521))
(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_
我用一个ListView和一个SimpleCursorAdapter和一个ViewBinder来为它设置视图,我想在ViewBinder中放置一个ImageButton,但是不知道如何设置onClick事件。我是应该创建一个MySimpleCursorAdapter并将其放在那里,还是应该在ViewBinder类中编写它?
这是我的代码:
ViewBinder.java
public class ChannelViewBinder implements SimpleCursorAdapter.ViewBinder {
public boolean setViewValue(Vi
我有一个PostgreSQL的AWS实例,在这个实例中,我需要在使用dblink_connect(text)和dblink_exec(text)登录到postgres角色(我创建的角色)的函数中执行一个postgres语句。
CREATE OR REPLACE FUNCTION application.create_tenant_schemas(first integer, last integer) RETURNS void AS
DECLARE
tenant VARCHAR;
sql VARCHAR;
BEGIN
FOR index IN first..last LOOP
我正在尝试在PostgreSQL9.6中设置一个触发器,当一行插入到它自己的表中时,它将使用dblink将行插入到另一个数据库中。由于可能有大量这样的插入,我不想在每次插入时都连接和断开与数据库的连接,所以我更喜欢每个插入都使用的持久连接。但我认为我必须测试连接是否可用,因为有许多事情可能会导致连接中断。
我的伪代码如下:
-- 1. test if named dblink connection already exists
-- 2. if it does not, create a named dblink connection
-- 3. insert data via dblin
我设置了以下触发器和触发器函数,以便每次更新本地表A时都刷新远程服务器上的物化视图。反过来,MV是从本地表A的外部表创建的。触发器运行后,物化视图将被更新,但是,只有在更新发生之前才会更新到状态。我不知道为什么会这样。或者触发器函数在执行更新之前运行,但这应该是触发器的“后”部分的目的,对吗?或者MV刷新是快速(?),但是添加pg_sleep不会改变结果。
CREATE OR REPLACE FUNCTION public.refresh_remote_mv()
RETURNS TRIGGER AS
$func$
BEGIN
PERFORM dblink_connect('remote
我正在运行一个已提取DDL以确定该作业挂起的原因的impdp作业。它始终停留在使用dblink创建的第一个对象上。按照Oracle的建议,我正在以系统的形式运行impdp作业。作业必须在同一个数据库上的两个单独的、不同的实例上运行,对每个实例使用唯一的转储文件。在这两种情况下,impdp作业都只从转储文件中导入一个架构,即相同的架构名称。这两个扣押作业在dblink上是相互依存的。当作业无限期地等待任何一个impdp实例作业时,它都无法从指定的dblink中检索数据,这是SQL上运行的DDL提取程序确认的。在每个数据库实例中都成功地创建了链接,SELECT * FROM DUAL@DB_LIN
我有一个用来设置变量的shell文件。它看起来像这样。
CREATE OR REPLACE procedure MIG.dblink(schema1 in varchar, link1 in varchar, count1 out number)
IS
BEGIN
SELECT COUNT(1) INTO COUNT1 FROM schema1.table@link1 where trunc(csactivated) > trunc(sysdate-1);
END;
/
现在我从一个shell文件中调用它,如下所示。
source dataenv.sh #sets up the f