Oracle数据库常用的操作命令

  1. 云栖社区>
  2. 博客>
  3. 正文

Oracle数据库常用的操作命令

技术小甜 2017-11-08 12:23:00 浏览714
展开阅读全文
 

Oracle数据库常用的操作命令

常用的数据字典表:tab,user_tables,user_objects,user_catalog,user_constraints,user_cons_columns
1、视图在所有存储过程(数据字典表)中查询是否有某一字符串的SQL语句
      select * from all_source where type='PROCEDURE' and lower(text) like '%student %'
      select * from user_source where lower(text) like '%dbms_%'
      select   tname,cname,coltype,width from col where tname='STUDENT'
      select * from all_tables where owner ='OEMS'
      select * from all_constraints where constraint_name = 'JWTHESIS_R_THESISWRITEBATCH_ID'

2、sqlplus连接oracle
      Oracle安装后默认密码: sys(change_on_install),system(manager),internal(oracle),scott(tiger)
      connect system/manager as sysdba;(as sysoper)
      connect internal/oracle AS SYSDBA;(scott/tiger)
      connect sys/change_on_install as sysdba;

3、查看当前连接数:select * from v$license
      查看当前的所有数据库:     select * from v$database;
      查看当前所有的数据库实例: select * from v$instance   
      查看当前库的所有数据表all_tables(用户表user_tables): 
      select * from all_tables where table_name like 'T%' and owner='SYS'; 
      查看当前数据库连接用户    sqlplus Show user;或者select uid,user from dual;
      查看当前数据库系统时间    select sysdate from dual;
      查看数据库表结构字段:     desc v$database; 
      查看哪些用户拥有SYSDBA、SYSOPER权限: select * from v_$PWFILE_USERS; 

4. 怎样删除用户会话
      SELECT * FROM v$session WHERE lower(USERNAME) = 'oems';
      ALTER SYSTEM KILL SESSION 'SID, SERIAL#';

5、改变一个对象的名字,执行RENAME语句,改变一个表、视图、序列或同义词
      RENAME dept TO detail_dept;

6、检查用户是否将SYSTEM 表空间作为缺省表空间
      SELECT USERNAME,DEFAULT_TABLESPACE FROM DBA_USERS WHERE          DEFAULT_TABLESPACE ='SYSTEM';

7、怎样查找产生锁的SQL 语句
      select s.username username,a.sid sid,a.owner||'.'||a.object object,s.lockwait,t.sql_text SQL
      from v$sqltext t,v$session s,v$access a
      where t.address=s.sql_address and t.hash_value=s.sql_hash_value and s.sid = a.sid and a.owner != 'SYS' 

and upper    (substr(a.object,1,2)) != 'V$'

8、添加注释到表中,用COMMENT语句添加注释到一个表或列中
      (注释通过数据字典视图查看CALL_COL_COMMENTS,CUSER_COL_COMMENTS,CALL_TAB_COMMENTS,CUSER_TAB_COMMENTS)
    COMMENT ON TABLE employees IS 'Employee Information'

9、系统日期sysdate显示,环境变量nls_date_format设置日期显示格式
      alter session set nls_date_format='yyyy"天"mm"月"dd"日"' --'yyyy-mm-dd hh24:mi:ss'

10、日期显示的类型
      Select sysdate,to_char(sysdate,'yyyy.mm.dd')col1,to_char(sysdate,'dd-mon-yyyy hh24:mi:ss day')col2 

from dual
      Select trunc(sysdate) + 0.5 col from dual 
      Select trunc(sysdate) ||' 12:00:00' col From dual

11、DBA权限
--典型的DBA权限--
--系统权限--                    
--授权的操作--
create user          受让人可以创建其他 oracle 用户 (需要有DBA角色权限)。
drop user            受让人可以删除另一个用户。
drop any table       受让人可以删除在任意方案中的表。
backup any table     受让人用导出实用程序可以备份在任何方案中的任何表。
select any table     受让人可以查询在任何方案中的表、视图或快照。
create any table     受让人可以在任何方案中创建表。
1.create user   创建用户(通常由DBA执行)
2.create role   创建一个权限的集合(通常由DBA执行)
3.grant         给予其他用户权限来访问本用户的对象
4.alter user    改变用户口令
5.revoke        删除在用户对象上的权限

(1)DBA用create user语句创建用户:    
      create user scott identified by tiger
      create user scott identified by tiger default tablespace users Temporary TABLESPACE Temp;
      用sys以sysdba的身份来进行登录,在sys状态是locked的时候也是能登录的.然后再使用:锁定alter user scott 

account lock;解锁alter user sys account unlock
(2)创建角色并且授予权限给角色,角色是命名的可以授予用户的相关权限的组,该方法使得授予、撤回和维护权限容易的多
      首先,DBA必须创建角色,然后,DBA可以分配角色给角色和用户,创建角色:create role manager;
