Welcome 微信登录

首页 / 数据库 / MySQL

PL/SQL相关的数据字典

PL/SQL相关的数据字典

有时候,我们在PL/SQL开发过程中会遇到以下问题: 1)我的程序到底依赖于哪些数据库对象? 2)哪个包中调用了一个其他包中的子程序或变量? 3)我的哪个子程序的参数使用了不合适的数据类型? 4)我的所有子程序是否都使用了适当的优化级别?傻一点的做法是到代码里搜。。。 聪明的人会使用以下数据字典视图:【USER_ARGUMENTS】:包含某模式中所有过程和函数的参数。 【USER_DEPENDENCIES】:包含你拥有的对象间依赖。这个视图最常被Oracl...
使用PL/Scope分析PL/SQL代码

使用PL/Scope分析PL/SQL代码

使用PL/Scope分析你的PL/SQL代码从11g开始Oracle引入了PL/Scope 用于编译器收集PL/SQL程序单元的所有标识符(变量名、常量名、程序名等)。 收集到的信息可通过一系列静态数据字典视图获取。 可帮助我们了解标识符的声明,定义,引用,调用或赋值以及所在源代码的位置。使用PL/Scope, 开发者可以执行复杂的代码分析。1、启用 Enabling PL/ScopeALTER SESSION SET plscope_settings="...
在PL/SQL中使用日期类型

在PL/SQL中使用日期类型

在PL/SQL中使用日期类型之前的文章介绍了在PL/SQL中使用字符串和数字了下。毫无疑问,字符串和数字很重要,但是可以确定的是没有哪个应用不依赖于日期的。Oracle使用由字符串索引的二维数组 http://www.linuxidc.com/Linux/2015-07/120602.htm你需要记录事件的发生事件,人们的出生日期等等很多。通常的使用方式是:1)声明日期变量和常量2)使用内建函数显示和修改日期值3)执行日期相关计算日期类型比字符串或数字更复...
CentOS7 (64位) 下QT5.5 连接MySQL数据库(driver not loaded)

CentOS7 (64位) 下QT5.5 连接MySQL数据库(driver not loaded)

用qt连接MySQL需要共享库 libqsqlmysql.so的驱动,路径在plugin/sqldrivers目录下,乍看已经可用了,其实不然。用ldd命令分析一下,libmysqlclient_r.so.16 => not found ,后明显libmysqlclient_r.so.16 缺少另一个共享库,他们是依赖关系,解决了这个问题qt才能真的连接到mysql数据库。而我的/usr/lib64/下的共享库版本比较高是libmysqlclient...
MySQL 调优和使用必读

MySQL 调优和使用必读

MySQL 应该是最流行了 WEB 后端数据库。WEB 开发语言最近发展很快,PHP, Ruby, Python, Java 各有特点,虽然 NOSQL 最近越來越多的被提到,但是相信大部分架构师还是会选择 MySQL 来做数据存储。MySQL 如此方便和稳定,以至于我们在开发 WEB 程序的时候很少想到它。即使想到优化也是程序级别的,比如,不要写过于消耗资源的 SQL 语句。但是除此之外,在整个系统上仍然有很多可以优化的地方。1. 选择合适的存储引擎: ...
ORA-01113问题的简单分析

ORA-01113问题的简单分析

在启动数据库的时候,open阶段总是可能出现各种各样的问题,比如让人胆战心惊的错误。ORA-01113: file 1 needs media recovery自己留意了一下,其实还是有蛮多的场景会出现这个问题,有些细节可能没有注意到就会出现这个问题,比如我们重建控制文件的时候。在重建控制文件之前做了shutdown abort的操作。SQL> shutdown abortOracle instance shut down.SQL> start...
基于时间点的不完全恢复的例子

基于时间点的不完全恢复的例子

说到不完全恢复,一般有三种场景,基于时间点的不完全恢复,基于scn的不完全恢复,基于cancel的不完全恢复。三种情况都是不完全恢复采用的方式,而不完全恢复都是在完全恢复的过程中出现了这样那样的错误,数不胜数,基本就是归档,redo损坏丢失,控制文件丢失,备份的问题,手工失误等等。我们可以举一个不完全恢复的案例,其实在实际操作的过程中还是有一些值得总结和学习的地方。第一步准备基本的数据。目前我们可以看到在表空间data上只有一个表new_recoverSQ...
归档模式下四种完全恢复的场景

归档模式下四种完全恢复的场景

在数据的备份恢复中,基本都在使用rman来做了,但是从数据库的内部原理来说,对于介质恢复,其实还是做两件事,restore和recover.restore是一个类似物理文件的复制,而recover则在数据库后台根据scn做相关的数据恢复。在归档模式下,一般有下面四种场景可以做完全恢复,当然前提还是在有备份的情况下。我们可以不依赖rman来手工完成备份恢复的这些过程。因为手工的过程其实也不复杂。手工备份恢复,那么备份就是热备了。如果连归档没开,就会报出下面的...
Oracle 10g,11g中的数据库克隆安装

Oracle 10g,11g中的数据库克隆安装

