-
Jun24
Oracle 10g 手动建库
Posted in Database, 870 views
-
本文系转载,原作者不详
在Oracle中建库,通常有两种方法。一是使用Oracle的建库工且DBCA,这是一个图形界面工且,使用起来方便且很容易理解,因为它的界面友好、美观,而且提示也比较齐全。在Windows系统中,这个工具可以在Oracle程序组中打开(”开始”—“程序”—“ Oracle - OraDb10g_home1”—“ Configuration and Migration Tools”—“ Database Configuration Assistant”),也可以在命令行(”开始”—“运行”—“cmd”)工具中直接输入dbca来打开。另一种方法就是手工建库,这也就是下面所要讲的内容。
手工建库比起使用DBCA建库来说,是比较麻烦的,但是如果我们学好了手工建库的话,就可以使我们更好地理解Oracle数据库的体系结构。手工建库须要经过几个步骤,每一个步骤都非常关键。它包括:
1、 创建必要的相关目录
2、 创建初始化参数文件
3、 设置环境变量Oracle_sid
4、 创建实例
5、 创建口令文件
6、 启动数据库到nomount(实例)状态
7、 执行建库脚本
8、 执行catalog脚步本创建数据字典
9、 执行catproc创建package包
10、 执行pupbld
11、 由初始化参数文件创建spfile文件
12、 执行scott脚本创建scott模式
做完了以上的步骤之后就可以使用“SQL>alter database open;”打开数据库正常的使用了。下面,我将具体地把以上的几个步骤用实验展开来讲。 Read more...
-
No Comments » 10g create database oracle 建库 手动
-
Jun22
ubuntu9下flock与输入法的不兼容问题
Posted in Linux, 501 views
-
升级到ubuntu9后,在flock中无法调出输入法,用下面这个方法可以解决问题
编辑flock脚本,在前端添加一行:
export GTK_IM_MODULE=xim
保存退出
Blogged with the Flock Browser -
No Comments »
-
May18
为Blog添加了Picasa相册插件
Posted in 未分类, 506 views
-
这个插件叫做KPICASA_GALLERY,使用非常简便。
- Unzip the archive to your
wp-content/plugins/folder. - Activate the plugin through the
Pluginsmenu in WordPress - Go in the
Optionsmenu and selectkPicasa Gallery. Set your parameters. - Create post or a page with
KPICASA_GALLERYas the only content. - Browse to that post or page, voilà!
若遇到“Error: kPicasa Gallery tried to connect to Picasa Web Albums using file_get_contents() and failed. Your web host is probably blocking outgoing requests”的问题,请检查:
- 插件设置中Picasa用户名是否正确
- php.ini中allow_url_fopen是否开启
- 对外网络是否连通
- Unzip the archive to your
-
2 Comments » Gallery Picasa 插件 相册
-
May06
断开windows共享连接
Posted in Program, 591 views
-
当通过windows共享访问其他机器后,如果不重启、不注销,windows会保持这个共享的连接状态,再次访问这个共享的时候不需要提供密码。
有时我们并不希望别人可以不用密码就访问共享,可以用net命令来断开连接。
如:
net use \\192.168.1.1\IPC$ /del
net use * /del
-
No Comments » net windows 共享 断开
-
Mar20
ORA-01555错误
Posted in Database, 564 views
-
ORA-1555错误简单的说就是针对一个数据块产生一致读时发生了错误。一致读就是指ORACLE利用回滚段来临时重构一个和事务或查询开始时的块状态相同的快照块的过程。如果一个块改变了多次,可能就会有多个快照块的。
一个事务或查询开始执行时,ORACLE会产生一个SCN来记录这个开始时刻点,这个SCN也就叫做SNAPSHOT SCN。ORACLE仅仅看基于SNAPSHOT SCN的快照记录。如果块中有活动的事务或BLOCK SCN> SNAPSHOT SCN时,就产生了一致读。如果是没有活动的事务但没有产生COMMIT SCN的块 ,先产生DELAY BLOCK CLEANOUT,再比较COMMIT SCN与SNAPSHOT SCN的大小,如果COMMIT SCN小于SNAPSHOT SCN则直接使用该块,否则要产生一致读。产生ORA-1555的可能情况:
1 一个长时间运行的查询,并同时针对查询需要的块有DML处理(主要是update和delete)
2 当查询和插入并发时
3 延迟块清除
4 交叉fetch和commit
5 回滚段发生错误情况1 一个长时间运行的查询,并同时针对查询需要的块有DML处理(主要是update和delete)
当一个查询开始之后,正好某一个update更改了其中的一个记录,当查询扫描到该记录时,就需要一致读,回滚空间中去查找原值。如果这个查询的时间非常长,而那条记录修改之后,很快就被提交了,导致回滚空间中的记录可以被清除,并且这个数据库事务本身也比较多,回滚空间的覆盖比较块,在查询结束之前,回滚段中的记录空间就被新的记录覆盖占用了,导致查询找不到原值,从而产生ORA-1555错误。Solution:
1、业务控制,禁止对同一个表的长时间查询和更新处理同时进行,要分开执行
2、增大回滚段的大小
3、增加回滚段的个数
4、不使用OPTIMAL选项,已经被使用的空间就不会很快收缩回来,可以使commit之后的记录保持尽可能长的时间
5、推迟对DML语句的COMMIT
6、优化查询语句,比如并行查询,目的是减小查询的时间
7、为要查询的表建立只读SNAPSHOT,这样对表记录的修改就不会影响到查询,但该表不能是太大的表情况2 当查询和插入并发时
一般情况下,当我们查询一个表,同时对这个表作插入,这时是不需要一致读的。当然这种情况下也不可能产生ORA-1555错误。
当作全表扫描的时候,oracle会扫描所有位于HWM之下的空间,而对于HWM之上的空间将忽略。也正因为如此,当我们插入的数据位于HWM之下的时候,如果同时还有例如全表扫描这部分空闲的空间,就会产生一致读,就有可能会导致ORA-1555错误。特别是在VLDB和OPS系统中,因为在这些系统中,很多时候都会对表作pre-allocate,当作了预分配之后,如果作一次大批量的delete,将会有非常多的可用空间位于HWM之下。
Solutions:
1、情况1的所有解决方法这里同样适用
2、不要预分配区(pre-allocate extent)
3、使用tuncate来删除表记录,使HWM收缩。
4、使用直接路径选项导入数据,使插入的数据在HWM之上。情况3 延迟块清除
关于延迟块清除的概念,可以参考后面的附录。
Solution:
1、使用oracle并行服务器OPS,将DML操作分割到不同的实例上执行
2、在批处理中使用SET TRANSACTION USE ROLLBACK SEGMENT为事务单独指定一个回滚段。
3、可以在DML之后,立即执行一个全表扫描和analyze indexes来强制立即进行块清除。情况4 交叉fetch和commit
这种比较典型的情况是在一个过程中使用了如下的结构:
cursor c1 is select * from bigemp;
begin
for c1rec in c1 loop
update mydual set a=a;
commit;
end loop;
end ;Solution:
1、检查过程,避免这种交叉提取和提交的情况出现。
2、延迟commit
3、在查询语句中,增加" order by 1 "的语句,这样会在临时段中保留ORDER BY的结果,可以避免一些一致读。情况5 回滚段发生错误的解决方法:
由这种原因导致的ORA-01555错误是极少数的。一般情况下,也只有在那些不支持大文件的操作系统会发生这种情况。
Solution:
1、检查init.ora中的参数文件,show parameter CORRUPT,可以将结果提交给ORACLE SUPPORT SERVICES。如果这样的参数存在,建议重 建数据库。
2、检查操作系统是否支持ORACLE。检查操作系统的错误日志和ORACLE的错误日志。
3、向Oracle Support Services寻求帮助。补充情况6:
在oracle 9i之后,使用auto的undo,就很少出现ORA-1555错误了,但是也不能完全排除这个错误,比如以下错误:
ORA-01555 caused by SQL statement below (Query Duration=11952 sec, SCN: 0x0842.1a1d737c)
这种情况下,主要是查询的时间超长,超过了undo_retention设置的时间10800秒,从而产生前面的情况1和情况2的错误。
Solution:
主要的解决方法,还是优化查询,包括语句的优化和索引的优化。 -
No Comments » 1555 ora- rollback
-
Mar03
10g logmnr 无法挖掘DML的解决
Posted in Database, 766 views
-
Oracle 10g的logmnr做了一些改变,在默认状态下,无法挖掘到如delete、insert、update这样的DML语句,而当我们误删数据的时候,正需要用logmnr挖掘DML来进行恢复。
Oracle提供了一条语句来开启logmnr对DML的支持
alter database add supplemental log data (primary key, unique index) columns;
-
2 Comments » dml logmnr oracle 恢复
-
Feb18
putty for windows源码编译中的几个问题
Posted in Program, 875 views
-
开发工具
可选VC或DEV-C++,putty提供了这2个工具的工程文件,非常方便。
编译过程中的错误
遇到windows.c中的FLASHWINFO结构为定义,在google中得知此结构的信息.
在windows.c文件开头加入如下信息:
#define FLASHW_STOP 0
#define FLASHW_CAPTION 1
#define FLASHW_TRAY 2
#define FLASHW_ALL (FLASHW_CAPTION|FLASHW_TRAY)
#define FLASHW_TIMER 4
#define FLASHW_TIMERNOFG 12typedef struct _FLASHWINFO {
UINT cbSize;
HWND hwnd;
DWORD dwFlags;
UINT uCount;
DWORD dwTimeout;
} FLASHWINFO;在winstore.c开头加入:
#define SHGFP_TYPE_CURRENT 0
找不到htmlhelp.h
这个头文件没有加在源码包中,google一下下载个添加到工程里就ok
-
No Comments » putty 编译
-
Feb06
Mysql导入慢的解决方法
Posted in Database, 958 views
-
MySQL导出的SQL语句在导入时有可能会非常非常慢,经历过导入仅45万条记录,竟用了近3个小时。在导出时合理使用几个参数,可以大大加快导入的速度。
-e 使用包括几个VALUES列表的多行INSERT语法;
--max_allowed_packet=XXX 客户端/服务器之间通信的缓存区的最大大小;
--net_buffer_length=XXX TCP/IP和套接字通信缓冲区大小,创建长度达net_buffer_length的行。注意:max_allowed_packet和net_buffer_length不能比目标数据库的设定数值大,否则可能出错。
首先确定目标库的参数值
mysql>show variables like 'max_allowed_packet';
mysql>show variables like 'net_buffer_length';根据参数值书写mysqldump命令,如:
E:\eis>mysqldump -uroot -p eis_db goodclassification -e --max_allowed_packet=1048576 --net_buffer_length=16384 >good3.sql之前2小时才能导入的sql现在几十秒就可以完成了。
-
No Comments » imp max_allowed_packet mysql mysqldump 导入 慢
-
Feb04
远程数据库管理三思而后行
Posted in Database, View, 564 views
-
是否要选择一个远程数据库管理员来弥补或满足你对数据管理的需求,必须三思而后行。
目前远程数据库管理的市场相当饱和。但是,并不是说无论哪个企业都适合享受这项服务的,而且和大部分人想的恰恰相反,远程数据库管理和现场数据库管理并不一定就是一个非此即彼的概念。对于部分企业来说,让远程数据库管理员辅助内部数据库管理员也是可行的。
总的来说就是要看企业有些什么具体需求。但是,在考虑使用远程数据库管理员时,有不少的问题需要紧记,例如服务涉及的范围、服务商数据中心的安全性等等。
著名市场调研公司Ptak, Noel & Associates的分析师Jasmine Noel认为,需要考虑的关键问题是了解远程服务供应商的管理流程是不是比你自己本身的管理流程更容易定义、更易于管理、更自动化、更方便审计等等。如果远程服务供应商的流程没有想象中的精简高效,那么就不会真正的做到节约成本,因为你得到的不是真正的数据库管理专家,只是一些自动生成报表和非常基本的故障排除等远程数据库监测服务而已。
Jasmine Noel还补充道,还需要考虑的问题就是远程服务供应商在遇到涉及到“数据库-应用程序-网络”三者之间互作和链接方面的问题时,能够排除多复杂的故障。记住你的数据库不仅仅是用来存储数据的罐头,而是要把数据源源不断地供给网络应用。当数据库、应用程序和网络基础设施等都完美无缺而端对端服务性能却下降时究竟出现了什么问题呢?这就是留待远程服务供应商解决的。
目前,有很多公司都可以提供远程数据库管理的业务。其中一些专营供应商包括The Pythian Group、dbaDirect和Ntirety。还有包括甲骨文、IBM和Electronic Data Systems等较大型的供应商也提供此类业务。海外业务供应商则包括Satyam Computer Services、Consultancy Services和Wipro等。
市场分析公司Forrester Research的分析师Noel Yuhanna认为,规模较小的专营厂商倾向于纯粹地把重点放在远程数据库管理上,适合于管理容量小于500GB的数据库;而大型厂商则可以为TB级的数据库提供支持。
Yuhanna表示,企业在考虑使用远程数据库管理服务前,首先得把自己的数据库好好整理好好归档,如果你的车本身已经坏掉了,你可别指望远程数据库管理供应商帮你把车修好了。你必须确保你的数据库没有任何问题能够正常运行,确保它可以和其他数据库和应用程序顺利集成。
远程数据库管理供应商Ntirety公司一般会给客户指派一支由五到七名数据库管理员组成的团队。Ntirety的CEO表示该公司致力于将很多非内部操作的进程业务自动化。例如,如果客户要求花费三个工时来创建备份文件的日志,Ntirety的远程数据库管理员能够编写脚本来自动完成同样的工作,每周可以节省15工时。
有效的远程数据库管理还需要远程数据库管理员能够深入了解客户企业的应用和流程。The Pythian Group的总裁兼创始人Paul Vallee认为,在这个方面,远程数据库管理员和新聘请的企业内部数据库管理员没有太大区别。Paul Vallee表示,在接受客户任务的第一天,他们会让技术专家深入了解客户企业的具体应用和业务流程,就像新丁一样。
但是,有时候正是这些业务流程和数据的性质让一些公司对将数据库管理职能外包望而却步,成为这些企业享受这项服务的绊脚石。例如,在金融服务行业里,企业必须能够确保管理其数据的服务供应商是值得信赖的。
远程数据库管理对大部分企业来说可行,但并不是所有的企业都适用,有时候更像是一种建立监控和开发内部功能的手段,在很大程度上在安全、隐私和端对端控制方面有严格的功能上的要求。
-
No Comments » dba remote 数据库管理 远程
-
Jan06
如何导出用户下所有的sequence
Posted in Database, Script, 922 views
-
Oracle的EXP工具只有在全用户导出时,才会包含secquence。在单独需要sequence时,可以用spool和dbms_metadata包来实现。
在sqlplus中,首先执行这个脚本
set long 90000
set feedback off
set pagesize 0
set heading off
spool get_seq_ddl.sql
select 'select dbms_metadata.get_ddl('''||t.object_type||''',''' ||t.object_name||''') from dual;' from user_objects t where t.object_type='SEQUENCE';
spool off再运行新生成的sql脚本,将DDL输出到seq_ddl.sql
spool seq_ddl.sql
@get_seq_ddl.sql
spool off -
1 Comment » dbms_metadata ddl sequence

Comments