1. 程式人生 > >oracle資料庫表空間,使用者許可權,分割槽表建立基礎知識(一

oracle資料庫表空間,使用者許可權,分割槽表建立基礎知識(一

  • --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等組合,一般不常用