1. 程式人生 > >oracle數據庫簡單操作

oracle數據庫簡單操作

har 建表 open radmin 數據庫服務 安裝 系統 document 名稱

導入某用戶所有表和數據:
imp [email protected]:1521/orcl file=sgp20161025.dmp full=y

導出指定表及數據:
exp [email protected]:1521/orcl file=20160921sgp_table_sysmodule_sysdict.dmp tables=(sgp_sysmodule, sgp_sysdict)

導入指定表及數據:
imp [email protected]:1521/orcl file=20160921sgp_table_sysmodule_sysdict.dmp tables=(sgp_sysmodule, sgp_sysdict)

Linux環境下(已安裝好oracle數據庫和客戶端):

#登陸linux服務器,切換到oracle用戶下
su - oracle

#不在cmd或者terminal當中暴露密碼的登陸方式
sqlplus /nolog

#以操作系統權限認證的oracle sys管理員登陸
SQL>connect [email protected] as sysdba

#創建表空間(ASM模式)
SQL>
create tablespace geodata(表空間名) datafile ‘+data‘ size 500m AUTOEXTEND ON next 64m maxsize unlimited;
Tablespace created.

#創建用戶,並指定表空間
SQL> create user geouser(用戶名) identified by geouseradmin(密碼) default tablespace geodata(表空間名);
User created.

#給用戶授予權限
SQL> grant connect,resource,dba(Oracle最大權限) to geouser(用戶名);
Grant succeeded.

ALTER USER username ACCOUNT UNLOCK;

獲取表的列信息
select * from user_tab_columns where table_name = ‘CMS_T_VIEW_RECORD‘

#查看當前用戶的缺省表空間
SQL>select username,default_tablespace from user_users;

#查看已建好的表空間
SQL> select file_name,tablespace_name from dba_data_files;

#查看當前用戶的表空間和有哪些表
SQL> select table_name,tablespace_name from user_tables;

#查看某個表空間下有哪些表
SQL> select * from all_tables where tablespace_name=‘sde‘;

#表空間的數據文件屬性改為自動擴展
SQL> alter tablespace system autoextend on;

#查看當前連接的數據庫IP地址
SQL> select utl_inaddr.get_host_address from dual;

#查看當前數據庫
SQL> select name from V$DATABASE;

#查看數據庫實例名稱
select instance_name from v$instance;

#查看表結構
SQL> describe oper_data(表名);

/*** 查看表中數據 ***/
SQL> select * from oper_data;

/*** 查看當前登錄的用戶名 ***/
SQL> select user from dual;

/*** 查看當前用戶擁有的角色和權限 ***/
SQL> select * from user_role_privs;
SQL> select * from session_privs;

/*** 查看所有的默認表空間 ***/
select tablespace_name from dba_tablespaces;

/*** 查看指定用戶的默認表空間 ***/
select default_tablespace.username from dba_users;

/*** 重命名表空間名稱 ***/
alter tablespace oldname rename to newname;

/*** 修改表空間的讀寫狀態 ***/
alter tablespace tablespace_name read {only|write};

