這種問題要回答好要求知識比較全面。
員工經(jīng)過長期磨合與沉淀,具備了協(xié)作精神,得以通過團隊的力量開發(fā)出優(yōu)質(zhì)的產(chǎn)品。成都創(chuàng)新互聯(lián)堅持“專注、創(chuàng)新、易用”的產(chǎn)品理念,因為“專注所以專業(yè)、創(chuàng)新互聯(lián)網(wǎng)站所以易用所以簡單”。公司專注于為企業(yè)提供做網(wǎng)站、網(wǎng)站制作、微信公眾號開發(fā)、電商網(wǎng)站開發(fā),小程序設(shè)計,軟件按需網(wǎng)站制作等一站式互聯(lián)網(wǎng)企業(yè)服務(wù)。
1 從操作系統(tǒng)層次上看
看CPU 內(nèi)存 swqp(交換分區(qū))等使用率
2 從磁盤上看
主要看磁盤讀寫??梢杂胐d測磁盤讀寫的速度 也可以在業(yè)務(wù)高峰期檢測磁盤的速率。
3 從數(shù)據(jù)庫本身來看。
先要看數(shù)據(jù)庫各個參數(shù)的值 。 如sga的大小,process的大小,redo日志的個數(shù)與大小等這些關(guān)系到性能的參數(shù)是否設(shè)置合理。
長期觀察的方式就是看各個時期的AWR報告。里面有各種性能指標,以及按執(zhí)行時間或資源排列的sql ,以及各種等待時間的排名。從這里面可以掌握數(shù)據(jù)庫的長期的性能變化。
即時觀察的方式就是利用各種sql 查詢 數(shù)據(jù)庫在當前時間的各個性能指標(AWR報告里面的各種指標也都是通過sql查詢出來的)
還有對數(shù)據(jù)庫整體的一個檢查:
如 表的大小,表是否需要分區(qū)而沒有分區(qū),索引是否創(chuàng)建,索引是否失效,開發(fā)人員寫的sql是否正確使用到了索引,頻繁使用的sql是否有綁定變量,有頻繁大批量增刪改的表是否存在高水位。。。
額 總之,這個話題涉及的知識非常多,盡可能多的學習一些東西,祝你好運。
1、檢查oracle監(jiān)聽服務(wù)運行狀態(tài),輸入lsnrctl status命令來查看,看到提示信息TNS:no listener,表示監(jiān)聽沒有啟動,
2、監(jiān)聽沒有啟動,則需要輸入lsnrctl start啟動監(jiān)聽服務(wù),當看到提示信息"The command completed successfully",則表示啟動成功,
數(shù)據(jù)庫健康檢查主要涉及以下四個方面:
系統(tǒng)和數(shù)據(jù)庫的可用性
系統(tǒng)和數(shù)據(jù)庫的完整性
系統(tǒng)、數(shù)據(jù)庫和應(yīng)用的性能
系統(tǒng)備份和恢復(fù)方案評估
根據(jù)用戶需求的不同,健康檢查服務(wù)可能包含以下內(nèi)容:
1.日志分析 檢查并分析系統(tǒng)日志及跟蹤文件,發(fā)現(xiàn)并排除數(shù)據(jù)庫系統(tǒng)錯誤隱患,正常的日志分析對于數(shù)據(jù)庫來說至關(guān)重要。
2.數(shù)據(jù)庫性能分析 通過收集信息對數(shù)據(jù)庫進行性能分析,得出數(shù)據(jù)庫的運行狀況報告,幫助用戶了解數(shù)據(jù)庫的健康狀況,為用戶的優(yōu)化、擴容、升級等工作提供有力的支撐。
3.空間檢測 檢查數(shù)據(jù)庫空間的使用情況,提供空間使用報告,為用戶合理規(guī)劃空間使用、充分利用資源提供建議。
4.檢查Oracle/Mysql等數(shù)據(jù)庫的結(jié)構(gòu)、初始化參數(shù)、主要配置文件
5.檢查系統(tǒng)和數(shù)據(jù)庫判斷是否需要應(yīng)用最新的補丁集
6.檢查數(shù)據(jù)庫備份的完整性等
健康檢查是數(shù)據(jù)庫穩(wěn)定運行的保障,業(yè)務(wù)系統(tǒng)都應(yīng)當進行例行的健康檢查工作。
1.create user username identified by password;//建用戶名和密碼oracle ,oracle
2.grant connect,resource,dba to username;//授權(quán) grant connect,resource,dba,sysdba to username;
3.connect username/password//進入。
4.select table_name,column_name from user_tab_columns where table_name='TABLE_NAME';//查詢表中的表名,字段名等等。 最后的table_name要大寫。
5. 如何執(zhí)行腳本SQL文件? SQL@PATH/filename.sql;
7.查詢用戶下的所有表 select distinct table_name from user_tab_columns; ===僅顯示一列表名。
8.如何搜索出前N條記錄?
select * from tablename where rownumn;--足矣。(--是注釋用的標記)
9.查找用戶下的所有表:select * from tab; --查詢該用戶下的所有表及視圖(顯示表名tname, 類型tabname和clusterid)
2、顯示當前連接用戶
SQL show user –不能用在sql窗口 只能用在command命令窗口。
3、查看系統(tǒng)擁有哪些用戶
SQL select * from all_users;
4、新建用戶并授權(quán)
SQL create user a identified by a;(默認建在SYSTEM表空間下)
SQL grant connect,resource to a;
5、連接到新用戶
SQL conn a/a –或者是connect a/a
6、查詢當前用戶下所有對象
SQL select * from tab; --table或是view
7、建立第一個表
SQL create table a(a number);
8、查詢表結(jié)構(gòu)
SQL desc a
9、插入新記錄
SQL insert into a values(1);
10、查詢記錄
SQL select * from a;
11、更改記錄
SQL update a set a=2;
12、刪除記錄
SQL delete from a;
13、回滾
SQL roll;
SQL rollback;
14、提交
SQL commit;
select * from
(select t.*,dense_rank() over (order by cardkind) rank from cardkind t)
where rank = 2;
46. 如何在字符串里加回車?
select 'Welcome to visit'||chr(10)||'' from dual ; --‘||chr(10)||’作為換行符
53. 如何使select語句使查詢結(jié)果自動生成序號?
select rownum COL from table; --主要就是oracle中引入了rownum
54. 如何知道數(shù)據(jù)褲中某個表所在的tablespace?
select tablespace_name from user_tables where table_name='TEST'; --table_name名稱要大寫。
select * from user_tables中有個字段TABLESPACE_NAME,(oracle);
select * from dba_segments where …;
55. 怎么可以快速做一個和原表一樣的備份表?
create table new_table as (select * from old_table);
59. 請問如何修改一張表的主鍵?
alter table aaa drop constraint aaa_key ;
alter table aaa add constraint aaa_key primary key(a1,b1) ;
60. 改變數(shù)據(jù)文件的大小?
用 ALTER DATABASE .... DATAFILE .... ;
手工改變數(shù)據(jù)文件的大小,對于原來的 數(shù)據(jù)文件有沒有損害。
61. 怎樣查看ORACLE中有哪些程序在運行之中?
查看v$session表
62. 怎么可以看到數(shù)據(jù)庫有多少個tablespace?
select * from dba_tablespaces;
@echo offcls
color 03
@echo ***********************************************************************
@echo * Oracle表空間使用查看 *
@echo ***********************************************************************
@echo.
set /p databasename=數(shù)據(jù)庫名:
set /p databaseusername=數(shù)據(jù)庫用戶名:
set /p databasepasswords=數(shù)據(jù)庫密碼:
set /p backupFilePath=結(jié)果文件存放路徑(相對或絕對路徑、可空):
@echo offcls
@echo ***********************************************************************
@echo * Oracle表空間使用查看 *
@echo ***********************************************************************
if exist %temp%\CheckTablespaces_Sobey.sql del /f /q %temp%\CheckTablespaces_Sobey.sql
if "%backupFilePath%"=="" set backupFilePath=AutoCreateLookTablespacesFolder
if not exist %backupFilePath% md %backupFilePath%
set dataFilePath=%backupFilePath%\%databasename%
if exist %dataFilePath%.sql set dataFilePath=%backupFilePath%\%databasename%%DATE:~0,4%%DATE:~5,2%%DATE:~8,2%%TIME:~0,2%%TIME:~3,2%%TIME:~6,2%
@echo spool %dataFilePath%.sql%temp%\CheckTablespaces_Sobey.sql
@echo set termout off%temp%\CheckTablespaces_Sobey.sql
@echo set linesize 200%temp%\CheckTablespaces_Sobey.sql
@echo set pagesize 200%temp%\CheckTablespaces_Sobey.sql
@echo SELECT UPPER(F.TABLESPACE_NAME) "表空間名",D.TOT_GROOTTE_MB "大小(MB)",D.TOT_GROOTTE_MB - F.TOTAL_BYTES "已使用",TO_CHAR(ROUND((D.TOT_GROOTTE_MB - F.TOTAL_BYTES) / D.TOT_GROOTTE_MB * 100,2),'990.99') ^|^| '%' "使用比" FROM (SELECT TABLESPACE_NAME,ROUND(SUM(BYTES) / (1024 * 1024), 2) TOTAL_BYTES,ROUND(MAX(BYTES) / (1024 * 1024), 2) MAX_BYTES FROM SYS.DBA_FREE_SPACE GROUP BY TABLESPACE_NAME) F,(SELECT DD.TABLESPACE_NAME, ROUND(SUM(DD.BYTES) / (1024 * 1024), 2) TOT_GROOTTE_MB FROM SYS.DBA_DATA_FILES DD GROUP BY DD.TABLESPACE_NAME) D WHERE D.TABLESPACE_NAME = F.TABLESPACE_NAME ORDER BY 1;%temp%\CheckTablespaces_Sobey.sql
@echo spool off%temp%\CheckTablespaces_Sobey.sql
@echo exit;%temp%\CheckTablespaces_Sobey.sql
sqlplus %databaseusername%/%databasepasswords%@%databasename% @%temp%\CheckTablespaces_Sobey.sql
if exist %temp%\CheckTablespaces_Sobey.sql del /f /q %temp%\CheckTablespaces_Sobey.sql
color 0a
@echo.
@echo ***********************************************************************
@echo * 執(zhí)行完畢,請先檢查是否有錯誤發(fā)生。
@echo * 請在:%dataFilePath%.sql中查看詳細,謝謝!
@echo ***********************************************************************
@echo.
@echo 批處理中止
pause
看 oracle監(jiān)聽是否啟動 在CMD下運行如下命令就可以
lsnrctl status
正在連接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=spcc)(PORT=1525)))
TNS-12541: TNS:無監(jiān)聽器
TNS-12560: TNS: 協(xié)議適配器錯誤
TNS-00511: 無監(jiān)聽器
32-bit Windows Error: 61: Unknown error
LSNRCTL start listener1
啟動tnslsnr:請稍候...
這表示沒有啟動。。
方法2:
如果是LINUX系統(tǒng)可以通過如下命令看進程在不在
ps -ef|grep lsn
看 oracle監(jiān)聽是否啟動 在CMD下運行如下命令就可以
lsnrctl status
正在連接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=spcc)(PORT=1525)))
TNS-12541: TNS:無監(jiān)聽器
TNS-12560: TNS: 協(xié)議適配器錯誤
TNS-00511: 無監(jiān)聽器
32-bit Windows Error: 61: Unknown error
LSNRCTL start listener1
啟動tnslsnr:請稍候...
這表示沒有啟動。。
方法2:
如果是LINUX系統(tǒng)可以通過如下命令看進程在不在
ps -ef|grep lsn
啟動步驟:注意$代表shell命令提示符,這里的oracle是9.0以上版本。
1.$ su - oracle
2.$ sqlplus / nolog
3.sql conn / as sysdba
4.sql startup (一般不需要加參數(shù),只要設(shè)置好環(huán)境變量)
5.sql quit (退出sql模式)
6.$ lsnrctl start (啟動監(jiān)聽器)
關(guān)閉oracle
1.$ lsnrctl stop(關(guān)閉監(jiān)聽器,在這之前,應(yīng)該先關(guān)閉應(yīng)用程序)
2.$ sqlplus /nolog
啟動步驟:注意$代表shell命令提示符,這里的oracle是9.0以上版本。
1.$ su - oracle
2.$ sqlplus / nolog
3.sql conn / as sysdba
4.sql startup (一般不需要加參數(shù),只要設(shè)置好環(huán)境變量)
5.sql quit (退出sql模式)
6.$ lsnrctl start (啟動監(jiān)聽器)
關(guān)閉oracle
1.$ lsnrctl stop(關(guān)閉監(jiān)聽器,在這之前,應(yīng)該先關(guān)閉應(yīng)用程序)
2.$ sqlplus /nolog
3.sqlshutdown 其參數(shù) :shutdown有四個參數(shù),四個參數(shù)的含義如下:
Normal 需要等待所有的用戶斷開連接
Immediate 等待用戶完成當前的語句
Transactional 等待用戶完成當前的事務(wù)
Abort 不做任何等待,直接關(guān)閉數(shù)據(jù)庫
normal需要在所有連接用戶斷開后才執(zhí)行關(guān)閉數(shù)據(jù)庫任務(wù),所以有的時候看起來好象命令沒有運行一樣!在執(zhí)行這個命令后不允許新的連接
immediate在用戶執(zhí)行完正在執(zhí)行的語句后就斷開用戶連接,并不允許新用戶連接。
transactional 在擁護執(zhí)行完當前事物后斷開連接,并不允許新的用戶連接數(shù)據(jù)庫。
abort 執(zhí)行強行斷開連接并直接關(guān)閉數(shù)據(jù)庫。
前三種方式不回丟失用戶數(shù)據(jù)。第四種在不的已的情況下,不建議采用!
2經(jīng)常遇到的問題:
1)權(quán)限問題,解決方法,切換到oracle用戶;
2)沒有關(guān)閉監(jiān)聽器 ,解決方法:關(guān)閉監(jiān)聽器
3)有oracle實例沒有關(guān)閉,解決辦法:關(guān)閉oracle實例
4)環(huán)境變量設(shè)置不全,解決辦法:修改環(huán)境變量