oracle_cli 管理常用命令

数据库管理
 lsnrctl status                                                  监听状态
 lsnrctl start                                                   启动监听
 lsnrctl stop                                                    停止监听
 sqlplus / as  sysdba                                            使用sys用户s连接库
SQL> startup;                                                     启动数据库实例
SQL> shutdown;                                                    关闭数据库实例
SQL> SHUTDOWN IMMEDIATE                                           立即关闭数据库

1、注意账户锁定、密码锁定
2、数据文件数量限制

--全局
SQL> show user                                                   查看当前用户
SQL> select username from dba_users;                             所有用户
SQL> archive log list                                            归档相关信息
SQL> select service_id, name,pdb from v$services;                查看service情况
SQL> select INSTANCE_NAME from v$instance;                       实例名

select * from v$version                 --版本信息,核心版本信息
select userenv('language') from dual;       --服务端字符集

SQL> show pdbs                                                   显示所有pdb 和状态
SQL> show con_name;                                              显示当前pdb数据库
SQL> select name,cdb from v$database;                            检查db是否为cdb
SQL> alter session set container=CDB1PDB;                        切换到指定pdb数据库
SQL> ALTER PLUGGABLE DATABASE cdb1pdb OPEN;                      开启
SQL> ALTER PLUGGABLE DATABASE cdb1pdb CLOSE;                     关闭
SQL> create pluggable database cdb1hf admin user hf identified by hf file_name_convert=('/u01/app/oracle/oradata/cdb1/pdbseed/','/data/hf/');   使用seed模板创建pdb
SQL> ALTER PROFILE default LIMIT password_life_time UNLIMITED;      --密码永不过期
SQL> alter system set deferred_segment_creation=FALSE;              --新建的空表给分配段


创建表空间(在12c版本下需要在每一个pdb中建立表空间,否则用户无法创建)
SQL> CREATE TABLESPACE ESENSOFT DATAFILE '/home/oracle/esensoft.dbf' size 40m autoextend on next 50m maxsize 20480m EXTENT MANAGEMENT LOCAL;
    指定表空间名、指定表空间文件位置、开启表空间自增长、每次增长50兆、最大为20480兆

--临时表空间

--临时表空间数据文件信息 
SQL> select * from dba_temp_files
SQL> select tablespace_name,file_name,bytes / 1024 / 1024 file_size,autoextensible from dba_temp_files

--临时表空间free空间信息,需要参考上条命令信息
SQL> SELECT TABLESPACE_NAME, FREE_SPACE / 1024 / 1024 / 1024 AS "FREE SPACE(G)" FROM DBA_TEMP_FREE_SPACE
-- WHERE TABLESPACE_NAME = TEMP --'&tablespace_name';

SQL> select * from V$TEMP_EXTENT_POOL

--创建新的临时表空间
CREATE TEMPORARY TABLESPACE cdm_temp
   TEMPFILE '+DATA/FXDB/TEMPFILE/cdm_temp01.dbf' SIZE 5M AUTOEXTEND ON;  

--数据文件自动扩展
ALTER DATABASE TEMPFILE '+DATA/FXDB/TEMPFILE/cdm_temp01.dbf' AUTOEXTEND ON NEXT 100M  MAXSIZE UNLIMITED;

--添加新的数据文件
ALTER TABLESPACE cdm_temp ADD TEMPFILE '+DATA/FXDB/TEMPFILE/cdm_temp02.dbf' SIZE 5M  AUTOEXTEND ON NEXT 128M  MAXSIZE UNLIMITED;

--切换用户的临时表空间
alter user GUICHIQU_ODS  temporary tablespace cdm_temp;


--表空间
SQL> create tablespace huangshan_ods datafile '/data/huangshan_ods01.dbf' size 100M autoextend on next 40m;
SQL> alter tablespace huangshan_ods add datafile '/data/huanshan_ods02.dbf' size 100m autoextend on next 40m;
SQL> select tablespace_name from dba_tablespaces;                                                 查看表空间列表
SQL> select * from v$tablespace;                                                                  表空间信息
SQL> select file_name,tablespace_name from dba_data_files;                                        表空间数据文件所处位置
    SQL> select tablespace_name,file_name,bytes from DBA_DATA_FILES;
SQL> select default_tablespace from dba_users where username='SHOW';                              指定用户默认表空间
SQL> drop tablespace HFGAOXINQU_ODS including contents;                                           删除表空间及其内容
SQL> drop tablespace ANHUI_ODS including contents and datafiles;                                  删除表空间及其数据文件
SQL> alter database datafile '/home/oracle/esensoft.dbf' offline drop                             删除数据文件和表空间的关系
SQL> select name, bytes/1024/1024/1024 as G from v$datafile                                       数据文件大小

SQL> show parameter db_block_size                                                                 显示默认数据块大小

