【oracle】使用centos7的docker镜像安装oracle, 版本11gR2

0. su - oracle和su oracle的区别

su - oracle,相当于重新登陆,此时用户的家目录和PATH等信息会发生改变
su oracle,切换到oracle身份后用户的家目录和PATH仍然是原先用户的家目录和PATH

0. 重新安装orale

删除 /home/oracle/toole/oracle11g 和 /home/oracle/toole/oraInventory 下的所有文件,然后重新执行安装命令

1. 拉取centos7镜像

docker pull centos:7
# docker pull registry.cn-hangzhou.aliyuncs.com/ypfei/centos:base_centos_7_9_2009
# oracle不支持ubuntu,最好使用centos安装oracle

2. 创建容器

# Oracle 数据库从11g开始,自动内存管理特性需要更多的共享内存 ( /dev/shm ) 和文件描述符。共享内存的大小应该至少大于该计算机上每个 Oracle # 实例的 MEMORY_MAX_TARGET 和 MEMORY_TARGET 。
# /dev/shm 并不占用磁盘空间,而是存放在内存上面,因此和 RAM (Random Access Memory)一样断电清空数据。
# /dev/shm 使用增量占用空间,并不会是将挂载点的空间全部占用, /dev/shm 挂载点未占用的空间将会被内存使用。
# --shm-size: /dev/shm在docker容器启动时默认是64M,安装oracle11g需要shm至少1024M,启动容器时需要使用--shm-size参数指定shm的大小
docker run -it --shm-size=2048m  -v /cen:/cen --name cen registry.cn-hangzhou.aliyuncs.com/ypfei/centos:base_centos_7_9_2009 /bin/bash

3. centos7 解决中文乱码

操作用户:root

01、查看系统有那些编码

locale -a
# 此三行意思是使用的编码en_US.UTF-8在系统中不存在
# locale: Cannot set LC_CTYPE to default locale: No such file or directory
# locale: Cannot set LC_MESSAGES to default locale: No such file or directory
# locale: Cannot set LC_COLLATE to default locale: No such file or directory
C
en_US.utf8
POSIX

02、查看正在使用的编码

locale
LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=

03、修改系统编码

# 将以下两行添加到 ~/.bashrc最后
export LANG="en_US.utf8"
export LANGUAGE="en_US.utf8"
# 执行source命令使修改在不用重启的情况下生效
source ~/.bashrc

4. 设置centos 的镜像源

操作用户:root
# 如果CentOS-Base.repo不存在,直接执行vi创建
# mv /etc/yum.repos.d/CentOS-Base.repo  /etc/yum.repos.d/CentOS-Base.repo.bak
vi /etc/yum.repos.d/CentOS-Base.repo
# CentOS-Base.repo
#
# The mirror system uses the connecting IP address of the client and the
# update status of each mirror to pick mirrors that are updated to and
# geographically close to the client.  You should use this for CentOS updates
# unless you are manually picking other mirrors.
#
# If the mirrorlist= does not work for you, as a fall back you can try the
# remarked out baseurl= line instead.
#
#

[base]
name=CentOS-$releasever - Base
baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos/$releasever/os/$basearch/
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

#released updates
[updates]
name=CentOS-$releasever - Updates
baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos/$releasever/updates/$basearch/
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

#additional packages that may be useful
[extras]
name=CentOS-$releasever - Extras
baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos/$releasever/extras/$basearch/
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

#additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-$releasever - Plus
baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos/$releasever/centosplus/$basearch/
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=centosplus
gpgcheck=0
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
03、执行以下命令
yum makecache
yum -y update

5. 安装java1.8

操作用户:root

01、使用yum直接安装

yum install java-1.8.0-openjdk* -y

02、 查看java版本

java -version
openjdk version "1.8.0_282"
OpenJDK Runtime Environment (build 1.8.0_282-b08)
OpenJDK 64-Bit Server VM (build 25.282-b08, mixed mode)
设置环境变量
# 使用yun安装的java,环境变量已经设置好, 不用重复设置

6. 下载oracle数据库

# linux.x64_11gR2_database_1of2.zip
链接:https://pan.baidu.com/s/10gr84Fu5Urmf1dLbQFprOA 
提取码:5fqr 
# linux.x64_11gR2_database_2of2.zip
链接:https://pan.baidu.com/s/112Q8Qk6Y8i0QTWzhdodsxA 
提取码:4f8o 

