oracle12c 安裝和使用

環境

win10 64位
Oracle Database 12c Release 2 (12.2.0.1.0)

1.下載

數據庫(包括客戶端)
Oracle Database 12c Release 2 (12.2.0.1.0) for Microsoft Windows (x64)
客戶端
Oracle Database 12c Release 2 Client (12.2.0.1.0) for Microsoft Windows (x64)

https://www.oracle.com/database/technologies/oracle12c-windows-downloads.html

2.安裝

安裝完成
Oracle Enterprise Manager Database Express URL: https://localhost:5500/em
在這裏插入圖片描述

按照步驟安裝好後,需要啓動監聽 lnsrctl start

#查看監聽
lnsrctl status
#關閉監聽
lnsrctl stop
#啓動監聽
lnsrctl start

修改監聽名

服務器中的listener.ora
在這裏插入圖片描述
客戶端配置

LOCALHOST =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SID = ORCL)
    )
  )

啓動實例連接本地數據庫失敗

ORA-28547:連接服務器失敗,可能是Oracle Net管理錯誤
 描述:監聽和服務都正常啓動了,但是遠程連接的時候會有這種錯誤

  ORA-28547:連接服務器失敗,可能是Oracle Net管理錯誤

 解決辦法:

listener.ora 文件中

DEFAULT_SERVICE_LISTENER= (ORCL) 
 
SID_LIST_LISTENER = 
  (SID_LIST = 
    (SID_DESC = 
      (SID_NAME = orcl)           #網絡上的服務名稱 
      (ORACLE_HOME =G:\oracle\product\10.2.0\db_1) # 這裏一定要配置正確 
#      (PROGRAM = extproc) 
    ) 
  ) 
 (PROGRAM = extproc)  把這句話註釋掉重啓監聽服務就好了。

 extproc是一個擴展的程序調用接口協議,  連接和調用外部的操作系統程序或進程用時會用到。

3.默認用戶名密碼

創建數據庫時設置口令爲 rootA123 替換sys 默認密碼,遠程使用sys登陸時使用此密碼登陸。在本機使用sys登陸則不需要密碼

SYS用戶:超級管理員,權限最高,它的角色是DBA。默認密碼是change_on_install。具有創建數據庫的權限
SYSTEM用戶:系統管理員,權限很高,它的角色是DBA operator,默認密碼manager。不具有創建數據庫的權限!
普通用戶(normal),如系統安裝時的scott用戶,默認密碼是tiger。普通用戶的權限是SYS用戶或SYSTEM用戶給的,如果沒有給,那普通用戶連很基本的訪問權限,連接權限也沒有。以上說的默認密碼是9i時的默認密碼,10g時已經沒有默認密碼了。

使用PLSQL可以使用sys / as sysdba登陸

4.新增用戶

新建一個數據庫就可以和11g一樣直接創建用戶和密碼。如果使用12c的方式(容器數據庫)則需要加c##或C##爲用戶名前綴

create user scott identified by tiger;
grant connect,resource,dba to scott;

修改用戶密碼

-- 容器數據庫添加用戶 用戶名不區分大小寫,密碼區分大小寫
create user c##scott identified by tiger;
grant connect,resource,dba to c##scott;

-- 修改用戶密碼 alter user abc identified by 123456;//修改用戶名abc密碼123456

常用命令

一、查看用戶


1.查看所有用戶:
select * from dba_users;
select * from all_users;
select * from user_users;    //查看當前用戶


二、查看角色

1.當前用戶被激活的全部角色
  select * from session_roles;


2.當前當前用戶被授予的角色
  select * from user_role_privs;


3.全部用戶被授予的角色
  select * from dba_role_privs;


4、查看某個用戶所擁有的角色

select * from dba_role_privs where grantee='用戶名';

 

5、查看某個角色所擁有的權限

select * from dba_sys_privs where grantee='CONNECT';

 

6.查看所有角色
  select * from dba_roles;



三、查看權限

1.基本權限查詢:
select * from session_privs; --當前用戶所擁有的全部權限
select * from user_sys_privs;--當前用戶的系統權限
select * from user_tab_privs;--當前用戶的對象權限
select * from dba_sys_privs ;--查詢某個用戶所擁有的系統權限
select * from role_sys_privs;--查看角色(只能查看登陸用戶擁有的角色)所包含的權限


2. 查看用戶的系統權限(直接賦值給用戶或角色的系統權限)
select * from dba_sys_privs;

select * from user_sys_privs;


2.查看用戶的對象權限:
 select * from dba_tab_privs;
 select * from all_tab_privs;
 select * from user_tab_privs;


3.查看哪些用戶有sysdba或sysoper系統權限(查詢時需要相應權限)
  select * from v$pwfile_users; 

擴展

1、以下語句可以查看Oracle提供的系統權限
select name from sys.system_privilege_map

2、查看一個用戶的所有系統權限(包含角色的系統權限)
select privilege from dba_sys_privs where grantee='SCOTT'  
union  
select privilege from dba_sys_privs where grantee in (select granted_role from dba_role_privs where grantee='SCOTT' ); 

 

3、 查詢當前用戶可以訪問的所有數據字典視圖。 
select * from dict where comments like '%grant%';   
 

4、顯示當前數據庫的全稱
select * from global_name;   

 

問題 1:如何查詢一個角色包括的權限?   
a.一個角色包含的系統權限   
         select * from dba_sys_privs where grantee='角色名'  

         select * from dba_sya_privs where grantee='COONNECT'; connect要大寫
         另外也可以這樣查看:   
         select * from role_sys_privs where role='角色名'   
b.一個角色包含的對象權限   
         select * from dba_tab_privs where grantee='角色名'   


問題 2:Oracle究竟有多少種角色?   
select * from dba_roles;   


問題 3:如何查看某個用戶,具有什麼樣的角色?   
select * from dba_role_privs where grantee='用戶名'  

 

問題4:查看哪些用戶具有DBA的角色

select grantee from dba_role_privs where granted_role='DBA';

PLSQL

變量設置

pl/sql環境變量設置

ORACLE_HOME=D:\oracle\product\10.2.0\db_1


TNS_ADMIN=D:\oracle\product\10.2.0\db_1\NETWORK\ADMIN


NLS_LANG=SIMPLIFIED CHINESE_CHINA.ZHS16GBK

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章