易截截图软件、单文件、免安装、纯绿色、仅160KB
热门标签: c c# c++ asp asp.net linux php jsp java vb Python Ruby mysql sql access Sqlite sqlserver delphi javascript Oracle ajax wap mssql html css flash flex dreamweaver xml
 最新文章 : Oracle

oracle添加字段引起的问题

author:skate
time:2010-05-27
oracle添加字段引起的问题
     由于同事在添加了表的字段后,没有重新编译数据库的对象,导致和这个表相关的很多procedure和package都失效。
由于发现后是在修改后2个小时吧,而在这期间很多程序在调用这些过程,致使很多会话都僵死在那,所以也无法
再重新编译过去,及时kill相应session进程也无法编译,由于业务需要数据库快速提供服务,于是决定重启数据库
当我发出shutdown immediate1分钟后,有一种不祥的预感,数据库很难关闭,数据库里存在active事务,而且因为
对象失效,所以在那一直跑(僵死在那),我赶紧查看alert.log,如下所示:
Thu May 27 13:07:19 2010
Thread 1 advanced to log sequence 3666
  Current log# 5 seq# 3666 mem# 0: /u01/oradata/dbtica/redo05.log
Thu May 27 13:59:37 2010
Starting background process EMN0
EMN0 started with pid=53, OS id=12951
Thu May 27 13:59:37 2010
Shutting down instance: further logons disabled
Thu May 27 13:59:37 2010
Stopping background process CJQ0
Thu May 27 13:59:37 2010
Stopping background process QMNC
Thu M ......

Oracle 中的to_date()函数


to_date()与24小时制表示法及mm分钟的显示:
一、在使用Oracle的to_date函数来做日期转换时,很多Java程序员也许会直接的采用“yyyy-MM-dd
HH:mm:ss”的格式作为格式进行转换,但是在Oracle中会引起错误:“ORA 01810 格式代码出现两次”。
如:select to_date('2005-01-01 13:14:20','yyyy-MM-dd HH24:mm:ss') from
dual;
原因是SQL中不区分大小写,MM和mm被认为是相同的格式代码,所以Oracle的SQL采用了mi代替分钟。
select to_date('2005-01-01 13:14:20','yyyy-MM-dd HH24:mi:ss') from dual;
二、另要以24小时的形式显示出来要用HH24
select to_char(sysdate,'yyyy-MM-dd HH24:mi:ss') from dual;//mi是分钟
select to_char(sysdate,'yyyy-MM-dd HH24:mm:ss') from dual;//mm会显示月份 
 
oracle中的to_date参数含义
 
 
 
1.日期格式参数含义说明  
D 一周中的星期几 
 
DAY 天的名字,使用空格填充到9个字符 
 
DD 月中的第几天 
 
DDD 年中的第几天 
 
DY 天的简写名 
 
IW ISO标准的年中的第几周 
 
IYYY IS ......

Oracle 触发器

create or replace trigger InsertEdcTerminal
after INSERT on edc_terminal
FOR EACH ROW
DECLARE
merchantId char(15);
terminalId char(8);
uservalue char(6) ;
updatedate char(8);
updatetime char(6);
v_cardtype Merchant_Card.Card_Type%TYPE;
v_cardstate merchant_card.card_stat%TYPE;
v_banktype merchant_card.bank_type%TYPE;
BEGIN
merchantid:=:new.MERCHANT_ID;
terminalId:=:new.TERMINAL_ID;
uservalue:=:new.UPDATE_OPER;
updatedate:=:new.UPDATE_DATE;
updatetime:=:new.UPDATE_TIME;
 
insert into pos_key_base(merchant_id,terminal_id,mac_flag,safe_flag,change_mode)values(merchantId,terminalId,'0','0','2');
insert into edc_trans(merchant_id,terminal_id,trans_bitmap,update_oper,update_date,update_time)values(merchantId,terminalId,'111111111110111111000111111111',uservalue,updatedate,updatetime);
DECLARE 
CURSOR c_emp IS SELECT Card_Type,card_stat,bank_type from Merchant_Card where MERCHANT_ID=merchantId;
BEGIN
   OPEN c_emp;
    &n ......