7. 禁用SELinux和防火墙

操作用户:root
yum -y  install vim
vim /etc/selinux/config
 # 添加以下内容
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
# SELINUX=enforcing 
SELINUX=disabled
# SELINUXTYPE= can take one of these two values:
#     targeted - Targeted processes are protected,
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted
SELinux 的不正确配置会影响网络
(1)enforcing --- SELinux security policy is enforced.代表记录警告且阻止可疑行为
(2)permissive --- SELinux prints warnings instead of 代表仅记录安全警告但不阻止可疑行为
(3)disabled --- SELinux is fully disabled.SELinux 被禁用
SELINUXTYPE设置
(1)targeted 代表仅针对预制的几种网络服务和访问请求使用 SELinux 保护,
(2)strict 代表所有网络服务和访问请求都要经过 SELinux。
# 使修改生效
source /etc/selinux/config

8. 安装oracle需要的依赖包

操作用户:root
执行如下命令安装依赖包
yum install -y automake autotools-dev binutils bzip2 elfutils expat \
gawk gcc gcc-multilib g++-multilib lib32ncurses5 lib32z1 \
ksh less lib32z1 libaio1 libaio-dev libc6-dev libc6-dev-i386 \
libc6-i386 libelf-dev libltdl-dev libodbcinstq4-1 libodbcinstq4-1:i386 \
libpth-dev libpthread-stubs0-dev libstdc++5 make openssh-server rlwrap \
rpm sysstat unixodbc unixodbc-dev unzip x11-utils zlibc unzip cifs-utils \
libXext.x86_64  glibc.i686
如果上述命令报错,则使用如下命令安装
yum -y install xz wget gcc-c++ ncurses ncurses-devel \
cmake make perl openssl openssl-devel gcc* libxml2 \
libxml2-devel curl-devel libjpeg* libpng* freetype* \
make gcc-c++ cmake bison perl perl-devel  perl perl-devel \
glibc-devel.i686 glibc-devel libaio readline-devel \
zlib.x86_64 zlib-devel.x86_64 libcurl-* net-tool*  \
sysstat lrzsz dos2unix telnet.x86_64 iotop unzip \
ftp.x86_64 xfs* expect vim psmisc openssh-client* \
libaio bzip2  epel-release automake binutils bzip2 \
elfutils expat gawk gcc  ksh less make openssh-server \
rpm sysstat unzip unzip cifs-utils libXext.x86_64  \
glibc.i686 binutils compat-libstdc++-33 \
elfutils-libelf elfutils-libelf-devel \
expat gcc gcc-c++ glibc glibc-common \
glibc-devel glibc-headers libaio \
libaio-devel libgcc libstdc++ libstdc++-devel \
make sysstat unixODBC unixODBC-devel libnsl

9. 创建oracle用户

操作用户为:root
用户信息介绍: 

oracle用户介绍

groupadd -g 502 oinstall
groupadd -g 503 dba
groupadd -g 504 oper
groupadd -g 505 asmadmin
useradd -u 502 -g oinstall -G oinstall,dba,asmadmin,oper -s /bin/bash -m oracle
yum install -y passwd
passwd oracle
上述命令执行完毕后,为oracle用户设置密码,例如,设置的密码为Oracle66
# 修改root的密码
passwd root 
# 可设置与oracle密码一致

10. 修改系统配置

01、修改资源控制文件
操作用户:root
操作文件:/etc/security/limits.conf
vim /etc/security/limits.conf
在文件的末尾添加如下配置项。
oracle          soft      nproc   2047
oracle          hard      nproc   16384
oracle          soft      nofile  1024
oracle          hard      nofile  65536
oracle          soft      stack   10240
资源限制是针对单个进程的限制,不是针对整个系统总的设置
修改limits.conf以后,将马上生效。但是,如果用户已经登录系统,那么对于该用户的限制将在下一次用户重新登录以后才生效。如果要让对该用户的限制生效,只能让该用户注销然后重新登录就可以了。
/etc/security/limits.conf
    core - 限制内核文件的大小
  date - 最大数据大小
  fsize - 最大文件大小
  memlock - 最大锁定内存地址空间
  nofile - 打开文件的最大数目
  rss - 最大持久设置大小
  stack - 最大栈大小
  cpu - 以分钟为单位的最多 CPU 时间
  noproc - 进程的最大数目
  as - 地址空间限制
  maxlogins - 此用户允许登录的最大数目
