![](https://img-blog.csdnimg.cn/20200328151415442.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
oracle
oracle
w.ang.jie
“在广袤的空间和无限的时间中,能与你共享同一颗行星和同一段时光是我的荣幸。”——卡尔.萨根《宇宙》
展开
-
批量统计Oracle库表数据
create or replace procedure count_t is type type1 is table of number index by pls_integer; type type2 is table of varchar2(200) index by pls_integer; t_count type1; sql_states type2; t type2; var_counter integer :=0; cursor my_原创 2021-08-31 09:51:58 · 967 阅读 · 0 评论 -
clickhouse linux安装使用以及Oracle数据库导入
安装下载clickhouseyum install clickhouse-server clickhouse-client编辑配置文档vi /etc/clickhouse-server/config.xmlsudo rpm --import https://repo.clickhouse.tech/CLICKHOUSE-KEY.GPGsudo -u clickhouse clickhouse-server --config-file=/etc/clickhouse-server/config.原创 2021-08-23 15:48:23 · 1068 阅读 · 0 评论 -
Oracle 查看表锁情况,解锁
http://nianjian.xiaze.com/tags.php?/%E4%B8%AD%E5%9B%BD%E6%99%BA%E8%83%BD%E4%BA%A4%E9%80%9A%E8%A1%8C%E4%B8%9A%E5%8F%91%E5%B1%95%E5%B9%B4%E9%89%B4/1/13625816891/原创 2021-07-09 15:57:59 · 216 阅读 · 2 评论 -
阿里云服务器 安装 轻量级OracleXE版本 过程
参考官方文档: 《Installing Oracle Database XE Using RPM Packages》大佬博客1:《CentOS7 静默安装Oracle XE 11g》大佬博客2:《阿里云centos 7.2安装oracle11gr2详细教程》[oracle@izbp15488qcahuq3k0n0qiz ~]$ sqlplus systemSQL*Plus: Release 18.0.0.0.0 - Production on Mon Dec 21 23:56:32原创 2020-12-23 22:29:02 · 254 阅读 · 0 评论 -
OmniDB 连接 ORACLE 报错提示DP-1047:Cannot locate a 32-bit Oracle Client library
使用 OmniDB 软件 连接Oracle数据库时 ,报错 Cannot locate a 32-bit Oracle Client library ;在网上查看说这是由于Oracle客户端instanceclient, 系统, Python 三者版本位数不对应。解决过程首先查看数据库服务端的版本:SELECT * FROM V$VERSION查询结果是64位查看python版本:也是64位;按理说Oracle客户端instanceclient不匹配的话应该要报错Canno原创 2020-12-20 17:22:41 · 3118 阅读 · 1 评论 -
Oracle创建定时任务-------job(创建过程和授权管理)
1. 授权SQL> grant create job to zxin_jzfp;授权成功。SQL> grant manage scheduler to zxin_jzfp;授权成功。我授权在 pl/sql developer后运行select * from user_jobs 语句提示,权限不足的问题。解决办法:重新启动 pl/sql developer....原创 2020-11-11 10:42:37 · 6155 阅读 · 0 评论 -
Oracle批量将表中字段名全部转换为大写(通过一个简单存储过程)
今天查询一个数据字段一直提示字符无效,明明在数据库表字段中是存在的;查询后得知,数据库表字段为小写时,查询需要将字段名小写并加上双引号;表名同理,我这里表名是大写,暂时不需要改。搜到一个批量修改字段名为大写的存储过程,如下:登陆到要修改的用户下,执行:beginfor cl in (SELECT table_name,column_name from user_tab_columns WHERE column_name<>upper(column_name) and upper(c原创 2020-11-10 15:00:41 · 1462 阅读 · 0 评论 -
使用 `select table_name from user_tables`能够找到表,但是无法通过`select count(*) from table_name`,提示表视图不存在。
使用 select table_name from user_tables能够找到表,但是无法通过select count(*) from table_name,提示表视图不存在。查看发现所有表名在数据库中都是小写,改为大写后,即可通过select count(*) from table_name查询到数据量。或者查询时加上双引号,声明表名为小写。我将数据库里的表名改为大写后,查询时大小写的表名都可以支持了。...原创 2020-11-09 16:53:59 · 1432 阅读 · 0 评论 -
oracle 新建用户后用户只能用 as sysdba登陆,否则报错:ORA-01017: invalid username/password; logon denied
oracle 新建用户后用户只能用 as sysdba登陆,否则报错:ERROR:ORA-01017: invalid username/password; logon denied请输入用户名:ERROR:ORA-01017: 用户名/口令无效; 登录被拒绝查看原因是因为当前用户没有设置密码导致,登陆后修改密码,即可用普通用户登录。我记得当时设置了密码,检查发下,语法有问题,我用的是create user username identified by values 'password'原创 2020-11-09 16:16:24 · 1076 阅读 · 0 评论 -
当前字段值为空时的转换函数:NVL、NVL2、NULLIF、COALESCCE
文章目录NVLNVL2(表达式1,表达式2,表达式3)NULLIF(表达式1,表达式2)COALESCE(列名,表达式1,表达式2,表达式3,...表达式n)特点NVL当修饰的字段内容为NULL时,NVL计算结果为指定的值,可使用的数据类型为日期、字符和数字。函数的参数只能有两个。SELECT t.是否活跃,NVL(t.是否活跃,'否') FROM t;NVL2(表达式1,表达式2,表达式3)如果表达式1的值不为NULL,那么显示表达式2的值,否则显示表达式3的值。SELECT t.是否活跃,原创 2020-11-08 16:13:43 · 748 阅读 · 0 评论 -
Oracle中,V$LOG视图中的STATUS列的值的各自含义
Oracle中,V$LOG视图中的STATUS列的值的各自含义1. `ACTIVE`2. `CURRENT`3. `INACTIVE`4. `UNUSED`5. `CLEARING`6. `CLEARING_CURRENT`1. ACTIVE1)表示联机redo日志组是活动的,但是并非当前联机Redo日志组。2)实例恢复需要该组日志,可能用于块回复,可能已经归档也可能未归档。3)在该状态下对应的脏块还没有写入到数据文件上。2. CURRENT1)表示该联机日志组是活动的且正在被使用。3.原创 2020-11-07 21:52:00 · 1099 阅读 · 0 评论 -
python+SQL loader批量导入csv文件到Oracle(可新建表或追加数据)
一、前言根据项目开发需要,需要将某个文件夹下excel表中数据批量导入到Oracle数据库,数据有几百万条,字段约三百个,原始数据文件有几个G。一开始打算用python写一个脚本,用pandas读取数据后形成批量insert语句,再执行SQL将数据插入到数据库表,测试发现数据导入太慢,一直卡住,分析发现频繁读写数据库对数据库压力较大,极不稳定。后来改为批量形成SQL Loader导入语句进行导入后,速度快很多。引用《最大化SQL * Loader性能 》中的介绍:传统的路径加载器实质上是通过使用标原创 2020-10-24 10:47:44 · 2144 阅读 · 0 评论 -
使用SQLULDR2进行ORACLE数据库抽取时执行后无反应,也无日志
SQLULDR2 下载地址:http://360jq.jb51.net:81/201709/tools/sqluldr2_win_jb51.rar解压后有两个应用,我的是64位系统,应该使用 SQLULDR264.exe具体使用方法参照:https://www.jb51.net/database/577355.html#downintro2执行SQLULDR264未报错:但是执行后续命令导出后没有反应,也没有日志输出,参考使用SQLULDR2进行ORACLE数据库抽取时执行后无反应,也无原创 2020-10-07 21:11:14 · 2062 阅读 · 0 评论 -
dbms_sql笔记(具体函数和示例)
具体函数可以参照官网https://docs.oracle.com/cd/E11882_01/timesten.112/e21645/d_sql.htm#TTPLP71282或者博客园这篇DBMS_SQL使用示例参考https://blog.51cto.com/aaron521/2165969?source=dra调用dbms_sql需要执行五个步骤 1.打开一个游标 2.分析要执行的语句 3.绑定可能需要的任何输入变量 4.执行语句 5.关闭游标*/DECLARE CUR原创 2020-10-07 15:38:59 · 807 阅读 · 1 评论 -
ORA-06502: PL/SQL: 数字或值错误 : hex 到 raw 的转换错误
SQL> exec export_to_csv2('BLOBDIR');BEGIN export_to_csv2('BLOBDIR'); END;*第 1 行出现错误:ORA-06502: PL/SQL: 数字或值错误 : hex 到 raw 的转换错误ORA-06512: 在 "C##A.EXPORT_TO_CSV2", line 36ORA-06512: 在 line 1参考https://stackoverflow.com/questions/13471988/oracle原创 2020-10-07 13:12:05 · 1668 阅读 · 0 评论 -
ORA-29287: 最大行大小无效 ORA-06512: 在 “SYS.UTL_FILE“,
执行存储过程export_to_csv时报错:SQL> begin 2 export_to_csv('MYDIR'); 3 end; 4 /begin*第 1 行出现错误:ORA-29287: 最大行大小无效ORA-06512: 在 "SYS.UTL_FILE", line 41ORA-06512: 在 "SYS.UTL_FILE", line 478ORA-06512: 在 "C##A.EXPORT_TO_CSV", line 29ORA-06512: 在 lin原创 2020-10-05 15:08:44 · 953 阅读 · 0 评论 -
ORA-00054: 资源正忙, 但指定以 NOWAIT 方式获取资源, 或者超时失效---解决方法
一、问题描述今天在用hibernate进行建表操作时第一次建表成功,但之后发现POJO类的映射文件有问题,就进行了几次修改,之间将建表的代码又运行了几次,结果就在控制台报出了“ORA-00054:资源正忙, 但指定以 NOWAIT 方式获取资源,或者超时失效”的错误,数据也插入不了,于是我就去oracle数据库的可视界面(sqldeveloper)想将之前建成的表手动删除,结果还是报“ORA-00054:资源正忙, 但指定以 NOWAIT 方式获取资源,或者超时失效”这个错误,之后才搞清楚原来是转载 2020-09-27 19:40:48 · 665 阅读 · 0 评论 -
Oracle表空间占用已满的问题
今天发现,原来设bai备的数据表空间只有5M,已经满du了,上网去找发现zhi要进行扩展空间。一、脚本修改方式dao:----查询表空间使用情况---使用DBA权限登陆SELECT UPPER(F.TABLESPACE_NAME) "表空间名",D.TOT_GROOTTE_MB "表空间大小(M)",D.TOT_GROOTTE_MB - F.TOTAL_BYTES "已使用空间(M)",TO_CHAR(ROUND((D.TOT_GROOTTE_MB - F.TOTAL_BYTES) / D.T原创 2020-09-26 12:34:40 · 1537 阅读 · 0 评论 -
ORACLE修改用户名(用户模式),只需两条命令
sys用户或dba权限用户登录1. 从Oracle用户信息表查找用户序列号select user#,name from user$ where name = '需要修改的用户名';2. 根据序列号直接修改用户信息表update user$ set name = '新用户名' where user# = 之前查的那个序列号;我的修改后就可以直接用新用户名和旧密码登录了,如果修改后无法登录:commit;尝试强制更新:alter system checkpoint;alter原创 2020-09-25 19:21:32 · 5143 阅读 · 1 评论 -
oracle 抛出异常的方式:通过pl/sql运行引擎、使用raise语句、调用raise_application_error存储过程
文章目录Oracle有三种方式可以抛出异常:1. 通过pl/sql运行引擎2. 使用raise语句3. 调用raise_application_error存储过程Oracle有三种方式可以抛出异常:1. 通过pl/sql运行引擎当数据库或pl/sql在运行时发生错误时,此时异常可以通过pl/sql运行时的引擎自动抛出异常。参考之前自己写的一篇《PL_SQL模块学习之十五、异常》示例:自定义一个number类型的变量test_number,当赋给该变量的值为非number类型时,自动抛出异常。S原创 2020-09-20 13:44:58 · 3582 阅读 · 0 评论 -
oracle练习:编写一个实现更改商品单价的存储过程
题目:有商品表(商品号、商品名、分类、单价),请编写一个实现更改商品单价的存储过程(存储过程名为PUPDATE),更改规则如下:“电脑”类商品降价10%,“电视”类商品降价6%,“冰箱”类商品降价3%,其他商品不降价。以商品的分类作为输入参数,假设“分类”为字符串类型,长度最多为6个字符。如果商品表中没有用户指定的分类,那么用输出参数返回字符串“指定的分类不存在”;如果用户指定的分类存在,那么用输出参数返回字符串“修改已成功”。答题步骤:1. 建表依据题意建立商品表 "PRODUCT":C原创 2020-09-18 23:19:03 · 1705 阅读 · 0 评论 -
ORACLE随记(having/模糊查询/正则/格式转换/去除空格/dual表/查询结果格式化/round函数)
文章目录`having`模糊查询正则表达函数 `regexp_like`字段格式转换查询去除空格dual表对查询结果进行格式化ROUND函数having子句从中间结果集中对行进行筛选中间结果集使用select语句中from,where,group by子句创建having字句前不必有group by语句select * from a,b返回的结果是a*b的总行数;模糊查询“%...原创 2020-08-21 10:11:51 · 719 阅读 · 0 评论 -
ORA-12537:TNS连接已关闭(监听文件配置问题)
客户端连接Oracle报错:ORA-12537:TNS连接已关闭查看网络服务名是否能正常解析。[root@localhost oracle]# tnsping orclTNS Ping Utility for Linux: Version 12.1.0.2.0 - Production on 08-MAR-2020 07:12:15Copyright (c) 1997, 2014, Or...原创 2020-08-21 10:10:27 · 16769 阅读 · 0 评论 -
Oracle的dbms_metadata命令详解
文章目录检索元数据提交XML官网链接:点击????访问使用该DBMS_METADATA包来检索元数据,也可以提交XML:检索元数据如果要检索元数据,则可以指定:要检索的对象的种类。这可以是特定的对象类型(例如表,索引或过程),也可以是形成逻辑单元的对象类型的异构集合(例如数据库导出或架构导出)。可选的选择条件,例如所有者或名称。解析项目(分别解析和返回的返回对象的属性)。...原创 2020-08-21 10:09:44 · 3465 阅读 · 0 评论 -
Oracle 数据的导入导出(数据泵&EXPDP&IMPDP、python脚本&sqlldr)
文章目录数据泵导出导入EXPDP导出导出表导出方案中的对象导出表空间导出整个数据库导出对象中的数据条件导出IMPDP数据导入导入schema所有对象导入表空间所有对象导入全数据库数据泵导出导入EXPDP导出数据:将数据库对象的表、用户方案、表空间、空间数据导出到转储文件中。EXPDP是服务端工具,客户端无法使用。IMPDP导入工具:将转储文件中的元数据及其数据导入到Oracle数据中...原创 2020-08-21 10:07:27 · 976 阅读 · 0 评论 -
oracle数据表回收站
drop table enmotech purge;drop后的表被放在回收站(user_recyclebin)里,而不是直接删除掉。这样,回收站里的表信息就可以被恢复,或彻底清除。1.通过查询回收站user_recyclebin获取被删除的表信息,然后使用语句flashback table <user_recyclebin.object_name or user_recyclebin.original_name> to before drop [rename to <new_tab原创 2020-08-21 10:02:32 · 1650 阅读 · 0 评论 -
Oracle表分区(12.2 automatic 表自动分区)
查看分区数据:select * from test partition(p1)在Oracle Database 12.2 之前,如果使用列表分区,当插入的数据超过了分区列表值设定,则会抛出异常;而如果存在大量的列表值需要定义,则可能需要一一设置。在12.2引入的新特性中 - Auto-List Partitioning 可以针对新的列表值,进行自动的分区创建,从而减少了维护的复杂性。通过以下测试来简单验证一下这个特性的表征,如果是常规的列表分区,在分区缺失时会遇到ORA-14400错误:SQL&原创 2020-08-21 09:58:33 · 5070 阅读 · 1 评论 -
PYTHON+SQL*LOADER 批量执行Excel文档入库
对于多个excel文档入库到Oracle同一个表,用python生成批量ctl文件并生成批量执行sqlldr代码原创 2020-08-10 23:28:01 · 566 阅读 · 0 评论 -
EXCEL文件导入Oracle(python脚本导入)
直接上代码# encoding=gbkimport cx_Oracleimport csvimport xlrdimport osimport reclass ImportOracle(object): def inoracle(self): pass def ConnOracle(self): conn = cx_Oracle.connect('user/password@orcl') cursor = conn.curso原创 2020-08-10 23:14:13 · 1314 阅读 · 0 评论 -
Oracle的SQL语句优化(满满干货,建议收藏!)
1. SQL语句执行步骤语法分析> 语义分析> 视图转换 >表达式转换> 选择优化器 >选择连接方式 >选择连接顺序 >选择数据的搜索路径 >运行“执行计划”2. 选用适合的Oracle优化器RULE(基于规则)、 COST(基于成本) 、CHOOSE(选择性)3. 访问Table的方式全表扫描全表扫描就是顺序地访问表中每条记录,ORACLE采用一次读入多个数据块(database block)的方式优化全表扫描。通过ROWID访转载 2020-07-26 23:52:49 · 4860 阅读 · 0 评论 -
Oracle里的优化器
文章目录1 What1.1 RBO ---- 基于规则的优化器1 What优化器(Optimizer) 是Oracle数据库中内置的一个 核心子系统。其目的是:按照一定的判断原则来得到它认为的目标SQL在当前情形下最高效的执行路径(Access Path)。根据判断原则,可分为 RBO 和 CBO 两种类型的优化器:RBO (Rule-Based Optimizer):基于(内置的)规...原创 2020-05-14 07:04:47 · 480 阅读 · 0 评论 -
Oracle数据库备份与恢复(理解与实践)--rman的使用
参考《Oracle备份和恢复(RMAN篇)》备份恢复rman介绍参考《oracle RMAN 简要介绍及使用》1) 是对数据库进行备份和恢复操作并自动管理相关备份策略的客户端工具2)其环境至少包含:目标数据库(target database):需要进行备份和恢复的数据库;通过target命令指定。RMAN客户端:存放于$ORACLE_HOME/bin下的可执行程序还可能...原创 2020-04-27 17:51:54 · 466 阅读 · 0 评论 -
Oracle 统计信息笔记----一、表的统计信息
sosi.txt 脚本:SHOW Optimizer Statistics Information;显示表级别、分区级别、子分区级别的统计信息。Oracle数据库的统计信息存储在数据字典里1. 对表test收集统计信息avg_row_len :表示 目标表的平均行长度。(不算行头)数字100 在Oracle数据块的行里占2字节,加上描述其长度的1字节,一共3字节同理,'CUIHU...原创 2020-04-26 23:32:15 · 765 阅读 · 1 评论 -
Oracle函数 connect by (随记)----递归查询
参考《oracle connect by 递归查询用法》基本语法start with :设置起点,省略后默认以全部行为起点。connect by [condition] :与一般的条件一样作用于当前列,但是在满足条件后,会以全部列作为下一层级递归(没有其他条件的话)。prior : 表示上一层级的标识符。经常用来对下一层级的数据进行限制。不可以接伪列。level :伪列,表示当前深度。...原创 2020-04-26 18:00:12 · 1106 阅读 · 0 评论 -
oracle 可以用工具访问,但是sqlplus命令行登陆总是报错ORA-12560: TNS: 协议适配器错误
参考百度知道上的文章《oracle的sqlplus登陆的时候老报错:ORA-12560: TNS: 协议适配器错误》我采用的是第三种,因为我其他工具可以访问,说明监听服务肯定是起来的,以及databases instance也是起来的;命令行进不去,说明环境配置中有问题;然后我看下,我注册了两个服务,一个是orcl,一个是oracle;当orcl设置为sid后无效,再用oracle设...原创 2020-04-26 11:07:27 · 942 阅读 · 0 评论 -
Oracle函数 DUMP(随记)
Oracle函数 DUMP用法参考《Oracle dump函数》《oracle dump详解》语法DUMP( expr [ ,return_fmt [,start_position] [,length] ] )含义expr:指要分析的表达式(数字或字符串等,可以是各个类型的值)return_fmt:返回参数的格式,分为:1)8:以 8进制 返回结果值2)10:以 ...原创 2020-04-25 00:12:08 · 640 阅读 · 0 评论 -
Oracle函数 NVL(随记)
Oracle函数 NVL用法语法NVL(eExpression1, eExpression2)含义表示从两个表达式中返回一个非null值;如果eExpression1的计算结果为null值,则NVL()返回eExpression2;如果eExpression1的计算结果为非null值,则返回eExpression1;如果两个表达式均为null值,则NVL()返回null;两个表达...原创 2020-04-24 20:00:22 · 420 阅读 · 0 评论 -
ORACLE CHECK 约束测试笔记
题目:create table plch_exam_results ( exam_id integer not null, student_id integer not null, score integer not null /* TO DO */, constraint plch_exre_pk primary key (exam_id, student_id))...原创 2020-04-24 16:25:34 · 638 阅读 · 0 评论 -
Oracle普通索引和主键索引的删除、创建、、查看
主键索引和普通索引的最大差别是:主键索引不能有空值和重复值;一个表里只能有一个主键索引,普通索引可以有多个。#Oracle创建普通索引CREATE INDEX index_emp_deptno ON emp_test(deptno);#Oracle删除普通索引drop INDEX index_emp_deptno ;#Oracle创建主键索引ALTER TABLE emp_test A...原创 2020-04-23 14:27:11 · 1236 阅读 · 0 评论 -
num_rows和count(*)的值为何不同?
num_rows和count的值为何不同?问:dba_tables表中的一行为NUM_ROWS数值为何与该表用SELECT COUNT(*)得到的行数不一样?SELECT * FROM DBA_TABLES WHERE OWNER=‘ZXF’;如在dba_tables表中有一行table_name为gang,其相应字段num_ROWS数值为39008,但我用 select count(...转载 2020-04-17 19:57:14 · 2288 阅读 · 0 评论