数据库(oracle、sql)
慎独慎行
写博客的目的有两个,一是记录解决问题过程,二是分享经验供网友参考。
本人很少查看私信,如有问题可以QQ联系。QQ:403313207
展开
-
mysql:如何将命令行结果数据输出到文本文件
最近碰到一个问题,就是通过show variables 查看mysql配置信息的时候,由于数据行较多,cmd命令有些查看不到,那么就需要用一种办法将屏幕的结果输出到文件中来查看。方法就是通过重定向的方式将结果输出到文件中。mysql -uroot -p123456 show variables > C:\Users\Administrator\Desktop\logs\log.lo原创 2016-12-02 10:07:46 · 9981 阅读 · 1 评论 -
Oracle:创建JOB定时执行存储过程
创建JOB定时执行存储过程有两种方式方式1:通过plsql手动配置job,如下图:方式2:通过sql语句,如下sqldeclare job_OpAutoDta pls_integer;--声明一个jobidbegin sys.dbms_job.submit( job=>job_OpAutoDta, what => 'p原创 2017-03-21 10:06:36 · 6462 阅读 · 0 评论 -
oracle:存储过程样例
---不带参数的存储过程CREATE OR REPLACE PROCEDURE pk_pat()AS--定义变量num1 number(10);datetime1 date;begin --赋值变量 ---给datetime1 赋值一个近七天的一个随机事件。select to_date(TRUNC(DBMS_RANDOM.V原创 2017-04-07 15:33:07 · 278 阅读 · 0 评论 -
oracle:游标使用样例
create or replace procedure pk_sysward is --利用游标 循环插入各个病区 cursor c_departid is select * from sys_department; v_cinfo c_departid%rowtype; pr_wardid number(3);原创 2017-04-07 15:35:20 · 506 阅读 · 0 评论 -
mysql:存储过程样例
drop PROCEDURE if EXISTS PK_out_patient_test;CREATE PROCEDURE PK_out_patient_test()begin---定义变量并赋初值DECLARE num int DEFAULT 0; DECLARE name2 int DEFAULT 1;DECLARE idno int DEFAULT 43000原创 2017-04-07 15:39:31 · 327 阅读 · 0 评论 -
oracle:内存占用太大,可以SGA大小来降低oracle的内存
sqlplus / as sysdbaSQL>alter system set sga_target=1024m scope=spfile;SQL>alter system set sga_max_size=1024m scope=spfile;重启oracle调整后:可以看到下降的曲线原创 2017-03-13 12:51:08 · 6355 阅读 · 0 评论 -
oracle:如何构造一个随机姓名出来?
构建一个个人信息的时候,想要造一批随机姓名到数据库中用来做测试用。经过几番的查询,其实可以通过字符结合加字符串截取的方法完成。1、首先通过SUBSTR()方法获取一个姓氏2、其次通过SUBSTR()方法获取一个名3、通过concat()方法将姓氏和名称合并起来。如果姓氏28个,名称28个,那么就进行28*28次的循环。下面是sql。while getnum1原创 2017-03-30 15:44:55 · 4485 阅读 · 1 评论 -
Oracle: Ignore 参数在Oracle 的Exp/imp的意义
Ignore 参数在Oracle 的Exp/imp的意义是:如果用了参数ignore=y, 会把exp文件内的数据内容导入如果表有唯一关键字的约束条件, 不合条件将不被导入如果表没有唯一关键字的约束条件, 将引起记录重复[@more@]Ignore 参数在Oracle 的Exp/imp的意义是:如果用了参数ignore=y, 会把exp文件内的数据内容导转载 2017-05-26 15:22:29 · 9984 阅读 · 0 评论 -
mysql:mysql性能监控相关
http://www.cnblogs.com/flish/p/4897176.html如果是root帐号,你能看到所有用户的当前连接。如果是其它普通帐号,只能看到自己占用的连接怎么进入mysql命令行呢? mysql的安装目录下面有个bin目录,先用命令行进入该目录,然后用 mysql -uroot -p123456 来登录(注意:用户名和密码不用包含“”) 命令: sho转载 2017-04-27 11:31:51 · 336 阅读 · 0 评论 -
Oracle:如何解决在执行insert语句后,插入的数据乱码
通过cmd命令执行sql语句设置编码格式:cmd命令输入:SET NLS_LANG=american_america.AL32UTF8 首先连接oracle C:\Users\huangweihua>sqlplus 用户名/密码@IP:1521/实例名再执行sql语句,如下图SQL> @"D:\Program Files\Desktop\sql.sql原创 2017-06-08 11:33:31 · 4690 阅读 · 0 评论 -
Oracle:for update 和select t.*,t.rowid编辑数据的区别
1.select * from ls.lims_employees where empno='0001' for update只有当前用户能查看SELECT记录,其他用户可以select * from ls.lims_employees where empno='0001' 查询,但要加for update则必须等待前一个用户提交才能查。是加锁查下通过锁查询可以查询到锁sel原创 2017-07-04 10:45:11 · 10916 阅读 · 0 评论 -
oracle“ORA-00904”错误:标识符无效几种可能情况
oracle“ORA-00904”错误:标识符无效几种可能情况1、字段名或者表名写错了,仔细检查核对一下,如果实在是没有发现错的地方就有可能是第二种情况了第二种情况就是:你的字段包含了Oracle的关键字,把报错的字段用双引号括起来试试 现在举一个我今天遇到的例子:sql1: insert into SSQX_SURGERY_INFO (转载 2017-08-28 16:27:01 · 230387 阅读 · 5 评论 -
Oracle中执行存储过程call和exec区别
转载地址:http://www.cnblogs.com/batys/p/3878535.html在sqlplus中这两种方法都可以使用:exec pro_name(参数1..);call pro_name(参数1..);区别:1. 但是exec是sqlplus命令,只能在sqlplus中使用;call为SQL命令,没有限制.2. 存储过程没有参数时,exec可以直接转载 2017-08-24 15:32:05 · 15393 阅读 · 0 评论 -
oracle:创建job时提示“ORA-01008 并非所有变量都已关联,”
创建一个job declare job_OpAutoDta NUMBER;begin sys.dbms_job.submit( job=>:job_OpAutoDta, what => 'pk_sys_department(1); pk_sysward(); pk_sysbed(); pk_sysdevice();原创 2017-03-21 09:45:45 · 8371 阅读 · 0 评论 -
oracle:job字段说明及定时设置
===========================================字段(列) 类型 描述JOB NUMBER 任务的唯一标示号LOG_USER VARCHAR2(30) 提交任务的用户PRIV_USER VARCHAR2(30) 赋予任务权限的用户SCHEMA_USER VARCHAR2(30) 对任务作语法分析的用户模式LAST_DATE DATE 最转载 2017-03-21 09:46:56 · 579 阅读 · 0 评论 -
mysql:按周,按月,按日分组统计数据
转载地址:http://linkyou.blog.51cto.com/1332494/751980/select DATE_FORMAT(create_time,'%Y%u') weeks,count(caseid) count from tc_case group by weeks; select DATE_FORMAT(create_time,'%Y%m%d') days,c转载 2017-02-09 14:28:29 · 307 阅读 · 0 评论 -
mysql:如何查看my.ini生效的参数值
修改my.ini文件中的参数后如何查看是否生效了呢,那么就需要进入到mysql的命令行,输入select @@+参数名。(备注:生效需要重新启动mysql)例如,修改my.ini的max_connections值后,如何查看是否生效了呢,就直接使用如下sql就可以查看了1、在cmd命令输入mysql -uroot -p123456(此处需要配置mysql的环境变量,加入path中即原创 2016-12-02 14:09:04 · 3232 阅读 · 0 评论 -
mysql:游标嵌套使用
解决方案:从A表取一个字段的值和从B表取一个字段的值一一组合作为插入数据源。drop procedure if exists test_team_user;create PROCEDURE test_team_user()BEGINDECLARE done INT DEFAULT 0;DECLARE userid VARCHAR(32);DECLARE tea原创 2016-11-21 10:44:01 · 1288 阅读 · 0 评论 -
mysql:如何将百万级别的数据从oracle转移到mysql中
最近遇到一个麻烦的事情,就是将oracle数据库的一张表中的100w的数据导入到msyql中。经过多次的实验,可以使用导出导入csv文件的方式迁移数据。步骤:1、通过plsql工具,从oracle中导出所有数据2、选择要存储的文件名Navicat Premium工具导入数据4、选择导入方式5、选择导入文件原创 2016-11-21 11:23:33 · 3365 阅读 · 0 评论 -
mysql:在while循环中开启关闭游标实现循环获取某表数据
向BG_OUTPAT_MASTER_INDEX 表插入100条数据,其中需要从sys_team表中获取team_id 的值,team_id只有10条数据,那么如何循环使用呢。解决:在while循环中使用游标。drop PROCEDURE if EXISTS bg_outpat_master_index;create PROCEDURE bg_outpat_master_inde原创 2016-11-21 18:16:16 · 2712 阅读 · 0 评论 -
mysql:在命令行执行sql语句
首先进入mysql命令行登录mysql -uroot -p123456(mysql -u用户名 -p用户名密码,如果有端口就带-P端口号)其次,选择数据库use 数据库名:如use test;最后就行执行sql:如调用存储过程:call pc_test();原创 2016-12-05 19:03:16 · 2791 阅读 · 0 评论 -
mysql:如何插入一个范围内的时间戳
问题:插入2016年1月到11月之间的随机时间戳。方案:定义两个变量,并用CONCAT实现连接。set @dates= CONCAT(FLOOR(2016 + (RAND() * 1)),'-',LPAD(FLOOR(1 + (RAND() * 11)),2,0),'-',LPAD(FLOOR(3 + (RAND() * 8)),2,0));set @time= C原创 2016-11-21 15:30:12 · 1168 阅读 · 0 评论 -
mysql:常用查询语句
1、在原有的时间字段上做加减(1)减几天DATE_SUBUPDATE bg_outpatient_test set test_time=DATE_SUB(test_time,INTERVAL 30 DAY) where test_time>SYSDATE();(2)加几天ADDDATEUPDATE bg_outpatient_test set test_time=原创 2016-11-24 15:12:04 · 301 阅读 · 0 评论 -
mysql:慢查询的设置与分析
在性能测试过程中,慢查询功能能更好的帮我们分析sql语句的耗时。需要注意的是在压测过程中需要关闭该项功能,压测完后再分析问题的时候可以边压边测,比较慢查询需要统计并写入log文件的,影响性能测试过程的。下面以图为例:1、设置与开启慢查询命令2、设置记录超过1秒钟的sql语句。3、查找慢查询的文件,就是上图的slow_query_log_file设原创 2016-12-09 14:43:59 · 786 阅读 · 0 评论 -
MySQL:性能监控 4 大指标
【编者按】本文作者为 John Matson,主要介绍 mysql 性能监控应该关注的 4 大指标。 文章系国内 ITOM 管理平台 OneAPM 编译呈现。 MySQL 是什么? MySQL 是现而今最流行的开源关系型数据库服务器。由 Oracle 所有,MySQL 提供了可以免费下载的社区版及包含更多特性与支持的商业版。从 1995 年首发以来,MySQL转载 2017-01-16 15:03:32 · 3432 阅读 · 0 评论 -
mysql:insert插入数据过慢如何解决,设置innodb_flush_log_at_trx_commit为0就能解决
问题:最近在做性能测试,造数据,发现insert好慢,只有几十条每秒,很奇怪,最后再网上找到了原因。网文如下:MY SQL insert 速度过慢最近在用MySQL做存储,测试中发现插入数据太慢了,插入速度只有20-30 条/秒,后来查资料后,将MySQL的1个参数:innodb_flush_log_at_trx_commit,1改为了0(修改方法,可以直接修改my.i原创 2016-12-07 09:54:10 · 8061 阅读 · 3 评论 -
mysql:使用mysqldmp命令备份数据库
备份数据库有两种方式,一种是使用数据库管理工具,一种是使用命令方式。mysqldmp命令使用mysqldmp --help查看命令使用参数和方式下面介绍如何使用命令导出,以在本地导出sql语句为例导出带create、drop和带字段的insert语句命令如下mysqldmp -uhbgms -phbgms -P3307 -c hbgms>test原创 2017-01-12 15:09:02 · 8976 阅读 · 0 评论 -
oracle:Oracle查看和修改连接数(进程/会话/并发等等)
转载自:http://blog.itpub.net/24558279/viewspace-752293/11、查询oracle的连接数2select count(*) from v$session;32、查询oracle的并发连接数4select count(*) from v$session where status='ACTIVE';53、查看不同用户的连接数6sele转载 2017-01-18 09:51:36 · 820 阅读 · 0 评论 -
oracle:SYSAUX 表空间因为开启了审计,表空间满了后报空间不足 ORA-00604 ORA-01653 ORA-02002
解决思路首先确认服务还是能正常启动,所以先通过sqlplus连接因为安装了多个实例,所以先set默认实例名set ORACLE_SID=HBGMS然后使用dba登录sqlplus / as sysdba连接后,为 SYSAUX 添加数据文件ALTER TABLESPACE SYSAUX ADD DATAFILE 'D:\app\Oracle\ora原创 2017-08-29 15:35:15 · 5385 阅读 · 0 评论