Oracle常用命令

Oracle监听、启动及关闭

--启动监听
lsnrctl start
--修改shm大小
sudo mount -o remount,size=1G /dev/shm/
df -h | grep shm
--系统用户登录
sqlplus / as sysdba
--启动database
startup
--若启动报错 ORA-00845: MEMORY_TARGET not supported on this system,说明shm较小
-- 关闭
shutdown immediate;

Wallet相关

-- 生成钱包(该过程会产生一个主密钥存储在wallet中):
ALTER SYSTEM SET ENCRYPTION KEY IDENTIFIED BY "oracle123";
--打开钱包
ALTER SYSTEM SET ENCRYPTION WALLET OPEN IDENTIFIED BY "oracle123";
--关闭钱包
ALTER SYSTEM SET ENCRYPTION WALLET CLOSE IDENTIFIED BY "oracle123";

-- 使用示例
----------------------------------------------------------------------------------------
--系统管理员打开钱包
ALTER SYSTEM SET ENCRYPTION WALLET OPEN IDENTIFIED BY "oracle123";
--在钱包打开的前提下:
conn c##user1;
--一行显示多个数据
set linesize 1000;
--使用默认加密算法
create table t1 (id int, name varchar(128) ENCRYPT);
--插入数据
insert into t1 values (1,'zhangsan');
insert into t1 values (2,'lisi');
insert into t1 values (3,'wangwu');
insert into t1 values (4,'zhaoliu');
insert into t1 values (5,'tianqi');
select * from t1;
--授予权限给其他用户
grant select on t1 to c##user2;
--user2用户进行查看
conn c##tjy2;
select * from c##user1.t1; --ok
--管理员关闭钱包
ALTER SYSTEM SET ENCRYPTION WALLET CLOSE IDENTIFIED BY "oracle123";
--使用系统管理员关闭钱包进行查看
--用户c##user1和c##user2执行select语句均报错
ORA-28365: wallet is not open

用户相关