(3)DBA授予指定的系统权限
<1>授予指定系统权限给一个用户
    grant create session, create table, create sequence, create view to scott;
<2>授予权限给一个角色
    grant create table, create view to manager;
    grant connect,resource,dba to scott;grant sysdba to scott;
<3>授予一个角色给用户
    grant manager to alice, lily;
<4>授予对象权限,授予查询权限到employees表上
    grant select on employees to sue, rich;
<5>授予权限到以更新指定的列到用户和角色
    grant update (department_name, location_id) on departments to scott, manager;
<6>给一个用户授权以级联权限授予
    grant select, insert on departments to scott with grant option
<7>允许所有在系统上的用户从alice 的departments 表中查询数据: 
    grant select on alice.departments to public

--确认已授予的权限
--数据字典视图--            
--说明--
ROLE_SYS_PRIVS         授予角色的系统权限
ROLE_TAB_PRIVS         授予角色的表权限
USER_ROLE_PRIVS        可由用户访问的角色
USER_TAB_PRIVS_MADE    授予用户的对象上的对象权限
USER_TAB_PRIVS_RECD    授予用户的对象权限
USER_COL_PRIVS_MADE    授予用户对象的列上的对象权限
USER_COL_PRIVS_RECD    授予用户在指定列上的对象权限
USER_SYS_PRIVS         授予用户的系统权限

(4)改变口令,DBA创建用户帐号并且初始化其口令,用alter user语句用户可以改变口令:
    alter user scott identified by tiger;
    alter user system identified by test;

(5)撤消对象权限
    用REVOKE语句撤消授予其他用户的权限,通过WITH GRANT OPTION子句授予其他用户的权限也被撤消
    REVOKE select,insert ON departments FROM scott;

创建数据库链接,USING子句指出了一个远程数据库的服务名。写使用数据库链接的SQL 语句
      CREATE PUBLIC DATABASE LINK hq.sina.com USING 'sales'
      CREATE PUBLIC SYNONYM HQ_EMP FOR emp@hq.sina.com;

系统权限和对象权限
      授予对象权限时语句应该是WITH GRANT OPTION子句,而在授予系统权象时语句是WITH ADMIN OPTION
      对象权限就是指在表、视图、序列、过程、函数或包等对象上执行特殊动作的权利.有九种不同类型的权限可以授予

给用户或角色。
      系统权限需要授予者有进行系统级活动的能力,如连接数据库,更改用户会话、建立表或建立用户等等

Oracle数据库常用的操作命令

常用的数据字典表:tab,user_tables,user_objects,user_catalog,user_constraints,user_cons_columns
1、视图在所有存储过程(数据字典表)中查询是否有某一字符串的SQL语句
      select * from all_source where type='PROCEDURE' and lower(text) like '%student %'
      select * from user_source where lower(text) like '%dbms_%'
      select   tname,cname,coltype,width from col where tname='STUDENT'
      select * from all_tables where owner ='OEMS'
      select * from all_constraints where constraint_name = 'JWTHESIS_R_THESISWRITEBATCH_ID'

2、sqlplus连接oracle
      Oracle安装后默认密码: sys(change_on_install),system(manager),internal(oracle),scott(tiger)
      connect system/manager as sysdba;(as sysoper)
      connect internal/oracle AS SYSDBA;(scott/tiger)
      connect sys/change_on_install as sysdba;

3、查看当前连接数:select * from v$license
      查看当前的所有数据库:     select * from v$database;
      查看当前所有的数据库实例: select * from v$instance   
      查看当前库的所有数据表all_tables(用户表user_tables): 
      select * from all_tables where table_name like 'T%' and owner='SYS'; 
      查看当前数据库连接用户    sqlplus Show user;或者select uid,user from dual;
      查看当前数据库系统时间    select sysdate from dual;
      查看数据库表结构字段:     desc v$database; 
      查看哪些用户拥有SYSDBA、SYSOPER权限: select * from v_$PWFILE_USERS; 

4. 怎样删除用户会话
      SELECT * FROM v$session WHERE lower(USERNAME) = 'oems';
      ALTER SYSTEM KILL SESSION 'SID, SERIAL#';

5、改变一个对象的名字,执行RENAME语句,改变一个表、视图、序列或同义词
      RENAME dept TO detail_dept;

6、检查用户是否将SYSTEM 表空间作为缺省表空间
      SELECT USERNAME,DEFAULT_TABLESPACE FROM DBA_USERS WHERE          DEFAULT_TABLESPACE ='SYSTEM';

7、怎样查找产生锁的SQL 语句
      select s.username username,a.sid sid,a.owner||'.'||a.object object,s.lockwait,t.sql_text SQL
      from v$sqltext t,v$session s,v$access a
      where t.address=s.sql_address and t.hash_value=s.sql_hash_value and s.sid = a.sid and a.owner != 'SYS' 

and upper    (substr(a.object,1,2)) != 'V$'

