-
左/右联接查询区别
2010-04-06 11:33:53
2.操作实例表A记录如下:
aID aNum
1 a20050111
2 a20050112
3 a20050113
4 a20050114
5 a20050115表B记录如下:
bID bName
1 2006032401
2 2006032402
3 2006032403
4 2006032404
8 2006032408
实验如下:
1.left joinsql语句如下:
select * from A
left join B
on A.aID = B.bID结果如下:
aID aNum bID bName
1 a20050111 1 2006032401
2 a20050112 2 2006032402
3 a20050113 3 2006032403
4 a20050114 4 2006032404
5 a20050115 NULL NULL
(所影响的行数为 5 行)结果说明:
left join是以A表的记录为基础的,A可以看成左表,B可以看成右表,left join是以左表为准的.
换句话说,左表(A)的记录将会全部表示出来,而右表(B)只会显示符合搜索条件的记录(例子中为: A.aID = B.bID).
B表记录不足的地方均为NULL.2.right join
sql语句如下:
select * from A
right join B
on A.aID = B.bID
结果如下:
aID aNum bID bName
1 a20050111 1 2006032401
2 a20050112 2 2006032402
3 a20050113 3 2006032403
4 a20050114 4 2006032404
NULL NULL 8 2006032408
(所影响的行数为 5 行)
结果说明:
仔细观察一下,就会发现,和left join的结果刚好相反,这次是以右表(B)为基础的,A表不足的地方用NULL填充.
3.inner join
sql语句如下:
select * from A
innerjoin B
on A.aID = B.bID结果如下:
aID aNum bID bName
1 a20050111 1 2006032401
2 a20050112 2 2006032402
3 a20050113 3 2006032403
4 a20050114 4 2006032404结果说明:
很明显,这里只显示出了 A.aID = B.bID的记录.这说明inner join并不以谁为基础,它只显示符合条件的记录. -
服务器的备份
2010-03-23 21:56:12
服务器冗余备份原理:
DRBD (Distributed Replicated Block Device) 是 Linux 平台上的分布式储存系统。其中包含了核心模组,数个使用者空间管理程式及 shell scripts,通常用于高可用性(high availability, HA)丛集。DRBD 类似磁盘阵列的RAID 1(镜像),只不过 RAID 1 是在同一台电脑内,而 DRBD 是透过网络。它允许您在远程机器上建立一个本地块设备的实时镜像。与心跳连接结合使用,它可打造出高可用性的Linux 集群。
DRBD 是以 GPL2 授权散布的自由软件。 http://www.turbolinux.com.cn/turbo/wiki/doku.php?id=%E7%B3%BB%E7%BB%9F%E7%AE%A1%E7%90%86:drbd%E7%9A%84%E4%BD%BF%E7%94%A8
Heart Bit
-
Unix/Linux之oracle相关shell
2009-10-09 10:44:29
1、执行oracle数据库中的存储过程proc.sh脚本内容(IBM的AIX环境下)
ORACLE_BASE=/oracle;export ORACLE_BASE
ORACLE_HOME=$ORACLE_BASE/product/10.2.0;export ORACLE_HOME
ORACLE_SID=commdb;export ORACLE_SID
$ORACLE_HOME/bin/sqlplus cfa/cfa<<!
exec sp_B_20090827;
exit
!
2、备份文件名后缀为日期对数据库中的表进行exp备份
exp_tab_perday.sh脚本内容(IBM的AIX环境下)
DATE=`date +%Y%m%d_%T`;export DATE
ORACLE_BASE=/oracle;export ORACLE_BASE
ORACLE_HOME=$ORACLE_BASE/product/10.2.0;export ORACLE_HOME
ORACLE_SID=commdb;export ORACLE_SID
$ORACLE_HOME/bin/exp cfa/cfa file=/oracle/dlbk_table$DATE.dmp log=/oracle/dlbk_table$DATE.log tables=cfa_income_ent_new,cfa_income_inst_old,cfa_income_ent_old 3、对exp的用户备份,进行恢复imp_user.sh脚本内容(RedHat AS4环境下)
export ORACLE_HOME=/opt/oracle/product/10g
$ORACLE_HOME/bin/imp cfa/cfa@orcl file=/home/oracle/dlbk_cfa2009-09-12.dmp log=/home/oracle/dlbk_cfa2009-09-12.dmp fromuser=cfa touser=cfa
4、将oracle数据库中表的数据用spool导成标准的txt格式
调度脚本spool_out.sh的内容(IBM的AIX环境下):
ORACLE_BASE=/oracle;export ORACLE_BASE
ORACLE_HOME=$ORACLE_BASE/product/10.2.0;export ORACLE_HOME
ORACLE_SID=commdb;export ORACLE_SID
DATE=`date +%Y%m%d_%T`;export DATE
$ORACLE_HOME/bin/sqlplus cfa/cfa @/oracle/cfaout/spool.sql spool配置脚本spool.sql的内容
set heading on;
set feedback off;
set pagesize 0;
set linesize 8000;
set trimout on;
set trimspool on;
set term off;
SET NEWPAGE 1;
spool /oracle/cfaout/aix_ent_info_$DATE.txt;@/oracle/cfaout/select_ent_info.sql;
spool off;
spool /oracle/cfaout/aix_report_record_$DATE.txt;@/oracle/cfaout/select_report_record.sql;
spool off;
exit;
两select表成标准格式脚本内容:
select_ent_info.sql:
select CUSTOMERID||'|'||CORPID||'|'||ENTERPRISENAME||'|'||ENGLISHNAME||'|'||FICTITIOUSPERSON||'|'||ORGNATURE||'|'||FINANCETYPE||'|'||ENTERPRISEBELONG||'|'||INDUSTRYTYPE||'|'||INDUSTRYTYPE1||'|'||INDUSTRYTYPE2||'|'||PRIVATE||'|'||ECONOMYTYPE||'|'||ORGTYPE||'|'||MOSTBUSINESS||'|'||BUDGETTYPE||'|'||RCCURRENCY||'|'||REGISTERCAPITAL||'|'||PCCURRENCY||'|'||PAICLUPCAPITAL||'|'||FUNDSOURCE||'|'||TOTALASSETS||'|'||NETASSETS||'|'||ANNUALINCOME||'|'||SCOPE||'|'||LIMIT||'|'||CREDITDATE||'|'||LICENSENO||'|'||LICENSEDATE||'|'||LICENSEMATURITY||'|'||SETUPDATE||'|'||INSPECTIONYEAR||'|'||LOCKSITUATION||'|'||TAXNO||'|'||BANKLICENSE||'|'||BANKID||'|'||MANAGEAREA||'|'||BANCHAMOUNT||'|'||EXCHANGEID||'|'||REGISTERADD||'|'||CHARGEDEPARTMENT||'|'||OFFICEADD||'|'||OFFICEZIP||'|'||COUNTRYCODE||'|'||REGIONCODE||'|'||VILLAGECODE||'|'||VILLAGENAME||'|'||RELATIVETYPE||'|'||OFFICETEL||'|'||OFFICEFAX||'|'||WEBADD||'|'||EMAILADD||'|'||EMPLOYEENUMBER||'|'||MAINPRODUCTION||'|'||NEWTECHCORPORNOT||'|'||LISTINGCORPORNOT||'|'||HASIERIGHT||'|'||HASDIRECTORATE||'|'||BASICBANK||'|'||BASICACCOUNT||'|'||MANAGEINFO||'|'||CUSTOMERHISTORY||'|'||PROJECTFLAG||'|'||REALTYFLAG||'|'||WORKFIELDAREA||'|'||WORKFIELDFEE||'|'||ACCOUNTDATE||'|'||LOANCARDNO||'|'||LOANCARDPASSWORD||'|'||LOANCARDINSYEAR||'|'||LOANCARDINSRESULT||'|'||LOANFLAG||'|'||FINANCEORNOT||'|'||FINANCEBELONG||'|'||CREDITBELONG||'|'||CREDITLEVEL||'|'||EVALUATEDATE||'|'||OTHERCREDITLEVEL||'|'||OTHEREVALUATEDATE||'|'||OTHERORGNAME||'|'||INPUTORGID||'|'||INPUTUSERID||'|'||INPUTDATE||'|'||UPDATEORGID||'|'||UPDATEUSERID||'|'||UPDATEDATE||'|'||REMARK||'|'||TAXNO1||'|'||FICTITIOUSPERSONID||'|'||GROUPFLAG||'|'||EVALUATELEVEL||'|'||MYBANK||'|'||MYBANKACCOUNT||'|'||OTHERBANK||'|'||OTHERBANKACCOUNT||'|'||TEMPSAVEFLAG||'|'||FINANCEDEPTTEL||'|'||ECGROUPFLAG||'|'||SUPERCORPNAME||'|'||SUPERLOANCARDNO||'|'||SUPERCERTTYPE||'|'||SMEINDUSTRYTYPE||'|'||SELLSUM||'|'||SUPERCERTID||'|'||ISVOUCHCORP from aix_ent_info;
select_report_report.sql:
select REPORTNO||'|'||REPORTDATE||'|'||MODELNO||'|'||REPORTSCOPE||'|'||OBJECTNO from aix_report_record;
5、将标准的txt文件load进oracle数据库的shell脚本
sqlldr_in.sh(IBM的AIX环境下)
ORACLE_BASE=/oracle;export ORACLE_BASE
ORACLE_HOME=$ORACLE_BASE/product/10.2.0;export ORACLE_HOME
ORACLE_SID=commdb;export ORACLE_SID
DATE=`date +%Y%m%d`;export DATE
$ORACLE_HOME/bin/sqlldr cfa/cfa control=ENT_INFO.ctl log=ENT_INFO_$DATE.log rows=10000 readsize=20000000 bindsize=20000000 $ORACLE_HOME/bin/sqlldr cfa/cfa control=REPORT_CATALOG.ctl log=REPORT_CATALOG_$DATE.log rows=10000 readsize=20000000 bindsize=20000000 $ORACLE_HOME/bin/sqlldr cfa/cfa control=REPORT_DATA.ctl log=REPORT_DATA_$DATE.log rows=10000 readsize=20000000 bindsize=20000000 $ORACLE_HOME/bin/sqlldr cfa/cfa control=REPORT_RECORD.ctl log=REPORT_RECORD_$DATE.log rows=10000 readsize=20000000 bindsize=20000000
相关的四张表的控制文件的内容:
ENT_INFO.ctl:==
LOAD DATA
INFILE '/oracle/cfain/ENT_INFO_$DATE.txt'
TRUNCATE
INTO TABLE AIX_ENT_INFO
FIELDS TERMINATED BY '|'
TRAILING NULLCOLS
(
CUSTOMERID "nvl(:CUSTOMERID ,'0')",CORPID "nvl(:CORPID ,'0')",ENTERPRISENAME "nvl(:ENTERPRISENAME ,'0')",ENGLISHNAME "nvl(:ENGLISHNAME ,'0')",FICTITIOUSPERSON "nvl(:FICTITIOUSPERSON ,'0')",ORGNATURE "nvl(:ORGNATURE ,'0')",FINANCETYPE "nvl(:FINANCETYPE ,'0')",ENTERPRISEBELONG "nvl(:ENTERPRISEBELONG ,'0')",INDUSTRYTYPE "nvl(:INDUSTRYTYPE ,'0')",INDUSTRYTYPE1 "nvl(:INDUSTRYTYPE1 ,'0')",INDUSTRYTYPE2 "nvl(:INDUSTRYTYPE2 ,'0')",PRIVATE "nvl(:PRIVATE ,'0')",ECONOMYTYPE "nvl(:ECONOMYTYPE ,'0')",ORGTYPE "nvl(:ORGTYPE ,'0')",MOSTBUSINESS "nvl(:MOSTBUSINESS ,'0')",BUDGETTYPE "nvl(:BUDGETTYPE ,'0')",RCCURRENCY "nvl(:RCCURRENCY ,'0')",REGISTERCAPITAL "nvl(:REGISTERCAPITAL ,'0')",PCCURRENCY "nvl(:PCCURRENCY ,'0')",PAICLUPCAPITAL "nvl(:PAICLUPCAPITAL ,'0')",FUNDSOURCE "nvl(:FUNDSOURCE ,'0')",TOTALASSETS "nvl(:TOTALASSETS ,'0')",NETASSETS "nvl(:NETASSETS ,'0')",ANNUALINCOME "nvl(:ANNUALINCOME ,'0')",SCOPE "nvl(:SCOPE ,'0')",LIMIT "nvl(:LIMIT ,'0')",CREDITDATE "nvl(:CREDITDATE ,'0')",LICENSENO "nvl(:LICENSENO ,'0')",LICENSEDATE "nvl(:LICENSEDATE ,'0')",LICENSEMATURITY "nvl(:LICENSEMATURITY ,'0')",SETUPDATE "nvl(:SETUPDATE ,'0')",INSPECTIONYEAR "nvl(:INSPECTIONYEAR ,'0')",LOCKSITUATION "nvl(:LOCKSITUATION ,'0')",TAXNO "nvl(:TAXNO ,'0')",BANKLICENSE "nvl(:BANKLICENSE ,'0')",BANKID "nvl(:BANKID ,'0')",MANAGEAREA "nvl(:MANAGEAREA ,'0')",BANCHAMOUNT "nvl(:BANCHAMOUNT ,'0')",EXCHANGEID "nvl(:EXCHANGEID ,'0')",REGISTERADD "nvl(:REGISTERADD ,'0')",CHARGEDEPARTMENT "nvl(:CHARGEDEPARTMENT ,'0')",OFFICEADD "nvl(:OFFICEADD ,'0')",OFFICEZIP "nvl(:OFFICEZIP ,'0')",COUNTRYCODE "nvl(:COUNTRYCODE ,'0')",REGIONCODE "nvl(:REGIONCODE ,'0')",VILLAGECODE "nvl(:VILLAGECODE ,'0')",VILLAGENAME "nvl(:VILLAGENAME ,'0')",RELATIVETYPE "nvl(:RELATIVETYPE ,'0')",OFFICETEL "nvl(:OFFICETEL ,'0')",OFFICEFAX "nvl(:OFFICEFAX ,'0')",WEBADD "nvl(:WEBADD ,'0')",EMAILADD "nvl(:EMAILADD ,'0')",EMPLOYEENUMBER "nvl(:EMPLOYEENUMBER ,'0')",MAINPRODUCTION "nvl(:MAINPRODUCTION ,'0')",NEWTECHCORPORNOT "nvl(:NEWTECHCORPORNOT ,'0')",LISTINGCORPORNOT "nvl(:LISTINGCORPORNOT ,'0')",HASIERIGHT "nvl(:HASIERIGHT ,'0')",HASDIRECTORATE "nvl(:HASDIRECTORATE ,'0')",BASICBANK "nvl(:BASICBANK ,'0')",BASICACCOUNT "nvl(:BASICACCOUNT ,'0')",MANAGEINFO "nvl(:MANAGEINFO ,'0')",CUSTOMERHISTORY "nvl(:CUSTOMERHISTORY ,'0')",PROJECTFLAG "nvl(:PROJECTFLAG ,'0')",REALTYFLAG "nvl(:REALTYFLAG ,'0')",WORKFIELDAREA "nvl(:WORKFIELDAREA ,'0')",WORKFIELDFEE "nvl(:WORKFIELDFEE ,'0')",ACCOUNTDATE "nvl(:ACCOUNTDATE ,'0')",LOANCARDNO "nvl(:LOANCARDNO ,'0')",LOANCARDPASSWORD "nvl(:LOANCARDPASSWORD ,'0')",LOANCARDINSYEAR "nvl(:LOANCARDINSYEAR ,'0')",LOANCARDINSRESULT "nvl(:LOANCARDINSRESULT ,'0')",LOANFLAG "nvl(:LOANFLAG ,'0')",FINANCEORNOT "nvl(:FINANCEORNOT ,'0')",FINANCEBELONG "nvl(:FINANCEBELONG ,'0')",CREDITBELONG "nvl(:CREDITBELONG ,'0')",CREDITLEVEL "nvl(:CREDITLEVEL ,'0')",EVALUATEDATE "nvl(:EVALUATEDATE ,'0')",OTHERCREDITLEVEL "nvl(:OTHERCREDITLEVEL ,'0')",OTHEREVALUATEDATE "nvl(:OTHEREVALUATEDATE ,'0')",OTHERORGNAME "nvl(:OTHERORGNAME ,'0')",INPUTORGID "nvl(:INPUTORGID ,'0')",INPUTUSERID "nvl(:INPUTUSERID ,'0')",INPUTDATE "nvl(:INPUTDATE ,'0')",UPDATEORGID "nvl(:UPDATEORGID ,'0')",UPDATEUSERID "nvl(:UPDATEUSERID ,'0')",UPDATEDATE "nvl(:UPDATEDATE ,'0')",REMARK "nvl(:REMARK ,'0')",TAXNO1 "nvl(:TAXNO1 ,'0')",FICTITIOUSPERSONID "nvl(:FICTITIOUSPERSONID,'0')",GROUPFLAG "nvl(:GROUPFLAG ,'0')",EVALUATELEVEL "nvl(:EVALUATELEVEL ,'0')",MYBANK "nvl(:MYBANK ,'0')",MYBANKACCOUNT "nvl(:MYBANKACCOUNT ,'0')",OTHERBANK "nvl(:OTHERBANK ,'0')",OTHERBANKACCOUNT "nvl(:OTHERBANKACCOUNT ,'0')",TEMPSAVEFLAG "nvl(:TEMPSAVEFLAG ,'0')",FINANCEDEPTTEL "nvl(:FINANCEDEPTTEL ,'0')",ECGROUPFLAG "nvl(:ECGROUPFLAG ,'0')",SUPERCORPNAME "nvl(:SUPERCORPNAME ,'0')",SUPERLOANCARDNO "nvl(:SUPERLOANCARDNO ,'0')",SUPERCERTTYPE "nvl(:SUPERCERTTYPE ,'0')",SMEINDUSTRYTYPE "nvl(:SMEINDUSTRYTYPE ,'0')",SELLSUM "nvl(:SELLSUM ,'0')",SUPERCERTID "nvl(:SUPERCERTID ,'0')",ISVOUCHCORP "nvl(:ISVOUCHCORP ,'0')"
)
REPORT_CATALOG.ctl:==
LOAD DATA
INFILE '/oracle/cfain/REPORT_CATALOG_$DATE.txt'
TRUNCATE
INTO TABLE AIX_REPORT_CATALOG
FIELDS TERMINATED BY '|'
TRAILING NULLCOLS
(
MODELNO "NVL(:MODELNO,'0')",MODELNAME "NVL(:MODELNAME,' ')",MODELTYPE "NVL(:MODELTYPE,'0')",MODELCLASS "NVL(:MODELCLASS,'0')"
)
REPORT_DATA.ctl:==
LOAD DATA
INFILE '/oracle/cfain/REPORT_DATA_$DATE.txt'
TRUNCATE
INTO TABLE AIX_REPORT_DATA
FIELDS TERMINATED BY '|'
TRAILING NULLCOLS
(
REPORTNO "NVL(:REPORTNO,'0')",ROWNO "NVL(:ROWNO,' ')",ROWNAME "NVL(:ROWNAME,'0')",COL2VALUE "NVL(:COL2VALUE,'0')"
)
REPORT_RECORD.ctl:==
LOAD DATA
INFILE '/oracle/cfain/REPORT_RECORD_$DATE.txt'
TRUNCATE
INTO TABLE AIX_REPORT_RECORD
FIELDS TERMINATED BY '|'
TRAILING NULLCOLS
(
REPORTNO "NVL(:REPORTNO,'0')",REPORTDATE "NVL(:REPORTDATE,' ')",MODELNO "NVL(:MODELNO,'0')",REPORTSCOPE "NVL(:REPORTSCOPE,'0')",OBJECTNO "NVL(:OBJECTNO,'0')"
)
那一天的数据文件名举例:
ENT_INFO_20090909.txt REPORT_CATALOG_20090909.txt REPORT_DATA_20090909.txt REPORT_RECORD_20090909.txt
6、用ftp配置Unix/Linux文件的自动传输
ftpget.sh文件内容:(RedHat AS4环境下)
export DATE=`date +%Y%m%d`;
ftp -n<<!
open 192.168.80.5
user oracle oracle
prompt off
mget dl_$DATE.dmp yh_$DATE.dmp
quit
!
注:顺带说明一下:linux下,ftp的相关启动关闭命令如下:[root@localhost ~]# /etc/init.d/vsftpd start [root@localhost ~]# /etc/init.d/vsftpd stop [root@localhost ~]# /etc/init.d/vsftpd restart
说明:。sh脚本要有执行权限;ftp服务开启与关闭要在根用户下执行;本文用到的例子有在RedHat as4环境下的,有在IBM AIX环境下的,其中涉及到的环境变量等,都大同小异;脚本测试好之后可以配在Linux/Unix调度程序crontab中,以实现shell的自动定时运行!
-
【转】常用的ORACLE PL/SQL管理命令
2009-10-09 10:24:13
熟悉ORACLE管理的一定对这些命令不会陌生,不过对于我这个刚接触ORACLE管理的来说,还是有必要做下记录,以便随时查看。一 登录SQLPLUS
sqlplus用户名/密码@数据库实例as登录角色;
如:用户sys(密码为123)以sysdba的角色登录数据库ORACL,我们可以输入:sqlplus sys/123@oracl as sysdba;
这种登录方式会直接暴露密码,如果想隐藏密码,可以在此省略密码的输入,如:sqlplus sys@oracl as sysdba;回车以后ORACLE会给出输入密码的提示符。
登录以后如果想切换其他的用户,可以直接使用connect 命令,如:connect user2/password@oracl as sysdba,同上一样,可以将密码分开输入。
二 退出SQLPLUS
quit;
三 创建用户
create user用户名identified by密码;
如:创建用户CKSP,密码为123: create user cksp identified by 123;
四 给用户分配角色或权限
grant *** to ***;
如:给刚才的用户分配角色DBA:grant dba to cksp;
分配create table权限:grant
五 删除用户
drop user用户[cascade];
其中cascade是可选的,如果输入了,则表示删除该用户及所有数据。
如:删除上面创建的用户CKSP及他的所有数据:drop user cksp cascade;
-
【转】oracle用户自定义函数
2009-10-09 10:17:40
原文地址http://blog.csdn.net/success_dream/archive/2007/11/14/1885924.aspx
用户定义函数是存储在数据库中的代码块,可以把值返回到调用程序。调用时如同系统函数一样,如max(value)函数,其中,value被称为参数。函数参数有3种类型。
IN 参数类型:表示输入给函数的参数。
OUT 参数类型:表示参数在函数中被赋值,可以传给函数调用程序。
IN OUT参数类型:表示参数既可以传值也可以被赋值。
1、语法格式:
SQL语法方式创建的语法格式为:
CREATE OR REPLACE FUNCTION function_name /**//*函数名称*/
(
Parameter_name1,mode1 datatype1, /**//*参数定义部分*/
Parameter_name2,mode2 datatype2,
Parameter_name3,mode3 datatype3
…
)
RETURN return_datatype /**//*定义返回值类型*/
IS/AS
BEGIN
Function_body /**//*函数体部分*/
RETURN scalar_expression /**//*返回语句*/
END function_name;
说明:
function_name::用户定义的函数名。函数名必须符合标示符的定义规则,对其所有者来说,该名在数据库中是唯一的。
parameter:用户定义的参数。用户可以定义一个或多个参数。
mode:参数类型。
datatype:用户定义参数的数据类型。
return_type::用户返回值的数据类型。
函数返回scalar_expression表达式的值,function_body函数体由pl/sql语句构成。
2、示例
函数代码:
create or replace function T01001_count
return number
is
count_T01001 number;
begin
select count(*) into count_T01001 from T01001;
return(count_T01001);
end T01001_count; --记得一定要打分号调用:
declare
i number;
begin
i:=T01001_count();
dbms_output.put_line(to_char(i));
end; --记得一定要打分号
注意:
(1) 如果函数没有参数,那么函数名后不应该要括号;
(2) 创建函数的时候end后面一定要记得写函数名
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/success_dream/archive/2007/11/14/1885924.aspx
标题搜索
我的存档
数据统计
- 访问量: 28111
- 日志数: 27
- 图片数: 1
- 书签数: 2
- 建立时间: 2008-07-16
- 更新时间: 2015-03-11