SQL> show parameter db_files;                                                                     查看数据文件上限
SQL> alter system set db_files=1024 scope=spfile;                                                 修改数据文件上限,修改参数文件

SELECT TABLESPACE_NAME, FILE_ID, FILE_NAME, BYTES/1024/1024 AS "BYTES(M)"
  FROM DBA_DATA_FILES
WHERE TABLESPACE_NAME = '&tablespace_name'

--用户
SQL> create user c##show identified by c##show default tablespace esensoft;                       创建用户
SQL> alter user ah_sjpt_cdm identified by ah_sjpt_cdm;                                            修改用户密码
SQL> grant dba to c##show;                                                                        授予用户dba权限
SQL> alter user show identified by 123456;                                                        修改用户口令
SQL> drop user XXXX cascade;                                                                      删除用户,及其对象

SQL> select * from dba_users t where t.username like '%ODS';                                      查看所有用户信息
SQL> select table_name from user_tables;                                                          --查看当前用户下所有表信息  num_rows字段代表表内数据量

SQL> select count(*) from v$process;                                                                  当前连接数
SQL> select value from v$parameter where name = 'processes'                                           最大连接数

--表
SQL> truncate table OT_JBGW_DIABETES_FOLLOWUP;                                                                  删除表内所有数据(不可回滚)
SQL> alter table  ot_jbgw_hyper_followup rename column JBGW_HYP_FOLLOWUP_007 to OT_JBGW_HYP_FOLLOWUP_007;       修改字段名

SQL> select * from v$logfile                                                                      日志文件信息
SQL> select * from dba_data_files;                                                                数据文件信息
SQL> select * from v$controlfile;                                                                 控制文件信息
SQL> select con_id,name from v$containers;                                                        pdb信息
SQL> select name from v$database;                                                                 查看全局数据库名
SQL> select instance_name from v$instance;                                                        查看数据库实例名
SQL> select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;                                   数据库当前时间

SQL> analyze table my_table compute statistics for table for all indexes for all columns;         分析指定表字段和索引
SQL> analyze table my_table delete statistics;                                                    删除指定表分析数据

--索引
    --重建索引
select 'alter index ' || index_name || ' rebuild tablespace AH_ZHIKONG; '
  from user_indexes

--被授权数  对象权限
select distinct owner from dba_tab_privs where grantee='TEST';


select a.tablespace_name "表空间名",total "表空间大小",free "表空间剩余大小",(total - free) "表空间使用大小",
total / (1024 * 1024 * 1024) "表空间大小G",free / (1024 * 1024 * 1024) "表空间剩余大小G",(total - free) / (1024 * 1024 * 1024) "表空间使用大小G"
from (select tablespace_name,SUM(bytes) free from dba_free_space group by tablespace_name) a ,
(select tablespace_name,SUM(bytes) total from dba_data_files group by tablespace_name) b 
where a.tablespace_name = b.tablespace_name;

--导入导出数据
select 'drop table '||table_name||' purge;' from user_tables;

exp tianchang_ods/tianchang_ods@10.10.27.120/orcl file=/home/oracle/tianchang_ods20190826093501.dmp log=home/oracle/tianchang_ods.log
imp tianchang_ods/tianchang_ods@10.10.27.120/orcl file=/home/oracle/tianchang_ods20190826093501.dmp ignore=y full=y
--使用ignore=y参数时,ORACLE根本不检查要导入的数据结构和现存在数据库中表的结构是否相同
--full=y,是导入文件中全部内容,有可能有多个用户的内容   没有full,导出指定的模式

--数据泵
SQL> create or replace directory kmdata_exp as '/opt/backup'
SQL> grant read,write on directory kmdata_exp to public 
SQL> grant read,write on directory KMDATA_EXP to anhui_ods
SQL> select * from dba_directories
SQL> drop directory  kmdata_exp


expdp system/Gxrj2020@orcl schemas=anhui_ods directory=DATABAK  dumpfile=anhui_ods.dmp logfile=anhui_ods_expdp.log  METRICS=Y VERSION=12 cluster=N
expdp system/Gxrj2020@10.10.27.100/orcl schemas=$i directory=DATABAK  dumpfile=$i$BAKUPTIME.dmp logfile=expdp$i$BAKUPTIME.log  METRICS=Y cluster=N
    schemas     指定模式
    directory   库内定义的目录名 对应实际路径
    dumpfile    导出数据文件名
    logfile     导出日志文件名
    METRICS=Y   跟踪每个步骤的时间
    cluster=N   集群情况下忽略共享存储

impdp
    
--删除用户
select sid,serial# from v$session where username='AH_ZHIKONG';
alter system kill session '11090,29827';
drop user ah_zhikong cascade;


--用户密码过期被锁定 根据实际情况修改密码
ORA-28001: the password has expired
ORA-28000: the account is locked