nofile - 打开文件的最大数目,该值不能等于/proc/sys/fs/file-max,如果等于file-max且打开的文件句柄的数量达到file-max,用户将不能登陆操作系统。
02、在/etc/pam.d/login 文件中
vim /etc/pam.d/login
# 使用文本编辑器或vi命令增加或修改以下内容
session required /lib/security/pam_limits.so
session required pam_limits.so
03、配置PAM
 vim /etc/profile
 # 在/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
# 使设置生效
source /etc/profile
04. 修改内核参数(这个修改可做可不做,待定)
# 在/etc/sysctl.conf 文件中,使用文本编辑器或vi命令增加或修改以下参数
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 2097152
kernel.shmmax = 536870912
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
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 = 1048576

# 修改后,使设置生效
sysctl -p


# 若报错如下
sysctl: permission denied on key 'fs.aio-max-nr'
sysctl: permission denied on key 'fs.file-max'
sysctl: permission denied on key 'kernel.shmall'
sysctl: permission denied on key 'kernel.shmmax'
sysctl: permission denied on key 'kernel.shmmni'
sysctl: permission denied on key 'kernel.sem'
sysctl: permission denied on key 'net.ipv4.ip_local_port_range'
sysctl: permission denied on key 'net.core.rmem_default'
sysctl: permission denied on key 'net.core.rmem_max'
sysctl: permission denied on key 'net.core.wmem_default'
sysctl: permission denied on key 'net.core.wmem_max'
# 解决方法
rm -f /sbin/modprobe 
ln -s /bin/true /sbin/modprobe
rm -f /sbin/sysctl 
ln -s /bin/true /sbin/sysctl
# 再次执行
sysctl -p

11. 解压Oracle数据库安装包

操作用户:oracle
操作目录:/home/oracle
yum -y install unzip
将Oracle 11gR2安装文件上传(可以使用sftp上传)到该操作目录下面,然后顺序解压安装文件到该目录。
unzip linux.x64_11gR2_database_1of2.zip
unzip linux.x64_11gR2_database_2of2.zip
# 解压后的文件都在/home/oracle/database目录中

12. .创建Oracle安装目录

01、配置/home/oracle/tools/oracle11g目录
操作用户:oracle
mkdir -p ~/tools/oracle11g
mkdir -p ~/tools/oraInventory
chown -R oracle:oinstall /home/oracle/tools/oracle11g
chmod -R 775 /home/oracle/tools/oracle11g
chown -R oracle:oinstall /home/oracle/tools/oraInventory
chmod -R 775 /home/oracle/tools/oraInventory
02、配置/etc/oraInst.loc文件
操作用户:root
vim /etc/oraInst.loc
# 创建/etc/oraInst.loc文件,内容如下
inventory_loc=/home/oracle/tools/oraInventory
inst_group=oinstall
# 更改文件的权限
chown oracle:oinstall /etc/oraInst.loc
chmod 664 /etc/oraInst.loc

13. 修改环境变量

操作用户:oracle
操作目录:/home/oracle
vim ~/.bash_profile
在文件末尾添加如下配置项
export ORACLE_BASE=/home/oracle/tools/oracle11g
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1
export ORACLE_SID=orcl
export ORACLE_UNQNAME=orcl
export NLS_LANG=.AL32UTF8
export PATH=${PATH}:${ORACLE_HOME}/bin/:$ORACLE_HOME/lib64
使得环境变量生效。
source ~/.bash_profile

14. 修改Oracle配置文件

