一、Oracle命令總結(jié)
1.查看囤采、編輯環(huán)境變量?
?cat /etc/profile ????vi /etc/profile
2.環(huán)境變量生效
?source /etc/profile
3.修改目錄文件的擁有者和用戶組
chown oracle filename
chgrp oinstall filename
chown -R tongfang ./*
chgrp -R tongfang ./*
4.查看dmp文件字符集
Oracle中IMP導入數(shù)據(jù)時提示字符集不一致解決
https://www.linuxidc.com/Linux/2018-01/150043.htm
?cat '/root/db-1219.dmp' |od -x|head -1|awk '{print $2 $3}'|cut -c 3-6
0345對應的是ZHS16GBK,如果是0369惩淳,則對應字符集為AL32UTF8
SQL> select nls_charset_name(to_number('0354','xxxx')) from dual;
5.查看服務器端字符集
SQL > select * from V$NLS_PARAMETERS;
6.修改數(shù)據(jù)庫字符集為:ZHS16GBK
$sqlplus /nolog
SQL>conn / as sysdba
若此時數(shù)據(jù)庫服務器已啟動蕉毯,則先執(zhí)行?SHUTDOWN IMMEDIATE 命
令關閉數(shù)據(jù)庫服務器,然后執(zhí)行以下命令:
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 ZHS16GBK
若出現(xiàn)超集上面語句無法修改思犁,需使用INTERNAL_USE可以跳過超集的檢查:
SQL>ALTER DATABASE CHARACTER SET INTERNAL_USE ZHS16GBK;
ERROR at line 1:
ORA-12721: operation cannot execute when other sessions are active
若報以上錯誤則:select sid,serial#,username,machine from v$session;查看有哪些SESSION代虾,然后
alter system kill session 'sid'serial#' immediate;然后
alter system kill session '158,7' immediate;如這樣
SQL>ALTER DATABASE CHARACTER SET INTERNAL_USE ZHS16GBK;
SQL>SHUTDOWN IMMEDIATE
SQL>STARTUP
7. 刪除表空間和用戶
drop tablespace DW_TRAFFIC_TBS including contents and datafiles;
drop user DW_TRAFFIC cascade;
drop tablespace TOPEP including contents and datafiles;
8.創(chuàng)建表空間與用戶
Create tablespace DW_TRAFFIC_TBS datafile '/u01/app/oracle/oradata/orcl/DW_TRAFFIC_TBS.dbf' size 500m ?autoextend on;
Create tablespace TOPEP datafile '/home/hongdian/tools/oracle11g/oradata/TOPEP.dbf' size 500m autoextend on;
create user DW_TRAFFIC identified by DW_TRAFFIC default tablespace DW_TRAFFIC_TBS temporary tablespace temp;
9.給用戶授權
grant connect to DW_TRAFFIC; ???????
grant resource to DW_TRAFFIC;
grant dba to DW_TRAFFIC; ??????
10. 創(chuàng)建邏輯目錄
--創(chuàng)建還原目錄(單引號里面的內(nèi)容是導入的目錄,與前面創(chuàng)建的目錄相同)
create or replace directory DATA_PUMP_DIR as '/u01/app/oracle/oradata/orcl';
create or replace directory DATA as '/home/hongdian/tools/oracle11g/oradata';
11.給目標用戶授權
grant read,write on directory DATA_PUMP_DIR to DW_TRAFFIC;
grant read,write on directory DATA to TOPEP;
12.導出備份文件
通過數(shù)據(jù)泵expdp激蹲、impdp方式備份與還原(導出與導入)Oracle數(shù)據(jù)庫
https://blog.csdn.net/qq_26230421/article/details/79382013
expdp DW_TRAFFIC/DW_TRAFFIC DIRECTORY=DATA_PUMP_DIR SCHEMAS=DW_TRAFFIC dumpfile=DW_TRAFFIC20200116.dump
--導出dmp文件路徑:/home/hongdian/tools/oracle11g/admin/orcl/dpdump/
/home/hongdian/tools/oracle11g/oradata
exp system/oracle@orcl ?file=/hongdian/db-back/db-1219.dmp full=y ignore=y
13.導入備份文件
cp?DW_TRAFFIC20200116.dump?/u01/app/oracle/oradata/orcl
impdp DW_TRAFFIC/DW_TRAFFIC@orcl directory=DATA_PUMP_DIR dumpfile= DW_TRAFFIC20200116.dump
imp DW_TRAFFIC/DW_TRAFFIC@orcl file=/root/DW_TRAFFIC_1224.dmp full=y ignore=y
cp TOPEP20200114_15.dump /home/hongdian/tools/oracle11g/oradata/
impdp DW_TRAFFIC/DW_TRAFFIC@orcl directory=DATA dumpfile= TOPEP20200114_15.dump
14.有很多種方法可以查出oracle server端的字符集棉磨,
比較直觀的查詢方法是以下這種:SQL>select userenv(‘language’) from dual;
結(jié)果類似如下:AMERICAN _ AMERICA. ZHS16GBK
15.查詢oracle client端的字符集
在unix平臺下,就是環(huán)境變量NLS_LANG学辱。
$echo $NLS_LANG
AMERICAN_AMERICA.ZHS16GBK
如果檢查的結(jié)果發(fā)現(xiàn)server端與client端字符集不一致乘瓤,請統(tǒng)一修改為同server端相同的字符集。
16.查看ORACLE版本
select * from v$version;
17. 查詢所有用戶
select * from dba_users;
18.查看所有用戶所在表空間
select username,default_tablespace from dba_users;
19.查詢所有表空間路徑
select * from dba_data_files;
20.查詢表空間的名稱及大胁咂(原樣復制衙傀,不要改)
SELECT t.tablespace_name, round(SUM(bytes / (1024 * 1024)), 0) ts_size
FROM dba_tablespaces t, dba_data_files d
WHERE t.tablespace_name = d.tablespace_name
GROUP BY t.tablespace_name;
21.查看表空間物理文件的名稱及大小(原樣復制萨咕,不要改)
SELECT tablespace_name,file_id,file_name,
round(bytes / (1024 * 1024), 0) total_space
FROM dba_data_files ORDER BY tablespace_name;
22.創(chuàng)建臨時表空間
create temporary tablespace TRAFFIC_ONE_TEMP tempfile '/home/lukz/oracle11g/oradata/orcl/TRAFFIC_ONE_TEMP.dbf' size 50M autoextend ON next 10M maxsize 100M;
23.分配表空間和臨時表空間
alter user DW_TRAFFIC_01 default tablespace TRAFFIC_ONE temporary tablespace TRAFFIC_ONE_TEMP;
24.給用戶分配權限
grant create session,create table,create view,create sequence,unlimited tablespace to DW_TRAFFIC_01;
25. 表空間重命名
alter tablespace GPSPACE rename to GPMGT_DATA;
Tablespace altered
26.查詢表格字段和注釋
SELECT
A.COLUMN_NAME,
A.DATA_TYPE,
B.comments
FROM
user_tab_columns A INNER JOIN user_col_comments B ON A.TABLE_NAME = B.table_name
AND A.COLUMN_NAME = B.column_name
WHERE
A.TABLE_NAME = 'SYS_USER'
ORDER BY
A.column_id
27.ORA-01940 無法刪除當前已連接的用戶之解決方案
在執(zhí)行drop user的時候统抬,提示報錯信息:ORA-01940: cannot drop a user that is currently connected
SQL> drop user ecity ;
ERROR at line 1:
ORA-01940: cannot drop a user that is currently connected
造成這個問題的原因是很明顯的,有用戶在連接危队,不允許drop掉該user蓄喇。
解決方案:
首先查詢一下數(shù)據(jù)中有沒有用戶在使用
select username,sid,serial#,paddr from v$session where username='ECITY';
USERNAME ???????????????????????????????????SID ???SERIAL# PADDR
------------------------------ ---------- -------------------------------------------------
ECITY ??????????????????????????????????????634 ???????7 ??00000000C028D198
SQL> select PROGRAM from v$process where addr='00000000C028D198';
PROGRAM
----------------------------------------------------------------------------------------------------------
Oracle@oradb01 (DW00)
其次殺掉系統(tǒng)中的這個進程
SQL> alter system kill session '634,7';
System altered.
然后執(zhí)行刪除操作,即可完成
SQL> select saddr,sid,serial#,paddr,username,status from v$session where username is not null;
SQL> drop user ecity CASCADE;
User dropped.
28.sqlplus連接遠程數(shù)據(jù)庫
簡易連接交掏,不用進行網(wǎng)絡配置,其實就是tnsname.ora文件,但只支持oracle10G以上刃鳄。命令:sqlplus 用戶名/密碼@ip地址[:端口]/service_name [as sysdba]示例:sqlplussys/pwd@ip:1521/test?as sysdba?備注:使用默認1521端口時可省略輸入
29.重啟Oracle數(shù)據(jù)庫
1.先執(zhí)行sqlplus /nolog
2. 再執(zhí)行 conn sys / as sysdba(口令是你登錄數(shù)據(jù)庫時輸入的密碼)
3. 再執(zhí)行 shutdown immediate
4.最后執(zhí)行startup
30.centos7.4防火墻
1.查看防火墻狀態(tài)sudo systemctl status firewalld
2.關閉防火墻sudo systemctl stop firewalld
3.打開防火墻sudo systemctl start firewalld