select * from dba_profiles where profile = 'DEFAULT' and resource_name = 'PASSWORD_LIFE_TIME';
ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;
alter user c##mh_new identified by 123456;
alter user c##mh_new account unlock;

--锁表
select * from v$session t1, v$locked_object t2 where t1.sid = t2.SESSION_ID; 
alter system kill session '3523,55283'immediate; 

--procedures创建运行权限
GRANT CREATE ANY PROCEDURE TO MONKEY  --創建,查看,替換的權限
GRANT EXECUTE ANY PROCEDURE TO MONKEY  --執行和查看的權限
GRANT ALTER ANY PROCEDURE TO MONKEY  --編譯的權限
GRANT DEBUG ANY PROCEDURE TO MONKEY  --查看和調試的權限

--RMAN mount状态或归档模式   下运行
> rman target sys/oracle@10.10.27.120:1521/

RMAN> backup database format 'c:\data\bak_%U';                          #全库备份
RMAN> backup tablespace feidong_ods format 'c:\data\bak_ts_%U';         #指定表空间
RMAN> backup current controlfile format 'c:\data\bak_cf_%U';            #备份控制文件
RMAN> configure controlfile autoautobackup off|on;                      #控制文件自动备份设置
RMAN> list backup of database;                                          #查看全库备份 list:列出备份信息
RMAN> list backup of tablespace feidong_ods;                            #查看关于指定表空间的备份
RMAN> list backup of controlfile;                                       #查看控制文件备份
RMAN> delete backupset 1;                                               #删除备份 noprompt不提示 删除备份记录及其物理文件
RMAN> delete backup;                                                    #删除所有备份
RMAN> delete obsolete;                                                  #删除过期备份
RMAN> delete expired backup;                                            #删除无效备份
RMAN> report need backup;                                               #显示需要备份的文件
RMAN> report need backup tablespace feidong_ods;                        #检测指定表空间是否需要备份
RMAN> report obsolete;                                                  #查看过期备份
RMAN> 
RMAN> 
RMAN> 
RMAN> 
RMAN>show all;                                                          #显示recovery manager默认配置


/u01/app/oracle/product/12.2.0.1/db_1/dbs/        实例初始化参数文件
cd /u01/app/oracle/product/12.2.0.1/db_1/dbs/
cp init.ora initcdb1.ora

common user             通用用户    以c##开头   
local user              本地用户    在pdb中创建的用户
    每个pdb都是一个独立的单元,有自己的local user、表空间、数据文件,每个local user用户只能访问自己的pdb 

添加监听程序的参数()
vim /u01/app/oracle/product/12.2.0.1/db_1/network/admin/sqlnet.ora
    SQLNET.ALLOWED_LOGON_VERSION_SERVER=8
    SQLNET.ALLOWED_LOGON_VERSION_CLIENT=8



#######  创建用户 CRATE USER  ######
CREATE USER user_name IDENTIFIED BY password 
[DEFAULT TABLESPACE default_tablespace | TEMPORARY TABLESPACE temp_tablespace]
PROFILE profile
QUOTA [intager K|M] | PASSWORD EXPIRE
ACCOUNT LOCK|UNLOCK

指定默认表空间 指定默认临时表空间 指定用户资源文件 指定配额选项默认无限制 将密码置为过期登录时必须修改 锁定或解锁账号

#######  修改用户 ALTER USER ######
ALTER USER user_name IDENTIFIED BY password 
[DEFAULT TABLESPACE default_tablespace | TEMPORARY TABLESPACE temp_tablespace]
PROFILE profile
QUOTA [intager K|M] | PASSWORD EXPIRE
ACCOUNT LOCK|UNLOCK

修改用户密码
ALTER USER user_name IDENTIFIED BY password;
GRANT CONNECT TO user_name IDENTIFIED BY password;


###### 删除用户 DROP USER ######
DROP USER user_name [CASCADE]
用户在数据库中创建了对象,必须指定cascade参数,将用户在数据库中创建的对象全部删除。被删除的用户不能处于连接的状态

##### 管理用户会话 #####

1、使用字典视图监视用户会话信息
select sid,serial#,username,status,logon_time,machine 
    from v$session 
    where username is not null;

2、终止用户会话
alter system kill session 'SID,SERIAL#';
SQL> alter system kill session '8713,6928';
SID和SERIAL#能够标识唯一会话信息



############## 权限 ##############

系统权限
1、oracle中的系统权限
    对整个oracle系统的操作权限        连接数据库、创建管理表或视图
    系统权限一般由数据库管理员赋予用户,并允许用户将被授予的权限赋予其它用户
SQL> select * from system_privilege_map;                            查看全部系统权限列表

2、授予系统权限
    一般授予权限由DBA完成的。其它用户必须有 CREATE ANY PRIVILEGE 系统权限

GRANT SYSTEM_PRIV [system_priv,...] TO {PUBLIC|role|user} [,{PUBLIC|role|user}]
[WITH ADMIN OPTION];

SYSTEM_PRIV指定系统权限,多个权限之间用逗号分隔   public全部用户 role角色 user指定用户  

3、显示系统权限
SQL> select * from dba_sys_privs where grantee='TEST';                              检索某个用户或角色拥有的系统权限
SQL> select * from system_privilege_map;
SQL> select * from session_privs;                                                   查看当前用户拥有的系统权限
SQL> select * from user_role_privs;                                                 查看当前用户拥有的角色
4、回收系统权限
REVOKE SYSTEM_PRIV[,SYSTEM_PRIV] FROM {PUBLIC | ROLE | USER} [,{user|role|public}]

SQL> revoke create table from show;                                                 回收来自show用户的建表权限


对象权限
1、对象权限的分类
table               alter delete        index insert            reference select update
view                      delete              insert                      select update
dierctory                                     rread 
function                         execute
procedure                        execute
package                          execute
sequence            alter                                                 select
多种权限组合组合在一起可以用ALL权限,表示对该对象的全部权限

2、授予对象权限
对象权限是由对象的拥有者为其它用户授权,非对象的拥有者不得向其它用户授权,获权用户可以对对象进行相应操作
DBA用户可以把任何对象权限授予其它用户

GRANT object_privilege | ALL ON <schema.>object_name 
TO {user_name | role_name | PUBLIC }
[WITH GRANT OPTION];

SQL> grant all on test.admisson_record_24h to show;                                 授予此表对象的所有对象权限

3、显示对象权限
SQL> select * from dba_tab_privs where grantee='SHOW';                              指定用户或对象的全部对象权限

4、对象权限的回收
REVOKE {object_priv [,object_priv] | ALL }
ON [schema.]object
FROM {user|role|PUBLIC}

授权者只能从自己授权的用户哪里回收权限,被授权的用户基于之前权限创建的 过程、视图 将变为无效
回收对象权限时,经过传递获得权限的用户将会被影响



##########  角色  ############
将一组相关权限授予某个角色,一组权限的集合

系统预定义角色
1、CONNECT
    ALTER SESSION           修改会话
    CREATE CLUSTER          建立聚簇
    CREATE DATABASE LINK    建立数据库连接
    CREATE SEQUENCE         建立序列
    CREATE SESSION          建立会话
    CREATE SYNONYM          建立同义词
    CREATE VIEW             建立视图
    CREATE TABLE            建立表
    



----------------------------------------------- 控制用户权限 -----------------------------------------------
----用户的系统权限 
--一般开发权限需求
create session
create table
create view
create sequence
create procedure

--创建表空间
create tablespace jreey datafile 'c:\data\jreey01.dbf' size 1G autoextend on next 100M;
create user jreey identified by jreey;

--指定用户使用指定的表空间并限制使用容量 --限额
alter user jreey quota 100m on jreey;
--对容量使用不作限制  
alter user jreey quota unlimited on jreey;
--给予用户建立会话的权限
grant create session to jreey;
--给予用户建表权限
grant create table to jreey;


----角色
--创建角色
create role manager
--为角色添加权限
grant create session to manager;
grant create table, create view to manager;
--将角色赋予用户
grant manager to jreey,tom;
--查看角色
select * from user_role_privs;

----对象权限
不同的对象具有不同的对象权限
对象的拥有者拥有全部权限
对象的拥有者可以向外分配权限

--分配对象权限
grant select,update on employees to tom,jreey;
grant select,update on employees to public;
--使被授予用户具有分配权限的权利
grant select on employees to jreey with grant option;

----收回对象权限
revoke select on employees from jreey;
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,496评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,407评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,632评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,180评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,198评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,165评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,052评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,910评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,324评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,542评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,711评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,424评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,017评论 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,668评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,823评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,722评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,611评论 2 353

推荐阅读更多精彩内容

  • 常用语句: sql/plus sqlplus 'amdocs/Amdocs.Jx.China.110#@ysdb1...
    好好学习的蜗牛阅读 3,003评论 0 0
  • ORACLE自学教程 --create tabletestone ( id number, --序号usernam...
    落叶寂聊阅读 1,079评论 0 0
  • 系统用户: 1.sys system(sys权限最高) 2.sysman(操作企业管理器) 密码是安装的时候输入的...
    3hours阅读 1,562评论 0 0
  • 目录 用户操作语句 表空间操作语句 数据文件操作语句 数据表操作语句 数据库属性操作语句 1. 用户操作语句 查看...
    garyond阅读 1,083评论 0 2
  • ORA-00001: 违反唯一约束条件 (.) 错误说明:当在唯一索引所对应的列上键入重复值时,会触发此异常。 O...
    我想起个好名字阅读 5,307评论 0 9