1.建立mysql用户和用户组(不建立貌似不影响安装,但安全性需要重新规划)。 2.编译安装(--prefix=/usr/local/mysql --with-charset=utf8 指定要安装到的目录和要使用的编码)。 3.初始化数据库(mysql_install_db --user=mysql),这个数据库初始化必须要有,菜鸟们很容易忘记,不安装的话mysqld_safe是启不来的,会报一些莫名其妙的错误。 4.启动mysql(mysqld_safe &) mysql>show slave status\G; 以上这两种方法查看的状态更直观一些。 4.以上的第3项几条保证后就可以随意在A上或者B上建立数据库或者建立表格,然后就会在另一台服务器上自动生成相同的库或者表。 5.该方法最适合于需要新建的mysql主从服务器,一般需要仔细配置一次性成功,否则可能比较难以查找问题所在。 给用户做了个虚拟服务集群,vmware 4.3吧 虚拟机中安装liunx redhat 5.3 32位 +oracle 10G 不巧 有台客户机地址与linux冲突 ,结果运行没一会儿,数据库便不能访问了(听用户说unix下没有问题,也不知真的假的)。 因为工作的需要,最近一直在写存储过程。 工作了 3 年,一直都是做管理,也没有正儿八经的去写过存储过程, 这次正好可以好好练习一下。 在这里说一条使用存储过程很重要的理由: 存储过程只在创造时进行编译,以后每次执行存储过程都不需再重新编译,而一般 SQL 语句每执行一次就编译一次 , 所以使用存储过程可提高数据库执行速度。 有时候,我们想查看表,存储,触发器等对象的定语语句,有以下两种方法: 1. 查 all_source 表 2. 用 DBMS_METADATA 包。
SQL> SELECT distinct type FROM ALL_SOURCE; 存储过程(Stored Procedure )是一组为了完成特定功能的SQL 语句集,经编译后存储在数据库中。用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。存储过程是数据库中的一个重要对象,任何一个设计良好的数据库应用程序都应该用到存储过程。 存储过程是由流控制和SQL 语句书写的过程,这个过程经编译和优化后存储在数据库服务器中,应用程序使用时只要调用即可。在ORACLE 中,若干个有联系的过程可以组合在一起构成程序包。
先说下被测系统的基本情况,被测系统是C/S架构,服务器是Linux Kernel 2.6 +PostgreSQL,客户端在XP下。 计划要做的是通过描述性编程实现数据库检查点,个人觉得更灵活一些;不过既然用的是QTP做自动化,那自然要学一下通过QTP自带的检查点功能实现数据库检查点;过程基本清楚,但是涉及到具体细节时就真的磕磕绊绊了;当添加数据库连接时就遇到了小麻烦,要连接的数据库是PostgreSQL,而Windows默认的ODBC里没有PostgreSQL的驱动,所以要先上网下载一个,下载地址如下: 有时我们需要修改数据库的sid和dbname,除了使用rman进行备份恢复之外,也可以通过手工方式修改,主要由两个主要过程完成: 下面演示将数据库sid和dbname由orcl修改为cnhtm的过程: 1、修改实例名(sid) 1.1、检查原来的数据库实例名(sid) oracle@oracle[/home/oracle]> echo $ORACLE_SID 立即执行跟着的方法,并把当前的变量用USING 传进去。 EXECUTE IMMEDIATE 整理了下关于"Oracle数据库提供了几种不同数据库启动和关闭方式",然后,自己就回去就写了个示例. 其中,就出现了1个问题: ORA-12528: TNS:listener: all appropriate instances are blocking new connections 于是到网上就大量的查阅资料,哈哈,好不错,解决方法找到了.其中红色的就是主要解决方法.下面就把我整理的东西给共享下. 接着上一篇Ubuntu 10.10 安装Oracle Client,当我用 sap 当初安装时的用户sapsr3或sys 连接服务时都不能成功 。 sapsr3 是提示 缺乏select any dictionary 权限 , sys 就提示用户密码验无效(实际上是对的),可能也是因为权限问题,不能连接。 基于这两个用户都是系统用到的,还是不直接给其添加权限了,新增一个用户比较妥当。 连到 aix 服务器 现在工作一直都用 Ubuntu 系统了,原来用 widnows 时装过oracle client 连接 SAP 的后台 oralce 数据库。不想再装个 windows来用,决定试试在 Ubuntu下装客户端。 首先到 oralce 官网下载与服务器版本相对应的客户端: 我的本机系统是 Ubuntu 10.10 x86 , 服务器 oracle 10g 10.2.0.2 所以我下的是: 在Linux下使用Python访问MySQL的方法之一是使用MySQLdb module,下面将介绍在Linux下如何安装MySQLdb的过程。 (1)下载MySQLdb 操作系统:CentOS 5.5 (1)安装MySQL 在该操作系统上安装MySQL最方便的方法是使用yum进行安装: [root@localhost yum.repos.d]# yum install mysql-server(有时网络比较慢的话,会花费较多的时间,如何配置本地yum源的方法,我将在另一篇blog上做详细的介绍) (2)查看MySQL是否启动 由于Fedora 14 在我的本本下稳定性出现问题,遂决定改为Ubuntu 10.10,只因为用过该版本一段时间感觉其性能上比较优秀,稳定性也还不错(Linux版本的移情别恋,可以)。在Fedora 14下安装了Oracle 11g R2,于是先行备份了数据库系统安装目录,安装准备目录。数据库保存在其它分区所以不担心安全问题,安装好软件之后恢复一次就可以了。但事情搞到后来变得出乎意料。
产生的原因最大的可能就是更改数据没有提交事务,数据库就将表锁住!所以在更新时不要用select * from a for update这样的语句很容易锁表,可能用select *,t.rowid from t 这样的语句代替,这个也是数据库推荐使用的语句。 解锁的方法: 1、查看锁表进程: 在上班的时候发现orcale的时间格式化和Java的时间格式化有点区别: 例如Java中见一个日期改成时分的格式的字符串可以这样写: SimpleDateFormat sdf = new SimpleDateFormat(); sdf.format("2011-02-27 20:51:03",''HH:MM:ss"); 输出的结果是:20:51:03 Oracle 11G在用EXPORT导出时,空表不能导出。 11G中有个新特性,当表无数据时,不分配segment,以节省空间 解决方法: 1、insert一行,再rollback就产生segment了。 该方法是在在空表中插入数据,再删除,则产生segment。导出时则可导出空表。 今天在虚拟环境下使用Oracle10g_R2配置了ASM自动储存管理技术,感觉oracle的技术实在博大精深,以后要还得多用心去学,记录配置过程如下: 环境介绍: 物理机环境:WIN7专业版32位,3G内存,VMware7.0 work station 虚拟操作系统:CentOS 4.8 64位,1G内存,四块虚拟硬盘,三块为ASM使用,大小为60G,操作下载地址如下: # tar zxvf sqlite-3.3.8.tar.gz 解压完成之后将会在/root目录下生成一个sqlite-3.3.8/子目录,在该目录中包含了编译所需要的所有源文件和配置脚本。SQLite3的所有源代码文件都位于sqlite-3.3.8/src/目录下。在PC环境下编译SQLite3不能通过sqlite-3.3.8/目录下的configure脚本来生成Makefile文件。取而代之的是必须手动修改Makefile文件。在sqlite-3.3.8/目录下有一个Makefile范例文件Makefile.linux-gcc。首先通过下面的命令拷贝此文件并重命名为Makefile: 题外话说完,最近又研究了Redis。去年曾做过一个MemcacheDB, Tokyo Tyrant, Redis performance test,到目前为止,这个benchmark结果依然有效。这1年我们经历了很多眼花缭乱的key value存储产品的诱惑,从Cassandra的淡出(Twitter暂停在主业务使用)到HBase的兴起(Facebook新的邮箱业务选用HBase(2)),当再回头再去看Redis,发现这个只有1万多行源代码的程序充满了神奇及大量未经挖掘的特性。Redis性能惊人,国内前十大网站的子产品估计用1台Redis就可以满足存储及Cache的需求。除了性能印象之外,业界其实普遍对Redis的认识存在一定误区。本文提出一些观点供大家探讨。
Rownum是oracle为每个表附加的一个尾字段,它记录着每一行的行号。Oracle的一个缺陷就是rownum只能和’<’或者’<=’一起使用。如果要求大于等于这可用其他方法。 求薪水最高的前5名 select ename,sal 求薪水的第6至第10位的员工姓名和薪水 最近开发一个J2EE项目,使用的数据库是oracle,测试过程中发现偶尔会有 ORA-01461 can bind a LONG value only for insert into a LONG column 的异常抛出,一开始以为是数据库字段长度不够引发异常,检查后发现只有当插入数据库的字段是中文时才抛出如上异常,如果是英文则完全正常。难道是数据库编码的问题?忙活了半天,最后���现结果还是如一。
Oracle 10g 关于 NLS 的环境变量发生了一点变化: For RDBMS 7.2.x version the variable is called ORA_NLS. For Oracle 8, 8i and 9 variable is called ORA_NLS33. For Oracle 10g the variable is called ORA_NLS10. NLS ‘National Language Support (NLS)’ 从概念我们看出这个参数实际上定义了数据库的存放数据的语言环境,当我们设定一种nls的时候实际上我们是为oracle在存放数据时指定了他的语种所特 有的一些表达形式,比如我们选择chinese,那么它的中文字符如何存放,按什么规则排序,货币如何表示,日期格式也就被设定了。
二:如何查询我们的数据库中到底使用的是什么字符集 忽然有一天,好好的系统报错:ORA-01722 invalid number 环境:Oracle9 + JDBC访问数据库,之前是好的,忽然发现这个错误 后来才知道缘由 1. 代码里面执行了如下SQL语句: select mdn from tablename where mdn=13800000000 把oracle嵌套表的其他功能仔细看了看并做了个简单整理。 oracle提供两种使用嵌套表的方法: */ --创建测试表: CREATE TABLE dept 对SQLite-3.3.8(或者SQLite3.3.12)进行交叉编译,并移植到ARMS3C2410的过程: 要将SQLite3.3.8(或者SQLite-3.3.12)移植到ARM2410开发板上,除了要有底层操作系统的支持外,还必须要有相应的交叉编译工具链。由于ARM2410开发板采用的是ARM-Linux作为底层操作系统,因此需要首先安装ARM-Linux工具链。 1.交叉编译环境建立: 安装cross-2.95.3.tar.bz2交叉编译工具到/usr/arm-linux目录下。 MySQL正式发布5.5.9版本,win下有了msi安装包,Ubuntu还在采用保守的5.1版本,官方网站上有rpm和tar.gz的源码版本,至今还没有ubuntu的安装源,本人对rpm不太感冒,所以只能编译源码安装了,参照网上的编译安装选项,试验了几次,终于成功,做个笔记。 5.5.9编译采用cmake,Ubuntu下只要sudo apt-get install cmake就可以,mysql具体编译选项如下(#后面的复制进去即可): root@ubuntu:~/downloads/mysql-5.5.9# cmake . -DCMAKE_BUILD_TYPE:STRING=Release - DCMAKE_INSTALL_PREFIX:PATH=/usr/local/mysql -DCOMMUNITY_BUILD:BOOL=ON 第一种方式就是使用链接,用“ln –s 新目录 原MySQL目录”命令将新目录链接到原目录位置(如果之前使用的是cp命令,须先删除原MySQL目录后再建立链接)。 第二种方式就是修改配置文件my.cnf,指定datadir和socket的值到新目录。对于服务器而言,最好的方式是使用逻辑卷管理(LVM),就不需要更改目录了,只需要在添加新硬盘后增加MySQL目录所在逻辑卷大小就行了。 使用MySQL常常会出现乱码问题,一般情况下都是因为编码不一致造成,以下提供了MySQL数据编码相关的一些信息,希望会有所帮助。 一、MySQL的编码机制: 1、数据库级别的编码:数据库服务器上允许建立不同编码的数据库,在数据库建立时需要指定编码; 在Oracle中是Long型,在Java中如何进行获取,插入和修改: 网上说可以使用Reader reader = rs.getCharacterStream(1); 获得Long型数据,但是我直接使用ds.getString()来获取并未报错,而且数据库也是9i的,这地方不清楚,还有待研究,先写上 修改Long数据:使用 PreparedStatement pstam = null; 对于关系数据库来说,直接写SQL拉数据在列表中显示是很常用的做法。但如此便带来一个问题:当数据量大到一定程度时,系统内存迟早会耗光。另外,网络传输也是问题。如果有1000万条数据,用户想看最后一条,这时即便有足够的内存,在网络上传输这么多数据也得一两小时吧,恐怕没几个用户有这么耐心等。因此分页是必须的。 现在网上的论坛、博客什么的,基本上都会有分页功能,有些是SQL分页的,有些可能是NOSQL用其它方法分页,都有很成熟的东西了。本文根据我自己的经验,以ORACLE为例,讲下简单的SQL分页和排序问题,对刚接触SQL准备要做分页的人有些帮助吧,大牛们就不必看了。 (1)在“运行”中用 cmd 打开命令窗口,先执行 "sqlplus /nolog",再执行 "conn sys as sysdba"以管理员身份登陆后,执行"alter user sys identified by soft;" 将 sys 用户的密码改为 soft ,问题2解决; (2)再执行 "alter user soctt account unlock;" 即可将 scott 用户解锁,但当用 scott 用户登陆时,如果提示 scott 的密码已失效时,需要重新设置 scott 的密码即可。 今天有个客户咨询在nbu6.5上 备份oracle10g时不能成功,报错code是6,查看了一下oracle的日志显示如下: RMAN-12001: could not open channel ch01 |
内容分类
|