AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / user-68832

Kris Johnston's questions

Martin Hope
Kris Johnston
Asked: 2017-06-28 09:25:11 +0800 CST

v$ 或 rc 视图报告 RMAN 恢复数据库预览

  • 2

设置:

我们每周使用以下方式进行增量 0 级备份:

RMAN> backup as compressed backupset incremental level 0 database;
RMAN> backup check logical as compressed backupset (archivelog all delete all input);

我们每晚进行增量 1 级备份(除了在我们进行增量 0 级备份的那晚),使用:

RMAN> backup as compressed backupset incremental level 1 database;
RMAN> backup check logical as compressed backupset (archivelog all delete all input);

在 RMAN 中,我知道我可以报告恢复何时开始以及需要恢复哪个 SCN 以清除数据文件的模糊性,使用以下方法使数据库处于一致状态:

RMAN> restore database preview;

Media recovery start SCN is 49928711194
Recovery must be done beyond SCN 49928711196 to clear datafile fuzziness

这告诉我,如果我发出一个命令,restore database;我需要先将 SCN 的 49928711194 恢复为 49928711196,然后才能打开数据库。

从这里,我知道我可以查询哪些归档日志备份可用以及这些归档日志备份包含哪些 SCN 使用:

SELECT sequence#, first_change#, next_change#, id2, handle from (
  SELECT sequence#, first_change#, next_change#, id2
    FROM v$backup_archivelog_details where 49928711194 between first_change# and next_change#
UNION
  SELECT sequence#, first_change#, next_change#, id2
    FROM v$backup_archivelog_details where 49928711196 between first_change# and next_change#) archivelog
  JOIN v$backup_piece p
    ON archivelog.id2=p.set_count;

SEQUENCE#   FIRST_CHANGE#   NEXT_CHANGE#    ID2     HANDLE
22030       49923438913     49928711521     7940    L:\ORACLE\BACKUPS\ARCH_2_7940_1

我的问题是:有没有一种方法可以查询v$视图或rc视图以获得起始 SCN 和提供的超出 SCNRMAN> restore database preview;以清除给定备份集的数据文件模糊性?

oracle oracle-11g-r2
  • 1 个回答
  • 1153 Views
Martin Hope
Kris Johnston
Asked: 2016-03-17 06:06:14 +0800 CST

Oracle 中的异步批处理提交

  • 3

我们有一个 Oracle 数据库数据仓库,平均每秒提交 120 次(根据 AWR)。排在首位的等待活动是日志文件同步,这是意料之中的……目前,总体响应时间令人满意,但是,我们关注可扩展性,向前发展。

不幸的是,由于绝大多数这些事务的性质,通常的“更改您的应用程序以减少提交次数”的修复不是一个选项。

我们正在认真考虑通过以下方式将这些提交更改为异步批处理提交:COMMIT WRITE BATCH NOWAIT;

我们当然知道这会破坏 ACID 中的“D”,即在实例崩溃的情况下提交的事务可能会丢失。然而,上述大多数提交都记录了信息,如果我们因实例崩溃而在这里或那里丢失了一个事务,那么这些丢失事务的后果是非常小的。

我知道对于批量 nowait 提交,提交会缓冲在日志缓冲区中(如果需要,我们可以通过 log_buffer 初始化参数对其进行调整)。但是,我无法找到以下问题的答案:

1)批量提交是否跨越多个连接?换句话说,如果我们:

 open a connection
 do work 
 commit write batch nowait;
 close the connection
 open another connection
 do work
 commit write batch nowait;
 close the connection 
 rinse, repeat...

当连接关闭时,这两个提交是批处理的还是 Oracle 是否将每个连接的提交刷新到磁盘?

2)有没有办法找出批量提交写入磁盘并变得“持久”的频率?

3) 写入磁盘的批量提交是否序列化?换句话说:如果应用程序批量提交“A”工作,然后批量提交“B”工作,“A”工作总是在“B”工作之前写入磁盘,还是“B”工作有可能写入磁盘在“A”工作写入磁盘之前,实例崩溃,“A”工作丢失但“B”工作持久?

oracle oracle-11g-r2
  • 1 个回答
  • 1055 Views
Martin Hope
Kris Johnston
Asked: 2015-11-24 08:12:02 +0800 CST

测试逻辑备用数据库

  • 1

主数据库:11.2.0.3 Enterprise
备用数据库:12.1.0.2 Enterprise

我找到了几篇关于在物理备用数据库上进行更改的文章,但我一直难以找到如何在瞬态逻辑备用数据库上启用用户测试(然后闪回他们的更改并重新启用日志传输和 SQL Apply测试已经完成)。

根据我对逻辑备用数据库的了解,我编写了以下过程。然而,这是未经测试的,因为如果我搞砸了备用数据库,我不能简单地通过 RMAN 重新复制数据库,因为数据库版本不同。我基本上必须重新克隆主数据库,为 dataguard 重新配置备用数据库,升级备用数据库版本等等......基本上,如果可能的话,我宁愿避免很多工作......