有时候在很多工作环境中,如果彼此几个机器的配置相似,我们就可以不用一遍又一遍的安装数据库软件了,我们可以为了更快的完成安装工作,在静默安装,图形安装的选择之外,还有克隆安装。不过在Oracle 10g,11g的版本中还是存在一定的差别。虽然方法有差别,但是思路都是一致的。我们可以从源环境中直接把ORACLE_HOME给打个包,在目标环境解压即可。这个时候尽管你去尝试sqlplus,exp这些工具也能用,但是还是存在很大的风险,毕竟别把它当成绿色版的。出了问...
Oracle 10g修改SGA_TARGET

Oracle 10g修改SGA_TARGET

在Oracle10g中,Oracle引入了sga_target初始化参数,进而实现了 ASMM(Automatic Shared Memory Management),即让设置一个SGA的目标值以及SGA的最大值,数据库来动态调整其中的各个组件,如Database buffer cache、Shared pool等等。从使用的角度来说ASMM的出现极大地简化了Oracle内存初始化参数的设置,在ASMM的使用上高级DBA和初学者不会有太大的差别;然而,AS...
Oracle 11g维护分区(四)——Exchanging Partitions

Oracle 11g维护分区(四)——Exchanging Partitions

交换分区你可以通过交换数据段将一个分区(或子分区)转化为一个非分区表,也可以将一个非分区表转化为一个分区表的分区(或子分区)。你也可以将一个哈希分区表转化为一个复合哈希分区表的一个分区,或者将一个复合哈希分区表的一个分区转化为一个哈希分区表。类似的,你可以将一个【范围|列表】分区表转化为一个复合【范围|列表】分区表的一个分区,或者将一个复合【范围|列表】分区表的一个分区转化为一个【范围|列表】分区表。当你有一个需要将非分区表转化成一个分区表的分区的应用时,...
OS X编译安装MariaDB

OS X编译安装MariaDB

MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可 MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品。很多开发环境需要我们安装数据库,随着mysql的日渐衰弱,更多的开发环境使用mariadb作为数据库,而mariadb数据库目前没有OS X的release版本,所以我们需要手动编译安装修改代码由于mariadb本身使用了tokudb的上游代码,而tokudb目前尚未有...
Oracle教程:ORA-25153 临时表空间为空,ORA-01652 无法通过128

Oracle教程:ORA-25153 临时表空间为空,ORA-01652 无法通过128

写了一个复杂的select语句,突然Oracle就报了:ORA-25153 临时表空间为空,这个错误,于是网上查了下,发现了如下解决方法:创建一个新的临时表空间。首先要有system权限,登录进去后,第一步,创建一个表空间,如下,引号中的d是盘符,oracleoradatatestdbtemp01是文件名称,100m是大小,temp01是临时空间名称,可修改。create temporary tablespace temp01 tempfile "d:or...
Oracle教程:Oracle中查看DBLink密码

Oracle教程:Oracle中查看DBLink密码

dblink在数据库中使用是比较多的,简单方便。不过随着Oracle安全机制的加强,普通用户登录只能看到,用户名以及连接字符串。那么dblink密码如何查看呢?很简单,需要sys账户登录后:SELECT * FROM SYS.link$;这样,就可以看到dblink的详细信息,也可以看到密码了。更多Oracle相关信息见Oracle 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=12本文永久更新链接地址...
Oracle教程:Oracle中kill死锁进程

Oracle教程:Oracle中kill死锁进程

Oracle中对于访问频率很高的包,存储过程或者函数,会引起死锁。对于用到了死锁的对象的脚本都会无法运行,造成卡死,或者报异常:打开的连接太多。这时需要使用dba权限账户去kill掉死锁的对象。使用alter system kill session 死锁对象的ID;执行如下sql,查找出死锁的ID,并将alter语句拼接好:select Distinct "alter system kill session "||chr(39)||b.sid||","||...
Oracle中纯数字的varchar2类型和number类型自动转换

Oracle中纯数字的varchar2类型和number类型自动转换

使用过一个关联查询,两个表的字段定义了不同的类型。一个字段是varchar2类型,另一个字段是number类型,内容如下:"00187"和187。在使用中发现会自动将varchar2类型转换为number,即187和187。效果与to_number()一样。专门写了两个sql测试了下,如下:select case when "0110" = 110 then "true"else "false"endfrom dual;select case when t...
Redis命令执行全过程

Redis命令执行全过程

这个问题说简单也很简单,无非就是客户端发送命令请求,服务器读取命令请求,然后是命令执行器查找命令实现,执行预备操作,调用命令实现函数,执行后续工作。但是我们想要了解的不能简简单单的就是这些。下面我们详细的来分析一下Redis命令执行的全过程。发送命令请求但用户通过客户端输入一个命令请求的时候,客户端首先会对用户输入的命令请求进行一个格式转换,转换成协议格式,然后通过连接到服务器的套接字把这个已经格式化的命令发送给服务器(服务器是通过套节字和客户端或者是其他...
Redis命令小细节

Redis命令小细节

Redis命令小细节1. setsetnxsetexset 将字符串 value的值关联到key ,如果key已经存在,那么覆盖原来的,如果不存在,那么就创建setnx 将key的值设置为value,当且仅当key不存在的时候,如果key已经存在,是设置不成功的。SetEx是设置一个带生存期限的key,通过下面,我们可以发现,setex的参数顺序是,key time value,同时,需要注意的是,setex和set一样,如果key不存在,那么创建,如果k...
<< 871 872 873 874 875 876 877 878 879 880 >>