/*** 設置表空間的可用狀態 ***/
alter tablespace tablespace_name { online|offline[normal|temporary|immediate];

/*** 創建大文件表空間 ***/
CREATE BIGFILE TABLESPACE tablespacename DATAFILE filename SIZE size;

/*** 刪除表空間 ***/
drop tablespace tablespace_name [include contents] [cascade constrain
ts];

/***************************************

su - oracle
sqlplus /nolog
SQL> connect geouser/geouseradmin

PROFILE是Oracle中的概要文件,在PROFILE中主要存放的就是數據庫中的系統資源或者
數據庫使用限制的一些內容。

1.查看所有用戶名:
select username from dba_users;
select * from all_users;
select * from user_users;

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

3.查看角色(只能查看登陸用戶擁有的角色)所包含的權限
sql>select * from role_sys_privs;

4.查看用戶對象權限:
select * from dba_tab_privs;
select * from all_tab_privs;
select * from user_tab_privs; //返回當前用戶所有的對象權限

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

6.查看用戶或角色所擁有的角色:
select * from dba_role_privs;
select * from user_role_privs;

7.查看哪些用戶有sysdba或sysoper系統權限(查詢時需要相應權限)
select * from V$PWFILE_USERS

8、把某個表mytab的所有權限都賦予給用戶test:
grant all on mytab to test;
撤銷所有權限
revoke all on mytab to test;

9、對象權限可以控制到列(查詢和刪除不能控制到列)
grant update(name) on mytab to test;
grant insert(id) on mytab to test;

10、刪除審計表
TRUNCATE TABLE SYS.AUD$;


window環境DOS下:

給用戶sys增加導入導出數據的權限:
grant EXP_FULL_DATABASE, IMP_FULL_DATABASE TO SDE;

導出操作
1、將數據庫用戶名sys 密碼 *** 用戶空間所有表和數據導出
exp username/userpassword file=份文件路徑及文件名 owner=username

2、將數據庫中sde用戶的表導出
exp \"[email protected] as sysdba\" file=f:\備份\export.dump owner=sde

3、將數據庫中的表 SYS.AUD$ 導出
exp \"[email protected] as sysdba\" file=f:\備份\export.dump tables=(table1,table2)

4、導出審計表
exp [email protected] file=exp.dmp tables=SYS.AUD$

導入操作:
1、將f:\備份\export.dump中的數據導入到NMGDB2中
imp \"[email protected] as sysdba\" file=f:\備份\export.dump

2、將f:\備份\export.dump中的表tableA導入(先刪除原表)
imp \"[email protected] as sysdba\" file=f:\備份\export.dump tables=(table1,table2)


window環境下(已經安裝好oracle數據庫和客戶端):

1:首先運行SQLPLUS

C:\Documents and Settings\Administrator>sqlplus /nolog(運行cmd後可直接運行SQLPLUS)

SQL*Plus: Release 10.1.0.2.0 - Production on 星期一 9月 3 15:15:27 2007

Copyright (c) 1982, 2004, Oracle. All rights reserved.

2:以sysdba的權限連接數據庫

SQL> connect /as sysdba;

3:創建表空間

SQL> create tablespace cms datafile ‘G:\Oracle\Administrator\oradata\orcl\sgp.dbf‘ size 256m uniform size 128k;

表空間名為cms,數據庫文件目錄D:\oracle\10.1.0\oradata\orcl\cms.dbf

4:把表空間改為自動擴展存儲空間大小

SQL> alter database datafile ‘G:\Oracle\Administrator\oradata\orcl\sgp.dbf‘ autoextend on;


5:創建用戶

SQL> create user cms identified by cms default tablespace cms;

註:用戶名cms 密碼cms 默認表空間cms;


6:為用戶授權

SQL> grant connect ,resource,dba to cms;

把連接管理以dba的權限授權給cms;

1.查看用戶與用戶對應的標空間
select username,default_tablespace from dba_users;

2.查看表空間與數據文件的對應關系
select t1.name,t2.name from v$tablespace t1, v$datafile t2 where t1.ts#=t2.ts#;


該數據庫導出文件的編碼類型為GBK,可能會與導入的數據庫編碼類型不一致,從而產生亂碼。

亂碼解決辦法如下:
修改數據庫字符集為:ZHS16GBK
查看服務器端字符集
SQL > select * from V$NLS_PARAMETERS; NLS_CHARACTERSET ZHS16GBK
修改:
$sqlplus /nolog
SQL>conn /as sysdba
若此時數據庫服務器已啟動,則先執行 SHUTDOWN IMMEDIATE 命令關閉數據庫服務器,然後執行以下命令:
數據庫關閉: SQL>shutdown immediate;
SQL>STARTUP MOUNT;
SQL>ALTER SYSTEM ENABLE RESTRICTED SESSION;
SQL>ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;
SQL>ALTER SYSTEM SET AQ_TM_PROCESSES=0;
SQL>ALTER DATABASE OPEN;
SQL>ALTER DATABASE character set INTERNAL_USE zhs16gbk;
數據庫啟動:SQL> startup


11g oracle導出表時會默認不導出數據為空
1、Oracle11g默認對空表不分配segment,故使用exp導出Oracle11g數據庫時,空表不會導出。
2、設置deferred_segment_creation 參數為FALSE後,無論是空表還是非空表,都分配segment。
SQL>show parameter deferred_segment_creation;
SQL>alter system set deferred_segment_creation=false;


/**************************************************
獲取當前時間
select to_char(sysdate,‘yyyy-mm-dd hh24:mi:ss‘) from dual


導出表和數據(包括空表)方法:
SQL> connect sgp/sgp
SQL> set echo off
SQL> set feedback off
SQL> set pagesize 0
SQL> set linesize 9000
SQL> set tab off
SQL> spool sgp_deal_tablenull_107.sql
SQL> select ‘alter table ‘||table_name||‘ allocate extent;‘ from user_tables where num_rows=0;
SQL> spool off

執行完以後,你會得到一個文件:sgp_deal_tablenull_107.sql,
把這個文件裏面的非sql語句刪掉,只保留alter table的那些sql,
然後執行一下這些sql
執行完後再導出:exp sgp/sgp file=文件名 owner=sgp


導入數據(不附帶創建表和表空間限制,前提條件是表名稱一致)
imp [email protected]:1521/orcl file=sgp99dept.dmp tables=scm_dept ignore=y


--將以下sql語句查詢結果導出,即可隨時進行註釋的恢復與刪除
--查詢(導出)表註釋
select ‘comment on table ‘||t.table_name||‘ is ‘‘‘||t.comments||‘‘‘;‘ from user_tab_comments t;

--查詢(導出)列註釋
select ‘comment on column ‘||c.table_name||‘.‘||c.column_name||‘ is ‘‘‘||c.comments||‘‘‘;‘ from user_col_comments c;
----------------------------------------------------------------------------------

--刪除表註釋
1、select ‘comment on table ‘||t.table_name||‘ is ‘‘‘‘;‘ from user_tab_comments t; 獲取表註釋結果
2、導出到cvs文件中,使用execl打開,拷貝到plsql中執行即可刪除

--刪除列註釋
1、select ‘comment on column ‘||c.table_name||‘.‘||c.column_name||‘ is ‘‘‘‘;‘ from user_col_comments c; 獲取表註釋結果
2、導出到cvs文件中,使用execl打開,拷貝到plsql中執行即可刪除

oracle數據庫簡單操作