8、添加注释到表中,用COMMENT语句添加注释到一个表或列中
      (注释通过数据字典视图查看CALL_COL_COMMENTS,CUSER_COL_COMMENTS,CALL_TAB_COMMENTS,CUSER_TAB_COMMENTS)
    COMMENT ON TABLE employees IS 'Employee Information'

9、系统日期sysdate显示,环境变量nls_date_format设置日期显示格式
      alter session set nls_date_format='yyyy"天"mm"月"dd"日"' --'yyyy-mm-dd hh24:mi:ss'

10、日期显示的类型
      Select sysdate,to_char(sysdate,'yyyy.mm.dd')col1,to_char(sysdate,'dd-mon-yyyy hh24:mi:ss day')col2 

from dual
      Select trunc(sysdate) + 0.5 col from dual 
      Select trunc(sysdate) ||' 12:00:00' col From dual

11、DBA权限
--典型的DBA权限--
--系统权限--                    
--授权的操作--
create user          受让人可以创建其他 oracle 用户 (需要有DBA角色权限)。
drop user            受让人可以删除另一个用户。
drop any table       受让人可以删除在任意方案中的表。
backup any table     受让人用导出实用程序可以备份在任何方案中的任何表。
select any table     受让人可以查询在任何方案中的表、视图或快照。
create any table     受让人可以在任何方案中创建表。
1.create user   创建用户(通常由DBA执行)
2.create role   创建一个权限的集合(通常由DBA执行)
3.grant         给予其他用户权限来访问本用户的对象
4.alter user    改变用户口令
5.revoke        删除在用户对象上的权限

(1)DBA用create user语句创建用户:    
      create user scott identified by tiger
      create user scott identified by tiger default tablespace users Temporary TABLESPACE Temp;
      用sys以sysdba的身份来进行登录,在sys状态是locked的时候也是能登录的.然后再使用:锁定alter user scott 

account lock;解锁alter user sys account unlock
(2)创建角色并且授予权限给角色,角色是命名的可以授予用户的相关权限的组,该方法使得授予、撤回和维护权限容易的多
      首先,DBA必须创建角色,然后,DBA可以分配角色给角色和用户,创建角色:create role manager;
(3)DBA授予指定的系统权限
<1>授予指定系统权限给一个用户
    grant create session, create table, create sequence, create view to scott;
<2>授予权限给一个角色
    grant create table, create view to manager;
    grant connect,resource,dba to scott;grant sysdba to scott;
<3>授予一个角色给用户
    grant manager to alice, lily;
<4>授予对象权限,授予查询权限到employees表上
    grant select on employees to sue, rich;
<5>授予权限到以更新指定的列到用户和角色
    grant update (department_name, location_id) on departments to scott, manager;
<6>给一个用户授权以级联权限授予
    grant select, insert on departments to scott with grant option
<7>允许所有在系统上的用户从alice 的departments 表中查询数据: 
    grant select on alice.departments to public

--确认已授予的权限
--数据字典视图--            
--说明--
ROLE_SYS_PRIVS         授予角色的系统权限
ROLE_TAB_PRIVS         授予角色的表权限
USER_ROLE_PRIVS        可由用户访问的角色
USER_TAB_PRIVS_MADE    授予用户的对象上的对象权限
USER_TAB_PRIVS_RECD    授予用户的对象权限
USER_COL_PRIVS_MADE    授予用户对象的列上的对象权限
USER_COL_PRIVS_RECD    授予用户在指定列上的对象权限
USER_SYS_PRIVS         授予用户的系统权限

(4)改变口令,DBA创建用户帐号并且初始化其口令,用alter user语句用户可以改变口令:
    alter user scott identified by tiger;
    alter user system identified by test;

(5)撤消对象权限
    用REVOKE语句撤消授予其他用户的权限,通过WITH GRANT OPTION子句授予其他用户的权限也被撤消
    REVOKE select,insert ON departments FROM scott;

创建数据库链接,USING子句指出了一个远程数据库的服务名。写使用数据库链接的SQL 语句
      CREATE PUBLIC DATABASE LINK hq.sina.com USING 'sales'
      CREATE PUBLIC SYNONYM HQ_EMP FOR emp@hq.sina.com;

系统权限和对象权限
      授予对象权限时语句应该是WITH GRANT OPTION子句,而在授予系统权象时语句是WITH ADMIN OPTION
      对象权限就是指在表、视图、序列、过程、函数或包等对象上执行特殊动作的权利.有九种不同类型的权限可以授予

给用户或角色。
      系统权限需要授予者有进行系统级活动的能力,如连接数据库,更改用户会话、建立表或建立用户等等
















本文转自东方之子736651CTO博客,原文链接:http://blog.51cto.com/ecloud/1350554 ,如需转载请自行联系原作者




网友评论

登录后评论
0/500
评论
技术小甜
+ 关注