oracle資料庫表空間,使用者許可權,分割槽表建立基礎知識(一
阿新 • • 發佈:2018-12-18
- --sys管理員使用者登入 conn sys/222818 as sysdba alter user Libaobao account lock;--解鎖新建使用者 alter user Libaobao account unlock;
- --鎖定新建使用者
- --刪除該新建使用者
- drop user Libaobao cascade;
- --在刪除使用者前必須回收許可權,才能進行相關使用者的刪除,且必須斷開連線
- revoke connect from Libaobao;
- drop user Libaobao cascade;
- --檢視該資料庫中的所有表
- select table_name from all_tables;
- select * from dual;
- --當前使用者沒有該資料庫的建立,刪除,修改等許可權
- grant create table to Libaobao;
- --授予建立許可權後建立表成功
- create table TestT(id int,name varchar2(10));
- --在建立使用者後,如果建立了表,管理員使用者是不可見的
- conn sys/222818 @orcl as sysdba;
- grant connect,resource,dba to Libaobao;
- conn Libaobao/222818 @orcl;
- insert into Testt values(1001,'小明');
- select * from testt;
- --但是sys dba管理員使用者不能看到該Libaobao使用者下的資料表並進行相關操作。 create role libaobaorole1;
- --建立角色
- grant connect,resource,dba to libaobaorole1;
- grant libaobaorole1 to Libaobao;
- --刪除角色
- drop role libaobaorole1;
- --表空間管理 select tablespace_name from dba_tablespaces; select tablespace_name from user_tablespaces;
- --檢視使用者的表空間,相關資料字典:dba_tablespaces,user_tablespaces
- SQL> select tablespace_name from dba_tablespaces;
- TABLESPACE_NAME
- ------------------------------
- SYSTEM
- SYSAUX
- UNDOTBS1
- TEMP
- USERS
- EXAMPLE
- TABLESPACE_TEST1
- TABLESPACE_TEST2
- 8 rows selected
- SQL> select tablespace_name from user_tablespaces;
- TABLESPACE_NAME
- ------------------------------
- SYSTEM
- SYSAUX
- UNDOTBS1
- TEMP
- USERS
- EXAMPLE
- TABLESPACE_TEST1
- TABLESPACE_TEST2
- 8 rows selected
- --普通使用者沒有許可權檢視dba_tablespaces
- SQL> select default_tablespace,temporary_tablespace from dba_users where username='SYSTEM';
- --dba_users檢視資料庫所有使用者的使用者資訊,user_users用來檢視當前使用者的使用者資訊
- DEFAULT_TABLESPACE TEMPORARY_TABLESPACE
- ------------------------------ ------------------------------
- SYSTEM TEMP
- SQL> select username,default_tablespace,temporary_tablespace from dba_users;
- USERNAME DEFAULT_TABLESPACE TEMPORARY_TABLESPACE
- ------------------------------ ------------------------------ ------------------------------
- MGMT_VIEW SYSTEM TEMP
- SYS SYSTEM TEMP
- SYSTEM SYSTEM TEMP
- DBSNMP SYSAUX TEMP
- SYSMAN SYSAUX TEMP
- SCOTT USERS TEMP
- LIBAOBAO USERS TEMP
- OUTLN SYSTEM TEMP
- FLOWS_FILES SYSAUX TEMP
- MDSYS SYSAUX TEMP
- ORDSYS SYSAUX TEMP
- EXFSYS SYSAUX TEMP
- WMSYS SYSAUX TEMP
- APPQOSSYS SYSAUX TEMP
- APEX_030200 SYSAUX TEMP
- OWBSYS_AUDIT SYSAUX TEMP
- ORDDATA SYSAUX TEMP
- CTXSYS SYSAUX TEMP
- ANONYMOUS SYSAUX TEMP
- XDB SYSAUX TEMP
- USERNAME DEFAULT_TABLESPACE TEMPORARY_TABLESPACE
- ------------------------------ ------------------------------ ------------------------------
- ORDPLUGINS SYSAUX TEMP
- OWBSYS SYSAUX TEMP
- SI_INFORMTN_SCHEMA SYSAUX TEMP
- OLAPSYS SYSAUX TEMP
- ORACLE_OCM USERS TEMP
- XS$NULL USERS TEMP
- BI USERS TEMP
- PM USERS TEMP
- MDDATA USERS TEMP
- IX USERS TEMP
- SH USERS TEMP
- DIP USERS TEMP
- OE USERS TEMP
- APEX_PUBLIC_USER USERS TEMP
- HR USERS TEMP
- SPATIAL_CSW_ADMIN_USR USERS TEMP
- SPATIAL_WFS_ADMIN_USR USERS TEMP
- 37 rows selected
- SQL> select username,default_tablespace,temporary_tablespace from user_users;
- USERNAME DEFAULT_TABLESPACE TEMPORARY_TABLESPACE
- ------------------------------ ------------------------------ ------------------------------
- SYS SYSTEM TEMP
- --修改使用者的預設或臨時表空間,該表空間是我們在上面建立的
- alter user Libaobao default tablespace TABLESPACE_TEST1 temporary tablespace TABLESPACE_TEST2;
- --檢視是否修改成功
- select default_tablespace,temporary_tablespace from dba_users where username='LIBAOBAO';
- --修改表空間,修改表空間的狀態(聯機和離線狀態)
- alter tablespace TABLESPACE_TEST1 offline;--更改為離線狀態,將不可訪問
- alter tablespace TABLESPACE_TEST1 online;--聯機狀態
- --查看錶空間狀態
- select status from dba_tablespaces where tablespace_name='TABLESPACE_TEST1';
- SQL> select status from dba_tablespaces where tablespace_name='TABLESPACE_TEST1';
- STATUS
- ---------
- ONLINE
- ---------------------------------------------------------------------------------------------- alter tablespace TABLESPACE_TEST1 read only;--只讀狀態 alter tablespace TABLESPACE_TEST1 read write;--可讀寫狀態
- --修改表空間狀態2,只讀或可讀寫狀態,只讀狀態dba使用者都無法進行資料寫入,也無法修改資料
- --查看錶空間狀態
- select status from dba_tablespaces where tablespace_name='TABLESPACE_TEST1';
- --向表空間增加資料檔案
- alter tablespace TABLESPACE_TEST1 add datafile 'file1.dbf' size 10m;
- --查看錶空間資料檔案
- select file_name from dba_data_files where tablespace_name='TABLESPACE_TEST1';
- SQL> select file_name from dba_data_files where tablespace_name='TABLESPACE_TEST1';
- FILE_NAME
- --------------------------------------------------------------------------------
- D:\APP\18349\PRODUCT\11.2.0\DBHOME_1\DATABASE\FILE.DBF
- D:\APP\18349\PRODUCT\11.2.0\DBHOME_1\DATABASE\FILE1.DBF
- --刪除資料檔案(特別注意,我們不能刪除表空間中的第一個檔案,如果需要刪除的話,我們需要把整個表空間刪除掉)
- SQL> alter tablespace TABLESPACE_TEST1 drop datafile 'FILE1.DBF';
- Tablespace altered
- SQL> select file_name from dba_data_files where tablespace_name='TABLESPACE_TEST1';
- FILE_NAME
- --------------------------------------------------------------------------------
- D:\APP\18349\PRODUCT\11.2.0\DBHOME_1\DATABASE\FILE.DBF
- --刪除表空間
- drop tablespace TABLESPACE_TEST1;--只刪除表空間而不刪除資料檔案
- drop tablespace TABLESPACE_TEST1 including contents;--刪除表空間的同時刪除資料檔案
- --sql developer tools的使用
-
ORACLE表分割槽簡單示例
- /*--range分割槽--*/
- --主鍵和分割槽沒多大聯絡
- create table sale(
- public_id varchar(10),
- sail_count number(10,2)
- )partition by range(sail_count)(
- partition p1 values less than(1000),
- partition p2 values less than(2000),
- partition p3 values less than(3000)
- );
- --檢視所有表的分割槽情況
- select * from user_tab_partitions;
- select * from sale partition(p1);--查詢某一個分割槽
- --新增分割槽
- alter table sale add partition p4 values less than(4000);
- insert into sale values('l1001',3500);
- select * from sale partition(p4);
- --刪除分割槽
- alter table sale drop partition p3;
- --下面兩條sql語句聯合使用才能使得資料和分割槽得到修改
- alter table sale enable row movement;
- update sale set sail_count=100 where public_id='l1001';
- /*分割槽索引*/
- create index idx_count on sale(sail_count) local;
- select * from user_ind_partitions;--檢視分割槽索引
- --建立全域性字首索引
- create index idx_counts on sale(sail_count) global
- partition by range(sail_count)(
- partition p5 values less than(5000),
- partition p6 values less than(maxvalue)
- );
- --全域性索引
- create index idx_scount on sale(sail_count) global;--一般不建議建全域性索引,效能不會提高太多
- --hash分割槽--平均分資料,不能指定值大小--
- create table my_emp(
- emp_id varchar(10),
- emp_num number(10,2)
- )partition by hash(emp_num)(
- partition p1,
- partition p2
- );
- select * from user_tab_partitions;
- --List列表分割槽
- create table persistity(
- id varchar2(10),
- name varchar2(10),
- city varchar2(15)
- )partition by List(city)(
- partition east values('shanghai','shenzhen'),
- partition west values('xian')
- );
- select * from user_tab_partitions;
- select * from persistity partition(east);
- --複合分割槽range和hash range和list等組合,一般不常用
- /*--range分割槽--*/
- --主鍵和分割槽沒多大聯絡
- create table sale(
- public_id varchar(10),
- sail_count number(10,2)
- )partition by range(sail_count)(
- partition p1 values less than(1000),
- partition p2 values less than(2000),
- partition p3 values less than(3000)
- );
- --檢視所有表的分割槽情況
- select * from user_tab_partitions;
- select * from sale partition(p1);--查詢某一個分割槽
- --新增分割槽
- alter table sale add partition p4 values less than(4000);
- insert into sale values('l1001',3500);
- select * from sale partition(p4);
- --刪除分割槽
- alter table sale drop partition p3;
- --下面兩條sql語句聯合使用才能使得資料和分割槽得到修改
- alter table sale enable row movement;
- update sale set sail_count=100 where public_id='l1001';
- /*分割槽索引*/
- create index idx_count on sale(sail_count) local;
- select * from user_ind_partitions;--檢視分割槽索引
- --建立全域性字首索引
- create index idx_counts on sale(sail_count) global
- partition by range(sail_count)(
- partition p5 values less than(5000),
- partition p6 values less than(maxvalue)
- );
- --全域性索引
- create index idx_scount on sale(sail_count) global;--一般不建議建全域性索引,效能不會提高太多
- --hash分割槽--平均分資料,不能指定值大小--
- create table my_emp(
- emp_id varchar(10),
- emp_num number(10,2)
- )partition by hash(emp_num)(
- partition p1,
- partition p2
- );
- select * from user_tab_partitions;
- --List列表分割槽
- create table persistity(
- id varchar2(10),
- name varchar2(10),
- city varchar2(15)
- )partition by List(city)(
- partition east values('shanghai','shenzhen'),
- partition west values('xian')
- );
- select * from user_tab_partitions;
- select * from persistity partition(east);
- --複合分割槽range和hash range和list等組合,一般不常用