Oracle 11g 資料庫物件-同義詞
阿新 • • 發佈:2019-01-24
SQL> remark 同義詞:Oracle為了方便對資料的 操作,允許使用者建立物件的別名,用於簡化查詢的語句,這個別名稱為同義詞;
SQL> remark 同義詞的分類:公有同義詞 私有同義詞
SQL> remark 公有同義詞:所有的物件都可以進行訪問
SQL> remark 私有同義詞:只有建立者能訪問;
SQL> remark 建立同義詞的許可權:create any synonym drop any synonym;
SQL> remark 建立一個表空間
SQL> create tablespace HOPESPACE
2 datafile 'd:\hopespace.dbf'
3 size 30m
4 autoextend on;
Tablespace created.
SQL> remark 建立一個使用者 hope
SQL> create user hope
2 identified by hope123
3 default tablespace hopespace
4 temporary tablespace temp;
User created.
SQL> remark 給新建的使用者進行系統許可權授權
SQL> grant connect to hope;
Grant succeeded.
SQL> grant resource to hope;
Grant succeeded.
SQL> remark 現在:新建的使用者作業系統預設(預設)使用者scott;
SQL> remark 系統給使用者授予建立和刪除同義詞的許可權
SQL> grant create any synonym to hope;
Grant succeeded.
SQL> grant drop any synonym to hope;
Grant succeeded.
SQL> remark 連線scott 使用者 ,]
SQL> conn scott/tiger;
Connected.
SQL> remark scott 使用者給hope使用者授予emp表的使用許可權
SQL> grant all on emp to hope;
Grant succeeded.
SQL> remark 連線hope賬戶,並建立同義詞
SQL> conn hope/hope123;
Connected.
SQL> create synonym myemp for scott.emp;
Synonym created.
SQL> remark 通過同義詞查詢表的資訊
SQL> select empno,job,sal from myemp;
EMPNO JOB SAL
---------- --------- ----------
7369 CLERK 800
7499 SALESMAN 1600
7521 SALESMAN 1250
7566 MANAGER 2975
7654 SALESMAN 1250
7698 MANAGER 2850
7782 MANAGER 2450
7788 ANALYST 3000
7839 PRESIDENT 5000
7844 SALESMAN 1500
7876 CLERK 1100
EMPNO JOB SAL
---------- --------- ----------
7900 CLERK 950
7902 ANALYST 3000
7934 CLERK 1300
14 rows selected.
SQL> remark 注:使用者在使用同義詞物件的時候,對同義詞操作的許可權等同於所依賴的物件的許可權;即:使用同義詞是,依賴的物件必須是授權過的;
SQL> remark ..............公有同義詞.........................
SQL> remark 許可權:create public synonym drop public synonym
SQL> remark 建立公有同義詞的使用者必須擁有上面的兩個許可權
SQL> remark 其他的使用者操作同義詞的時候要依賴同義詞所關聯的物件;
SQL> remark 給hope 使用者授予建立公有同義詞的許可權
SQL> conn system/manager;
Connected.
SQL> grant create public synonym to hope;
Grant succeeded.
SQL> grant drop public synonym to hope;
Grant succeeded.
SQL> reamrk 登陸hope使用者,並建立公有同義詞
SP2-0734: unknown command beginning "reamrk 登..." - rest of line ignored.
SQL> edit
Wrote file afiedt.buf
1* grant drop public synonym to hope
SQL> remark 登陸hope使用者,並建立公有同義詞
SQL> conn hope/hope123;
Connected.
SQL> create public synonym pubemp for scott.emp;
Synonym created.
SQL> remark 另外建立一個使用者,並使用這個公有同義詞
SQL> conn system/manager;
Connected.
SQL>
1 create user hope1
2* identified by hope1123
3 /
User created.
SQL> remark 給新建的使用者授予系統許可權
SQL> grant connect to hope1;
Grant succeeded.
SQL> grant resource to hope1;
Grant succeeded.
SQL> remark 連線hope1使用者使用公有同義詞
SQL> conn hope1/hope1123;
Connected.
SQL> remark 由於scott並沒有授權給hope1這個使用者相關物件的許可權,所有hope1並不能使用該公有同義詞
SQL> remark 給hope1進行授權
SQL> conn scott/tiger;
Connected.
SQL> grant all on emp to hope1;
Grant succeeded.
SQL> conn hope1/hope1123;
Connected.
SQL> select empno,ename,sal from pubemp;
SQL> remark 連線hope使用者進行使用公有同義詞
SQL> conn hope/hope123;
Connected.
SQL> select empno,ename from pubemp;
SQL> remark ..................................................................
SQL> remark ..................................................................
SQL> remark 建立公有同義詞
SQL> create public synonym pubemp for scott.emp;
create public synonym pubemp for scott.emp
*
ERROR at line 1:
ORA-00955: name is already used by an existing object
SQL> remark ..................................................................
SQL> remark 刪除同義詞
SQL> drop synonym myemp;
Synonym dropped.
SQL> drop synonym pubemp;
drop synonym pubemp
*
ERROR at line 1:
ORA-01434: private synonym to be dropped does not exist
SQL> spool off;
SQL> remark 同義詞的分類:公有同義詞 私有同義詞
SQL> remark 公有同義詞:所有的物件都可以進行訪問
SQL> remark 私有同義詞:只有建立者能訪問;
SQL> remark 建立同義詞的許可權:create any synonym drop any synonym;
SQL> remark 建立一個表空間
SQL> create tablespace HOPESPACE
2 datafile 'd:\hopespace.dbf'
3 size 30m
4 autoextend on;
Tablespace created.
SQL> remark 建立一個使用者 hope
SQL> create user hope
2 identified by hope123
3 default tablespace hopespace
4 temporary tablespace temp;
User created.
SQL> remark 給新建的使用者進行系統許可權授權
SQL> grant connect to hope;
Grant succeeded.
SQL> grant resource to hope;
Grant succeeded.
SQL> remark 現在:新建的使用者作業系統預設(預設)使用者scott;
SQL> remark 系統給使用者授予建立和刪除同義詞的許可權
SQL> grant create any synonym to hope;
Grant succeeded.
SQL> grant drop any synonym to hope;
Grant succeeded.
SQL> remark 連線scott 使用者 ,]
SQL> conn scott/tiger;
Connected.
SQL> remark scott 使用者給hope使用者授予emp表的使用許可權
SQL> grant all on emp to hope;
Grant succeeded.
SQL> remark 連線hope賬戶,並建立同義詞
SQL> conn hope/hope123;
Connected.
SQL> create synonym myemp for scott.emp;
Synonym created.
SQL> remark 通過同義詞查詢表的資訊
SQL> select empno,job,sal from myemp;
EMPNO JOB SAL
---------- --------- ----------
7369 CLERK 800
7499 SALESMAN 1600
7521 SALESMAN 1250
7566 MANAGER 2975
7654 SALESMAN 1250
7698 MANAGER 2850
7782 MANAGER 2450
7788 ANALYST 3000
7839 PRESIDENT 5000
7844 SALESMAN 1500
7876 CLERK 1100
EMPNO JOB SAL
---------- --------- ----------
7900 CLERK 950
7902 ANALYST 3000
7934 CLERK 1300
14 rows selected.
SQL> remark 注:使用者在使用同義詞物件的時候,對同義詞操作的許可權等同於所依賴的物件的許可權;即:使用同義詞是,依賴的物件必須是授權過的;
SQL> remark ..............公有同義詞.........................
SQL> remark 許可權:create public synonym drop public synonym
SQL> remark 建立公有同義詞的使用者必須擁有上面的兩個許可權
SQL> remark 其他的使用者操作同義詞的時候要依賴同義詞所關聯的物件;
SQL> remark 給hope 使用者授予建立公有同義詞的許可權
SQL> conn system/manager;
Connected.
SQL> grant create public synonym to hope;
Grant succeeded.
SQL> grant drop public synonym to hope;
Grant succeeded.
SQL> reamrk 登陸hope使用者,並建立公有同義詞
SP2-0734: unknown command beginning "reamrk 登..." - rest of line ignored.
SQL> edit
Wrote file afiedt.buf
1* grant drop public synonym to hope
SQL> remark 登陸hope使用者,並建立公有同義詞
SQL> conn hope/hope123;
Connected.
SQL> create public synonym pubemp for scott.emp;
Synonym created.
SQL> remark 另外建立一個使用者,並使用這個公有同義詞
SQL> conn system/manager;
Connected.
SQL>
1 create user hope1
2* identified by hope1123
3 /
User created.
SQL> remark 給新建的使用者授予系統許可權
SQL> grant connect to hope1;
Grant succeeded.
SQL> grant resource to hope1;
Grant succeeded.
SQL> remark 連線hope1使用者使用公有同義詞
SQL> conn hope1/hope1123;
Connected.
SQL> remark 由於scott並沒有授權給hope1這個使用者相關物件的許可權,所有hope1並不能使用該公有同義詞
SQL> remark 給hope1進行授權
SQL> conn scott/tiger;
Connected.
SQL> grant all on emp to hope1;
Grant succeeded.
SQL> conn hope1/hope1123;
Connected.
SQL> select empno,ename,sal from pubemp;
SQL> remark 連線hope使用者進行使用公有同義詞
SQL> conn hope/hope123;
Connected.
SQL> select empno,ename from pubemp;
SQL> remark ..................................................................
SQL> remark ..................................................................
SQL> remark 建立公有同義詞
SQL> create public synonym pubemp for scott.emp;
create public synonym pubemp for scott.emp
*
ERROR at line 1:
ORA-00955: name is already used by an existing object
SQL> remark ..................................................................
SQL> remark 刪除同義詞
SQL> drop synonym myemp;
Synonym dropped.
SQL> drop synonym pubemp;
drop synonym pubemp
*
ERROR at line 1:
ORA-01434: private synonym to be dropped does not exist
SQL> spool off;