如果有这方面经验的人可以查看我的以下程序并让我知道我是否忘记了什么,或者我应该注意或注意哪些潜在问题/注意事项,我将不胜感激:

*注意:主 => 备用日志传输在 log_archive_dest_3 中指定

PRIMARY
alter system set log_archive_dest_state_3=defer scope=both;

STANDBY
alter database stop logical standby apply;
alter database guard none;
alter database flashback on;
create restore point before_testing guarantee flashback database;

*AFTER TESTING IS DONE*

STANDBY
flashback database to restore point 'before_testing';
drop restore point before_testing;
alter database flashback off;
alter database guard all;
alter database start logical standby apply immediate;

PRIMARY
alter system set log_archive_dest_state_3=enable scope=both;
oracle oracle-11g-r2
  • 2 个回答
  • 589 Views
Martin Hope
Kris Johnston
Asked: 2015-11-06 08:08:54 +0800 CST

函数中 dbms_metadata.get_ddl 所需的权限

  • 1

Oracle 企业版 11.2.0.3

我收到:

ORA-31603: object "string of type "string" not found in schema "string"

执行调用 dbms_metadata.get_ddl 的函数时。

我知道程序/函数必须明确授予权限而不是通过角色授予:https ://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:1065832643319

我也知道执行 dbms_metadata.get_ddl 所需的权限在 SELECT_CATALOG_ROLE 角色中:https ://sshailesh.wordpress.com/2010/05/08/dbms_metadata-get_ddl-avoid-ora-31603-error-by-using-选择目录角色/

但是,SELECT_CATALOG_ROLE 角色包含超过 2400 个权限。那么,执行 dbms_metadata.get_ddl 所需的显式权限是什么,以便我可以从函数中调用它?

测试用例:

create or replace function getddl (p_type varchar2, p_object varchar2, p_owner varchar2)
return varchar2 as
begin
  return dbms_metadata.get_ddl(p_type, p_object, p_owner);
end getddl;

create table utilities.mytable (mycol varchar2(1));

select dbms_metadata.get_ddl('TABLE', 'MYTABLE', 'UTILITIES') from dual;
<DDL>

select getddl('TABLE', 'MYTABLE', 'UTILITIES') from dual;
ORA-31603: object "MYTABLE" of type TABLE not found in schema "UTILITIES"

编辑

到目前为止,我已明确授予拥有 getddl() 的用户以下内容:

select any table
select any dictionary
oracle oracle-11g-r2
  • 2 个回答
  • 3475 Views
Martin Hope
Kris Johnston
Asked: 2015-10-15 12:06:58 +0800 CST

使用 dbms_datapump 导入所有数据库链接

  • 1

源数据库版本:11.2.0.3
目标数据库版本:12.1.0.2

我正在尝试使用 dbms_datapump 将所有数据库链接从一个数据库导入到另一个数据库。代码在上述目标数据库上运行,并通过数据库链接从上述源数据库中提取数据库链接。

我过去使用 dbms_datapump.metadata_filter 只导入某些对象(如函数或过程)。但是,以下返回 ORA-39001:参数值无效:

dbms_datapump.metadata_filter(h1,'INCLUDE_PATH_EXPR','IN (''DATABASE LINK'')');

因此,我尝试了也返回 ORA-39001 的复数版本:

dbms_datapump.metadata_filter(h1,'INCLUDE_PATH_EXPR','IN (''DATABASE LINKS'')');

我知道我必须在这里遗漏一些基本的东西,但是在这个问题上搜索一直很烦人,因为在同一搜索中使用“dbms_datapump”和“数据库链接”的搜索结果只返回了如何通过数据库链接导入的结果,而不是如何直接导入数据库链接。

我曾经能够直接使用以下方法导入数据库链接:

select DBMS_LOB.SUBSTR@dblinkimp(DBMS_METADATA.GET_DDL@dblinkimp
('DB_LINK', '[DBlinkName]', '[SchemaName]')) from dual@dblinkimp;

然后,我将使用 execute immediate 运行上述语句的输出,但这不再是从 11.2.0.4 开始的有效选项(参见 Metalink Doc ID 1905221.1)。

oracle database-link
  • 1 个回答
  • 6390 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目

    • 12 个回答
  • Marko Smith

    如何让sqlplus的输出出现在一行中?

    • 3 个回答
  • Marko Smith

    选择具有最大日期或最晚日期的日期

    • 3 个回答
  • Marko Smith

    如何列出 PostgreSQL 中的所有模式?

    • 4 个回答
  • Marko Smith

    列出指定表的所有列

    • 5 个回答
  • Marko Smith

    如何在不修改我自己的 tnsnames.ora 的情况下使用 sqlplus 连接到位于另一台主机上的 Oracle 数据库

    • 4 个回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Martin Hope
    Jin 连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane 如何列出 PostgreSQL 中的所有模式? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh 为什么事务日志不断增长或空间不足? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland 列出指定表的所有列 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney MySQL 能否合理地对数十亿行执行查询? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx 如何监控大型 .sql 文件的导入进度? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve