以系統管理者登入,指令:#首先需要
sqlplus / as sysdba
進入到oracle使用者下
su - oracle
一、分為四步
/第1步:建立臨時表空間 /
create temporary tablespace User_Temp tempfile '/u01/app/oracle/oradata/orcl/user_temp.dbf' size 200m autoextend on next 100m maxsize 20480m extent management local;
注:此步建立的是臨時表空間,可以多個資料公用一個臨時表空間,注意建立的大小即可,名稱随意。
/第2步:建立資料表空間 /
create tablespace User_Data logging datafile '/u01/app/oracle/oradata/orcl/user_data.dbf' size 200m autoextend on next 100m maxsize 20480m extent management local;
注:此步注意資料表空間的名稱最好與導出的備份檔案所用的表空間名稱一緻,不一緻容易報錯!
用UltraEdit打開dmp檔案切換16進制編輯,搜尋tablespace可以檢視備份檔案的表空間名稱。
/第3步:建立使用者并指定表空間/
create user User_Name identified by "Passwd" default tablespace user_data temporary tablespace user_temp;
注:使用者名最好與導出的備份檔案的資料庫名保持一緻!
/第4步:給使用者授予權限 /
grant connect,resource,dba to User_Name;
二、其他:
/修改使用者密碼 /
alter user [username] identified by [password];
/删除使用者 /
drop user User_Name cascade;
/删除表空間 /
DROP TABLESPACE 表空間名 INCLUDING CONTENTS AND DATAFILES;
/清空某張表/
TRUNCATE TABLE tableName
**tableName是要清空表的表名**
/清空目前使用者下所有的表和資料的方法 /
使用場景:覆寫一個已存在的庫,并且裡邊有資料,這時直接導入備份檔案會報錯,隻能清空裡邊原有表和資料之後再導入;當然你也可以建立一個其他庫來導入。
$ su - oracle #切換到Oracle使用者
$ sqlplus / as sysdba #登入資料庫控制台
SQL>select 'Drop table '||table_name||';' from all_tables where owner='User_Name';
注:`User_Name`英文一定要大寫;将會輸出一批删除表的sql語句,這些SQL語句執行一下就可以了(需要有drop table的權限)
建議使用sqldeveloper圖形化用戶端連接配接Oracle資料庫執行删除語句。
三、資料庫導入、導出
兩種方式:exp/imp方式、資料庫泵expdp/impdp方式,推薦用資料泵的方式,支援大資料量。
1、資料泵expdp/impdp
1)前期準備,dumpdir目錄建立
以Linux系統為例
$ mkdir /home/oracle/dumpdir
#執行該指令之前,要首先在硬碟上建立'/home/oracle/dumpdir'資料庫導入、導出所對應的檔案夾
$ su - oracle #切換到Oracle使用者
$ sqlplus / as sysdba #登入資料庫控制台
SQL>create directory dumpdir as '/home/oracle/dumpdir'; #建立資料泵導入、導出目錄
SQL>select * from dba_directories; #檢視一下是否已存在該目錄
-------------------------------------------------------------------------------
SYS DUMPDIR
/home/oracle/dumpdir
SQL>grant read,write on directory dumpdir to dbname;
#授權給操作使用者這個dump目錄的權限【dbname是一個已經存在的資料庫使用者】
SQl>exit
2)expdp資料泵導出
expdp User_Name/[email protected] directory=dumpdir dumpfile=User_Name.bak.2016.1.1.dmp logfile=User_Name.bak.2016.1.1.log
注:幾個要點,使用者名密碼不用說,orcl是你配置的執行個體名;dumpdir是個變量,就是上邊那步建立的目錄,可以多個,名稱随意;
備份完檔案會存放在建立的/home/oracle/dumpdir目錄下。
3)impdp資料泵導入
impdp User_Name/[email protected] directory=dumpdir dumpfile=User_Name.bak.2016.1.1.dmp remap_schema=SOURCE_USER_Name:DEST_USER_Name
注:前幾個參數跟導出時一樣,導入需要把備份檔案放到dumpdir目錄下;多了一個remap_schema,
是填寫備份檔案的資料庫使用者名`SOURCE`和本機建立的資料庫使用者名`DEST`,這個在本機建立的使用者名不一樣的情況下需要用到。
如果一樣寫成一樣的就行了。
2)exp/imp方式
exp指令互動導出
$ su - oracle
$ exp #Windows下cmd也是輸入這個指令執行,下同。
1.使用者名:User_Name 回車
2.密碼:輸入此使用者名的密碼,回車;
3.輸入數組提取緩沖區大小:直接回車,選擇預設的4096;
4.導出檔案: EXPDAT.DMP > 填寫導出生成的備份檔案完整路徑、檔案名,注意相應路徑要已存在,且要有足夠空間,
如:C:\backup\User_Name_2016.dmp ,回車;
5.選擇導出方式:直接回車,選擇預設的按使用者方式導出;
6.導出權限:直接回車,選擇預設的yes;
7.導出表資料:直接回車,選擇預設的yes;
8.導出權限:直接回車,選擇預設的yes;
9.壓縮區:直接回車,選擇預設的yes;
10.要導出的使用者:輸入剛開始的使用者名确認,注:一定要輸入,不然沒有資料導出!
11.再次出現“要導出的使用者”:此時直接回車即可;
12.導出完成,其中提示:導出成功終止, 但出現警告;這種輸入是正常的,說明導出操作成功完成;
imp導入
imp User_Name/[email protected]:/orcl fromuser=User_Name touser=User_Name_New file=C:\backup\User_Name_2016.dmp commit=y ignore=y
Oracle密碼過期,取消密碼180天限制
1、進入sqlplus模式
sqlplus / as sysdba;
2、檢視使用者密碼的有效期設定(一般預設的配置檔案是DEFAULT)
SELECT * FROM dba_profiles WHERE profile='DEFAULT' AND resource_name='PASSWORD_LIFE_TIME';
3、将密碼有效期由預設的180天修改成“無限制”,修改之後不需要重新開機動資料庫,會立即生效
ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED ;
4、帳戶再改一次密碼
alter user 使用者名 identified by 原密碼;
5、使用修改後的使用者登入,如果報“ORA-28000:使用者已被鎖”,解鎖
alter user db_user account unlock;
commit;