• Oracle基本知识


    Oracle基本知识(开发人员必须了解的)

    ******************************************
    第一章 安装数据库
    ******************************************
    1.登录root账号
    ******************************************
    su - root
    service iptables stop
    vim /etc/sysconfig/selinux
    把SELINUX=enforcing 改为 SELINUX=disabled
    ******************************************

    2.检查内存与交换分区的大小,推荐交换分区是内存的2倍
    ******************************************
    grep MemTotal /proc/meminfo
    grep SwapTotal /proc/meminfo
    ******************************************
    如果发现没有交换分区,执行如下命令,手工创建交换分区,执行如下命令
    ******************************************
    dd if=/dev/zero of=/home/swap bs=1024 count=5120000
    mkswap /home/swap
    echo "/home/swap swap swap defaults 0 0" >> /etc/fstab
    ******************************************

    3.修改内核参数
    ******************************************
    vim /etc/sysctl.conf
    ******************************************
    在文件底部添加如下内容
    ******************************************
    fs.file-max = 6815744
    fs.aio-max-nr = 1048576
    kernel.shmall = 2097152
    kernel.shmmax = 2147483648
    kernel.shmmni = 4096
    kernel.sem = 250 32000 100 128
    net.ipv4.ip_local_port_range = 9000 65500
    net.core.rmem_default = 4194304
    net.core.rmem_max = 4194304
    net.core.wmem_default = 262144
    net.core.wmem_max = 1048576
    ******************************************

    4.执行如下命令使其修改内核参数生效
    ******************************************
    sysctl -p
    ******************************************

    5.创建Oracle用户
    ******************************************
    groupadd oinstall
    groupadd dba
    useradd -g oinstall -G dba oracle
    passwd oracle
    ******************************************

    6.修改用户限制
    ******************************************
    vim /etc/security/limits.conf
    ******************************************
    在文件末尾添加如下内容
    ******************************************
    oracle soft nproc 2047
    oracle hard nproc 16384
    oracle soft nofile 1024
    oracle hard nofile 65536
    ******************************************

    7.修改用户验证选项
    ******************************************
    vim /etc/pam.d/login
    ******************************************
    在文件末尾添加
    ******************************************
    session required /lib/security/pam_limits.so
    session required pam_limits.so
    ******************************************

    8.修改用户配置文件
    ******************************************
    vim /etc/profile
    ******************************************
    在文件末尾添加如下内容
    ******************************************
    if [ $USER = "oracle" ]; then
    if [ $SHELL = "/bin/ksh" ]; then
    ulimit -p 16384
    ulimit -n 65536
    else
    ulimit -u 16384 -n 65536
    fi
    fi
    ******************************************

    9.创建安装目录配置
    ******************************************
    mkdir -p /u01/oraInventory
    chown -R oracle:oinstall /u01/
    chmod -R 775 /u01/
    ******************************************

    10.登录oracle账号,设置环境变量
    ******************************************
    su –oracle
    vim .bash_profile
    ******************************************
    在文件末尾添加如下内容
    ******************************************
    umask 022
    export ORACLE_BASE=/u01
    export ORACLE_HOME=$ORACLE_BASE/oracle
    export ORACLE_SID=oris
    export PATH=$ORACLE_HOME/bin:$PATH:$HOME/bin
    export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib
    ******************************************

    11.检查oracle安装前提
    ******************************************
    su - root
    rpm -q binutils compat-libstdc++-33 elfutils-libelf elfutils-libelf-devel glibc glibc-common glibc-devel gcc- gcc-c++ libaio-devel libaio libgcc libstdc++ libstdc++-devel make sysstat unixODBC unixODBC-devel pdksh
    ******************************************
    如果发现缺少包,下载安装包,安装命令如下
    ******************************************
    rpm -ivh ***.rpm
    ******************************************

    ******************************************
    第二章 维护数据库
    ******************************************
    1.创建数据库
    ******************************************
    dbca
    ******************************************

    2.配置数据库监听
    ******************************************
    netca
    ******************************************

    3.查看监听(在oracle账号)
    ******************************************
    lsnrctl - status
    emca -config dbcontrol db -repos recreate 配置OEM
    emctl start dbconsole
    ******************************************

    4.启动数据库
    ******************************************
    sqlplus /nolog 本地模式
    sqlplus bi/vbih@oris as sysdba 远程模式
    conn / as sysdba
    show user
    startup | shutdown immediate
    说明:数据启动模式存在两种,一种是热启动,另一种是冷启动
    正常模式是先启动监听,让后启动数据库
    ******************************************

    5.查看数据库进程
    ******************************************
    ps -ef | grep oracle
    ******************************************

    6.创建表空间
    ******************************************
    create temporary tablespace YNZLBI_TEMP
    tempfile '/u01/oradata/oris/YNZLBI_TEMP.dbf'
    size 50m
    autoextend on
    next 50m maxsize 20480m
    extent management local;

    create tablespace YNZLBI
    logging
    datafile '/u01/oradata/oris/YNZLBI.dbf'
    size 50m
    autoextend on
    next 50m maxsize 20480m
    extent management local;
    注意:临时表空间主要用于排序等,其次表空间里面的文件最好设置最大值,否则
    文件会一直增大(最大文件大小与具体的文件系统有关)
    ******************************************

    7.创建用户并指定表空间
    ******************************************
    create user bi identified by vbih
    default tablespace YNZLBI
    temporary tablespace YNZLBI_TEMP;
    ******************************************

    8.给用户授予权限
    ******************************************
    grant connect,resource,dba to bi;
    ******************************************

    9.数据库备份恢复(不压缩)
    ******************************************
    imp bi/vbih fromuser=bi touser=bi ignore=y file='YNZLBI.dmp'
    exp system/manager file=seapark log=seapark owner=seapark
    ******************************************

    10.数据库备份恢复(压缩)
    ******************************************
    create directory dpdata as '/home/oracle/bak';
    select * from dba_directories;
    grant read,write on directory dpdata to vbi;
    expdp vbi/vbih@orcl schemas=vbi dumpfile=bi.dmp compression=all DIRECTORY=dpdata;
    impdp vbi/vbih DIRECTORY= dpdata DUMPFILE=expdp.dmp SCHEMAS=vbi;
    说明:这种模式好处就是文件oracle会压缩,不用我们之后手动压缩
    ******************************************

    11.删除用户以及表空间
    ******************************************
    drop user BI cascade;
    drop tablespace YNZLBI_TEMP INCLUDING CONTENTS AND DATAFILES;
    DROP TABLESPACE YNZLBI INCLUDING CONTENTS AND DATAFILES;
    ******************************************

    12.给表空间添加数据文件
    ******************************************
    alter tablespace YNZLBI
    add datafile '/home/oracle/bi/oradata/YNZLBI2.dbf'
    size 50M
    AUTOEXTEND ON
    NEXT 50M MAXSIZE 20480M;
    注意:表空间的文件大小可以扩大或者可以缩小(主要要不能损坏数据的前提下)
    ******************************************

    13.收缩表空间
    ******************************************
    alter tablespace YNZLBI coalesce
    ******************************************

    14.查看表空间的使用情况
    ******************************************
    select a.file_id,--文件编号
    a.file_name,--文件名称
    a.filesize,--数据文件占用磁盘空间大小
    b.freesize,--文件中被标记为free的空间大小
    (a.filesize - b.freesize) usedsize,--使用的空间大小。
    c.hwmsize,--已经分配出去的空间大小
    c.hwmsize - (a.filesize - b.freesize) unsedsize_belowhwm,--可以回收的空间大小
    a.filesize - c.hwmsize canshrinksize--没有分配出去的空间大小
    from (select file_id, file_name, round(bytes / 1024 / 1024) filesize
    from dba_data_files) a,
    (select file_id, round(sum(dfs.bytes) / 1024 / 1024) freesize
    from dba_free_space dfs
    group by file_id) b,
    (select file_id, round(max(block_id) * 8 / 1024) HWMsize
    from dba_extents
    group by file_id) c
    where a.file_id = b.file_id
    and a.file_id = c.file_id
    order by unsedsize_belowhwm desc
    ******************************************


    15.释放表空间的文件
    ******************************************
    select a.file#,
    a.name,
    a.bytes / 1024 / 1024 CurrentMB,
    ceil(HWM * a.block_size) / 1024 / 1024 ResizeTo,
    (a.bytes - HWM * a.block_size) / 1024 / 1024 ReleaseMB,
    'alter database datafile ''' || a.name || ''' resize ' ||
    ceil(HWM * a.block_size / 1024 / 1024) || 'M;' ResizeCMD
    from v$datafile a,
    (select file_id, max(block_id + blocks - 1) HWM
    from dba_extents
    group by file_id) b
    where a.file# = b.file_id(+)
    and (a.bytes - HWM * block_size) > 0
    order by 5
    ******************************************


    16.添加控制文件
    ******************************************
    alter system set control_files = '/u01/oracle/oradata/oris/control01.ctl','/u01/oracle/oradata/yoon/control03.ctl' scope=spfile;
    shutdown immediate;
    cp control01.ctl control03.ctl
    statup
    select name from v$controlfile;
    说明:控制文件主要是保证数据库启动时初始化相关的信息
    ******************************************


    16.添加日志文件
    ******************************************
    select group#,member from V$logfile;
    alter database add logfile group 4
    ('/opt/oracle11g/oradata/oracl/redo401.log','/opt/oracle11g/oradata/oracl/redo402.log')
    size 20M;

    select group#,member from V$logfile;
    说明:日志文件最好在一个组下设置多个日志文件,分别存储在不同的存储介质,防止数据丢失
    ******************************************


    17.查询oracle日志模式
    ******************************************
    select name,log_mode from v$database;
    alter system set log_archive_dest_1='location=/oracle/oracle10g/log/archive_log';
    shutdown immediate
    startup mount;
    alter database archivelog;
    alter database open;
    alter system set log_archive_max_processes = 5;
    alter system set log_archive_format = "archive_%t_%s_%r.log" scope=spfile;
    说明:设置数据库处于归档模式,可以保证数据库按照时间点恢复,备份也可以增量备份。
    ******************************************

    ******************************************
    第三章 oracle内置视图
    ******************************************


    1.了解oracle的一些内置视图
    ******************************************
    select * from v$**
    select * from dba_**
    show paramter *
    说明:显示oracle的一些参数以及内置的动态性能视图
    ******************************************


    2.数据启动文件
    ******************************************
    pfile:文本可以编辑
    spile:只能使用alert命令修改
    create spfile from pfile
    说明:里面就是启动oracle的一些具体的参数
    ******************************************


    3.查看数据库的归档模式
    ******************************************
    SELECT created, log_mode, log_mode FROM v$database;
    ******************************************


    4.查看数据库的版本
    ******************************************
    SELECT version
    FROM product_component_version
    WHERE substr(product, 1, 6) = 'Oracle';
    ******************************************


    5.查看数据库库对象
    ******************************************
    SELECT owner, object_type, status, COUNT(*) count#
    FROM all_objects
    GROUP BY owner, object_type, status;
    ******************************************


    6.oracle游标
    ******************************************
    SQL执行过程时,在数据库中分配一个session私有区域,执行SQL的过程中,里面存储一些数据,
    如果访问这些数据,就需要游标。所以DML或者DDL都在内存,存在一个内存标示,它就是游标。
    游标有两种:显示游标、隐式游标
    隐式游标:SQL%ROWCOUNT、SQL%FOUND、SQL%NOTFOUND、SQL%ISOPEN,已经内置好的指标
    显示游标:需要自己声明
    ******************************************
    隐式游标的属性 返回值类型 意 义
    SQL%ROWCOUNT 整型 代表DML语句成功执行的数据行数
    SQL%FOUND 布尔型 值为TRUE代表插入、删除、更新或单行查询操作成功
    SQL%NOTFOUND 布尔型 与SQL%FOUND属性返回值相反
    SQL%ISOPEN 布尔型 DML执行过程中为真,结束后为假

    ******************************************
    第四章 oracle基本概念
    ******************************************


    1.什么是数据库
    ******************************************
    oracle是一个软件,它的数据存储在文件系统里面,存储的形式的文件的形式,但是这个文件
    格式我们不能直接看,只能通过oracle软件的后天进程来读取给我们看。所以oracle称为数据库软件。


    2.什么实例
    ******************************************
    oracle软件启动之后,后台会运行一些列服务,我们把这些实例称之为实例。所以数据库应该是物理文件(存储文件的介质
    ,比如数据文件、日志文件、参数文件、控制文件等)和实例。


    3.什么事SID
    ******************************************
    oracle启动之后,一个物理存储介质对应一个实例(如果对应多个实例,就是RAC,多实例对应一个数据库物理文件),而SID是数据库
    实例在内存中的一个标示,类似身份证。


    4.oracle主要进程:数据读写进程、日志读写进程、检查点进程、检测进程,这些都是oracle实例的后台进程,此外还
    有就是监听进程、服务进程(对应用户)。
    注意:一个会话对应一个服务进程,后台进程与会话无关,仅仅与oracle程序有关,是专业操作数据库的程序。


    5.oracle启动状态
    ******************************************
    1.nomount 启动实例
    2.mount 读取控制文件,初始化相关参数
    3.open 读取数据文件、日志文件,数据库正式启动成功。
    而数据库关闭则顺序刚好相反。


    6.介质恢复与实例恢复
    ******************************************
    介质恢复就是把备份文件恢复
    实例恢复是oracle自动进行的,为什么那?因为oracle存在在线的日志文件,每次oracle数据库
    启动都会检查数据文件与在线的日志文件受否一直,不一致就运行后台服务保证数据库文件与在线日志文件
    以及控制文件一直,而看是否一致的条件就是SCN。
    注意:实例恢复与归档日志文件无关。
    数据库启动---后台进程启动--实例启动---自动运行实例恢复---打开数据库。
    所以实例恢复是自动运行的与使用数据库的人无关
    ******************************************


    7.增量备份与全量备份
    ******************************************
    全量备份:就是每次全部备份,备份到数据库当前时间,有点完整备份
    增量备份:基于时间段做备份,有点备份的文件小速度快。
    一般情况下,各一段时间做一个全量备份,之后做增量备份.....
    恢复是:先做全量恢复,之后做增量恢复。
    ******************************************

    8.系统表空间
    ******************************************
    记录oracle的元数据信息,比如create创建对象等
    ******************************************


    9.oracle如何分配存储
    ******************************************
    oracle里面的存储的最小单位是block的逻辑结构,而磁盘分配的都是在段的基础上进行
    分配,一个段是逻辑上连续的block,通常是4M或者8M,一般情况下,表存储在一个段中,而
    索引存储在另一个段中,BLOB以及CLOB存在一个段中,一个段仅能在一个物理数据文件里面。
    oracle的操作都是基于block操作。一个block里面可以存储多行,里面有存储事务信息的事务槽
    SLOT
    ******************************************


    10.什么是HWM高水位线
    ******************************************
    oracle执行插入数据是需要申请数据块,数据块从磁盘申请之后,HWM就越大,但是如果删除数据,oracle占用的
    block就会减少,但是HWM不会减少,因为block已经分配给了oracle,文件系统无法回收,oracle以后插入少量数据
    时候可以使用这些快而不用到磁盘申请block。一般truncate可以降低水位线HWM。所以HWM与oracle插入数据放到那些
    快有关系。这就是oracle的磁盘申请磁盘空间的方法。
    从HWM下查找block插入数据,如果没有空闲block,从磁盘申请。
    一个segmemnt下面存在分配的freelist
    ******************************************

    10.什么是undo、redo
    ******************************************

    redo:就是oracle的事务日志,数据库先写数据到日志文件(连续写),功能块,之后写到数据文件(非连续写),主要就是commit

    undo:rollback的操作基于undo,也就是说oracle修改数据以后,原先的数据保存在undo段里面

    ******************************************

  • 相关阅读:
    rt_thread studio结合cubmx进行stm32驱动开发学习
    rt_thread之时钟管理
    rt_thread线程间通讯
    使用jQuery开发iOS风格的页面导航菜单
    使用jQuery开发一个带有密码强度检验的超酷注册页面
    使用Javascript来创建一个响应式的超酷360度全景图片查看幻灯效果
    [英] 推荐 15 个 jQuery 选择框插件
    JavaScript封装Ajax(类JQuery中$.ajax()方法)
    阿里前端电话面试
    基于HTML5的Web跨设备超声波通信方案
  • 原文地址:https://www.cnblogs.com/gstsyyb/p/4025148.html
Copyright © 2020-2023  润新知