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.创建连接(注意用户名要大写)

原文地址:https://www.cnblogs.com/hanxiaohui/p/9134831.html