zoukankan      html  css  js  c++  java
  • 转:oracle笔记

    oracle笔记
    1 卸载oracle developer server的方法:

    1-1 oracle卸载工具中卸载对应的oracleds项目;
    在注册表中搜索ORACLEDS HOME对应的别名,删除对应的项;
    重新启动计算机;
    删除对应的ORACLEDS的安装目录;

    2jinitiator的相关问题:

    2-1 jinitiator是oracle自己的applet viewer工具;

    2-2 在第一次打开web应用程序时会自动提示安装该程序,如果不安装则无法打开程序;

    2-3 jinitiator是在client端运行

    3 OC4J的常用配置:

    3-1 更改OC4J的端口
    打开%Oracle_Home%J2eeHomeConfigHttp-Web-Site.Xml文件
    修改其中:中
    “8888:设定项(OC4J默认的端口号是8888)

    3-2 修改OC4J默认网页文件
    在%Oracle_Home%J2eeHomeDefault-Web-App目录下,有多种方法设定OC4J的默认网页文件:
    (1)找到Intex.Html文件,替换该文件;
    (2)删除Intex.Html文件,创建Default.Jsp文件
    (3)删除Intex.Html文件,创建Intex.Jsp文件
    注:OC4J可视同为一个完整的WEB服务器,该服务器可以执行*.jsp文件。
    当在浏览器的地址栏内输入IP地址:端口号后,OC4J将根据设定自动寻找默认的网页文件。

    3-3 修改OC4J默认网页文件设定
    打开%Oracle_Home%J2eeHomeConfigglobal-web-application.xml文件
    修改其中:      
     
        index.html
        default.jsp
     
    的文件名和顺序
    注:该配置项位于文件末端的地方
    另:根据相关文档,在此处配置即可实现修改默认网页文件设定,但我试过好象没有成功,不知为何。

    3-4  新增图标文件
    在Forms9i中,图标文件应为GIF文件,默认情况下,存放于固定的目录中。
    该目录为:%Oracle_Home%CGENF61AdminIconsPc

    3-5  修改OC4J默认的图标文件后缀名和存放目录
    打开%Oracle_Home%Forms90JavaFormsRegistryRegistry.Dat文件
    修改其中:
      #
      # The Application Level icon files are relative to the DOCUMENTBASE
      #   example: icons/
      # or an absolute URL.
      #   example: http://www.forms.net/~luser/d2k_project/ 
      #
      default.icons.iconpath=
      default.icons.iconextension=GIF
    注:该配置项位于文件末端

    3-6  配置虚拟路径
    在实现用户需求过程中,经常需要将服务器的文档显示给用户或提供用户下载。
    此时:可能会用到Web.Show_Document('http://Oracle_Home:8888/PathName/xxxx.xls','_Blank');,
    此时PathName不指服务器端的实际路径,而是OC4J的虚拟路径。
    打开%Oracle_Home%J2eeOracleDSApplication-DeploymentsDefaultsDefaultWebAppOrion-Web.xml
    新增或修改其中:
    即可实现修改或设定OC4J虚拟路径
    注:也可以打开%Oracle_Home%J2eeOracleDSApplication-DeploymentsFormsForms90WebOrion-Web.xml,
    区别在于在此处设定的文件链接则为:http://Oracle_Home:8888/forms/xxxx.xls

    3-7  报表文件存放目录
    OracleDeveloper的报表,均需生成RDF文件存放于服务器端,
    默认的目录在%Oracle_Home% eportsinteg目录下,
    容易与系统文件产生混淆,修改REPORT目录的方法如下:
    打开%Oracle_Home% eportsconf wservlet.properties
    修改 Reports_path=选项<若没有,则可追加。该选项也可在系统注册表中追加>

    3-8  IE窗口中上方的ORACLE标识去除
    设置%Oracle_Home%Forms90ServerFormsWeb.cfg文件中,Logo=False

    3-9  修改IE窗口中的Applet的窗口大小
    设置%Oracle_Home%Forms90ServerFormsWeb.cfg文件中,Width=800 / Height=600

    3-10 修改默认的FORMS文件
    设置%Oracle_Home%Forms90ServerFormsWeb.cfg文件中,Forms=xxx.fmx

    3-11 修改默认的数据库连接串
    设置%Oracle_Home%Forms90ServerFormsWeb.cfg文件中,User=xxx/yyy@DBServer

    3-12 将forms9i的程序置于JAVA窗口运行<一般情况下,置于IE窗口的SERLET内运行>
    设置%Oracle_Home%Forms90ServerFormsWeb.cfg文件中,
    separateFrame=False<一般情况下,separateFrame=True>

    3-13 修改Forms9i应用程序背景图<原先的背景图为Oracle Forms Sevices>
    设置%Oracle_Home%Forms90ServerFormsWeb.cfg文件中,BackGround=VirualPath/xxx.gif
    注:VirualPath是在6设定的虚拟路径

    4 文本文档(txt)的操作:

    4-1 语法 

    4-1-1 获取句柄,并打开文件
    L_MyFile:= Text_IO.Fopen(FileName, L_Mode);
    其中,L_Mode为“W”时,写入数据;L_Mode为“R”时,读取数据。

    4-1-2 写入数据
    Text_IO.PUTF(MYFILE,'xxx');

    4-1-3 读出数据
    Text_IO.GetLine(MYFILE,L_Str);

    4-1-4 前进一行
    TEXT_IO.NEW_LINE; 

    4-1-5 关闭文件
    Text_IO.FClose

    注:在写入文件过程中,换行符是Chr(10)

    4-2 实例

    4-2-1 写入Text文档
    Declare
      L_MyFile  Text_IO.File_Type;
      Filename Varchar2(100):='c:TestText.Txt';
    Begin
      --创建文件
      Myfile := Text_IO.Fopen(Filename, 'W');   
      --写入字符
      Text_IO.PUTF(Myfile, '111Test');       
      Text_IO.PUTF(Myfile, CHR(10)); 
      Text_IO.PUTF(Myfile, '222Test');       
      Text_IO.PUTF(Myfile, CHR(10)); 
      --关闭文件
      Text_IO.Fclose(Myfile);
    End;

    4-2-2 读取文档
    DECLARE
       L_MyFile text_io.file_type; 
      Filename Varchar2(100):='c:TestText.Txt' ;
      L_Str VarChar2(500);
    BEGIN 
      --打开文件   
      L_MyFile:=Text_IO.Fopen(filename,'R'); 
      --循环读出文件内容
      Loop 
        <>
            Begin 
            --读取一行文字
            Text_IO.Get_Line(L_MyFile,L_Str); 
            --显示读取的内容
            Message(L_Str);
            --前进一行
            TEXT_IO.NEW_LINE; 
            --文件读取完毕响应
            Exception 
              When No_Data_Found Then 
                Exit; 
            END StartReadText; 
        end loop; 
      --关闭文件
      Text_io.Fclose(L_MyFile);
    END;
    5 自动保持网卡激活:

    5-1 说明:对于稍新的网卡,w2k下有一个缺省设置:
    当网线断开时,网站的IP自动取消。这可能会导致某些运行TCP/IP的 service 出错。
    本文介绍: 即使没有插上网线,也让网卡保持IP地址。

    5-2 操作:参数:新建双字节字(DWord) DisableDHCPMediaSense  (注意大小写),
    设为十六进制1 (路径:HEY_LOCAL_MACHINESYSTEMCURRENTCONTROLSETSERVICESTCPIPPARAMENTERS)
    如果不进行以上配置,网线断开时,在Dos下使用 route print,不能看到以下多行:(只能看到两行) 

     

    6 正确删除ORACLE

    6-1 经常发现运行setup.exe的方法卸载并不可行。经常提示一大堆这样那样的错误。

    6-2 自动+手工删除的办法:

    6-2-1 控制面板/管理工具/服务上停掉所有关于oracle的service.

    6-2-2 删除c:/oracle及c:/programfiles/oracle

    6-2-3 运行regedit, 将HKEY-LOCAL-MACHINE/SOFTWARE/ 及
    HKEY-LOCAL-SYSTEM/CurrentControlSet/Services/关于oracle的内容全部删除

    6-2-4 重启电脑。

    7 plsql中单引号“'”的问题

    7-1 单引号的在使用中是字符串的分割符号,如果需要直接引用单引号就需要用两种方式:

    7-1-1 第一种常用方式:在ORACLE中有这样的申明:两个单引号连续使用表示对单个单引号的文本引用;
    例如:select 'I''m chinese' from dual
    结果是:I'm chinese

    7-1-2 另一种方式:使用ASCII码中的字符对应的数值,然后使用CHR()ASCII字符转换函数进行引用;
    例如:select 'test:' || chr(38) || chr(39) from dual;
    结果是:test:&'
    在实际应用中可以使用:select ascii('a') from dual;
    结果是:97

    8 ORACLE中文日期格式和英文日期格式的问题解决方法(二种):

    8-1 使用TO_DATE ('2002-jan-26', 'YYYY-mon-dd', 'NLS_DATE_LANGUAGE = American')
    例如:
    select * from emp
    where hiredate

    8-2 使用
    ALTER SESSION SET NLS_LANGUAGE = AMERICAN;
    ALTER SESSION SET NLS_DATE_FORMAT='DD-MON-YYYY'
    改变当前的字符集和日期格式;

    9 使用‘#’和copy()来实现select语句的动态复合条件查询

    9-1 思路:在数据块查询之前将"# =(或者like )'条件值'",然后使用COPY赋值给数据块中相应的数据项,
    FORM将通过判断#号来进行条件的组合,并且将#号省略;
    例如
    copy('# ='||:BLK_QUERY.EMPNO,'BLK_EMP.EMPNO');

    10 SQLPLUS小计

    10-1 常用的SQLPLUS命令:
    select * from tab;
    --显示当前用户的所有对象;
    select * from allusers;
    --查询系统拥有的所有用户
    create user test identified by test;
    grant connect,resource to test;
    drop user test;
    --建立,授权,删除用户;
    (a)append
    --添加到行尾
    (c)change
    --替换或删除
    (i)input
    --添加一行
    (l)ist
    --列出缓冲区中的行
    (r)un
    --执行缓冲区中的行
    @文件名(.sql)
    --执行“文件名.sql”的脚本文件
    @@文件名(.sql)
    --在一个文件中执行另一个“文件名.sql”的脚本文件
    save
    --将缓冲区的数据存盘
    get
    --将文件中的命令调到缓冲区
    start
    --执行调入缓冲区中的命令
    spool
    spool 文件名
    spool off
    --假脱机文件(各种操作及执行结果存盘到磁盘文件上,默认文件扩展名为.lst)
    set feedback off
    --默认on,去除结尾的总计信息
    set pagesize 50
    --默认14,一次返回的记录数
    set timing on
    --默认off,显示执行时间
    set sqlprompt "SQL> "
    --设置默认提示符,默认值就是"SQL> "
    set autocommit ON
    --设置是否自动提交,默认为OFF
    set pause on
    --默认为OFF,设置暂停,会使屏幕显示停止,等待按下ENTER键,再显示下一页
    define a = '''20000101 12:01:01'''
    --定义局部变量,如果想用一个类似在各种显示中所包括的回车那样的常量,
    例如:
    SQL> select &a from dual;
    SQL> select '20000101 12:01:01' from dual
    --
    any()
    --把一个值与表中的每一个值进行比较,有一个关系成立,返回true
    例如:
    SQL> Select * from emp Where sal = any(select sal from emp where deptno = 20)
    --
    UNION
    --集合的并,不包含重复行
    Union all
    --集合的并,包含重复行
    Intersect
    --集合的交,不包含重复行
    minus
    --集合的差,不包含重复行

    11 DBA小计

    11-1 建立SYSTEM表空间的目的是尽量将目的相同的表存放在一起,以提高使用效率,只应存放数据字典

    11-2 数据库<-表空间<-数据文件<-ORACLE块

    11-3 一个段segment只能属于一个表空间,但可以属于多个数据文件

    11-4 一个区extent只能属于一个数据文件,即区间(extent)不能跨越数据文件

    11-5 单独一个事务不能跨越多个回滚段

    11-6 索引表不含ROWID值

    11-7 拥有不同大小的回滚段没有任何益处

    11-8 一个事务即使不被提交,也会被写入到重做日志中。

    12 EXP/IMP小计

    12-1 备份一个或多个用户
    D:>exp scott/tiger file=导出文件
    D:>exp system/manager owner=(用户1,用户2,…,用户n) file=导出文件

    12-2备份一个或多个表
    D:>exp 用户/密码 tables=表
    D:>exp 用户/密码 tables=(表1,…,表2)
    D:>exp system/manager tables=(用户.表)
    D:>exp system/manager tables=(用户1.表1,用户2.表2)

    12-3 导入指定表
    D:>exp scott/tiger file=a.dmp
    D:>imp test/test fromuser=scott tables=emp file=a.dmp
    D:>imp test/test tables=dept file=a.dmp
     
    12-4 记录LOG信息
    D:>imp80 username/password@alias file=impfile.dmp log=mylog.log
    D:>exp80 username/password@alias file=expfile.dmp log=mylog.log
    运行后,mylog.log里记录着所有的LOG信息

    12-5 说明:
    --如果导出用户没有DBA权限,则导入用户可以不用指定fromuser、touser参数
    --如果导出用户拥有DBA权限,则导入用户也必须拥有DBA权限

    13 对CLOB对象的全文检索

    13-1 如果使用LIKE关键词将发生错误;

    13-2 应使用如下方法:
    SQL> create table a(a clob);

    SQL> insert into a values('1234');
     
    SQL> insert into a values('5648');
     
    SQL> SELECT * FROM A WHERE dbms_lob.instr(a.a,'12',1,1)>0;
     
    1234
     
     
    SQL> SELECT * FROM A WHERE dbms_lob.instr(a.a,'5',1,1)>0;
     
    5648


    14 对当前用户下的各种对象的查看
    14-1 表:
      select * from cat;
      select * from tab;
      select table_name from user_tables;
    14-2 视图:
      select text from user_views where view_name=upper('&view_name');
    14-3 索引:
      select index_name,table_owner,table_name,tablespace_name,status from user_indexes order by table_name;
    14-4 触发器:
      select trigger_name,trigger_type,table_owner,table_name,status from user_triggers;
    14-5 快照:
      select owner,name,master,table_name,last_refresh,next from user_snapshots order by owner,next;
    14-6 同义词:
      select * from syn;
    14-7 序列:
      select * from seq;
    14-8 数据库链路:
      select * from user_db_links;
    14-9 约束限制:
      select TABLE_NAME,CONSTRAINT_NAME,SEARCH_CONDITION,STATUS from user_constraints;
    14-10 本用户读取其他用户对象的权限:
      select * from user_tab_privs;
    14-11 本用户所拥有的系统权限:
      select * from user_sys_privs;
    14-12 用户:
      select * from all_users order by user_id;
    14-13 表空间剩余自由空间情况:
      select tablespace_name,sum(bytes) 总字节数,max(bytes),count(*) from dba_free_space group by tablespace_name;
    14-14 数据字典:
      select table_name from dict order by table_name;
    14-15锁及资源信息:
      select * from v$lock;不包括DDL锁
    14-16 数据库字符集:
      select name,value$ from props$ where name='NLS_CHARACTERSET';
    14-17 inin.ora参数:
      select name,value from v$parameter order by name;
    14-18 SQL共享池:
      select sql_text from v$sqlarea;
    14-19 数据库:
      select * from v$database
    14-20 控制文件:
      select * from V$controlfile;
    14-21 重做日志文件信息:
      select * from V$logfile;
    14-22 来自控制文件中的日志文件信息:
      select * from V$log;
    14-23 来自控制文件中的数据文件信息:
      select * from V$datafile;
    14-24 NLS参数当前值:
      select * from V$nls_parameters;
    14-25 ORACLE版本信息:
      select * from v$version;
    14-26 描述后台进程:
      select * from v$bgprocess;
    14-27 查看版本信息:
      select * from product_component_version;

    15 使用SELECT 的for update子句在查询时给记录加锁
    --创建实验表1
    create table a(a number);
    insert into a values(1);
    commit;
     
    select * from a for update;
    --或
    select * from a for update of a.a;(a表的a列)
     
    --新打开一个SQL*Plus窗口
    conn test/test(test用户上的第二个会话)
    delete from a;
     
    --此时,系统停顿状态,等待解锁,
    --只要在第一个窗口发出roll;或commit;命令,即可解除锁定状态


    16 SELECT中连接的问题,JOIN的使用;

    16-1 交叉连接(笛卡儿积)

    SELECT * FROM TABLE1,TABLE2;

    --结果返回包含TABLE1,TABLE2的所有可能组合

    16-2 等值连接(使用WHERE子句)

    SELECT O.Item,O.PrintNo,A.Yds as Yds FROM Proll O,Proll_use2001 A ;
    WHERE O.Item=A.Item

    --结果返回第二张表中的包含第一张表中的数据,相当于交集

    16-3


    17 form path路径的设置,目的是让oracle develop认到项目的路径,
    使项目的诸如附加的子程序库会自动被oracel develop认到

    17-1 方法:修改注册表中"HKEY_LOCAL_MACHINESOFTWAREORACLEHOME1"中追加

    18 修改ORACEL9i的启动参数

    18-1 与8i不同9i默认是从spfile.ora文件启动,而8i是从pfile文件启动,
    8i修改参数后必须重新启动数据库后才能生效,9i引入spfile,它是一个二进制文件,
    不能直接进行修改,但是可以使用ALTER SYSTEM或ALTER SESSION来动态修改参数,
    并且所有更改可以立即生效。

    18-2 spfile 是一个二进制文件,可以使用RMAN进行备份,第一次数据库启动需要用
    PFILE来创建SPFILE,WINNT缺省目录在${oracle_home}datebase下,init${ORACELSID}.ora在
    A${oracle_home}admindb_nampfile下,oracle数据启动是从spfile${oracle_sid}.ora->
    spfile.ora->init${oraclesid}.ora的顺序来查找启动参数文件。

    18-3
    create spfile from pfile 命令建立spfile文件;

    startup pfile='e:oracleadmineyglenpfileint.ora' 使用pfile文件启动;

    startup 使用spfile文件启动;

    18-4 可以在pfile中设置spfile的文件路径更改:spfile='e:oraclespfiletest.ora'

    18-5 alter system set log_archive_start=false scope=spfile 该命令就可以直接修改spfile

    18-6 scope的三个可选参数:
    MEMORY:改变当前实例
    spfile:改变spfile
    both:改变实例和spfile

    18-7 可以在shutdown immediate后修改SPFILE文件

    18-8 show parameter spfile命令来判断spfile文件是否被使用


    19 在ORACLE中的约束条件中增加对字段的约束,如主键,唯一性,外键等结合客户端的更新检查和错误控制,
    可以达到在远程视图中对数据检查的控制的目的。

    20 删除表中存在的重复记录,从重复记录表中创建一个唯一性的新表

    20-1 删除重复记录
    delete from test where rowid!=(
    select max(rowid) from test b
    where test.id=b.id)

    21-2 唯一性的新表
    create table miyu_new as
    select distinct id,title,text from miyu;

    21 CREATE SEQUENCE 的用法

    21-1 CREATE SEQUENCE DDL语句不能使用在where或pl/sql的过程子句中

    21-2 伪列NEXTVAL,CURRVAL和CREATE SEQUENCE一起使用,但是CURRVAL必须是至少使用过一次NEXTVAL后才能使用

    22 ROWNUM 的用法注意

    22-1 一般来说rownum不能用>或=号来写条件(只用<号是可以的)
    /*错误*/
    select * from (select * from fesco.ssk order by ssbh ) where rownum<200 and rownum>=100;
    /*正确*/
    select * from (select rownum rownum1 ,a.* from fesco.ssk a order by ssbh ) where rownum1<200 and rownum1>=100;

    22-2 使用rownum进行类似排序后取前3的操作

    /*错误,这样的操作不一定是得到排序后的前N个记录,因为rownum在排序之前赋值给每行*/
    select sal form emp where rownum<=3 order by sal
    /*正确*/
    返回工资最少的前3名:
    select sal from (select sal from emp order by sal) where rownum<=3;

    23 动态SQL的使用

    23-1 使用“EXECUTE IMMEDIATE”语句引用非查询语句(DML,DDL)

    /*实例1,DDL语句*/
    EXECUTE IMMEDIATE
      'CREATE TABLE testtable (col1 varchr(10))';
    /*实例2,匿名PL/SQL语句块*/
    v_PLSQLBLOCK :=
       'BEGIN
         FOR v_Rec IN (SELECT * FROM execute_table) LOOP
           DBMS_OUTPUT.PUT_LINE(v_Rec.col1);
         END LOOP;
       END;';
    EXECUTE IMMEDIATE v_PLSQLBLOCK;

  • 相关阅读:
    javaScript系列 [06]-javaScript和this
    javaScript系列 [05]-javaScript和JSON
    javaScript系列 [04]-javaScript的原型链
    javaScript系列 [03]-javaScript原型对象
    javaScript系列 [02]-javaScript对象探析
    javaScript系列 [01]-javaScript函数基础
    jQuery系列 第八章 jQuery框架Ajax模块
    jQuery系列 第七章 jQuery框架DOM操作
    jQuery系列 第六章 jQuery框架事件处理
    jQuery系列 第五章 jQuery框架动画特效
  • 原文地址:https://www.cnblogs.com/shuihaya/p/4011103.html
Copyright © 2011-2022 走看看