zoukankan      html  css  js  c++  java
  • oracle知识点

    数据库这个目录,好像不应该再叫做数据库,而应该称做数据存储或存储架构

    其实数据存储说白了就是地方,空间的问题,即东西往哪放

    典型的数据存储有关系数据库,k/v存储,内存数据库,依照不同的数据模型。这里可以参照数据库之BDB和sqlite

    一篇文章通常是放在一个文件中,以文件系统方式存储

    有些东西是以块进行存储的,而非文件系统方式存储。如rsync与mfs好像有点类似,都是传输块的chunk,chunk的,还有svn的数据存储也是很好的样例。

    一些结构化的数据可以依照层次放在excel表,也可以放入数据库中,

    非结构化数据如图片,歌曲可以放在对像存储里。

    sqlnet.log的文件位置

    当应用程序因网络问题出错时,常常会在程序目录下生成sqlnet.log文件,要控制该文件的生成位置,需修改sqlnet.ora。
    在sqlnet.ora中增加如下参数:
    log_directory_client=<path>
    这样sqlnet.log就会生成到指定的文件夹。
    如果不想生成该文件,若系统是unix或linux,则指定
    log_directory_client=/dev/null
    即可

    Oracle Database 11g Release 2

    Standard Edition, Standard Edition One, and Enterprise Edition

    7/13: Patch Set 11.2.0.4 for Linux and Solaris is now available on support.oracle.com.
    Note: it is a full installation (you do not need to download 11.2.0.1 first).
    See the README for more info (login to My Oracle Support required).

    同一个账户
    11.2.0.1.0登录可以自由下载
    11.2.0.4的补丁包登录不了


    登录用户才可以阅读这个文件11.2.0.4的readme
    https://updates.oracle.com/Orion/Services/download?type=readme&aru=16716375


    My Oracle Support
    MOS 就是之前DBA 熟知的Metalink 。是Oracle 提供技术支持的在线平台,担负着资料查询 补丁更新,服务支持等。基本上是Oracle 与客户交流的接口。MOS 账号一般只有购买正版的客户才能接入,且需要每年续费 一般几万到几十万不等 以获得账号的持续可用,资源比较难得。

    一般国内的小型企业都是找一些实施顾问购买,他们手里有闲置的资源

    账号很难的,资源太少了,。DBA 是少不了它的。
    建议你去淘宝之类的网站 搜搜,
    比如:
    Oracle Metalink/Support 顾问CSI

     

    使用 MD5 编码实现数据库用户密码字段的加密,可以有效防止系统维护人员直接进入数据库时出现系统安全漏洞<直接使用 SELECT 语句查询,将用户密码字段只能看到乱码,或者"****">
    DBMS_OBFUSCATION_TOOLKIT.MD5 DBMS_OBFUSCATION_TOOLKIT.MD5 是 MD5 编码的数据包函数,但偶在使用 select DBMS_OBFUSCATION_TOOLKIT.MD5(input_string =>'abc') a from Dual 时,却有错误提示,看来该函数只能直接在程序包中调用,不能直接应用于 SELECT 语句。

    oracle ebs全称是Oracle 电子商务套件(E-Business Suit),是在原来Application(ERP)基础上的扩展,包括ERP(企业资源计划管理)、HR(人力资源管理)、CRM(客户关系管理)等等多种管理软件的集合,是无缝集成的一个管理套件。 

    http://blog.csdn.net/guoyjoe/article/details/9478179  Oracle学习路线与方法

    数据库设计规范是个技术含量相对低的话题,只需要对标准和规范的坚持即可做到。当系统越来越庞大,严格控制数据库的设计人员,并且有一份规范书供执行参考。在程序框架中,也有一份强制性的约定,当不遵守规范时报错误。

    以下20个条款是我从一个超过1000个数据库表的大型ERP系统中提炼出来的设计约定,供参考。

    http://docs.oracle.com/en/

    http://docs.oracle.com/cd/E11882_01/nav/portal_4.htm

    http://www.cnblogs.com/moveofgod/p/3731680.html  oracle文档解释

    oracle产品

    Oracle Application Express (Oracle APEX),

    oracle identify directory(OID)  类似于microsoft的ad

    Global Pricing and Licensing,价格和许可

    https://www.oracle.com/corporate/pricing/index.html

    http://www.itpub.net/thread-485826-1-1.html    提问的智慧Oracle

    oracle路径

    安装目录

    [oracle@oracle5A ~]$ cd $ORACLE_HOME
    [oracle@oracle5A db_1]$ cd dbs    此目录一般有initflt.ora与spfileflt.ora
    /5A/oracle/product/11.2.0/db_1/dbs

    Oracle备份方式主要分为数据泵导出备份、热备份与冷备份三种,今天首先来实践一下数据泵备份与还原。数据泵导出/导入属于逻辑备份,热备份与冷备份都属于物理备份。oracle10g开始推出了数据泵(expdp/impdp),可以使用并行参数选项,因此,相对于传统的exp命令来说,执行效率更高。

    oracle概念

    DDL:数据库模式定义语言,关键字:create
    DML:数据操纵语言,关键字:Insert、delete、update
    DCL:数据库控制语言 ,关键字:grant、remove
    DQL:数据库查询语言,关键字:select

    SQL Database Manipulation Language(DML) commands update,insert,delete

    rigid    adj. 严格的;僵硬的,死板的;坚硬的;精确的
    predetermined    adj. 业已决定的;先已决定的
    hindered    阻碍

    The preceding database management systems stored data in rigid, predetermined relationships.
    Because no data definition language existed, changing the structure of the data was difficult.
    Also, these systems lacked a simple query language, which hindered application development.

    数据库模式定义语言并非程序设计语言,DDL数据库模式定义语言是SQL语言(结构化程序设计语言)的组成部分。SQL语言包括四种主要程序设计语言类别的语句:数据定义语言(DDL),数据操作语言(DML),数据控制语言(DCL)和事务控制语言(TCL)。

    几种连接用到的命令形式 

    1.sqlplus / as sysdba 这是典型的操作系统认证,不需要listener进程 
    2.sqlplus sys/oracle 这种连接方式只能连接本机数据库,同样不需要listener进程 
    3.sqlplus sys/oracle@orcl 这种方式需要listener进程处于可用状态。最普遍的通过网络连接。 
    以上连接方式使用sys用户或者其他通过密码文件验证的用户都不需要数据库处于可用状态,操作系统认证也不需要数据库可用,普通用户因为是数据库认证,所以数据库必需处于open状态。

    Instant Client中不包含tnsping, exp/imp, rman, netca等工具. 如果需要这些工具则需要安装oracle client

    Oracle主要版本:

    Oracle 8i:i,指Internet,表示此时Oracle公司正式开始进军互联网
    Oracle 9i:Oracle 9i和8i相比是非常相似的
    Oracle 10g:g,表示网格Grid技术。
    Oracle 11g:g,表示网格Grid技术。
    Oracle 12c:c,表示云Clond技术。

    Oracle Database 11g Express Edition

    http://blog.sina.com.cn/s/blog_626a73d80100o9sd.html  Orace 9i的标准版&企业版  Oracle 10g标准版&企业版

    http://wenku.baidu.com/link?url=idLMNHSwWfbRviP_UfFG4G4Ph65q7Ei5ZOK1dht4aPL-lGCMHYMdFEEG5R3UvXVsEmrYWFWpDipyY_xJOWD3lzvy9_Ms8ywvYpP6I2oze3_  标准版、企业版、易捷版Oracle区别(11g)中文

    为了避免混淆,甲骨文宣布改变Java版本号命名方式:自JDK 5.0起,Java以两种方式发布更新——Limited Update包含新功能和非安全修正,Critical Patch Updates(CPUs)只包含安全修正。甲骨文将继续以这两种方式发布更新,但其版本号将有所改变: Limited Update更新使用的版本号将是20的倍数,而CPU更新采用的版本号将是上一个Limited Update版本号加上五的倍数后的奇数。 举例来说,JDK 7 下一个 Limited Update版本将是7u40,接下来的三个CPU版本号将是 7u45(40+5),7u51(40+2x5后的第一个奇数),7u55(40+3x5),随后发布的Limited Update版本号是7u60,三个CPU版本号分别为7u65、7u71和7u75。

    ORACLE自动断开数据库连接解决办法

    dba_profiles 

    方法一、直接修改资源配置文件

        分三个步骤在sqlplus环境下完成。

        第一步,查询资源文件,找到CONNECT_TIME所在的profile名。

            select resource_name,profile from dba_profiles; 

         第二步,用alter命令修改profile中的值;

             alter profile MONITORING_PROFILE limit connect_time unlimited;(或跟一个时间值,如1000,单位为分钟)

             alter profile MONITORING_PROFILE limit idle_time unlimited; 

         第三步,用如下命令查看profile中的值;

             select resource_name,limit from dba_profiles where profile='MONITORING_PROFILE';

         方法二:通过创建资源配置文件并进行用户分配来完成。

         分三个步骤在sqlplus环境下完成。[该方法不对其它数据库连接用户产生影响]

         第一步,查看并修改resource_limit的状态。 www.2cto.com 

         SQL>show   parameter   resource_limit;   如果为FALSE,则将其修改为TRUE,否则配置不会生效:  

         SQL>alter system set resource_file=true;            

         第二步,用create profile命令创建一个新的profile文件:  

         SQL>create profile [profile文件名] limit connect_time unlimited idle_time unlimited;  

         [示例:create profile test_profile limit connect_time unlimited idle_time unlimited;]  

         第三步,将这个新的配置文件分配给该用户:  

         SQL>alter   user   [user_name,如ROOT_QY]   profile  [profile文件名];

         [示例:alter user root_qy profile test_profile;]

    select resource_name,profile from dba_profiles; 

    select resource_name,limit from dba_profiles where profile='MONITORING_PROFILE';
    v$开头的都是视图

    http://orclib.sourceforge.net/ 

    OCILIB

    Welcome to OCILIB – C and C++ Driver for Oracle website !

    OCILIB is an open source and cross platform Oracle Driver that delivers efficient access to Oracle databases.

    The OCILIB library :

    • offers a rich, full featured and easy to use API
    • runs on all Oracle platforms
    • is written in pure ISO C99 code with native ISO C Unicode support
    • provides also a C++ API written in standard C++03
    • Enables high productivity
    • encapsulates OCI (Oracle Call Interface)
    • is the most complete available OCI wrapper

    客户端连接数据库

    1.sqlplus远程连接全过程,装3个包,输出库路径,执行连接命令就可以了

    [root@84-monitor oracle-instantclient-10.2.0.3_x64]# ll
    total 34740
    -rw-r--r--. 1 root root 34494446 Apr  1  2013 oracle-instantclient-basic-10.2.0.3-1.x86_64.rpm
    -rw-r--r--. 1 root root   289620 Apr  1  2013 oracle-instantclient-devel-10.2.0.3-1.x86_64.rpm
    -rw-r--r--. 1 root root   783273 Apr  1  2013 oracle-instantclient-sqlplus-10.2.0.3-1.x86_64.rpm
    [root@84-monitor oracle-instantclient-10.2.0.3_x64]# rpm -ivh ora*
    [root@84-monitor oracle-instantclient-10.2.0.3_x64]# cat >>/etc/profile
    export LD_LIBRARY_PATH=/usr/lib/oracle/10.2.0.3/client64/lib/
    [root@84-monitor oracle-instantclient-10.2.0.3_x64]# sqlplus64 fltdata/flt123@192.168.2.1/man

    2.设置plsql dev连接数据库

    1.下载两个软件包,plsqldev和32位数据库对应版本的instantclient,oracle 9i以上请选 instantclient-basic-win32-11.xxx的下载包,以下的选instantclient-basic- win32-10.xx下载包。plsqldev只支持32位的oci

    2.解压下载下来的instantclient,并在oci.dll目录下新建networkadmin nsnames.ora

    3.设置plsqldev,填入oci.dll路径与instantclient路径即可

    http://www.cnblogs.com/dingyingsi/archive/2013/02/26/2933464.html    设置plsql dev连接数据库

    http://allroundautomations.swmirror.com/plsqldev714.exe  

    http://download.oracle.com/otn/nt/instantclient/112010/instantclient-basic-win32-11.2.0.1.0.zip?AuthParam=1412927983_fc15e570042f86f8690b031cc422d821

    linux下的sqlplus方向键与历史命令问题解决

    默认进入sqlplus后,方向键失效,并且无命令历史

    近 来因工作需要业余在学习oracle,发现通过SecureCRT或putty等SSH客户端远程登录Linux下oracle的sqplus时,输错字 符后按Backspace键或Del键删除时,会出现^H或其他乱七八糟的的字符,感觉非常别扭不习惯,虽然可以通过Ctrl+Backspace组合键 实现删除功能,但是严重影响使用效率。google了一番,终于完美解决此问题。总结记录如下,本文是此问题最完整的总结:

    一、SecureCRT终端里的解决方法:(不完美)

    在SecureCRT终端里,如果要在sqlplus下使用Backspace来删除字符,有两种临时方法。
    第一种是使用stty命令重新定义^H,可以在使用sqlplus之前执行stty erase ^H,也可以把这一句放到oracle用户的.bash_profile文件里。
    stty命令简介:
    Unix或者Linux中有个stty命令,它的作用是打印或更改terminal(终端)的设置。
    常用参数:
    -a --all 用人类可读表格,打印出所有现有设置
    -g --save 用stty可读表格,打印出所有现有设置
    --help 帮助
    --version 版本

    查看当前stty现有设置,如图:
    第 二种是使用SecureCRT的设置,在会话属性的Terminal->Emulation->Mapped Keys中,选中Backspace sends delete或Delete sends backspace中的其中一个,并确保另一个不被选中。

    另一个问题是bash shell下的sqlplus中使用上下箭头无法显示上下命令,而只是显示^[[A,这个问题可以安装rlwrap这个工具解决!

    二、利用rlwrap工具解决方法:(完美)

    1、安装rlwrap和readline库
    CentOS下可以用EPEL的yum源直接安装,步骤如下:

    (1)RHEL/CentOS/SL Linux 6.x 下安装 EPEL6 yum源:
    32位系统选择:
    # rpm -ivh http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-7.noarch.rpm
    64位系统选择:
    # rpm -ivh http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
    导入key:
    # rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6
    默认会在/etc/yum.repos.d/下创建epel.repo和epel-testing.repo两个配置文件。
    (2)安装rlwrap和readline:
    # yum install rlwrap readline readline-devel
    其他Linux发行版如果源里没有rlwrap和readline的(如SUSE企业版默认没有这两个包),要分别下载这两个源码包编译安装一下。
    # wget ftp://ftp.gnu.org/gnu/readline/readline-6.2.tar.gz
    # tar zxvf readline-6.2.tar.gz
    # cd readline-6.2/
    # ./configure
    # make
    # make install
    # wget http://utopia.knoware.nl/~hlub/rlwrap/rlwrap-0.37.tar.gz
    # tar zxvf rlwrap-0.37.tar.gz
    # cd rlwrap-0.37/
    # ./configure
    # make
    # make install
    (3)设置sqlplus的系统别名:
    # vim /home/oracle/.bash_profile
    在头部或尾部添加:
    alias sqlplus='rlwrap sqlplus'
    alias rman='rlwrap rman'
    退出oracle用户再重新登录就ok。现在sqlplus用起来就很爽很习惯了!

    安装时所遇到的问题

    CentOS 6 X86_64系统通过yum安装32位软件包的方法
    http://bbs.linuxtone.org/thread-18726-1-1.html

    有两种方法可以借鉴,这里记录一下,留作备忘。
    假如你要安装libjpeg的32位版本
    1、查询名称
        yum search libjpeg.i686
    2、一劳永逸的方法,这么做会同时安装32和64位版本。
        echo 'multilib_policy=all' >> /etc/yum.conf 

    安装程序对环境进行检查,由于CentOS的32bit程序包都是i686的,而oracle要求i386,所以此处会失败,忽略即可。点击next
    在fedora 22 64位环境下,安装oracle11.2-64,在安装需要包时,下面包都要求32位,但yum库中是i686,oracle要求i386,所以安装不成功。
    libaio
    libaio-devel
    libgcc
    libstdc++
    unixODBC
    unixODBC-devel
    compat-libstdc++-33


    Bash内建了一个限制器"ulimit"。注意任何硬限制都不能设置得太高,因此如果你在/etc/profile或用户的 .bash_profile (用户不能编辑或
    删除这些文件)中定义了限制规则,你就能对用户的Bash shell实施限制。这对于缺少PAM支持的LINUX旧发行版本是很有用的。你还必须确保
    用户不能改变他们的登录shell。限制的设置与PAM相似。例如:
    ulimit –Sc 0
    ulimit –Su 100
    ulimit –Hu 150

    tns启动错误

    [root@oracle2 trace]# tail listener.log
    Trace level is currently 0
    
    Started with pid=4749
    Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=oracle2.localdomain)(PORT=1521)))
    Error listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))
    TNS-12555: TNS:permission denied
     TNS-12560: TNS:protocol adapter error
      TNS-00525: Insufficient privilege for operation
       Linux Error: 1: Operation not permitted
    No longer listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=oracle2.localdomain)(PORT=1521)))
    [root@oracle2 trace]# pwd
    /oracle/diag/tnslsnr/oracle2/listener/trace
    
    (应该在oracle用户下启动)
    [root@oracle2 ~]# lsnrctl status
    
    LSNRCTL for Linux: Version 11.1.0.6.0 - Production on 21-AUG-2015 08:53:31
    
    Copyright (c) 1991, 2007, Oracle.  All rights reserved.
    
    Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=oracle2.localdomain)(PORT=1521)))
    TNS-12541: TNS:no listener
     TNS-12560: TNS:protocol adapter error
      TNS-00511: No listener
       Linux Error: 111: Connection refused
    Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))
    TNS-12541: TNS:no listener
     TNS-12560: TNS:protocol adapter error
      TNS-00511: No listener
       Linux Error: 111: Connection refused
    
    从上面的错误来看,应该是对应的权限操作的问题,经了解,是关于/var/tmp目录下的.oracle文件权限
    
    [oracle@oracle tmp]$ ls -al
    total 12
    drwxrwxrwt  3 root root 4096 Nov 13 15:32 .
    drwxr-xr-x 22 root root 4096 Aug 25  2011 ..
    drwxrwxrwt  2 root root 4096 Nov 13 15:30 .oracle (注意这个文件是隐藏文件)
    chmod 777 /var/tmp/.oracle
    
    或者是
    [oracle@oracle tmp]$  chown -R oracle.dba .oracle/
    问题解决
    
    
    停掉ems-db-107上监听程序:
    srvctl stop scan_listener -i 1
    srvctl stop listener -l LISTENER -n ems-db-107
    删掉/var/tmp/.oracle/下的文件,重启:
    srvctl start listener -l LISTENER -n ems-db-107
    问题解决.
    其实事后分析发现,其实并不需要删除这个目录下的所有文件,只需删除文件:srwxrwxrwx 1 daemon root     0 05-25 16:05 s#10425.1
    srwxrwxrwx 1 daemon root     0 05-25 16:05 s#10425.2
    srwxrwxrwx 1 daemon root     0 05-25 16:05 sLISTENER
    即可,这三个文件的权限应该是grid的,但是当在root 用户下启动listener后其所属用户为root了。
    事后调查发现,出现这个问题的原因是另外一个同事用root用户执行了grid相关资源的操作,其中就包含监听的操作。
  • 相关阅读:
    Day 03--设计与完善(一)
    Day 02--选题与设计(二)
    Day 01--选题与设计(一)
    课程设计第六天,08.24
    课程设计第五天,08.23
    课程设计第四天,08.22
    课程设计第三天,08.21
    软件课程设计第二天,08.20
    软件课程设计第一天
    旋转正方形
  • 原文地址:https://www.cnblogs.com/createyuan/p/4019127.html
Copyright © 2011-2022 走看看