--创建用户(19c版本用户名需要加c##)
create user c##uxdb identified by 123456;
create user c##user1 identified by 123456;
create user c##user2 identified by 123456;

--给用户授权
-- 授权用户连接权限
grant connect, resource to zhangsan; 
--授予用户创建session的权限,即登陆权限
grant create session to c##uxdb;
grant create session to c##user1;
grant create session to c##user2;
--授予用户使用表空间的权限
grant unlimited tablespace to c##uxdb; 
grant unlimited tablespace to c##user1; 
grant unlimited tablespace to c##user2; 
-------------------------------------------------
--赋予用户创建表的权限
grant create table to c##uxdb;
grant create table to c##user1;
grant create table to c##user2;
--授予删除表的权限
grant drop any table to c##uxdb;      
--插入表的权限
grant insert any table to c##uxdb;   
--修改表的权限     
grant update any table to c##uxdb; 
--创建视图权限
grant create view to c##uxdb; 
--授予DBA权限  
grant dba to c##uxdb; 
grant dba to c##tjy1; 
grant dba to c##tjy2; 
--授予不限制的表空间
grant unlimited tablespace to c##uxdb;  
--授予查询任何表  
grant select any table to c##uxdb; 
--授予 查询任何字典
grant select any dictionary to c##uxdb;
grant select any dictionary to c##user1;
grant select any dictionary to c##user2;

基本操作示例

--用户登录
conn c##user1;
--查看表空间
select TABLESPACE_NAME from user_tablespaces;
--创建表
create table t1 (id int);
insert into t1 calues (1);
--查看表结构
describe t1;
--授权其他用户
grant all on t1 to c##user2;
--c##user2用户进行select
conn  c##user2;
select * from c##user1.t1;

列加密示例

--使用默认算法创建具有加密列的表
CREATE TABLE employee (
  first_name VARCHAR2(128),
  last_name VARCHAR2(128),
  empID NUMBER,
  salary NUMBER(6) ENCRYPT);
-- 使用无算法或非默认算法创建具有加密列的表
-- 如果不想使用任何算法,请包含该子句。ENCRYPT NO SALT
-- 如果要使用非默认算法,请使用子句,后跟用单引号括起来的以下算法之一:ENCRYPT USING
-- 3DES168、AES128、AES192(默认值)、AES256
CREATE TABLE employee (
  first_name VARCHAR2(128),
  last_name VARCHAR2(128),
  empID NUMBER ENCRYPT NO SALT,
  salary NUMBER(6) ENCRYPT USING '3DES168');
--在 CREATE TABLE 语句中使用 NOMAC 参数
CREATE TABLE employee (
  first_name VARCHAR2(128),
  last_name VARCHAR2(128),
  empID NUMBER ENCRYPT 'NOMAC' ,
  salary NUMBER(6));
-- 更改表的完整性算法     
-- 增加mac
ALTER TABLE EMPLOYEE REKEY USING '3DES168' 'SHA-1';
-- 设置为nomac
ALTER TABLE EMPLOYEE REKEY USING '3DES168' 'NOMAC';
-- 向现有表添加加密列
ALTER TABLE employee ADD (ssn VARCHAR2(11) ENCRYPT);
-- 加密未加密的列
ALTER TABLE employee MODIFY (first_name ENCRYPT);
ALTER TABLE employee MODIFY (first_name ENCRYPT 'NOMAC');
-- 对列解除加密
ALTER TABLE employee MODIFY (first_name DECRYPT);
-- 向加密列添加盐
ALTER TABLE employee MODIFY (first_name ENCRYPT SALT);
-- 从加密列中删除盐
ALTER TABLE employee MODIFY (first_name ENCRYPT NO SALT);
-- 更改具有加密列的表的加密密钥或算法
-- 仅修改密钥
ALTER TABLE employee REKEY;
-- 更改加密表列加密密钥和算法
ALTER TABLE employee REKEY USING '3DES168';


----------------------------------------------------------------------------------------
--查看当前用户的加密表
select * from ALL_ENCRYPTED_COLUMNS;
--查看当前数据库中所有加密列的信息
select * from DBA_ENCRYPTED_COLUMNS;
--比ALL_ENCRYPTED_COLUMNS视图少了OWNER列,只属于用户表的数据被显示。
select * from USER_ENCRYPTED_COLUMNS;
--查看被加密的表空间信息
select * from V$ENCRYPTED_TABLESPACES;
--显示有关用于当前数据库的默认加密密钥的信息
select * from V$DATABASE_KEY_INFO;
--查看blocksize
select TABLESPACE_NAME,BLOCK_SIZE from user_tablespaces;
--查看钱夹中的秘钥信息
select KEY_ID,KEYSTORE_TYPE,ORIGIN from V$ENCRYPTION_KEYS;

主密钥相关

# 创建新的主密钥
sqlplus c##uxdb as syskm
# 使用 OpenSSL 创建密钥 ID,将字符转换为大写:
$ openssl rand 16 | xxd -u -p
D20765EB721AF44D054B30FE87F8E49A
# 创建 TDE 主加密密钥
$ openssl rand 32 -hex
5a089c8ea6ee21cba774f61e58d102665df4a979a34757836b3d066a3eb3db11
--生成新的主密钥
ADMINISTER KEY MANAGEMENT CREATE ENCRYPTION KEY 
'D20765EB721AF44D054B30FE87F8E49A:5a089c8ea6ee21cba774f61e58d102665df4a979a34757836b3d066a3eb3db11' 
IDENTIFIED BY oracle123;
--方法一:
ADMINISTER KEY MANAGEMENT SET ENCRYPTION KEY 
'f24ce8cdae39742b5da7293da206fbd05a28b1e44c4781f801768cfdc3dbb6e2' 
USING ALGORITHM 'GOST256'
FORCE KEYSTORE
IDENTIFIED BY oracle123;
--方法二:
ADMINISTER KEY MANAGEMENT CREATE ENCRYPTION KEY 
'10203040506070801112131415161718:3D432109DF88967A541967062A6F4E460E892318E307F017BA048707B402493C' 
IDENTIFIED BY oracle123;
--钱包备份:
ADMINISTER KEY MANAGEMENT BACKUP KEYSTORE USING 'Monthly-backup-2022-06' 
FORCE KEYSTORE 
IDENTIFIED BY oracle123;

查看wallet信息 

# 查看wallet信息
orapki wallet display  -wallet /home/oracle/wallet -pwd oracle123
--检索密钥ID
SELECT ' ADMINISTER KEY MANAGEMENT USE KEY '''||KEY_ID||''' 
FORCE KEYSTORE IDENTIFIED BY KEYSTORE_PASSWORD WITH BACKUP;' 
AS "USE KEY COMMAND" FROM V$ENCRYPTION_KEYS 
WHERE CREATOR_PDBNAME = SYS_CONTEXT('USERENV', 'CON_NAME') 
ORDER BY CREATION_TIME DESC FETCH FIRST 1 ROWS ONLY;
--查看正在使用的主密钥
SELECT KEY_ID 
FROM V$ENCRYPTION_KEYS 
WHERE ACTIVATION_TIME = (SELECT MAX(ACTIVATION_TIME) 
                         FROM V$ENCRYPTION_KEYS
                         WHERE ACTIVATING_DBID = (SELECT DBID FROM V$DATABASE));
--查看密钥ID
SELECT KEY_ID FROM V$ENCRYPTION_KEYS; 

KEY_ID
----------------------------------------------------
AWsHwVYC2U+Nv3RVphn/yAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
--使用此密钥 ID 激活密钥。
ADMINISTER KEY MANAGEMENT USE KEY 
'AdIHZetyGvRNBUsw/of45JoAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' 
USING TAG 'quarter:second;description:Activate Key on standby' 
IDENTIFIED BY oracle123 
WITH BACKUP;

审计相关

-- 查看审计相关参数
show parameter audit;
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
audit_file_dest                      string      /opt/oracle/admin/ORCLCDB/adum
p
audit_sys_operations                 boolean     TRUE
audit_syslog_level                   string
audit_trail                          string      DB, EXTENDED
unified_audit_common_systemlog       string
unified_audit_sga_queue_size         integer     1048576
unified_audit_systemlog              string
/* 
audit_file_dest:
    审计文件对应的目录。
    当前进程对应审计日志可以通过进程pid确定。
    SELECT spid FROM v$session s, v$process p, v$mystat m WHERE s.paddr = p.addr AND s.sid = m.sid AND m.statistic# = 0 ;
    可以使用上列SQL语句查询进程PID。
audit_sys_operations:
    默认为false。
    当设置为true时,所有sys用户(包括以sysdba,sysoper身份登录的用户)的操作都会被记录。
    audit trail不会写在aud$表中,这个很好理解,
    如果数据库还未启动aud$不可用,那么像conn /as sysdba这样的连接信息,只能记录在其它地方。
    如果是windows平台,audti trail会记录在windows的事件管理中;
    如果是linux/unix平台则会记录在audit_file_dest参数指定的文件中。    
audit_trail:
    None:是默认值,不做审计;
    DB:将audit trail 记录在数据库的审计相关表中,如aud$,审计的结果只有连接信息;
    DB,Extended:这样审计结果里面除了连接信息还包含了当时执行的具体语句;
    OS:将audit trail 记录在操作系统文件中,文件名由audit_file_dest参数指定;*
*/
-- 审计开启
alter system set audit_trail=db,extended scope=spfile;
-- 开启sys相关用户审计
alter system set audit_sys_operations=TRUE scope=spfile;
-- 相关参数修改后均需重启服务才能生效
shutdown immediate;
startup;
-- 查看审计信息
set lines 300
col DEST_NAME format a30
col OS_USERNAME format a15
col USERNAME format a15
col USERHOST format a15
col TERMINAL format a15
col OBJ_NAME format a30

col EXTENDED_TIMESTAMP for a40
col SQL_TEXT for a60
col os_user for a18
col db_user for a12

set pagesize 1000
select EXTENDED_TIMESTAMP,USERNAME,USERHOST,ACTION_NAME,SQL_TEXT from dba_audit_trail ORDER BY EXTENDED_TIMESTAMP ASC;
-- 查看设置的审计策略
set lines 300
col USER_NAME format a30
col PROXY_NAME format a30
col AUDIT_OPTION format a30
col SUCCESS format a30
col FAILURE format a30
SELECT * FROM DBA_STMT_AUDIT_OPTS;
SELECT * FROM DBA_PRIV_AUDIT_OPTS;

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

aSimpleSheep

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值