PL-SQL筆記1_OracleOracle Database 21c Express Edition下載安裝筆記

 

免費的甲骨文資料庫Oracle Database





















在Oracle 21c版本中,由於安全原因,已不再默認安裝Scott帳號和演示資料庫

範例資料庫

在 Oracle 中,Schema 與Database之間
每個 Schema 都屬於一個特定的數據庫,而每個數據庫可以包含多個 Schema。

一個數據庫是由多個 Schema 構成的,而每個 Schema 可以包含多個數據庫對象(如表格、視圖、索引等)。當用戶在數據庫中創建對象時,這些對象會被分配到特定的 Schema 中,用戶可以對這些對象進行管理和控制。

Schema 是一個邏輯上獨立的數據庫對象集合,由一個用戶(或多個用戶)擁有。每個Schema可以包含表格、視圖、索引、序列、函數、程序等對象。透過Schema的概念,Oracle 可以將數據庫對象的管理和控制權限進行分離,實現多個用戶對同一個數據庫實例進行管理。

使用Schema的好處是,可以讓不同用戶在同一數據庫中擁有自己的對象集合,以及管理和控制這些對象的權限。在Oracle中,一個用戶可以擁有多個Schema,也可以共享一個Schema。當用戶創建數據庫對象時,Oracle會自動將這些對象分配到對應的Schema中,並為這些對象設置相應的權限和屬性。



練習產生新的schema
有可能會出錯 這是12c以後版本的特徵
ORA-65096: 無效的通用使用者或角色名稱


Create user SCOTT identified by tiger; GRANT CONNECT, RESOURCE TO SCOTT;



登到SCOTT帳號中並建立table相關約束、測試資料
connect SCOTT/tiger
show user;



CREATE TABLE DEPT (DEPTNO NUMBER(2) CONSTRAINT PK_DEPT PRIMARY KEY, DNAME VARCHAR2(14) , LOC VARCHAR2(13) ) ; CREATE TABLE EMP (EMPNO NUMBER(4) CONSTRAINT PK_EMP PRIMARY KEY, ENAME VARCHAR2(10), JOB VARCHAR2(9), MGR NUMBER(4), HIREDATE DATE, SAL NUMBER(7,2), COMM NUMBER(7,2), DEPTNO NUMBER(2) CONSTRAINT FK_DEPTNO REFERENCES DEPT); INSERT INTO DEPT VALUES (10,'ACCOUNTING','NEW YORK'); -------------------------------------------------------------- CREATE TABLE BONUS ( ENAME VARCHAR2(10) , JOB VARCHAR2(9) , SAL NUMBER, COMM NUMBER ) ; CREATE TABLE SALGRADE ( GRADE NUMBER, LOSAL NUMBER, HISAL NUMBER ); -------------------------------------------------------------- INSERT INTO DEPT VALUES (20,'RESEARCH','DALLAS'); INSERT INTO DEPT VALUES (30,'SALES','CHICAGO'); INSERT INTO DEPT VALUES (40,'OPERATIONS','BOSTON'); INSERT INTO EMP VALUES (7369,'SMITH','CLERK',7902,to_date('17-12-1980','dd-mm-yyyy'),800,NULL,20); INSERT INTO EMP VALUES (7499,'ALLEN','SALESMAN',7698,to_date('20-2-1981','dd-mm-yyyy'),1600,300,30); INSERT INTO EMP VALUES (7521,'WARD','SALESMAN',7698,to_date('22-2-1981','dd-mm-yyyy'),1250,500,30); INSERT INTO EMP VALUES (7566,'JONES','MANAGER',7839,to_date('2-4-1981','dd-mm-yyyy'),2975,NULL,20); INSERT INTO EMP VALUES (7654,'MARTIN','SALESMAN',7698,to_date('28-9-1981','dd-mm-yyyy'),1250,1400,30); INSERT INTO EMP VALUES (7698,'BLAKE','MANAGER',7839,to_date('1-5-1981','dd-mm-yyyy'),2850,NULL,30); INSERT INTO EMP VALUES (7782,'CLARK','MANAGER',7839,to_date('9-6-1981','dd-mm-yyyy'),2450,NULL,10); INSERT INTO EMP VALUES (7788,'SCOTT','ANALYST',7566,to_date('13-JUL-87','dd-mm-rr')-85,3000,NULL,20); INSERT INTO EMP VALUES (7839,'KING','PRESIDENT',NULL,to_date('17-11-1981','dd-mm-yyyy'),5000,NULL,10); INSERT INTO EMP VALUES (7844,'TURNER','SALESMAN',7698,to_date('8-9-1981','dd-mm-yyyy'),1500,0,30); INSERT INTO EMP VALUES (7876,'ADAMS','CLERK',7788,to_date('13-JUL-87', 'dd-mm-rr')-51,1100,NULL,20); INSERT INTO EMP VALUES (7900,'JAMES','CLERK',7698,to_date('3-12-1981','dd-mm-yyyy'),950,NULL,30); INSERT INTO EMP VALUES (7902,'FORD','ANALYST',7566,to_date('3-12-1981','dd-mm-yyyy'),3000,NULL,20); INSERT INTO EMP VALUES (7934,'MILLER','CLERK',7782,to_date('23-1-1982','dd-mm-yyyy'),1300,NULL,10); -------------------------------------------------------------- INSERT INTO SALGRADE VALUES (1,700,1200); INSERT INTO SALGRADE VALUES (2,1201,1400); INSERT INTO SALGRADE VALUES (3,1401,2000); INSERT INTO SALGRADE VALUES (4,2001,3000); INSERT INTO SALGRADE VALUES (5,3001,9999); --------- COMMIT;





在塞入測資時候可能會出現
ORA-01950: 沒有表格空間 'USERS' 的權限
ORA-01950: no privileges on tablespace 'XXXXX'

可針對修改表空間給予相應權限:alter user username quota umlimited on  tablespacename;
或者 grant resource to username 也可以
因為grant resource to username 時自動獲得了有unlimited tablespace 的系統權限

遵循最小權限原則
用第一種方式
要先在切到最高權限帳號去
alter user SCOTT quota unlimited on “USERS”;

那table 結構都產生只是目前都沒有成功insert半筆再補執行即可。

或是把全部table drop 再重新跑整個script

全部要drop的table可以跑
SELECT 'DROP TABLE "' || TABLE_NAME || '" CASCADE CONSTRAINTS;' FROM user_tables;
那這句可以盤出要執行共有哪些才刪除的乾淨







error: ORA-65096: invalid common user or role name in Oracle database

ORA-65096: 公用用戶名或角色名無效


Drop all tables in Oracle DB (scheme)


留言

這個網誌中的熱門文章

何謂淨重(Net Weight)、皮重(Tare Weight)與毛重(Gross Weight)

Architecture(架構) 和 Framework(框架) 有何不同?_軟體設計前的事前規劃的藍圖概念

(2021年度)駕訓學科筆試準備題庫歸納分析_法規是非題