Windows下的Oracle冷备份脚本,已经测试通过

共需要创建两个文件在同一个目录下:
一:
文件oracle_cool_backup.bat,内容如下:
Remark 定义时间日期变量
set date=%date:~0,10%
set h=%time:~0,2%
set m=%time:~3,2%
set s=%time:~6,2%
set tempvar=%date%-%h%-%m%-%s%
md "c:/temp/%tempvar%/"
echo %tempvar%
sqlplus /nolog @oracle_cool_backup.sql %tempvar%
call oracle_cool_backup_spool.bat
pause
二:文件oracle_cool_backup.sql,内容如下:
Remark oracle_cool_backup.sql
Remark 冷备份脚本
Remark 设置SQL*Plus环境变量
conn sys/sunny as sysdba;
set feedback off heading off verify off trimspool off
set pagesize 0 linesize 200
Remark 设置用户变量
define spoolfile = 'oracle_cool_backup_spool.bat'
prompt *** spooling to &spoolfile
Remark 创建包含备份命令的脚本文件
spool &spoolfile
Remark 下面的e:\temp\&1后必须加"\" 不然提示还是目录名(F = 文件,D = 目录)?
select 'copy ' || name || ' c:\temp\&1\' from v$datafile;
select 'copy ' || name || ' c:\temp\&1\' from v$controlfile;
select 'copy ' || member || ' c:\temp ......

玩转Oracle(5)

||-------  数据库管理  -------||
//显示初始化参数
show parameter;
//数据库表的逻辑备份与恢复
//导出
1.导出表
exp userid=scott/tiger@ORCL tables=(emp) file=d:\e1.dmp
2.导出其他方案的表,首先要确认自己是sysdba身份
exp userid=system@919959ORCL tables=(scott.emp) file=d:\e1.dmp
3.导出表结构
exp userid=scott/tiger@ORCL tables=(emp) file=d:\e3.dmp rows=n
4.使用直接导出方式(效率比普通导出方式快)
exp userid=scott/tiger@ORCL tables=(emp,dept) file=d:\e4.dmp direct=y
5.导出方案
exp userid=scott/tiger@ORCL owner=scott file=d:\e5.dmp
6.导出数据库,该用户必须是dba
exp userid=system/919959@ORCL full=y inctype=complete file=d:\e6.dmp
//导入
1.导入自己表
imp userid=scott/tiger@ORCL tables=(emp) file=d:\e1.dmp
2.导入表到其他用户
要求该用户具有dba权限,或是imp_full_database
imp userid=system/919959@ORCL tables(emp) file=d:\e2.dmp touser=scott
3.导入表的结构
imp userid=scott/tiger@ORCL tables=(emp) file=d:\e3.dmp rows=n
4.导入数据
imp userid=scott/tiger@ORCL ......

玩转Oracle(6)

||-------  维护数据完整性  -------||
【约束】
//约束
not null //非空
unique  //唯一 不能重复,但可以为空
primary key //主键
foreign key //外键
check  //满足条件
//商店售货系统表设计案例(1)
//goods 商品表
goodsid  //商品号
goodsname //商品名
unitprice //单价
category //商品类别
provider //供应商
SQL> create table goods(
  2  goodsid char(8) primary key,--主键
  3  goodsname varchar2(30) ,
  4  unitprice number(10,2) check (unitprice>0),--单价必须>0
  5  category varchar2(8),
  6  provider varchar2(30));
//customer 客户表
customerid //客户号
name  //姓名
address  //住址
email  //电邮
sex  //性别
cardid  //身份证
SQL> create table sustomer(
  2  customerid char(8) primary key,--主键
  3  name varchar2(30) not null,--不为空
  ......
总记录数:3994; 总页数:666; 每页6 条; 首页 上一页 [12] [13] [14] [15] 16 [17] [18] [19] [20] [21]  下一页 尾页
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号