最近需要搭建头寸管理系统Oracle 测试数据库,以下是通过Docker安装的19c版本,方便快捷,供大家参考。
Docker安装Oracle19c
说明:可以使用oracle官方镜像,也可以自己制作oracle dockerfile镜像。
制作oracle dockerfile镜像方法参考Docker Oracle镜像制作文章
github地址:https://github.com/oracle/docker-images.git
查找镜像
docker search oracle19c
拉取 oracle19c 镜像 通过-e参数设置容器运行的时区参数
docker run -d --name oracle19c -p 1521:1521 -p 5500:5500 --privileged=true -it -v /opt/soft/db/oracle//var/opt/oracle/data -e TZ=Asia/Chongqing registry.cn-beijing.aliyuncs.com/zhouchaoyi/oracle19c:19.3
检查新生成的容器的时区
docker exec -it oracle19c date +"%Z %z"
CST+0800表示东8时区,正是设置的中国时区
进入容器设置密码
docker exec -it oracle19c /bin/bash
进入容器后有个 setPassword.sh 脚本
./setPassword.sh ytxcc123 # ytxcc123为设置密码,这里修改为自己的即可
依次执行如下命令进入oracle并设置 PDB
grep $ORACLE_HOME /etc/oratab | cut -d: -f1
export ORACLE_SID=ORCLCDB
sqlplus / as sysdba
设置pdb
show pdbs;
alter session set container=ORCLPDB1;
注:每次登录都要设置 ORACLE_SID 环境变量,可以将这个写到~/.bashrc文件里去 ,执行如下命令
host echo "export ORACLE_SID=ORCLCDB" >> ~/.bashrc
最后测试登录
sqlplus 用户名/密码@服务名
sqlplus SYSTEM/ytxcc123@ORCLPDB1
创建账户密码
create user newfs identified by 123456;
授权账户
GRANT CONNECT, RESOURCE, DBA TO newfs;
grant create session to newfs;
grant connect,resource to newfs;
create user enterprise identified by 123456;
GRANT CONNECT, RESOURCE, DBA TO enterprise;
grant create session to enterprise;
grant connect,resource to enterprise;
查询所有账户
SELECT * FROM ALL_USERS;
使用客户端链接:
账号:newfs
密码:123456
端口:1521
服务名称:ORCLPDB1
使用客户端链接:
账号:enterprise
密码:123456
端口:1521
服务名称:ORCLPDB1
特殊角色
DBA角色,是授权数据库管理员的权限
CONNECT角色, 是授予最终用户的典型权利,最基本的 一个(CREATE SESSION)
RESOURCE角色,是授予开发人员的 默认有八个权限(CREATE SEQUENCE,CREATE TRIGGER,CREATE CLUSTER,CREATE PROCEDURE,CREATE TYPE,CREATE OPERATOR,CREATE TABLE,CREATE INDEXTYPE)
exp_full_database角色,拥有导出数据库的权限
imp_full_database角色,拥有导入数据库的权限
GRANT
CONNECT,
RESOURCE,
--DBA,
--unlimited tablespace,
CREATE SESSION,
CREATE ANY SEQUENCE,
CREATE ANY TABLE,
CREATE ANY VIEW ,
CREATE ANY INDEX,
CREATE ANY PROCEDURE,
CREATE ANY DIRECTORY,
ALTER SESSION,
ALTER ANY SEQUENCE,
ALTER ANY TABLE,
--ALTER ANY VIEW , --不能修改视图
ALTER ANY INDEX,
ALTER ANY PROCEDURE,
--ALTER ANY DIRECTORY, --不能修改目录
--DROP SESSION, --不能删除Session
DROP ANY SEQUENCE,
DROP ANY TABLE,
DROP ANY VIEW ,
DROP ANY INDEX,
DROP ANY PROCEDURE,
DROP ANY DIRECTORY,
SELECT ANY TABLE,
SELECT ANY DICTIONARY,
INSERT ANY TABLE,
UPDATE ANY TABLE,
DELETE ANY TABLE,
DEBUG ANY PROCEDURE,
DEBUG CONNECT SESSION,
exp_full_database,
imp_full_database
TO NEWFS;
基本操作
查看用户拥有那些角色
select * from dba_role_privs a where a.grantee='NEWFS';
查看角色拥有那些权限
select * from dba_role_privs a where a.grantee='NEWFS';
为用户取消角色
revoke resource from newfs;
revoke DBA from newfs;
为用户取消权限
revoke unlimited tablespace from newfs;
查看Oracle的版本号
select * from v$version where rownum <=1;
新建:
create user newfs identified by 123456;
授权:
GRANT CONNECT, RESOURCE, DBA TO newfs;
grant create session to newfs;
grant connect,resource to newfs;