Oracle Database 12c Release 2(12.2)包括对数据类型转换函数的许多增强,从而更容易处理转换错误。
前两天,需要将远程一个测试库用expdp导出的数据dump导入到本地的一个测试环境中,其中碰到了一些问题,值得小结下。
有的时候由于备库空间不足,在主库添加了数据文件后,导致备库数据文件的缺失,可能很久之后才发现,但是由于归档的缺失等其它原因而导致备库不能正常应用Redo日志。还有其它情况可能导致备库的数据文件不能正常ONLINE,在这种情况下,可以在主库上利用CONVERT命令备份一个数据文件然后拷贝到备库即可。若是备库归档文件比较全,则可以直接在备库创建数据文件后应用Redo日志即可,而不需要从主库拷贝数据文件。
导读:本文来自『墨天轮』专栏“循序渐进Oralcle”(https://www.modb.pro/topic/6289,复制到浏览器中打开或者点击“阅读原文”),介绍《循序渐进Oracle》第三章的3.1-3.4节:字符集的基本知识、数据库的字符集、字符集文件及字符支持、NLS_LANG的设置与影响、导入导出及字符转换。
前天写了篇文章《表中已存重复数据的情况,如何增加唯一性约束?》,提到了存在唯一约束前提下,重复数据的问题。
像我们熟悉的 vue-cli,create-react-app 等脚手架,只需要输入简单的命令 vue init webpack project,即可快速帮我们生成一个初始项目。在实际工作中,我们可以定制一个属于自己的脚手架,来提高自己的工作效率。
一般情况,我们发出一个大型数据库操作,比如创建大表索引,如果表空间不足,数据库最终会终止操作。 而可恢复的空间分配功能可以使得这类操作挂起,等待DBA去处理,等成功处理之后大型数据库操作自动恢复,这样就避免了这类棘手问题,节省了时间。
像我们熟悉的 vue-cli,react-native-cli 等脚手架,只需要输入简单的命令 vue init webpack project,即可快速帮我们生成一个初始项目。在实际工作中,我们可以定制一个属于自己的脚手架,来提高自己的工作效率。
本文代码主要参考了字节开源库arco-cli的部分代码,代码是字节架构组的同学写的,学习一下大佬的代码。
[oracle@ccdevsvr admin]$ exp wmap/pass@jackeydb
IMPDP时部分日志显示这个警告 ORA-02374: conversion error loading table "MEMXXX"."T_MEMBER_XXXX" ORA-12899: value too large for column SUBJECT (actual: 148, maximum: 100) ORA-02372: data for row: SUBJECT : 0X'B2E2CAD4C9CCC6B7B2E2CAD4C9CCC6B7B2E233CAD4C9CCC6B7' 解释 zhsgbk16 和 utf8 对数据编码之后,存储格式不同,对于中文来讲,gbk存放一个汉字占用2个字节,utf8存放一个汉字占用3个字节,这样就会导致,比方说:原先GBK字符编码的数据库中的某张表中,存放中文的字段:colum001的类型是varchar 长度为200 ,并且该字段的大多数行的现有数据长度基本上在180个字节,那么该表导入UTF8编码的数据库中时,该字段原先存储的大多数180个字节的汉字,就需要180*3/2=270个字节左右的字符长度才能正常存放;而此时在执行impdp导入操作的时候,表结构是不会改变的,也就是原先的字段定义colum001的长度还是保持着200,因此在导入的时候,就会报错,出现上述错误信息。
在数据导出的时候,可能会碰到EXP-00091: Exporting questionable statistics.的问题,有时候会让人有点摸不到头脑,不知道该调整什么。 这个时候NLS_LANG就发挥作用了。 [ora11g@rac1 ~]$ exp n1/n1 tables=t file=t.dmp rows=n Export: Release 11.2.0.3.0 - Production on Fri May 23 19:26:35 2014 Copyright (c) 1982, 2011
运行数据库对比脚本,通过创建 dblink,运行相关的数据库对象比对脚本。这里我们主要比对了存储过程,函数,触发器,试图,索引,表等等。
为什么需要脚手架 脚手架本质上是一个工具,使用脚手架的目的就是摆脱构建工程时重复性的工作,尤其是当一个工程具有一定通用性时,工程脚手架的意义就更为突出。它可以让我们只需要一行命令,就可以初始化好一项工程,而不用费心费力的去做配置环境,安装依赖,解决依赖冲突这样的支线任务,可以直奔主线任务,早早下班~~ 概览 开发一个的脚手架,通常需要如下npm包: commander: 强大的node命令行处理工具。能轻松的获取命令行的参数。 inquirer: 命令行交互工具,让你能以“问答”的交互方式来完成一系列的命
我们的目的是,当我们输入 wlm的时候 执行的是node index.js这句话即可
SQL> select status from v$instance; STATUS ------------ MOUNTED SQL> ALTER DATABASE OPEN; ALTER DATABASE OPEN * ERROR at line 1: ORA-01589: must use RESETLOGS or NORESETLOGS option for database open
每天工作中会碰到一些问题,圈内朋友也会有各种问题,解决问题总是能够带来很大的成就感,有时候感觉在做两份工作。:) 帮助别人的意义就在于别人碰到的坑,你可能也会碰到,别人遇到的坎,也可能是以后你会面临的,坑填平了,坎越过去了,对己对人都是好事,知道那些坑,自己就会绕过去尽量规范,不要去犯;有哪些坎,出了问题之后,自己也知道该怎么处理,所以说是双赢,何乐而不为。 当然了,帮助别人,本职工作是保证。本职工作也要不断改进优化,其实你没意识到的问题,其他人可能早就用更高级的方法来做了。 ###问题1 比如之前自己使用
像我们熟悉的 vue-cli,taro-cli 等脚手架,只需要输入简单的命令 taro init project,即可快速帮我们生成一个初始项目。在日常开发中,有一个脚手架工具可以用来提高工作效率。
在Oracle DataGuard部署过程中,如果操作不规范,可能遇到很多想不到的问题。有些问题是配置参数不到位,有些是操作不规范遗漏导致。
Oracle数据库是广泛使用的关系型数据库管理系统,而SQLPlus是Oracle提供的一种交互式命令行工具,用于执行SQL语句。然而,当在SQLPlus中执行SQL语句时,如果SQL语句中包含中文字符,可能会出现乱码问题,甚至导致错误。本文将介绍如何解决在Oracle SQL*Plus中执行SQL语句时出现中文乱码和报错的问题。
最近同事在交接工作时,发现有几个schedule job没有执行成功,我这边给看了下,其中一个是由于数据库迁移,调用dblink的host主机IP在tnsnames中没有变更导致,还有一个是无法视图的报错,即报错信息如下:
杨廷琨(yangtingkun) 云和恩墨 CTO 高级咨询顾问,Oracle ACE 总监,ITPUB Oracle 数据库管理版版主 编辑手记:在很多数据库的故障案例中,一个简单的疏忽可能导致问题被层层放大,最终导致故障,这就是蝴蝶效应的传播原理。这里分享的小案例自顶向下的追溯可以显见:实例挂起->归档失败->实例错误->参数配置。根本的原因往往很简单,DBA的严谨尤其重要。 客户的11.2.0.3 RAC数据库出现了归档失败的情况,导致单个实例出现HANG死的状况。 检查错误信息发现: Tue
我们这里简单的以ORA - 942 table or view does not exist为例
http://www.eygle.com/special/NLS_CHARACTER_SET_04.htm
问题1 MySQL报错MySQL“ERROR 1046(3D000):未选择数据库”更新查询
杨廷琨(yangtingkun) 云和恩墨 CTO 高级咨询顾问,Oracle ACE总监,ITPUB Oracle数据库管理版版主 这是一则生产环境的真实维护过程,由于RAC的测试环境空间不足,因此规划给ASM扩展空间,然而在给ASM添加新的磁盘空间时又出现了故障,这类问题在很多用户的生产环境中可能也会遇到。 空间扩展的操作步骤如下: 在RAC环境的节点1上启动了DBCA工具来管理ASM设备; 由于新增的裸设备在ASM图形界面下看不到; 通过root用户将裸设备的访问权限授予了操作系统上的Oracl
每月关注:55 页 干货,汇总一个月数据库行业热点事件、新的产品特性,包括重要数据库产品发布、警报、更新、新版本、补丁等。
近期我们对DBASK小程序进行了升级,UI交互做了重大优化调整,对注册用户开放知识库全文检索功能,引入数据和云公众号文章,提问时自动关联知识库已知问题,专栏可生成图片分享给好友,欢迎大家通过微信搜索DBASK体验。
崔华,网名 dbsnake Oracle ACE Director,ACOUG 核心专家 分享一则由于SCAN IP导致的连接故障 11gR2 RAC两节点的环境,我本机用SCAN VIP连的时候发现连不上了,不断尝试多次,始终报同样的错误ORA-12545: C:\Documents and Settings\cuihua>sqlplus /nolog SQL*Plus: Release 11.2.0.1.0 Production on 星期四 5月 3 10:53:00 2012 Copyright
1.1 异常处理概念 1.1.1 预定义的异常处理 1.1.2 非预定义的异常处理 1.1.3 用户自定义的异常处理 1.1.4 用户定义的异常处理 1.2 异常错误传播 1.2.1 在执行部分引发异常错误 1.2.2 在声明部分引发异常错误 1.3 异常错误处理编程 1.4 在 PL/SQL 中使用 SQLCODE, SQLERRM异常处理函数 即使是写得最好的PL/SQL程序也会遇到错误或未预料到的事件。一个优秀的程序都应该能够正确处理各种出错情况,并尽可能从错误中恢复。任何ORACLE错误(报告为
英文解析:resource busy and acquire with NOWAIT specified
墨墨导读:一个诡异的案例:ORA-12547: TNS:lost contact导致数据库无法启动,甚至sqlplus都无法登录,让我们一一来解开这个案例的真面目。
ORACLE中的参数文件是一个包含一系列参数以及参数对应值的操作系统文件,可以分为两种类型。它们是在数据库实例启动时候加载的,决定了数据库的物理结构、内存、数据库的限制及系统大量的默认值、数据库的各种物理属性、指定数据库控制文件名和路径等信息,是进行数据库设计和性能调优的重要文件。
整个vue init大致流程如我上图所示,应该还是比较好理解的。这里我大致阐述一下大致的流程。
首先使用SHUTDOWN NORMAL方式关闭数据库,在数据库未关闭时CTRL+Z停止执行,退出用SQLPLUS重登陆,出现报错:ORA-01012: not logged on 实验如下: 首先执行 SYS@bys1>shutdown ORA-01013: user requested cancel of current operation [oracle@bys001 ~]$ sqlplus / as sysdba SQL*Plus: Release 11.2.0.1.0 Product
墨墨导读:某客户单位数据库出现异常,大致现象是:数据库状态是open的,但是其中一个数据文件无法访问,本文分享排查原因与解决问题的整个过程。
为了及时共享行业案例,通知共性问题,达成共享和提前预防,我们整理和编辑了《云和恩墨技术通讯》,通过对过去一段时间的知识回顾,故障归纳,以期提供有价值的信息供大家参考。同时,我们也希望能够将热点事件、新的产品特性及其他有价值的信息聚集起来,为您提供具有前瞻性的支持信息,保持对于当前最新的数据库新闻和事件的了解,其中包括重要数据库产品发布、警报、更新、新版本、补丁等。
--================================== -- 设置 Oracle 监听器密码(LISTENER) --================================== 监听器也有安全?Sure!在缺省的情况下,任意用户不需要使用任何密码即通过lsnrctl 工具对Oracle Listener进行操作或关闭,从 而造成任意新的会话都将无法建立连接。在Oracle 9i 中Oracle监听器允许任何一个人利用lsnrctl从远程发起对监听器的管理。也容易导致数 据库受到损坏。 1. 未设定密码情形下停止监听
Exception是一种PL/SQL标识符,当运行的PL/SQL块出现错误或警告,则会触发异常处理。为了提高程序的健壮性,可以在PL/SQL块中引
最近的项目中发现处理DML Error 时,逐条逐条处理1千多条的数据从临时表 insert 到正式表需要差不多1分钟的时间,性能相当低下,而Oracle 10g中的DML error logging对于DML异常处理性能卓著。原本打算写篇关于这个特性的文章,正好有经典篇章,于是乎,索性翻译供大家参考,有不尽完美之处,请大家拍砖。 缺省情况下,一个DML命令失败的时候,在侦测到错误之前,不论成功处理了多少条记录,都将将使得整个语句回滚。在使用DML error log之前,针对单行处理首选的办法是使用批量SQL FORALL 的SAVE EXCEPTIONS子句。而在Oracle 10g R2时,DML error log特性使得该问题得以解决。通过为大多数INSERT,UPDATE,MERGE,DELETE语句添加适当的LOG ERRORS子句,不论处理过程中是否出现错误,都可以使整个语句成功执行。这篇文章描述了DML ERROR LOGGING操作特性,并针对每一种情形给出示例。 一、语法 对于INSERT, UPDATE, MERGE 以及 DELETE 语句都使用相同的语法 LOG ERRORS [INTO [schema.]table] [('simple_expression')] [REJECT LIMIT integer|UNLIMITED] 可选的INTO子句允许指定error logging table 的名字。如果省略它,则记录日志的表名的将以"ERR$_"前缀加上基表名来表示。 simple_expression表达式可以用于指定一个标记,更方便去判断错误。simple_expression能够为一个字符串或任意能转换成字符串的函数 REJECT LIMIT 通常用于判断当前语句所允许出现的最大错误数。缺省值是0,最大值则是使用UNLIMITED关键字。对于并行DML操作而言,REJECT LIMIT 会应用到每个并行服务器。 二、使用限制 下列情形使得DML error logging 特性失效 延迟约束特性 Direct-path INSERT 或MERGE 引起违反唯一约束或唯一索引 UPDATE 或 MERGE 引起违反唯一约束或唯一索引 除此之外,对于LONG,LOB,以及对象类型也不被支持。即使是一个包含这些列的表被作为错误日志记录目标表。 三、示例 下面的代码创建表并填充数据用于演示。
Io 异常: The Network Adapter could not establish the connection 这个异常的出现一般与数据库和你的PC的设置有关
在实际的开发过程中,我们经常用别人开发的脚手架,以节约搭建项目的时间。但是,当 npm 没有自己中意的脚手架时,我们不得不自己动手,此时学会开发前端 CLI 脚手架的技能就显得非常重要。搭建一个符合大众化的脚手架能使自己在项目经验上加个分哦!
之前做的基本都是本库导出,本库导入的操作,例如:imp test/***@test tables=tbl_fuel file=H:\dev\data\tbl_fuel.dmp ignore=y这样的指令操作。
oracle在启动时和启动过程中经常会出现这样那样的错误,简单记录下碰到过的问题,方便备用。
前几日通过 ADG 的switchover 模式迁移了一套 19c 的 RAC 环境,迁移后一切正常,主备库均可正常提供服务,备库正常同步,不过为了节省资源,又是测试环境,则将其备库关机回收资源了,大约一周后的时间,有开发的小伙伴找来说他的程序执行报错了,扔来了如下的错误代码。ORA-28040:No matching authentication protocol 没有匹配的认证协议。
领取专属 10元无门槛券
手把手带您无忧上云