使用centos7的docker镜像安装oracle, 版本11gR2
- 0. su - oracle和su oracle的区别
- 0. 重新安装orale
- 1. 拉取centos7镜像
- 2. 创建容器
- 3. centos7 解决中文乱码
- 4. 设置centos 的镜像源
- 5. 安装java1.8
- 6. 下载oracle数据库
- 7. 禁用SELinux和防火墙
- 8. 安装oracle需要的依赖包
- 9. 创建oracle用户
- 10. 修改系统配置
- 11. 解压Oracle数据库安装包
- 12. .创建Oracle安装目录
- 13. 修改环境变量
- 14. 修改Oracle配置文件
- 15、执行安装命令
- 16.完成安装并启动
- 17.创建连接用户
- 18、启动监听数据库
- 19. python连接oracle(暂时使用system用户可以连接,其他创建的连接用户暂时连接不了)
- 20. oracle使用
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
用户信息介绍:

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版权协议,转载请附上原文出处链接和本声明。