操作用户:oracle
操作目录:/home/oracle
复制文件模板
mkdir etc
cp /home/oracle/database/response/*  /home/oracle/etc/
vim etc/db_install.rsp
/home/oracle/etc/db_install.rsp文件进行编辑。
需要修改的配置项如下所示,这里,我将修改后的配置项列举出来。
oracle.install.option=INSTALL_DB_AND_CONFIG  # 安装类型
ORACLE_HOSTNAME=0.0.0.0 #实际上可以修改成你自己的主机名或者域名(IP),主机名称(hostname查询)
UNIX_GROUP_NAME=oinstall # 安装组
INVENTORY_LOCATION=/home/oracle/tools/oraInventory #  INVENTORY目录(不填就是默认值) 注意:这里inventory目录最好不要填写与oracle安装路径一致的目录,会报错
SELECTED_LANGUAGES=en,zh_CN # 选择语言
ORACLE_HOME=/home/oracle/tools/oracle11g/product/11.2.0/dbhome_1  # oracle_home
ORACLE_BASE=/home/oracle/tools/oracle11g  # oracle_base
oracle.install.db.InstallEdition=EE  # oracle版本
oracle.install.db.isCustomInstall=false  # 自定义安装,否,使用默认组件
oracle.install.db.DBA_GROUP=dba  # dba用户组
oracle.install.db.OPER_GROUP=oper  # oper用户组
oracle.install.db.config.starterdb.type=GENERAL_PURPOSE   #  数据库类型
oracle.install.db.config.starterdb.globalDBName=orcl  # globalDBName
oracle.install.db.config.starterdb.SID=orcl   # SID
oracle.install.db.config.starterdb.characterSet=AL32UTF8  
oracle.install.db.config.starterdb.memoryOption=true
oracle.install.db.config.starterdb.memoryLimit=1024  # 自动管理内存的内存(M),/dev/shm的大小必须大与这里设置的大小
oracle.install.db.config.starterdb.installExampleSchemas=false
oracle.install.db.config.starterdb.password.ALL=Oracle66  # 设定所有数据库用户使用同一个密码
oracle.install.db.config.starterdb.control=DB_CONTROL
oracle.install.db.config.starterdb.dbcontrol.enableEmailNotification=false
oracle.install.db.config.starterdb.dbcontrol.emailAddress=test@qq.com #可以填写你自己的邮箱地址
oracle.install.db.config.starterdb.automatedBackup.enable=false
oracle.install.db.config.starterdb.storageType=FILE_SYSTEM_STORAGE
oracle.install.db.config.starterdb.fileSystemStorage.dataLocation=/home/oracle/tools/oracle11g/oradata
oracle.install.db.config.starterdb.fileSystemStorage.recoveryLocation=/home/oracle/tools/oracle11g/fast_recovery_area
oracle.install.db.config.starterdb.automatedBackup.enable=false
DECLINE_SECURITY_UPDATES=true # 设置安全更新(貌似是有bug,这个一定要选true,否则会无限提醒邮件地址有问题,终止安装。PS:不管地址对不对)
# 设置响应文件权限
su - root
chmod 700 /home/oracle/etc/*.rsp # (注意所有者,oinstall)
su - oracle

15、执行安装命令

cd /home/oracle/database
./runInstaller -silent -ignoreSysPrereqs -ignorePrereq -responseFile /home/oracle/etc/db_install.rsp
# -silent             表示静默安装
# -noconfig          表示只安装软件
# -responseFile     指定响应文件
Starting Oracle Universal Installer...

Checking Temp space: must be greater than 120 MB.   Actual 36754 MB    Passed
Checking swap space: must be greater than 150 MB.   Actual 2048 MB    Passed
Preparing to launch Oracle Universal Installer from /tmp/OraInstall2021-01-30_10-01-15PM. Please wait ...[oracle@1260952cd44c database]$ You can find the log of this install session at:
 /home/oracle/tools/oraInventory/logs/installActions2021-01-30_10-01-15PM.log
等待一段时间后,如果输出如下信息,则表明Oracle数据库已经安装成功。(注意,不要使用ctrl+c结束安装,需要等待一段时间才能安装好)
The following configuration scripts need to be executed as the "root" user. 
 #!/bin/sh 
 #Root scripts to run
/home/oracle/tools/oracle11g/product/11.2.0/dbhome_1/root.sh
To execute the configuration scripts:
	 1. Open a terminal window 
	 2. Log in as "root" 
	 3. Run the scripts 
	 4. Return to this window and hit "Enter" key to continue 

Successfully Setup Software.

16.完成安装并启动

操作用户:root
# 根据上一步完成信息提示,执行以下两行命令,具体位置需要根据你的安装位置决定(直接执行即可,不需要使用sh执行):
/home/oracle/tools/oracle11g/product/11.2.0/dbhome_1/root.sh
su - oracle
sqlplus /nolog
# 使用dba权限连接Oralce
connect / as sysdba
#启动数据库
startup
# 关闭数据库命令未
# shutdown immediate;
# 确认启动结果:
ORACLE instance started.

Total System Global Area  534462464 bytes
Fixed Size                  2215064 bytes
Variable Size            373293928 bytes
Database Buffers          150994944 bytes
Redo Buffers                7958528 bytes
Database mounted.
Database opened.
# 注册数控库到监听服务
alter system register
# 修改system用户密码
alter user SYSTEM identified by SYSTEM;
# 修改sys用户密码
alter user SYS identified by SYS;
# 查看system用户的权限(注意:oralce用户名为全大写)
select privilege from dba_SYS_privs where grantee='SYSTEM';

17.创建连接用户

操作用户:oracle
# 创建myoracle用户,并指定密码为myoracle
create user MYORACLE identified by MYORACLE;
# 给myoracle赋予权限
grant connect,resource,dba to MYORACLE;
# 测试连接用户是否成功, 切换用户链接(注意创建的时候用大写,这里也用大写)
conn MYORACLE/MYORACLE
# 报错如下:
ERROR:
ORA-28000: the account is locked
Warning: You are no longer connected to ORACLE.
# 解决方法
alter user MYORACLE account unlock;                                   # 解锁访问限制
alter profile default limit failed_login_attempts unlimited;     # 设置连续登陆次数为无限
# 再次连接
SQL> conn MYORACLE/MYORACLE
Connected.

18、启动监听数据库

启动已经安装的数据库orcl。
操作用户: oracle
01、修改listener.ora
# 修改listener.ora文件
vim /home/oracle/tools/oracle11g/product/11.2.0/dbhome_1/network/admin/listener.ora
# 修改HOST字段并添加SID_LIST_LISTENER, HOST字段修改为/home/oracle/etc/db_install.rsp,修改后如下
# listener.ora Network Configuration File: /home/oracle/tools/oracle11g/product/11.2.0/dbhome_1/network/admin/listener.ora
# Generated by Oracle configuration tools.
SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (GLOBAL_DBNAME = orcl)
      (ORACLE_HOME = /home/oracle/tools/oracle11g/product/11.2.0/dbhome_1)
      (SID_NAME = orcl)
    )
  )
LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
      (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
    )
  )

ADR_BASE_LISTENER = /home/oracle/tools/oracle11g
02、修改tnsnames.ora
# 修改listener.ora文件,
vim /home/oracle/tools/oracle11g/product/11.2.0/dbhome_1/network/admin/tnsnames.ora
# 修改HOST字段,此字段修改成/home/oracle/etc/db_install.rsp中ORACLE_HOSTNAME字段一致,修改后如下
# tnsnames.ora Network Configuration File: /home/oracle/tools/oracle11g/product/11.2.0/dbhome_1/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.
ORCL =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl)
    )
  )

03、启动监听
# 启动监听
lsnrctl  start

19. python连接oracle(暂时使用system用户可以连接,其他创建的连接用户暂时连接不了)

import cx_Oracle
# conn=cx_Oracle.connect('system/system@172.17.0.2:1521/orcl')
conn=cx_Oracle.connect('MYORACLE/MYORACLE@172.17.0.2:1521/orcl') # 注意: 创建的时候使用大写,这里也要写大写
c=conn.cursor()                                           
x=c.execute('select sysdate from dual')                   
print(x.fetchone())
c.close()                                                 
conn.close()

20. oracle使用

oracle数据库的权限系统分为系统权限与对象权限。系统权限( database system privilege )可以让用户执行特定的命令集。
例如,create table权限允许用户创建表,grant any privilege 权限允许用户授予任何系统权限。对象权限( database object privilege )
可以让用户能够对各个对象进行某些操作。例如delete权限允许用户删除表或视图的行,select权限允许用户通过select从表、视图、
序列(sequences)或快照(snapshots)中查询信息。

每个oracle用户都有一个名字和口令,并拥有一些由其创建的表、视图和其他资源。oracle角色(role)就是一组权限(privilege
)(或者是每个用户根据其状态和条件所需的访问类型)。用户可以给角色授予或赋予指定的权限,然后将角色赋给相应的用户。
一个用户也可以直接给其他用户授权。

01、查询oracle用户、权限、及角色

# 1.查看所有用户:
select * from dba_users;
select * from all_users;
select * from user_users;

# 2.查看用户或角色系统权限(直接赋值给用户或角色的系统权限):
select * from dba_sys_privs;
select * from user_sys_privs;
 
# 3.查看角色(只能查看登陆用户拥有的角色)所包含的权限
select * from role_sys_privs;

# 4.查看用户对象权限:
select * from dba_tab_privs;
select * from all_tab_privs;
select * from user_tab_privs;

# 5.查看所有角色:
select * from dba_roles;

# 6.查看用户或角色所拥有的角色:
select * from dba_role_privs;
select * from user_role_privs;
 
# 7.查看哪些用户有sysdba或sysoper系统权限(查询时需要相应权限)
select * from V$PWFILE_USERS

# 8. 查看某个用户的权限,如system, 助于oracle的用户名是全大写
select privilege from dba_SYS_privs where grantee='SYSTEM';

# 9. 查看当前登陆用户
show user

02. 删除用户

语法:drop user 用户名;
例子:drop user test;
若用户拥有对象,则不能直接删除,否则将返回一个错误值。指定关键字cascade,可删除用户所有的对象,然后再删除用户。
语法:  drop user 用户名 cascade;
例子:  drop user test cascade;

03. 授权角色

oracle为兼容以前版本,提供三种标准角色(role):connect/resource和dba.
1. 讲解三种标准角色:
# 1. connect role(连接角色)
--临时用户,特指不需要建表的用户,通常只赋予他们connect role. 
--connect是使用oracle简单权限,这种权限只对其他用户的表有访问权限,包括select/insert/update和delete等。
--拥有connect role 的用户还能够创建表、视图、序列(sequence)、簇(cluster)、同义词(synonym)、回话(session)和其他  数据的链(link)

# 2. resource role(资源角色)
--更可靠和正式的数据库用户可以授予resource role。
--resource提供给用户另外的权限以创建他们自己的表、序列、过程(procedure)、触发器(trigger)、索引(index)和簇(cluster)# 3. dba role(数据库管理员角色)
--dba role拥有所有的系统权限
--包括无限制的空间限额和给其他用户授予各种权限的能力。system由dba用户拥有
2. 授权命令
语法: grant connect, resource to 用户名;
例子: grant connect, resource to test;
3. 撤销权限
语法: revoke connect, resource from 用户名;
列子: revoke connect, resource from test;

04. 创建/授权/删除角色

除了前面讲到的三种系统角色----connect、resource和dba,用户还可以在oracle创建自己的role。用户创建的role可以由表或系统权限或两者的组合构成。为了创建role,用户必须具有create role系统权限。
# 1. 创建角色
语法: create role 角色名;
例子: create role testRole;

# 2. 授权角色
语法: grant select on class to 角色名;
列子: grant select on class to testRole;
注:现在,拥有testRole角色的所有用户都具有对class表的select查询权限

#3. 删除角色
语法: drop role 角色名;
例子: drop role testRole;
注:与testRole角色相关的权限将从数据库全部删除

05. 切换用户

connect user/passwrod;

06. 链接数据库

sqlplus 用户名/密码 【@host_string】【用户身份】
sqlplus sys/空格 as sysdba
以sys用户登录,必须指定身份为 as sysdba 或 as sysoper,普通用户可以不要指定身份。
可以不输入密码的原因,是需要操作系统管理员用户。

07.

查询数据库名:
select name,dbid from v$database;
或者
show parameter db_name;
查询实例名:
select instance_name from v$instance;
或者
show parameter instance_name;

参考:
http://www.itpub.net/thread-933461-1-1.html
https://blog.csdn.net/lx870576109/article/details/79081621
https://www.cnblogs.com/zfox2017/p/8555397.html
https://www.cnblogs.com/zyxnhr/p/11707334.html
https://www.cnblogs.com/binghe001/p/12950804.html
https://www.cnblogs.com/dynwings/p/6708816.html


版权声明:本文为YPFeime原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。