oracle 中将unix/linux时间戳进行转换(转)
参照http://www.itjj.net/tech/DB/Oracle/anzhuangpeizhi/20080321/283050.html思路就是明白unix/linux时间戳是按照从格林威治时间1970年1月1日期计算的一个秒数(我粗俗的理解)。unix/linux 时间戳转换为标准时间格式(主要是注意时区问题):select TO_DATE('19700101','yyyymmdd') + 1235728935/86400 +TO_NUMBER(SUBSTR(TZ_OFFSET(sessiontimezone),1,3))/24 from dual,其中1235728935就是unix/linux时间戳,转换完之后就表示为 2009-2-27 18:02:15。反过来也一样,还是要考虑时区select (to_date('2009-2-27 18:02:15','yyyy-mm-dd
使用SQLNET.ora文件限制Ip地址访问
可以在$ORACLE_HOME/network/admin/sqlnet.ora里面配置以下参数来实现验证客户端ip以限制访问tcp.validnode_checking=yes tcp.invited_nodes=(ip1,ip2......) --允许的ip列表tcp.excluded_nodes=(ip1,ip2......) --禁止的ip列表注意本机ip也要加入到这个列表中。另外设置命名方法:NAMES.DIRECTORY_PATH= (TNSNAMES, ONAMES, HOSTNAME)[@more@]
oracle中发邮件的存储过程--功能比较强(摘)
CREATE OR REPLACE PROCEDURE send_mail(P_TXT VARCHAR2, P_SUB VARCHAR2, P_SENDOR VARCHAR2, P_RECEIVER VARCHAR2, P_SERVER VARCHAR2, P_PORT NUMBER DEFAULT 25, P_NEED_SMTP INT DEFAULT 0, P_USER
关于使用exp按照条件导出数据的问题(摘)
http://www.heysky.net/archives/2007/09/exp_query_format.html昨天需要按照条件导出一个表,再导入另一个数据库,很自然想到了 exp 的 query 参数,本来以为可以很顺利完成,结果 query 参数的格式怎么也写不对,因为时间紧迫,最后通过 dblink 直接插入了另一个数据库。今天回过头来再研究了一下,发现其实也不复杂,按照文档还是能很好的解决的。希望导出测试表中日期为 2007-09-22 的一条数据:SQL> select * from skytest; SID DT---------- ----------------- 1 20070913 00:00:00 2 20070914 00:00:00
修改Oracle process 和 session 的方法--摘
先备份spfile1.通过SQLPlus修改Oracle的sessions和processes的关系是sessions=1.1*processes + 5使用sys,以sysdba权限登录:SQL> show parameter processes;NAME TYPE VALUE------------------------------------ ----------- ---------------------------------------aq_tm_processes integer 1db_writer_processes integer 1job_queue_processes integer 10log_archive_max_processes integer 1processes integer 150SQL> alter system set processes=400 scope = spfile;系统已更改。SQL> show parameter processes;NAME TYP
使用exp导出小写表名的方法(from pub)
参见:http://www.itpub.net/viewthread.php?tid=928112&pid=9443577&page=2&extra=test case on windows:create table "t_tst_lower_case" as select * from dba_objects a where rownum < 10;edit a par file #parfile.txttables=('"t_tst_lower_case"')--注意格式是 单引号+双引号then runexp test/test file=test.dmp parfile=parfile.txt C:>exp test/test file=test.dmp parfile=parfile.txtExport: Release 9.2.0.4.0 - Production on Thu Jan 17 19:14:45 2008Copyright (c) 1982, 2002, O
摘-- 关于在函数或过程中 ref cursor 的用法
http://blog.itpub.net/post/16888/149516Oracle 存储过程返回结果集用 ref cursor 实现。试验步骤如下:1. 建立 ref cursor 类型和过程CREATE OR REPLACE PACKAGE typesAS TYPE ref_cursor IS REF CURSOR;END;/CREATE TABLE STOCK_PRICES( RIC VARCHAR(6) PRIMARY KEY, PRICE NUMBER(7,2), UPDATED DATE );/CREATE OR REPLACE FUNCTION sp_get_stocks(v_price IN NUMBER) RETURN types.ref_cursorAS stock_cursor types.ref_cursor;BEGIN OPEN stock_cursor FOR SELECT ric,price,updated FROM stock_prices W
关于lag函数的用法
参考oracle 10g手册,明白了lag函数的基本用法:LAG SyntaxDescription of the illustration lag.gifSee Also:"Analytic Functions" for information on syntax, semantics, and restrictions, including valid forms of value_exprPurposeLAG is an analytic function. It provides access to more than one row of a table at the same time without a self join. Given a series of rows returned from a query and a position of the cursor, LAG provides access to a row at a given physical offset prior to that posit
理解了row_number()over (partition by order by )的方法
有个统计,要把3个没有很直接关系的表连接在一起。多亏了itpub上热心人的帮忙http://www.itpub.net/viewthread.php?tid=922978,我也理解了 row_number()over (partition by order by )的用法。[@more@]
COALESCE函数的用法。
COALESCE(A,B,C,D) AS 别名 返回参数表中第一个不为空的值(从左开始) A B C D 可以是字段,也可以是其他函数的返回值或者表达式的结果值 ,注意A、B、C、D的数据类型要一致。[@more@]
sqlplus密码中带 @的登录方法。
sqlplus '用户名/"密码@as" ' ,注意两边是单引号,中间是双引号。[@more@]
删除用户全部对象,不用删除用户(摘)
set heading off;set feedback off;spool c:dropobj.sql; prompt --Drop tables select 'drop table ' || table_name ||';'||chr(13)||chr(10) from user_tables; prompt --Drop view select 'drop view ' || view_name||';'||chr(13)||chr(10) from user_views; prompt --Drop sequence select 'drop sequence ' || sequence_name||';'||chr(13)||chr(10) from user_sequences; prompt --Drop function select 'drop function ' || object_name||';'||chr(13)||chr(10) from user_objects where object_type='FUNCTION'; prompt -
linux下oracle的自动启动
实际就是启动脚本或服务中增加lsnrctl start ,和 dbstart.只是启用dbstart,需要修改1 /etc/oratab中的自动加载项。2 修改dbstart,将ORACLE_HOME_LISTNER=$ORACLE_HOME.然后dbstart就可用了。至于是放在服务还是脚本里,应该无所谓吧?[@more@]
查看表空间
SELECT UPPER(F.TABLESPACE_NAME) "表空间名",D.TOT_GROOTTE_MB "表空间大小(M)",D.TOT_GROOTTE_MB - F.TOTAL_BYTES "已使用空间(M)",TO_CHAR(ROUND((D.TOT_GROOTTE_MB - F.TOTAL_BYTES) / D.TOT_GROOTTE_MB * 100,2),'990.99') "使用比",F.TOTAL_BYTES "空闲空间(M)",F.MAX_BYTES "最大块(M)"FROM (SELECT TABLESPACE_NAME,ROUND(SUM(BYTES) / (1024 * 1024), 2) TOTAL_BYTES,ROUND(MAX(BYTES) / (1024 * 1024), 2) MAX_BYTESFROM SYS.DBA_FREE_SPACEGROUP BY TABLESPACE_N
触发器导致的ORA-01403错误
我遇到的这个错误的原因是使用select into , 如SELECT X INTO Y FROM TABLE,但table 的内容是空的。所以报这个错误。把数据放进去,就ok了。[@more@]
备份脚本--纪录
vi bak.sh-------#设置oracle 的环境变量# .bash_profile # Get the aliases and functionsif [ -f ~/.bashrc ]; then. ~/.bashrcfi# User specific environment and startup programsPATH=$PATH:$HOME/bin#export LD_ASSUME_KERNEL=2.4.1export ORACLE_BASE=/data/oracleexport ORACLE_HOME=/data/oracle/OraHomeexport ORACLE_SID=smsexport ORACLE_TERM=xtermexport ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/dataLD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/libLD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/libexport LD_LIBRARY_P
关于nls_lang的设置,记得加引号。
export "NLS_LANG=SIMPLIFIED CHINESE_CHINA.ZHS16GBK"[@more@]
(摘)DML 语句的监控
网上找到的,记下来备用。CREATE OR REPLACE TRIGGER trg_trace_ddl/*created by wangfanggen on 2005-09-05It is traced to drop tables on the database.when any objects had droped,the table of t_ddl_trace have recorded the detail of drop.*//*log table script.create table t_ddl_trace(login_user varchar2(30),ddl_time date,ip_address varchar2(30),audsid varchar2(30),TERMINAL varchar2(100),OS_USER varchAR2(100),SESSION_USER VARCHAR2(100),schema_user varchar2(100),schema_object varchar2(200),ddl_sql varchar
摘:Oracle数据库补丁分类、安装及管理
给软件打补丁相当于给人打预防针,对系统的稳定运行至关重要。本文详细、系统地介绍了Oracle数据库补丁的分类、安装、管理等问题。 厂商提供给用户的软件补丁的形式多为编译后的库函数,所以安装软件补丁实际上就是把这些库函数拷贝到相应目录,并在需要时进行联接操作。软件公司一般在一段时间后会把针对某一版本的所有补丁进行整理:合并融合,解决冲突,进行整体测试,并使文件拷贝和联接操作自动执行,得到一个软件补丁“包 ”。不同的公司使用不同的名称,现在一般计算机用户都熟悉的Windows Service Pack就是这样的补丁包。Oracle公
配置oracle 解释执行计划--explain plan
1、使用sys用户登陆2、执行 $ORACLE_HOME/rdbms/admin/utlxplan.sql ,生成表。3、执行 $ORACLE_HOME/sqlplus/admin/plustrce.sql 生成角色等。4、对需要使用该功能的用户赋予角色。grant plustrace to public;序号命令解释1SET AUTOTRACE OFF此为默认值,即关闭Autotrace2SET AUTOTRACE ON产生结果集和解释计划并列出统计3SET AUTOTRACE ON EXPLAIN显示结果集和解释计划不显示统计4SETAUTOTRACE TRACEONLY显示解释计划和统计,尽管执行该语句但您将看不到结果集5SET AUTOTRACE TRACEONLY STATISTICS 只显示统计Eg:SET AUTOTRACE ON, s