zoukankan      html  css  js  c++  java
  • oracle11g笔记

    安装

    #!/bin/bash
    #安装oracle110203
    
    pageDir="/opt/tools/oracle"
    bdFile="/tmp/bdFile.txt"
    opassword="oracle"
    
    check_ok(){
      if [ $? != 0 ]
      then
        echo "Error, Check the error log."
        exit 1
      fi
    }
    
    myum(){
      if ! rpm -qa|grep -q "^$1"
      then
        yum install -y $1
        check_ok
      else
        echo $1 already installed.
      fi
    }
    
    check_server(){
      if ! grep -q "$1" "$bdFile"
      then
        "$1"
      fi  
    }
    
    
    install_oracleinit(){
        for i in binutils compat-libstdc++-33 compat-libstdc++-33.i686 elfutils-libelf elfutils-libelf-devel gcc gcc-c++ glibc glibc.i686 glibc-common glibc-devel glibc-devel.i686 glibc-headers ksh libaio libaio.i686 libaio-devel libaio-devel.i686 libgcc libgcc.i686 libstdc++ libstdc++.i686 libstdc++-devel make sysstat unixODBC unixODBC-devel
        #centos7
    #for i in binutils compat-libstdc++-33* elfutils-libelf elfutils-libelf-devel gcc gcc-c++ glibc glibc.i686 glibc-common glibc-devel glibc-devel.i686 glibc-headers ksh libaio libaio.i686 libaio-devel libaio-devel.i686 libgcc libgcc.i686 libstdc++* make sysstat unixODBC unixODBC-devel
    do myum $i done if ! grep -q oinstall /etc/group then /usr/sbin/groupadd oinstall check_ok fi if ! grep -q dba /etc/group then /usr/sbin/groupadd dba check_ok fi if ! grep -q oracle /etc/passwd then /usr/sbin/useradd -g oinstall -G dba oracle check_ok fi if ! grep -q oracle /etc/sudoers then echo "oracle ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers fi echo $opassword | passwd --stdin oracle cat << EOF > /etc/sysctl.conf kernel.sem = 250 32000 100 128 fs.file-max = 6815744 net.ipv4.ip_local_port_range = 9000 65500 net.core.rmem_default = 262144 net.core.rmem_max = 4194304 net.core.wmem_default = 262144 net.core.wmem_max = 1048586 fs.aio-max-nr = 1048576 EOF /sbin/sysctl -p check_ok #su oracle #check_ok if ! grep -q oracle /etc/security/limits.conf then echo "oracle soft nofile 1024" >> /etc/security/limits.conf echo "oracle hard nofile 65536" >> /etc/security/limits.conf echo "oracle soft nproc 2047" >> /etc/security/limits.conf echo "oracle hard nproc 16384" >> /etc/security/limits.conf fi if ! grep -q "pam_limits.so" /etc/pam.d/login then echo "session required /lib64/security/pam_limits.so" >> /etc/pam.d/login echo "session required pam_limits.so" >> /etc/pam.d/login fi if ! grep -q "oracle" /etc/profile/env.sh then echo "if [ $USER == "oracle" ]; then" >> /etc/profile/env.sh echo " if [ $SHELL == "/bin/ksh" ]; then" >> /etc/profile/env.sh echo " ulimit -p 16384" >> /etc/profile/env.sh echo " ulimit -n 65536" >> /etc/profile/env.sh echo " else" >> /etc/profile/env.sh echo " ulimit -u 16384 -n 65536" >> /etc/profile/env.sh echo " fi" >> /etc/profile/env.sh echo "fi" >> /etc/profile/env.sh fi #close selinux #sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config #selinux_s=`getenforce` #if [ $selinux_s == "Enforcing" -o $selinux_s == "enforcing" ] #then # setenforce 0 #fi # [ -f /etc/oraInst.loc ] || touch /etc/oraInst.loc cat << EOF > /etc/oraInst.loc inventory_loc=/opt/oracle/oraInventory inst_group=oinstall EOF chown oracle:oinstall /etc/oraInst.loc chmod 664 /etc/oraInst.loc echo "install_oracleinit ok" echo "install_oracleinit" >> $bdFile } install_oracle11g(){ #u=`whoami` #[ "$u" == "root" ] || su root #check_ok [ -d /opt/oracle ] || mkdir -p /opt/oracle chown -R oracle:oinstall /opt/oracle/ chmod -R 775 /opt/oracle/ #u=`whoami` #[ "$u" == "oracle" ] || su oracle if ! grep -q "ORACLE_BASE" /home/oracle/.bash_profile then echo "umask 022" >> /home/oracle/.bash_profile echo "export ORACLE_BASE=/opt/oracle" >> /home/oracle/.bash_profile echo "export ORACLE_SID=orcl" >> /home/oracle/.bash_profile echo "export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1" >> /home/oracle/.bash_profile echo "export TNS_ADMIN=$ORACLE_HOME/network/admin" >> /home/oracle/.bash_profile echo "export PATH=.:${PATH}:$HOME/bin:$ORACLE_HOME/bin" >> /home/oracle/.bash_profile echo "export PATH=${PATH}:/usr/bin:/bin:/usr/bin/X11:/usr/local/bin" >> /home/oracle/.bash_profile echo "export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:$ORACLE_HOME/lib" >> /home/oracle/.bash_profile echo "export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:$ORACLE_HOME/oracm/lib" >> /home/oracle/.bash_profile echo "export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/lib:/usr/lib:/usr/local/lib" >> /home/oracle/.bash_profile echo "export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/JRE" >> /home/oracle/.bash_profile echo "export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/JRE/lib" >> /home/oracle/.bash_profile echo "export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/jlib" >> /home/oracle/.bash_profile echo "export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/rdbms/jlib" >> /home/oracle/.bash_profile echo "export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/network/jlib" >> /home/oracle/.bash_profile echo "export LIBPATH=${CLASSPATH}:$ORACLE_HOME/lib:$ORACLE_HOME/ctx/lib" >> /home/oracle/.bash_profile echo "export ORACLE_OWNER=oracle" >> /home/oracle/.bash_profile echo "export SPFILE_PATH=$ORACLE_HOME/dbs" >> /home/oracle/.bash_profile echo "export ORA_NLS10=$ORACLE_HOME/nls/data" >> /home/oracle/.bash_profile fi source /home/oracle/.bash_profile check_ok [ -d /home/oracle/etc ] || mkdir -p /home/oracle/etc [ -f /home/oracle/etc/db_install.rsp ] || touch /home/oracle/etc/db_install.rsp cat << EOF > /home/oracle/etc/db_install.rsp oracle.install.responseFileVersion=/oracle/install/rspfmt_dbinstall_response_schema_v11_2_0 oracle.install.option=INSTALL_DB_SWONLY ORACLE_HOSTNAME=`hostname` UNIX_GROUP_NAME=oinstall INVENTORY_LOCATION=/opt/oracle/oraInventory SELECTED_LANGUAGES=en,zh_CN,zh_TW ORACLE_HOME=/opt/oracle/product/11.2.0/db_1 ORACLE_BASE=/opt/oracle oracle.install.db.InstallEdition=EE oracle.install.db.EEOptionsSelection=false oracle.install.db.optionalComponents=oracle.rdbms.partitioning:11.2.0.3.0,oracle.oraolap:11.2.0.3.0,oracle.rdbms.dm:11.2.0.3.0,oracle.rdbms.dv:11.2.0.3.0,oracle.rdbms.lbac:11.2.0.3.0,oracle.rdbms.rat:11.2.0.3.0 oracle.install.db.DBA_GROUP=dba oracle.install.db.OPER_GROUP=oinstall oracle.install.db.CLUSTER_NODES= oracle.install.db.isRACOneInstall= oracle.install.db.racOneServiceName= oracle.install.db.config.starterdb.type=GENERAL_PURPOSE oracle.install.db.config.starterdb.globalDBName=orcl oracle.install.db.config.starterdb.SID=orcl oracle.install.db.config.starterdb.characterSet=AL32UTF8 oracle.install.db.config.starterdb.memoryOption=true oracle.install.db.config.starterdb.memoryLimit=512 oracle.install.db.config.starterdb.installExampleSchemas=false oracle.install.db.config.starterdb.enableSecuritySettings=true oracle.install.db.config.starterdb.password.ALL=oracle oracle.install.db.config.starterdb.password.SYS=oracle oracle.install.db.config.starterdb.password.SYSTEM=oracle oracle.install.db.config.starterdb.password.SYSMAN= oracle.install.db.config.starterdb.password.DBSNMP= oracle.install.db.config.starterdb.control=DB_CONTROL oracle.install.db.config.starterdb.gridcontrol.gridControlServiceURL= oracle.install.db.config.starterdb.automatedBackup.enable=false oracle.install.db.config.starterdb.automatedBackup.osuid= oracle.install.db.config.starterdb.automatedBackup.ospwd= oracle.install.db.config.starterdb.storageType= oracle.install.db.config.starterdb.fileSystemStorage.dataLocation= oracle.install.db.config.starterdb.fileSystemStorage.recoveryLocation= oracle.install.db.config.asm.diskGroup= oracle.install.db.config.asm.ASMSNMPPassword= MYORACLESUPPORT_USERNAME= MYORACLESUPPORT_PASSWORD= SECURITY_UPDATES_VIA_MYORACLESUPPORT=false DECLINE_SECURITY_UPDATES=true PROXY_HOST= PROXY_PORT= PROXY_USER= PROXY_PWD= PROXY_REALM= COLLECTOR_SUPPORTHUB_URL= oracle.installer.autoupdates.option= oracle.installer.autoupdates.downloadUpdatesLoc= AUTOUPDATES_MYORACLESUPPORT_USERNAME= AUTOUPDATES_MYORACLESUPPORT_PASSWORD= EOF chown -R oracle:oinstall /home/oracle chmod 700 /home/oracle/etc/*.rsp cd $pageDir #[ -f linux.x64_11gR2_database_1of2.zip ] || (echo "not linux.x64_11gR2_database_1of2.zip file..";exit 1) #[ -f linux.x64_11gR2_database_2of2.zip ] || (echo "not linux.x64_11gR2_database_2of2.zip file..";exit 1) [ -f p10404530_112030_Linux-x86-64_1of7.zip ] || (echo "not p10404530_112030_Linux-x86-64_1of7.zip file..";exit 1) [ -f p10404530_112030_Linux-x86-64_2of7.zip ] || (echo "not p10404530_112030_Linux-x86-64_2of7.zip file..";exit 1) if [ ! -d database ] then unzip p10404530_112030_Linux-x86-64_1of7.zip check_ok unzip p10404530_112030_Linux-x86-64_2of7.zip check_ok fi cd database su -l -c "$pageDir/database/runInstaller -silent -force -responseFile /home/oracle/etc/db_install.rsp" oracle
      

         #忽悠检查
         #su -l -c "$pageDir/database/runInstaller -ignoreSysPrereqs -ignorePrereq -silent -force -responseFile /home/oracle/etc/db_install.rsp" oracle


    sleep 600 check_ok /opt/oracle/product/11.2.0/db_1/root.sh check_ok echo "install_oracle11g" >> "$bdFile" echo "install_oracle11g install ok" } install_oracle11g_db(){ [ -f /home/oracle/etc/dbca.rsp ] || touch /home/oracle/etc/dbca.rsp cat << EOF > /home/oracle/etc/dbca.rsp [GENERAL] RESPONSEFILE_VERSION = "11.2.0" OPERATION_TYPE = "createDatabase" [CREATEDATABASE] GDBNAME = "orcl" SID = "orcl" TEMPLATENAME = "General_Purpose.dbc" SYSPASSWORD = "oracle" SYSTEMPASSWORD = "oracle" DATAFILEDESTINATION = "/opt/oracle/oradata" RECOVERYAREADESTINATION = "/opt/oracle/flash_recovery_area" CHARACTERSET = "AL32UTF8" NATIONALCHARACTERSET= "UTF8" EOF chown -R oracle:oinstall /home/oracle chmod 700 /home/oracle/etc/*.rsp su -l -c " /opt/oracle/product/11.2.0/db_1/bin/dbca -silent -responseFile /home/oracle/etc/dbca.rsp" oracle check_ok echo "install_oracle11g_db" >> "$bdFile" echo "install_oracle11g_db install ok" } check_server install_oracleinit check_server install_oracle11g check_server install_oracle11g_db

     oracle启动脚本

    #!/bin/bash
    #
    . /etc/init.d/functions
    oracle_home=/opt/oracle/product/11.2.0/db_1
    oracle_bin=$oracle_home/bin
    function_start_oracle()
    {
        printf "Starting oracle...
    "
        $oracle_bin/lsnrctl start 2>&1 > /dev/null &
    export ORACLE_SID=orcl
        $oracle_bin/sqlplus /nolog <<EOF
        conn / as sysdba
        startup
        exit
    EOF
    
    }
    function_stop_oracle()
    {
        printf "Stoping oracle...
    "
        $oracle_bin/lsnrctl stop 2>&1 > /dev/null &
    export ORACLE_SID=orcl
        $oracle_bin/sqlplus /nolog <<EOF
        conn / as sysdba
        shutdown immediate;
        #shutdown abort; #强制关机
        exit
    EOF
    }
    function_restart_oracle()
    {
        printf "Restarting oracle...
    "
        function_stop_oracle
        sleep 5
        function_start_oracle
    }
    if [ "$1" = "start" ]; then
        function_start_oracle
    elif [ "$1" = "stop" ]; then
        function_stop_oracle
    elif [ "$1" = "restart" ]; then
        function_restart_oracle
    else
        printf "Usage: {start|stop|restart}
    "
    fi

    oracle启动方式和关闭方式

    一、Oracle数据库几种启动方式
    
    1、startup nomount
    
      非安装启动,这种方式下启动可执行:重建控制文件、重建数据库,读取init.ora文件,启动instance,即启动SGA和后台进程,这种启动只需要init.ora文件。
    
    2、startup mount (dbname)
    
      安装启动,这种方式启动下可执行:数据库日志归档、数据库介质恢复、使数据文件联机或脱机、重新定位数据文件、重做日志文件。
    
      执行“nomount”,然后打开控制文件,确认数据文件和联机日志文件的位置,但此时不对数据文件和日志文件进行校验检查。
    
    3、startup open (dbname)
    
      先执行“nomount”,然后执行“mount”,再打开包括Redo log文件在内的所有数据库文件,这种方式下可访问数据库中的数据。
    
    4、startup 等于以下三个命令
    
      startup nomount
    
      alter database mount
    
      alter database open
    
    5、startup restrict
    
      约束方式启动,这种方式能够启动数据库,但只允许具有一定特权的用户访问,非特权用户访问时,会出现以下提示:
    
      ERROR:ORA-01035: ORACLE 只允许具有 RESTRICTED SESSION 权限的用户使用
    
    6、startup force
    
      强制启动方式,当不能关闭数据库时,可以用startup force来完成数据库的关闭,先关闭数据库,再执行正常启动数据库命令
    
    7、startup pfile=参数文件名
    
      带初始化参数文件的启动方式,先读取参数文件,再按参数文件中的设置启动数据库
    
      例:startup pfile=E:Oracleadminoradbpfileinit.ora
    
    8、startup EXCLUSIVE
    
      独占和共享启动
    
     
    
    二、Oracle三种关闭方式
    
    1、shutdown normal
      正常方式关闭数据库
    
    2、shutdown immediate
    
      立即方式关闭数据库,在SVRMGRL中执行shutdown immediate,数据库并不立即关闭,而是在Oracle执行某些清除工作后才关闭(终止会话、释放会话资源),当使用
    
      shutdown不能关闭数据库时,shutdown immediate可以完成数据库关闭的操作。
    
    3、shutdown abort
    
      直接关闭数据库,正在访问数据库的会话会被突然终止,如果数据库中有大量操作正在执行,这时执行shutdown abort后,重新启动数据库需要很长时间。
    
    
    原文链接:https://www.cnblogs.com/NaughtyBoy/archive/2013/07/09/3180947.html

    查看oracle启动状态

    sqlplus / as sysdba
    
    select status from v$instance;

     

    启动实例后进程

    [oracle@docker1 /opt/oracle/product/11.2.0/db_1/network/admin 23:16:20&&41]$ps -ef | grep oracle
    root      77556  70869  0 22:46 pts/0    00:00:00 su - oracle
    oracle    77557  77556  0 22:46 pts/0    00:00:00 -bash
    oracle    77649      1  0 22:46 ?        00:00:00 /opt/oracle/product/11.2.0/db_1/bin/tnslsnr LISTENER -inherit    #监听
    oracle    77656      1  0 22:46 ?        00:00:00 ora_pmon_orcl                                                    #启动了orcl实例
    oracle    77658      1  0 22:46 ?        00:00:00 ora_psp0_orcl
    oracle    77661      1  0 22:46 ?        00:00:00 ora_vktm_orcl
    oracle    77665      1  0 22:46 ?        00:00:00 ora_gen0_orcl
    oracle    77667      1  0 22:46 ?        00:00:00 ora_diag_orcl
    oracle    77669      1  0 22:46 ?        00:00:00 ora_dbrm_orcl
    oracle    77671      1  0 22:46 ?        00:00:01 ora_dia0_orcl
    oracle    77673      1  0 22:46 ?        00:00:00 ora_mman_orcl
    oracle    77675      1  0 22:46 ?        00:00:00 ora_dbw0_orcl
    oracle    77677      1  0 22:46 ?        00:00:00 ora_lgwr_orcl
    oracle    77679      1  0 22:46 ?        00:00:00 ora_ckpt_orcl
    oracle    77681      1  0 22:46 ?        00:00:00 ora_smon_orcl
    oracle    77683      1  0 22:46 ?        00:00:00 ora_reco_orcl
    oracle    77685      1  0 22:46 ?        00:00:00 ora_mmon_orcl
    oracle    77687      1  0 22:46 ?        00:00:00 ora_mmnl_orcl
    oracle    77689      1  0 22:46 ?        00:00:00 ora_d000_orcl
    oracle    77691      1  0 22:46 ?        00:00:00 ora_s000_orcl
    oracle    77703      1  0 22:46 ?        00:00:00 ora_qmnc_orcl
    oracle    77717      1  0 22:46 ?        00:00:00 ora_cjq0_orcl
    oracle    77729      1  0 22:47 ?        00:00:00 ora_q000_orcl
    oracle    77731      1  0 22:47 ?        00:00:00 ora_q001_orcl
    oracle    78251      1  0 22:56 ?        00:00:00 ora_smco_orcl
    oracle    78256      1  0 22:57 ?        00:00:00 ora_w000_orcl
    oracle    79307      1  0 23:16 ?        00:00:00 oracleorcl (LOCAL=NO)                                            #orcl有远程连接
    oracle    79311  77557  0 23:16 pts/0    00:00:00 ps -ef
    oracle    79312  77557  0 23:16 pts/0    00:00:00 grep --color=auto oracle

     oracle启动监听

    stop , start ,status, reload
    /opt/oracle/product/11.2.0/db_1/bin/lsnrctl start

     oracle监听配置

    /opt/oracle/product/11.2.0/db_1/network/admin/listener.ora
    ======================================
    SID_LIST_LISTENER =
    (SID_LIST =
        (SID_DESC =
          (SID_NAME = orcl)
          (ORACLE_HOME = /opt/oracle/product/11.2.0/db_1)
          #(PROGRAM = extproc) #注释掉这里才能远程连接
        )
    )
    LISTENER =
    (DESCRIPTION_LIST =
        (DESCRIPTION =
          (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
          (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.55.35)(PORT = 1521))
        )
    )
    LOGGING_LISTENER = ON
    INBOUND_CONNECT_TIMEOUT_LISTENER = 0   #连接超时设置0为不限制 查看 lsnrctl >  show inbound_connect_timeout
    SUBSCRIBE_FOR_NODE_DOWN_EVENT = OFF
    SUBSCRIBE_FOR_NODE_DOWN_EVENT_LISTENER = OFF
    ======================================
    /opt/oracle/product/11.2.0/db_1/network/admin/sqlnet.ora
    ======================================
    # sqlnet.ora Network Configuration File: /home/oracle/10g/product/10.2.0/db_1/network/admin/sqlnet.ora
    # Generated by Oracle configuration tools.
    NAMES.DIRECTORY_PATH=(TNSNAMES, EZCONNECT)
    TCP.VALIDNODE_CHECKING=YES
    tcp.invited_nodes=(127.0.0.1,192.168.55.0/24,192.168.66.0/24)  #白名单
    SQLNET.INBOUND_CONNECT_TIMEOUT=0   #连接超时设置0为不限制
    ======================================

     oracle常用命令

    (1).用户相关命令

    安装好oracle默认有2个用户sys,system
    sys是超级用户,具有最高权限,具有sysdba角色
    system 用户是 管理操作员,权限也很大,是sysoper(系统操作员)角色
    
    创建用户并授权
    create user ceshi identified by 123456 ; 
    grant connect,resource,sysdba to ceshi;
    
    show user;  #查看当前登陆的用户
    drop user hxh; #删除用户
    drop user hxh CASCADE; #删除用户和用户相关的数据 password 用户名; #自己修改密码 alter user 用户名 identified by 新密码; #给别人修改密码
    ALTER USER 用户名 ACCOUNT UNLOCK; #用户解锁 #查看有哪些用户
    select * from all_users order by created desc; #查看当前用户信息 select * from user_users; #查看当前登录用户拥有的所有角色和系统权限 select * from session_privs; #查看权限 select * from role_sys_privs; #查看角色和权限 #查看用户有哪些角色 select * from dba_role_privs where grantee='KAIFA'; #KAIFA为用户名(用户名需要大写) 查看某一用户拥有的对象权限 grant select on scott.emp to user50; select * from dba_tab_privs where GRANTEE='USER50';

    (2).权限相关命令

    系统权限:系统规定用户使用数据库的权限。(系统权限是对用户而言)。
    对象权限:某种权限用户对其它用户的表或视图的存取权限。(是针对表或视图而言的)。
    
    授权
    grant connect,resource,sysdab to ceshi;
    grant select any TABLE to YULEI; #授权任何表的查询权限
    GRANT SELECT ON "DNINMSV31"."V_DNDEVICE" TO NORTHBOUND; #授权指定表的查询权限  DNINMSV31用户 V_DNDEVICE表名 NORTHBOUND用户
    
    权限回收
    revoke select on scott.emp from ceshi;

    权限相关的视图
    DBA_SYS_PRIVS: 查询某个用户所拥有的系统权限
    USER_SYS_PRIVS: 当前用户所拥有的系统权限
    SESSION_PRIVS: 当前用户所拥有的全部权限
    ROLE_SYS_PRIVS: 某个角色所拥有的系统权限 注意: 要以SYS用户登陆查询这个视图,否则返回空.
    ROLE_ROLE_PRIVS: 当前角色被赋予的角色
    SESSION_ROLES: 当前用户被激活的角色
    USER_ROLE_PRIVS: 当前用户被授予的角色

    另外还有针对表的访问权限的视图:
    TABLE_PRIVILEGES
    ALL_TAB_PRIVS
    ROLE_TAB_PRIVS: 某个角色被赋予的相关表的权限

    (3).角色相关命令

    DBA: 拥有全部特权,是系统最高权限,只有DBA才可以创建数据库结构。
    RESOURCE:拥有Resource权限的用户只可以创建实体,不可以创建数据库结构。
    CONNECT:拥有Connect权限的用户只可以登录Oracle,不可以创建实体,不可以创建数据库结构。
    对于普通用户:授予connect, resource权限。
    对于DBA管理用户:授予connect,resource, dba权限。
    
    3.1#查看角色有哪些权限
    select * from role_sys_privs where role='角色名';
    
    3.2系统预定义角色
      预定义角色是在数据库安装后,系统自动创建的一些常用的角色。下介简单的介绍一下这些预定角色。角色所包含的权限可以用以下语句查询:
    sql>select * from role_sys_privs where role='角色名';
    1.CONNECT, RESOURCE, DBA
    这些预定义角色主要是为了向后兼容。其主要是用于数据库管理。oracle建议用户自己设计数据库管理和安全的权限规划,而不要简单的使用这些预定角色。将来的版本中这些角色可能不会作为预定义角色。
    
    2.DELETE_CATALOG_ROLE, EXECUTE_CATALOG_ROLE, SELECT_CATALOG_ROLE
    这些角色主要用于访问数据字典视图和包。
    
    3.EXP_FULL_DATABASE, IMP_FULL_DATABASE
    这两个角色用于数据导入导出工具的使用。
    
    4.AQ_USER_ROLE, AQ_ADMINISTRATOR_ROLE
    AQ:Advanced Query。这两个角色用于oracle高级查询功能。
    
    5. SNMPAGENT
    用于oracle enterprise manager和Intelligent Agent
    
    6.RECOVERY_CATALOG_OWNER
    用于创建拥有恢复库的用户。关于恢复库的信息,参考oracle文档《Oracle9i User-Managed Backup and Recovery Guide》
    
    7.HS_ADMIN_ROLE
    A DBA using Oracle's heterogeneous services feature needs this role to access appropriate tables in the data dictionary.
    
    3.3 管理角色
    
    1.建一个角色
    sql>create role role1;
    
    2.授权给角色
    sql>grant create any table,create procedure to role1;
    
    3.授予角色给用户
    sql>grant role1 to user1;
    
    4.查看角色所包含的权限
    sql>select * from role_sys_privs;
    
    5.创建带有口令的角色(在生效带有口令的角色时必须提供口令)
    sql>create role role1 identified by password1;
    
    6.修改角色:是否需要口令
    sql>alter role role1 not identified;
    sql>alter role role1 identified by password1;
    
    7.设置当前用户要生效的角色
    (注:角色的生效是一个什么概念呢?假设用户a有b1,b2,b3三个角色,那么如果b1未生效,则b1所包含的权限对于a来讲是不拥有的,只有角色生效了,角色内的权限才作用于用户,最大可生效角色数由参数MAX_ENABLED_ROLES设定;在用户登录后,oracle将所有直接赋给用户的权限和用户默认角色中的权限赋给用户。)
    sql>set role role1;//使role1生效
    sql>set role role,role2;//使role1,role2生效
    sql>set role role1 identified by password1;//使用带有口令的role1生效
    sql>set role all;//使用该用户的所有角色生效
    sql>set role none;//设置所有角色失效
    sql>set role all except role1;//除role1外的该用户的所有其它角色生效。
    sql>select * from SESSION_ROLES;//查看当前用户的生效的角色。
    
    8.修改指定用户,设置其默认角色
    sql>alter user user1 default role role1;
    sql>alter user user1 default role all except role1;
    详见oracle参考文档
    
    9.删除角色
    sql>drop role role1;
    角色删除后,原来拥用该角色的用户就不再拥有该角色了,相应的权限也就没有了。

     (4)表空间和表

    #创建表空间
    create tablespace CESHI datafile '/opt/oracle/oradata/orcl/ceshi01.dbf' size 500m autoextend on next 500m maxsize 20480m uniform size 128k; 
    
    #给表空间增加文件
    alter tablespace COUNTS15 add datafile '/home1/oracle/oradata/counts15/counts15_32.dbf'  size 500m autoextend on next 500m maxsize 20480m;
    
    #查看表空间的数据文件
    select * from dba_data_files where tablespace_name='OA_COUNTS15'
    
    #查看有哪些表空间
    select tablespace_name from dba_tablespaces; 
    
    #查看用户默认表空间(用户名要大写)
    select username,default_tablespace from dba_users where username='H3W4JEBZ' 
    
     #修改用户默认表空间
    alter user HXH default tablespace system
    
    
    #查看表空间有哪些表
    select * from all_tables where tablespace_name='USERS' 
    
    #查看用户有哪些表
    select * from all_tables where owner='H3W4JEBZ'; 
    
    #删除用户所有表
    select 'DROP TABLE H3W4JEBZ.' ||  TABLE_NAME || ';'   from all_tables  where owner='H3W4JEBZ'
    
    #删除表空间及数据
    drop tablespace OA_COUNTS15 including contents and datafiles;
    
    #删除用户及用户创建的表
    drop user AJT9C4F2 cascade;

    #工作中增加表空间文件步聚
    1.查看有哪些表空间
    select tablespace_name from dba_tablespaces;

    
    

    3.查看用户默认表空间
    select username,default_tablespace from dba_users where username='H3W4JEBZ'

    
    

    3.查看表空间中有哪些文件
    select file_name,bytes from dba_data_files where tablespace_name='COUNTS15';

    
    

    4.增加文件
    alter tablespace COUNTS15 add datafile '/home1/oracle/oradata/counts15/counts15_32.dbf' size 500m autoextend on next 500m maxsize 20480m;

    #找出表空音使用百分比大于xxx的(修改后面的数字kperc > 10 )

    SELECT
    *
    FROM
    (
    SELECT
    '- Tablespace ->',
    t.tablespace_name ktablespace,
    '- Type->',
    substr(t.contents, 1, 1) tipo,
    '- Used(MB)->',
    trunc (
    (
    d.tbs_size - nvl (s.free_space, 0)
    ) / 1024 / 1024
    ) ktbs_em_uso,
    '- ActualSize(MB)->',
    trunc (d.tbs_size / 1024 / 1024) ktbs_size,
    '- MaxSize(MB)->',
    trunc (d.tbs_maxsize / 1024 / 1024) ktbs_maxsize,
    '- FreeSpace(MB)->',
    trunc (
    nvl (s.free_space, 0) / 1024 / 1024
    ) kfree_space,
    '- Space->',
    trunc (
    (
    d.tbs_maxsize - d.tbs_size + nvl (s.free_space, 0)
    ) / 1024 / 1024
    ) kspace,
    '- Perc->',
    decode(
    d.tbs_maxsize,
    0,
    0,
    trunc (
    (
    d.tbs_size - nvl (s.free_space, 0)
    ) * 100 / d.tbs_maxsize
    )
    ) kperc
    FROM
    (
    SELECT
    SUM(bytes) tbs_size,
    SUM(
    decode(
    sign(maxbytes - bytes),
    - 1,
    bytes,
    maxbytes
    )
    ) tbs_maxsize,
    tablespace_name TABLESPACE
    FROM
    (
    SELECT
    nvl (bytes, 0) bytes,
    nvl (maxbytes, 0) maxbytes,
    tablespace_name
    FROM
    dba_data_files
    UNION ALL
    SELECT
    nvl (bytes, 0) bytes,
    nvl (maxbytes, 0) maxbytes,
    tablespace_name
    FROM
    dba_temp_files
    )
    GROUP BY
    tablespace_name
    ) d,
    (
    SELECT
    SUM(bytes) free_space,
    tablespace_name TABLESPACE
    FROM
    dba_free_space
    GROUP BY
    tablespace_name
    ) s,
    dba_tablespaces t
    WHERE
    t.tablespace_name = d. TABLESPACE (+)
    AND t.tablespace_name = s. TABLESPACE (+)
    ORDER BY
    8
    )
    WHERE
    kperc > 10
    AND tipo <> 'T'
    AND tipo <> 'U'

    (5)字符集

    更改字符集
    shutdown immediate; (把database停了)
    startup mount; (把database重开去可更改情況)
    alter system enable restricted session;
    alter system set job_queue_processes=0;
    alter system set aq_tm_processes=0;
    alter database open;
    #alter database character set internal_use Simplified Chinese_CHINA.ZHS16GBK;
    alter database character set internal_use AL32UTF8;
    shutdown immediate;
    startup;
    查看字符集
    select userenv('language') from dual
    select * from nls_database_parameters where parameter='NLS_CHARACTERSET';
    客户端修改字符集
    系统环境变量
    NLS_LANG=AMERICAN_AMERICA.ZHS16GBK

    常用字符集
    AMERICAN_AMERICA.AL32UTF8
    Simplified Chinese_CHINA.ZHS16GBK

    sysdab和dba的区别 

    SYSDBA不是权限,当用户以SYSDBA身份登陆数据库时,登陆用户都会变成SYS.
    sysdba身份登陆可以打开,关闭数据库,创建SPFILE,对数据库进行恢复操作等,而这些是DBA角色无法实现的;
    sysdba 是系统权限,dba是用户对象权限;
    sysdba,是管理oracle实例的,它的存在不依赖于整个数据库完全启动,只要实例启动了,他就已经存在;
    以sysdba身份登陆,装载数据库、打开数据库,只有数据库打开了,或者说整个数据库完全启动后,dba角色才有了存在的基础;
    dba是一种role对应的是对Oracle实例里对象的操作权限的集合,而sysdba是概念上的role是一种登录认证时的身份标识而已。
    而且,dba是Oracle里的一种对象,Role 和User一样,是实实在在存在在Oracle里的物理对象,而sysdba是指的一种概念上的操作对象,在Oracle数据里并不存在。
    
    例子1 授权sysdba:
    create user ceshi identified by 123456 ; 
    #grant connect,resource,sysdab to ceshi;
    grant connect,resource,dab to ceshi;
    #登陆
    sqlplus /nolog
    conn CESHI/123456 as sysdba; 
    show user; #显示登入用户是sys
    
    #登陆
    sqlplus /nolog
    conn CESHI/123456 ; 
    show user; #显示登入用户是CESHI

    oracle备份(方案即用户)

    #!/bin/bash
    export  ORACLE_SID=orcl
    export USER=KAIFA
    export NLS_LANG='AMERICAN_AMERICA.AL32UTF8'
    DATE=`date '+%Y%m%d'`
    BAKDIR=/home/backup/oracle_bak
    chown -R oracle.oinstall ${BAKDIR}
    su -l -c "exp ${USER}/kaifa123 file=$BAKDIR/${ORACLE_SID}_${USER}_${DATE}.dmp log=$BAKDIR/${ORACLE_SID}_${USER}_${DATE}.log direct=y " oracle
    if [[ $? == 0 ]];then
      echo "${USER} ${DATE} backup sucess" >> /tmp/${USER}.log
    else
      echo "${USER} ${DATE} backup fail" >> /tmp/${USER}.log
    fi

     oracle备份字符集不一样报错

    备份注意事项
        字符集和数据库字符集不一样
            导出日志会有:
            Export done in US7ASCII character set and AL16UTF16 NCHAR character set
            server uses AL32UTF8 character set (possible charset conversion)
        字符集和数据库字符集一样
            导出日志会有:
            Export done in AL32UTF8 character set and AL16UTF16 NCHAR character set

    oracle恢复(方案即用户)

    1.本实例恢复

    export  ORACLE_SID=orcl
    export NLS_LANG='AMERICAN_AMERICA.AL32UTF8'
    su -l -c "imp userid=KAIFA/kaifa123 file=/tmp/a.dmp full=y" oracle

    2.其它实例上恢复

    备份库上操作
    #查看用户表空间
    select username,default_tablespace from dba_users where username='KAIFA' 
    结果:
    KAIFA    BSM
    #查看表空间数据文件
    select file_name,bytes from dba_data_files where tablespace_name='BSM';
    结果:(单位字节) echo "2097152000/1024/1024" | bc 转成M
    /usr/java/oracle/tabspace/bsm_data.dbf    2097152000
    
    恢复库上操作
    #创建用户
    create user kaifa identified by kaifa123 ; 
    grant connect,dba,resource,IMP_FULL_DATABASE to kaifa;
    
    #创建表空间(表空间大小根据情况修改)
    create tablespace BSM datafile '/usr/java/oracle/tabspace/bsm_data01.dbf' size 500m autoextend on next 500m maxsize 20480m uniform size 128k;
    
    #给表空间增加文件(看备份为的数据文件实际情况而定,要提供足够的表空间恢复)
    alter tablespace BSM add datafile '/usr/java/oracle/tabspace/bsm_data02.dbf'  size 500m autoextend on next 500m maxsize 20480m;
    
    
    #查看用户默认表空间(用户名要大写)
    select username,default_tablespace from dba_users where username='KAIFA' 
    
     #修改用户默认表空间
    alter user KAIFA default tablespace BSM
    
    
    执行恢复
    export  ORACLE_SID=ORCL
    export NLS_LANG='AMERICAN_AMERICA.AL32UTF8'
    su -l -c "imp userid=KAIFA/kaifa123 file=/tmp/a.dmp full=y" oracle

     备份恢复命令详解

    1--备份
    (1.1) 逻辑备份:只能在数据库运行的状态下执行
        导出:
            导出使用exp命令来完成的,该命令常用的选项有:
            userid:用于指定执行导出操作的用户名,口令,连接字符串
            tables:用于指定执行导出操作的表
            owner:用于指定执行导出操作的方案
            full=y: 用于指定执行导出操作的数据库
            direct =y , 表示直接路径导出, 比普通路径导出速度快很多
            inctype:用于指定导出操作的增量类型
            rows:用于指定执行导出操作是否要导出表中的数据
            file:用于指定导出文件名
            (1)导出表和数据:
                exp userid=scott/tiger@test tables=emp,dep file=/tmp/a.dmp 【scott用户,tiger密码,test数据库】
                导出其它方案的表:
                exp userid=system/tiger@test tables=scott.emp,dep file=/tmp/a.dmp 【system用户,scott.emp方案也就是用户的表,tiger密码,test数据库】
                只导出表的结构:
                exp userid=scott/tiger@test tables=emp,dep file=/tmp/a.dmp rows=n
                使用直接导出表结构的方式:
                exp userid=scott/tiger@test tables=emp,dep file=/tmp/a.dmp direct=y 【这种方式比默认的常规方式速度要快,当数据量大时,可以考虑使用这样的方法。这时需要数据库的字符集要与客户端字符集完全一致,否则会报错】
            (2)导出方案:
                导出自己的方案:
                exp scott/tiger@test owner=scott file=/tmp/a.dmp
                导出其它方案:
                exp system/tiger@test direct=y owner=scott,system file=/tmp/a.dmp
            (3)导出数据库:【因为数据量大,耗时长。】
                exp userid=system/tiger@test direct=y full=y inctype=complete file=/tmp/a.dmp【inctype=complete是增量备份】
            (4)导出数据库表结构,包含用户和角色数据
                exp userid=system/oracle@192.168.80.150/oracle full=y rows=n file=/home/orabak/system.dmp
            (5)导出表空间
                exp system/oracle@192.168.80.150/orcl direct=y owner=system file=/home/orabak/system.dmp #测试不行
    (1.2) 物理备份:未笔记
    2--恢复
    (2.1) 逻辑恢复
        导入:导入使用工具import 将文件中的对象和数据导入到数据库中,导入要使用的文件必须是exp所导出的文件。
        imp常用的选项有:
        userid:用于指定执行导出操作的用户名,口令,连接字符串
        tables:用于指定执行导出操作的表
        formuser:用于指定源用户
        touser:用于指定目标用户
        file:用于指定导入文件名
        full=y: 用于指定执行导入整个文件
        inctype: 用于指定执行导入操作的增量类型
        rows:指定是否要导入表行(数据)
        ignore:如果表存在,则只导入数据
            (导入表)
                导入自己表:
                imp userid=scott/tiger@test tables=(emp) file=/tmp/a.dmp
                导入表到其它用户:
                imp userid=system/tiger@test tables=(emp) file=/tmp/a.dmp touser=scott
                导入表的结构:
                imp userid=soctt/tiger@test tables=(emp) file=/tmp/a.dmp rows=n 
                导入数据:
                imp userid=scott/tiger@test tables=(emp) file=/tmp/a.dmp ignore=y
            (导入方案)
                导入自身的方案:
                imp userid=scott/tiger@test file=/tmp/a.dmp
                导入其它方案:
                imp userid=system/tiger@test file=/tmp/a.dmp fromuser=system touser=scott
            (导入数据库)
                imp userid=system/tiger full=y file=/tmp/a.dmp
    
    (2.2) 物理恢复:未笔记

     expdp/impdp备份恢复全库

    expdp/impdp备份恢复全库
    原文地址: https://www.cnblogs.com/promise-x/p/7477360.html
    
    步骤1:
    备份库和恢复库执行:
    create directory backup as '/home/backup/oracle_bak';
    grant read,write on directory backup to 用户名;
    select * from dba_directories;  #查看backup创建是否成功
    
    步聚2: 备份库上查询这些信息,并记录
    select * from all_users order by created desc; #查看用户
    select tablespace_name from dba_tablespaces;  #查看表空间
    select username,default_tablespace from dba_users where username='KAIFA' #查看用户表空间
    
    步聚3: 恢复库上根据步聚2的记录 创建表空间和用户
    
    #创建用户
    create user ceshi identified by 123456 ;
    
    #创建表空间
    create tablespace CESHI datafile '/opt/oracle/oradata/orcl/ceshi01.dbf' size 500m autoextend on next 500m maxsize 20480m uniform size 128k; 
    
    #给表空间增加文件
    alter tablespace COUNTS15 add datafile '/home1/oracle/oradata/counts15/counts15_32.dbf'  size 500m autoextend on next 500m maxsize 20480m;
    
    #修改用户默认表空间
    alter user HXH default tablespace system
    
    步聚4:
    备份:
        expdp userid='user/passwd as sysdba' directory=backup dumpfile=expdp_full.dmp full=y logfile=expdp_full.log;
    恢复
        impdp user/passwd directory=backup dumpfile=expdp_full.dmp full=y logfile=impdp_full.log;


    ##备份/恢复方案
    expdp userid='BACK_UP/qwerasdf as sysdba' directory=backup schemas=KAIFA dumpfile=KAIFA20181025_155326.dmp logfile=KAIFA20181025_155326.log
    impdp BACK_UP/qwerasdf DIRECTORY=backup DUMPFILE=NBT_DEV20181025_160230.dmp SCHEMAS=NBT_DEV logfile=NBT_DEV_impdp.log

    本机登入oracle

    #需要注意,系统用户必须使用oracle,用root用户是登陆不了的。oracle这个用户是安装oracle时创建的用户
    [root@CentOS68 oracle_bak]#su - oracle
    [oracle@docker1 /opt/oracle/product/11.2.0/db_1/network/admin 23:14:12&&36]$export ORACLE_SID=orcl [oracle@docker1 /opt/oracle/product/11.2.0/db_1/network/admin 23:14:22&&37]$echo $ORACLE_SID orcl [oracle@docker1 /opt/oracle/product/11.2.0/db_1/network/admin 23:14:27&&38]$sqlplus / as sysdba #不需要密码 SQL*Plus: Release 11.2.0.3.0 Production on Mon Jul 30 23:14:36 2018 Copyright (c) 1982, 2011, Oracle. All rights reserved. Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production With the Partitioning, OLAP, Data Mining and Real Application Testing options SQL> show user; USER is "SYS"


    其它用户本机登陆:
    sqlplus ceshi/123456@192.168.1.110/orcl

     sqlplus回退解决

    yum install readline* libtermcap-devel* -y
    yum install rlwrap-0.41-1.1.x86_64.rpm -y
    
    oracle用户下的 .bash_profil 中增加一条alias
    alias sqlplus='/usr/bin/rlwrap sqlplus'
    使改动生效
    [oracle@linux245 ~]$ source ./.bash_profile 

    navicat premium连接oracle

    原文地址:https://www.cnblogs.com/mkdlf/p/6611016.html

    1. D:sharesrcoracleinstantclient_10_2好用.7z  解压或H:sharesrcoracle avicat-premium-oracleinstantclient-basic-win-x86-64-11.2.0.1.0.zip

    2.配置 工具==选项==oci 

     

    3.创建连接(注意用户名要大写)

  • 相关阅读:
    python 数据分析3
    python 数据分析2
    Python 数据分析1
    Python18 Django 基础
    Python 17 web框架&Django
    一只救助犬的最后遗言
    With As 获取 id parentId 递归获取所有
    分布式事物
    div 浮动框
    sql时间比较
  • 原文地址:https://www.cnblogs.com/hanxiaohui/p/9134831.html
Copyright © 2011-2022 走看看