Linux环境下的一个rman备份的实例脚本
背景:目标数据库192.168.1.172 Redhat Linux AS 3.0 Oracle 9.2.0.6 恢复目录数据库 192.168.1.244 Windows2000 Oracle 9.2.0.1 rman/rman [@more@]1、配置catalog恢复目录 create tablespace ts_rman datafile='d:oratestrman.dbf' size=100M; create user rman identified by rman default tablespace ts_rman; grant connect ,resource , RECOVERY_CATALOG_OWNER to rman; 连接到目标数据库和
rman技术速查手册
1、配置catalog恢复目录 create tablespace ts_rman datafile='d:oratestrman.dbf' size=100M; create user rman identified by rman default tablespace ts_rman; grant connect ,resource , RECOVERY_CATALOG_OWNER to rman;[@more@] 连接到目标数据库和CATALOG数据库 rman target / catalog rman/rman@catalog_tnsname 创建CATALOG用户的表 rman>create catalog 登记目标数据库: rman>regis
在sqlplus下格式化输出查询结果集
在sqlplus下经常会遇到这种问题:查询结果中包含有许多列,在一行内不能完全显示sqlplus就自动换行,导致输出非常混乱,可读性很差,Tom写了个以列形式显示每行的程序,我稍稍改动了一下,增加了显示每行行号。[@more@]该程序中使用了调用者权限属性,即调用者调用该过程查看的表是调用者自己的表,而不是过程定义者所属的表注意:最好把输出缓存设置得大一些,免得报错 ORA-20000: ORU-10027: buffer overflow,limit of 2000 bytesset serveroutput on size 10000000CREATE OR REPLACE PROCEDURE print_table( p
oracle9i下配置企业管理器
1、运行企业管理器配置助理创建EM repository Windows平台: - 选择菜单 Programs > Oracle-OraHome92 > Configuration and Migration Tools > Enterprise Manager Configuration Assistant - 在命令行中输入: emca [@more@] Linux平台: [oracle@sms oracle]$ emca2、启动Oracle Management Server Windows平台: a. 双点[控制面板/Contro
在Oracle中通过优化器计划稳定性来优化应用程序
dba在实际工作中经常会遇到这种情况:应用程序开发者写得SQL效率极其低下,dba想通过给sql语句添加提示(hint)的方式来提高效率,但是又不允许直接对应用程序进行修改。[@more@]对此Oracle从8i开始就提供了优化器计划稳定性(Optimizer Plan Stability)来完成这一功能,可以对当前应用程序中的SQL创建最优的执行计划存储概要。下面就通过一个例子来描述这一功能的具体实现:(Oracle 9.2.0.6)SQL> create table aaa as select * from dba_objects where object_id is not null;Table createdSQL> alter table aaa modify object_id not
Oracle9i中v$sql、v$sqlarea、v$sqltext、v$sql_plan的联系与区别
对于同一个SQL语句,如果在不同环境下使用了不同的优化器目标的情况下,会有不同的执行计划,这样就要求分别有一个独立的游标(即子游标)来区别出每一种情况下的不同的运行行为。[@more@]Oracle用v$sqlarea中一行保存同样语句的SQL,并用字段version_count的值来指出子游标的个数,而在v$sql里面为每个子游标保留了一个单独的行。两个表可以通过字段address和hash_value相互对应。例如下面例子:SQL> select address,hash_value,sql_text,version_count 2 from v$sqlarea where sql_text like 'select value$ from sys.pr
基于角色的安全性和显示grant语句的区别
我们经常会遇到这种情况:a用户把自己的表demo权限授予一个角色,再把这个角色授予用户b,用户b可以在sql语句中访问a.demo,但是在创建视图、存储过程中用到a.demo却报错,必须要显示的用语句grant all on a.demo to b; 才能创建这些对象[@more@]原因是对于一个会话来说其状态可以打开或关闭,而授权却在所执行的grant后被永久存储到数据字典中。在DDL语句创建包、存储过程、存储函数、触发器和视图等数据库对象时,当前用户所拥有的角色都会被禁用。对于命名PL/SQL对象的情况,会报错:"ORA-01031:insufficient privileges",对
shell中使用重定向标准输入的错误处理一例
有如下shell程序demo.sh:#!/bin/shsqlplus -S demo/demo <<EOF select count(*) from dual;EXITEOF date[@more@]结果在linux下执行时,date命令没有执行,即在第二个EOF后就退出shell了。然后手工重写了这个shell(原来的是从另一个文件拷贝来的)demo2.sh,结果执行没有问题。接着用dos2unix命令转化该shell文件,希望是dos格式问题导致的,结果执行还是一样,date还是没有执行。怀疑是不可见字符导致的,将这两个shell文件传到windows下,用UltraEdit打开,比较其16进制,结果发现demo.sh下的EOF后多了空格'20',去除掉空格后执行就
Oracle下配置透明网关访问MS SQL SERVER
配置环境:Oracle服务器:192.168.1.218 Oracle9.2.0.1 for Windows SID:lrdbMS SQL服务器:192.168.1.244 SQL SERVER 2000 要访问的库:lfkf[@more@]1、安装 TRANSPARENT GATEWAY 选件(FOR MSSQL) 安装完成了以后有这样一个目录 $ORACLE_HOMEora90tg4msql2、 配置 LISTENER.ORA, 在SID_LIST_LISTENER下添加: (SID_DESC = (GLOBAL_DBNAME = sql2000) # 可自己命名 (PROGRAM = tg4msql) &n
删除重复数据的一种高效的方法
表demo是重复拷贝自dba_objects,有88万左右,不重复的是27323,没有索引方法一:delete from demo a where a.rowid <> (select max(rowid) from demo b where &nbs
linux下的automounter
使用mount命令挂接某个物理设备后,必须用umount卸载它。如果这个物理设备是个软盘或者活动硬盘,在没有umount的时候就移走了,系统向其写入的时候会出现问题。这个问题可以通过Automounter解决。如果automounted的目录在特定的时间段内没有被访问或者使用,将会自动unmount. [@more@]Automounter 的后台进程daemon叫做 autofs.他可以自动mount一个目录,也可以经过一定时间后自动umount它。相应的配置文件是/etc/auto.master 和 /etc/auto.misc同时要保持/misc 目录为空,linux会在这个目录上配置 automounts。1)/etc/auto.master将文件中
ORACLE临时表和SQLSERVER临时表异同
SQL SERVER临时表 临时表与永久表相似,但临时表存储在 tempdb 中,当不再使用时会自动删除。有本地和全局两种类型的临时表,二者在名称、可见性和可用性上均不相同。[@more@]本地临时表的名称以单个数字符号 (#) 打头;它们仅对当前的用户连接是可见的;当用户从 Microsoft® SQL Server™ 2000 实例断开连接时被删除。全局临时表的名称以数学符号 (##) 打头,创建后对任何用户都是可见的,当所有引用该表的用户从 SQL Server 断开连接时被删除。 例如,如果创建名为 employees 的表,则任何人只要在数据库中有使用该表的安
谁制造了品牌盗版DVD?
奇观:盗版DVD贴防伪 老程是另一种游商。他背着一只鼓鼓囊囊的大挎包,每天定时出入于某些媒体、高校、研究所和国家机关。他的老顾客们每星期都等着老程的光顾,问一句:“今天带了什么新盘?” [@more@]老程会指着光盘包装上的一些标记诚恳地向老主顾们推荐: “这些都是品牌盗版!质量没问题。” “盗版?不就是质量差,老有马赛克,有时候放不出来,但便宜吗?”他的一位新顾客说。 这些评语,是上世纪90年代初从盗版软件开始,盗版给许多人留下的印象。但退伍军人老程说:“有些盗版现在很正规,形成了几种大品牌,丽晶、
使用PL/SQL模拟SQLLOAD的功能
原文出自Thomas Kyte《expert one-on-on》下面这个存储过程实现了从文件加载数据到数据库表的过程注意:要设置初始化参数utl_file_dir,在下面例子中其值为/home/oracle/work/data[@more@]首先创建一个错误信息表:create table badlog( errm varchar2(4000), data varchar2(4000) ); &nb
从mysql中将数据导入到oracle数据库中
这两天在折腾从mysql倒数据到oracle中,下面是一些步骤环境:Mysql 4 => Oracle 9.2.0.41、从Mysql中导出csv格式的数据[@more@]mysqldump -u mysql -p -T./ --fields-terminated-by=, --fields-enclosed-by=" mms send_done_log 输入密码:password 2、从导出的send_done_log.sql文件中找到建表语句,将其修改成符合oracle语法的建表语句 注意:Mysql导出空是"N",所以Mysql中可以为空的字段在oracle中都要改成varchar2类型3、使用
使用sqlldr装载数据的简单例子
创建测试表:create table DEMO( DEPTNO NUMBER(2) not null, DNAME VARCHAR2(14), LOC VARCHAR2(13));[@more@]例子1:装载定界数据类型为csv(Comma-Separated Value)C:sqlldr userid=scott/tiger control=load.ctl data=data.csv direct=yload.ctl内容如下:LOAD DATA  
imp时发生ora-01659的错误处理
今天从一个8i的库中导出一个大表,dump大约200M左右,然后导入9i的库,结果报错:[@more@]import done in ZHS16GBK character set and UTF8 NCHAR character setexport server uses US7ASCII NCHAR character set (possible ncharset conversion). importing SMS's objects into LINKRICH_MMSIMP-00017: following statement failed with ORACLE error 1659: "CREATE TABLE "T_MPN_OUTDATE" ("MOBILE" VARCHAR2(11), "HAPPEN_TIME" VARCHAR2" "(8), "PROV" VARCHAR2(5)
关于当前模式current_schema的切换问题
我们有时会在用户A下调用用户B下的存储过程,去用户B下的表的数据,但是这要求用户A拥有B下相关表的权限,并且在处理表时指定好表的模式通常的做法是在写存储过程时写出表的模式,例如:SCOTT.DEPT,但是有时存储过程没有这样写,而又不想改程序,还有一个方法就是在调用存储过程前设置current_schema[@more@]例如,把scott.dept的select权限授予hr用户 sqlplus scott/tigerSQL>grant select on dept to hr;然后用hr用户登录sqlplus hr/hrSQL> select count(*) from scott.dept; COUNT(*)---------- &
从Oracle9i中发送电子邮件
Oracle的包utl_smtp提供了从数据库中直接发送电子邮件的功能,这里介绍一下其使用方法网上找到的例子以及Oracle文档中的例子都没有提到authorized的问题,我的测试中使用的是163的免费信箱,发送时老是报错:ORA-20000: Failed to send mail due to the following error: ORA-29279: SMTP 永久性错误: 553 You are not authorized to send mail as <MAIL FROM:demo@163.com>, authentication is required后来在metalink上找到解决方法:要在程序中增加登录smtp服务器的过程![@more@] 测试环境: RedHat AS 3.0 Oracle
好书推荐:亚洲史
《亚洲史》(第四版)是美国历史学家罗兹·墨菲的最重要的著作之一。作者是一位中国历史和地理专家,他对亚洲事务及其历史的研究生涯已逾40年。[@more@]出版前言 亚洲是地球上一个辽阔而又多姿多彩的区域,它有着全球一半以上的人口和同样超过一半的世界历史经历,承载了世界上最古老的文明传统。无疑的,亚洲人及其文化“代表着全人类历史中最重要、最丰富、最多彩的篇章”。 《亚洲史》(第四版)是美国历史学家罗兹·墨菲的最重要的著作之一。作者是一位中国历史和地理专家,他对亚洲事务及其历史的研究生涯