akardapolov / ash-viewer Goto Github PK
View Code? Open in Web Editor NEWASH Viewer provides a graphical view of active session history data within the Oracle and PostgreSQL DB
License: GNU General Public License v3.0
ASH Viewer provides a graphical view of active session history data within the Oracle and PostgreSQL DB
License: GNU General Public License v3.0
Выбрав запрос из топа нельзя сразу же увидеть текст запроса, надо проваливаться в него, собирается много данных - когда он исполнялся, график строится, ... и только там видно уже запрос. Причем можно было бы брать текст запроса из full_text, он там с исходным форматированием.
Теперь план запроса только одним способом - через таблицу - раньше был еще текстом. Но это не так принципиально.
Hi team, app is great but take too much long time in open when you try in Oracle RAC with too many records in the v$active_session_history.
I try to increase java memory to 8Gb (java.exe -Xmx8096m -jar ASH-Viewer.jar) but not helps.
Can you add and option to start the app reading only 5 minutes of data.
I find 2 sql when you load the data (OracleEE.java and OracleEEObject.java )
can you generate a version to start the app loading only 5 minutes of data (or N in a parameter)
In OracleEEObject.java
change
String sqlTextAsh = "select a., b.object_name, b.object_type, subobject_name "
+ "from v$active_session_history a, all_objects b where a.current_obj# = b.object_id(+)";
for
String sqlTextAsh = "select a., b.object_name, b.object_type, subobject_name "
+ "from v$active_session_history a, all_objects b where a.current_obj# = b.object_id(+) "
+ "and a.sample_time <= sysdate - interval '5' minute";
In OracleEE.java
change
String sqlTextAsh = "SELECT * FROM v$active_session_history";
for
String sqlTextAsh = "SELECT * FROM v$active_session_history where sample_time <= sysdate - interval '5' minute";
Hi,
This is awesome tool, is it possible to provide RAC support? Will changing the v$ to gv$ views will do or is it harder than what it looks like. Curious to know why RAC support was not initially developed?
Thank you,
Anjul
Hi
I was working with the ASH viewer and found it very fascinating.
I just wanted to know if the ASH Viewer would expose an API so that I could write a custom code to capture metrics which I desire to monitor.
Please help me in this.
Also, I would be thankful if you can suggest a way to use a Listener kind of thing to capture metrics from the ASH Viewer.
Thanks in advance.
(Question more than issue) With ASH Viewer 3.5.1, a thick Oracle client version 19 on Windows 10, I got it working on various Oracle database versions 10.2-12.2.
But for Oracle 19.3 I got java.sql.SQLException: ORA-28040: No matching authentication protocol. Fair enough.
With ASH Viewer 4.3.3, the “Connect to database..” screen has a field for URL and shows faded syntax to use an Oracle thin/instant client. I tried various thick syntax combinations but get error “java.sql.SQLException: Cannot load JDBC driver class ‘oracle.jdbc.driver.OracleDriver’ …”.
Can I use the thick Oracle client version 19 on Windows 10?
Hi there,
We are researchers from the University of Maryland conducting a study about software code reuse. If you are interested in helping us in this study through a short interview about this project, please contact us on [email protected] for more information. You will be compensated for your time.
Thanks
Ahmed
Добрый день.
Сразу 2 связанных проблемы:
I have a comment regarding WAIT_TIME which is retrieved in line 349.
Wait time can be -1, which means state = WAITED SHORT TIME (= less than 1 ms).
Wait time can be any number, but the state = WAITED KNOWN TIME, which means 'Duration of the last wait is specified in the WAIT_TIME column'.
The first wait time -1 will trigger a 100% cpu for that session I think, which should be 1/100 of a second of cpu.
The second wait shows the last wait time of a previous wait, but is still accounted for in a current cpu wait.
If two sessions have these waits, they will both be reported as using cpu, but the are not doing anyting (much). I see this a lot for APEX_REST_PUBLIC_USER.
Session state should also be considered looking at these values:
https://docs.oracle.com/cd/B28359_01/server.111/b28320/dynviews_3023.htm#r18c1-t30
Regards, Ian Hoogeboom.
Hi
First I'm sorry my English.
I need to solve the following:
Please monitor the top requests, make constant requests and any deviations (new requests, etc.) please throw in the mail (Oracle Database).
In the end, I have to send the information as in the picture below
Привет
Мне поставили задачу: просьба мониторить топ запросы, составь постоянные запросы и любые отклонения (новые запросы и т.п.) просьба скидывать на почту.
т.е. я должен высылать информацию как на картинке выше
hi:
URL login is too cumbersome, I think the previous 3.5 version was more convenient
Hi,
Could you add release files (zip) to Github (https://help.github.com/articles/creating-releases/) ?
Thanks
the tool seem to pull the last 60min data from ash and becomes extremely slow to launch under load as it tries to load last 60min data.
can we get an option to load ash data start from the point of launch/click connect to database.
if the database is under heavy load from users. it takes large amount of time to start up
when I select top activity -> top sql & sessions -> SQL text:
SQL command is not complete
I ran pgbench against a postgres database for 10 minutes. If I then later go back and view the history data, the "Top Activity" shown below does not present a solid chart, instead it shows a series of spikes.
I then selected the area between 2 spikes and the "Top sql & sessions" display does contain data.
So I claim the data is properly retained, but not displayed correctly in the Top Activity chart.
I will attach an image of a screen shot to illustrate the issue.
Hi,
With OracleSE we have no data outside of the time when ASH-Viewer is connected. But we often have Statspack running maybe every hour or shorter (snap level 0 every 5 minutes is possible). I got the idea to fill the gaps with info from Statspack (waits events + CPU from time model) and normalizing that to look like ASH samples. But it seems that the visualization expects one sample per second, right? If I have, say, 2 active sessions in samples every 5 minutes it shows as very small spikes every 5 minutes.
Ideally, it would be great to be able to ingest aggregated data, with AAS count rather than deduplicating the samples from statspack to look like ASH. Do you think it is easy to adapt the graph vizualizer to that?
I can provide the query on stats$system_event, stats$sys_time_model, stats$snapshot giving SAMPLE_TIME,SESSION_STATE,WAIT_CLASS,EVENT#,EVENT plus AAS for this sample/event and I think a union all to the current one is sufficient.
Franck
Hello, lost the copy connection button. Can you turn it back?
т.е. происходит перезагрузка, хотя по факту новая область не выбирается.
Hi!
Probably in this code we have the issue:
ASH-Viewer/ashv/src/main/java/store/OlapCacheManager.java
Lines 133 to 141 in 55b3f51
Raw data's are saved.
It seems the fifteens second range not stored correctly, see here carefully: https://github.com/akardapolov/ASH-Viewer/blob/master/ashv/src/main/java/store/OlapCacheManager.java#L133
Thanks,
Alex.
I used ASH Viewer for monitoring 20+ DB on each PC (24*7)
Every time after PC reboot I must open ASH Viewer for each DB, resize window and place new window to it location on PC screen
Can you develop saved configuratuin for multibase monitoring?
Thanks in advance!
In v. 3.5 I Cant find Minimalistic Mode
Exception in thread "Thread-9" java.lang.NullPointerException
at store.DatabaseDAO.lambda$getMatrixDataForJTable$1(DatabaseDAO.java:116)
at java.util.ArrayList.forEach(ArrayList.java:1249)
at store.DatabaseDAO.getMatrixDataForJTable(DatabaseDAO.java:114)
at gui.table.RawDataTable.loadDataToTableModel(RawDataTable.java:220)
at gui.table.RawDataTable.access$400(RawDataTable.java:33)
at gui.table.RawDataTable$1.run(RawDataTable.java:127)
Hello,
when trying to connect to a 18c database
using ashv-3.5.1-bin
I get error:
ORA-28040: No matching authentication protocol
After updating ojdbc6.jar JDBC driver to ojdbc8.jar
I get error:
SQL Exception occured while connection pool initialize:
Can't find class for driver: oracle.jdbc.pool.OracleDataSource
Any Idea ?
Thanks in advance
Regards
PAscal
Please change in the "Connect to database..." window the button label from "Open jar" to "Open JDBC Driver jar"
... to be more intuitive
Please make "Edit" button instead of the checkbox "Edit"
Please provide a label with the sample URL. E.g.: "jdbc:oracle:thin:@host:PORT:SID"
Hello,
Using Enterprise features like ACTIVE_SESSION_HISTORY, DBA_HIST_* and AWR functionality is not something you can use if you only have an 'Enterprise' version. One needs to have payed for the Diagnostic pack option:
In the login dialog one can choose 'Enterprise' or 'Standard', but Enterprise is not enough. I have seen customers using this tool, with 'Enterprise' option, but they do not have the 'Diagnostic' option, so therefor are not allowed to use it. They should have selected 'Standard'.
Is it possible to change the label (or drop down options) to something like 'Enterprise WITH Diagnostic pack license' (Yes/No) ?
I know it's a DBA's responsibility, but now it makes more clear that this is allowed to be used. A check for the 'CONTROL_MANAGEMENT_PACK_ACCESS' parameter is very luxury, and maybe the best way to push the responsibility to the DBA's.
The Diagnostic Pack option costs $7500 per CPU. I don't think you want to have troubles with this when customers think that selecting 'OracleEE' will be enough.
Regards, Airell.
Добрый день, спасибо Вам за Ваш труд! Приложения классная.
Недавно обновили базу до 19С, после ASH Viewer 3.5 не подключается к БД.
Скачали новую версию, но тут сессия зависает и не восстанавливается.
Вопрос как настроить версию 3.5 так чтобы работало с Оракл 19С?
Спасибо.
Sometimes I have no direct connection to database, but I can ask to send me ashviewer data files, so I want to have an ability to see history without real connection
Hi.
During making connection to one of my Oracle databases 19c, getting error:
19.06.21 14:05:55.095 [main] INFO Main - Start application
19.06.21 14:05:55.688 [main] INFO BasicFrame - Start instantiating new BasicFrame
19.06.21 14:06:00.299 [main] INFO ConnectToDbAction - ConnectToDbAction button pressed
19.06.21 14:06:23.318 [Thread-2] INFO GetFromRemoteAndStore - Start loading
19.06.21 14:06:23.433 [Thread-2] INFO GetFromRemoteAndStore - Start loading olap
19.06.21 14:06:29.157 [Thread-2] INFO GetFromRemoteAndStore - Start loading stacked chart
java.lang.ArrayIndexOutOfBoundsException: Index 50 out of bounds for length 50
at org.jfree.data.extension.impl.XYDatasetSelectionExtension.initSelection(XYDatasetSelectionExtension.java:142)
at org.jfree.data.extension.impl.XYDatasetSelectionExtension.datasetChanged(XYDatasetSelectionExtension.java:111)
at org.jfree.data.general.AbstractDataset.notifyListeners(AbstractDataset.java:189)
at org.jfree.data.general.AbstractDataset.fireDatasetChanged(AbstractDataset.java:172)
at org.jfree.data.xy.CategoryTableXYDataset.add(CategoryTableXYDataset.java:118)
at gui.chart.CategoryTableXYDatasetRDA.addSeriesValue(CategoryTableXYDatasetRDA.java:34)
at core.processing.GetFromRemoteAndStore.lambda$null$8(GetFromRemoteAndStore.java:252)
at java.base/java.util.Iterator.forEachRemaining(Iterator.java:133)
at java.base/java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1801)
at java.base/java.util.stream.ReferencePipeline$Head.forEach(ReferencePipeline.java:658)
at core.processing.GetFromRemoteAndStore.lambda$null$9(GetFromRemoteAndStore.java:249)
at java.base/java.lang.Iterable.forEach(Iterable.java:75)
at core.processing.GetFromRemoteAndStore.lambda$loadToMainStackedChart$10(GetFromRemoteAndStore.java:247)
at java.base/java.lang.Iterable.forEach(Iterable.java:75)
at core.processing.GetFromRemoteAndStore.loadToMainStackedChart(GetFromRemoteAndStore.java:247)
at core.processing.GetFromRemoteAndStore.loadDataFromRemoteToLocalStore(GetFromRemoteAndStore.java:152)
at gui.connect.ConnectToDbArea.loadObjectsByConnectionName(ConnectToDbArea.java:514)
at gui.util.ProgressBarUtil$1.run(ProgressBarUtil.java:79)
19.06.21 14:06:46.965 [pool-2-thread-1] INFO GetFromRemoteAndStore - Start loading
19.06.21 14:06:47.048 [pool-2-thread-1] INFO GetFromRemoteAndStore - Start loading olap
19.06.21 14:06:48.117 [pool-2-thread-1] INFO GetFromRemoteAndStore - Start loading stacked chart
java.lang.ArrayIndexOutOfBoundsException
19.06.21 14:06:54.237 [pool-2-thread-1] INFO GetFromRemoteAndStore - Start loading
19.06.21 14:06:54.328 [pool-2-thread-1] INFO GetFromRemoteAndStore - Start loading olap
19.06.21 14:06:55.254 [pool-2-thread-1] INFO GetFromRemoteAndStore - Start loading stacked chart
java.lang.ArrayIndexOutOfBoundsException
19.06.21 14:07:00.995 [pool-2-thread-1] INFO GetFromRemoteAndStore - Start loading
19.06.21 14:07:01.093 [pool-2-thread-1] INFO GetFromRemoteAndStore - Start loading olap
19.06.21 14:07:01.654 [pool-2-thread-1] INFO GetFromRemoteAndStore - Start loading stacked chart
java.lang.ArrayIndexOutOfBoundsException
19.06.21 14:07:07.236 [pool-2-thread-1] INFO GetFromRemoteAndStore - Start loading
19.06.21 14:07:07.318 [pool-2-thread-1] INFO GetFromRemoteAndStore - Start loading olap
19.06.21 14:07:07.647 [pool-2-thread-1] INFO GetFromRemoteAndStore - Start loading stacked chart
Mac OS 10.15.7
ashv version is 3.5.1
$ $JAVA_EXE -version
java version "11.0.6" 2020-01-14 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.6+8-LTS)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.6+8-LTS, mixed mode)
Need option for number of days for stored ASH History, because I have limited disk space on HDD.
By other words - I need "autocleaner" option.
Sometimes the data in main graphic is distorted (desktop PC, Windows 7).
I sent additional screenshots to email.
Hi, i have a couple of questions?
1.when i am checking in ash-viewer history button. when i tried to pull week data it is not returning weekly data. it is just returning 1 day data. other days are empty. Even 1 days data is not full couple of hours it is showing
2. Is there any way you can include more historical data 1 month data or 2 month data in the history list?
3. When trying to connect Rac databases and using scan address with service_name it is not working. You have to mention Sid only. Could you please add this option also?
После того, как делаю конфиг, сразу же падает. после этого вообще не запускается.
Если конфиг убрать, то сразу же запускается.
конфиг
!!config.profile.ConfigProfile
configName: maindb
connProfile: {connName: maindb, driver: oracle.jdbc.driver.OracleDriver, jar: 'D:\Distrib\СУБД\ashv-4-bin\lib\ojdbc6.jar',
password: XXX, profileName: OracleEE, url: 'jdbc:oracle:thin:@db.XXX.ru:1521:MAIN',
userName: arkanovas}
olapRetainDays: 101
rawRetainDays: 101
running: false
sqlColProfileList: null
D:\Distrib\СУБД\ashv-4>"C:\Program Files (x86)\Java\jre1.8.0_211\bin\java.exe" -Xmx1024m -jar ASH-Viewer.jar
03.04.20 12:44:23.290 [main] INFO Main - Start application
03.04.20 12:44:23.492 [main] INFO BasicFrame - Start instantiating new BasicFrame
Exception in thread "main" org.yaml.snakeyaml.error.YAMLException: java.nio.charset.MalformedInputException: Input length = 1
at org.yaml.snakeyaml.reader.StreamReader.update(StreamReader.java:218)
at org.yaml.snakeyaml.reader.StreamReader.ensureEnoughData(StreamReader.java:176)
at org.yaml.snakeyaml.reader.StreamReader.ensureEnoughData(StreamReader.java:171)
at org.yaml.snakeyaml.reader.StreamReader.peek(StreamReader.java:126)
at org.yaml.snakeyaml.scanner.ScannerImpl.scanToNextToken(ScannerImpl.java:1177)
at org.yaml.snakeyaml.scanner.ScannerImpl.fetchMoreTokens(ScannerImpl.java:287)
at org.yaml.snakeyaml.scanner.ScannerImpl.checkToken(ScannerImpl.java:227)
at org.yaml.snakeyaml.parser.ParserImpl$ParseImplicitDocumentStart.produce(ParserImpl.java:195)
at org.yaml.snakeyaml.parser.ParserImpl.peekEvent(ParserImpl.java:158)
at org.yaml.snakeyaml.parser.ParserImpl.checkEvent(ParserImpl.java:148)
at org.yaml.snakeyaml.composer.Composer.getSingleNode(Composer.java:107)
at org.yaml.snakeyaml.constructor.BaseConstructor.getSingleData(BaseConstructor.java:141)
at org.yaml.snakeyaml.Yaml.loadFromReader(Yaml.java:525)
at org.yaml.snakeyaml.Yaml.loadAs(Yaml.java:519)
at config.yaml.YamlConfig.loadConfigurationFile(YamlConfig.java:73)
at config.yaml.YamlConfig.lambda$loadConfigsFromFs$0(YamlConfig.java:61)
at java.util.ArrayList.forEach(Unknown Source)
at config.yaml.YamlConfig.loadConfigsFromFs(YamlConfig.java:58)
at config.yaml.YamlConfig.<init>(YamlConfig.java:35)
at config.yaml.YamlConfig_Factory.newInstance(YamlConfig_Factory.java:45)
at config.yaml.YamlConfig_Factory.get(YamlConfig_Factory.java:35)
at config.yaml.YamlConfig_Factory.get(YamlConfig_Factory.java:11)
at dagger.internal.DoubleCheck.get(DoubleCheck.java:47)
at core.manager.ConfigurationManager_Factory.get(ConfigurationManager_Factory.java:36)
at core.manager.ConfigurationManager_Factory.get(ConfigurationManager_Factory.java:11)
at dagger.internal.DoubleCheck.get(DoubleCheck.java:47)
at gui.actions.ConnectToDbAction_Factory.get(ConnectToDbAction_Factory.java:35)
at gui.actions.ConnectToDbAction_Factory.get(ConnectToDbAction_Factory.java:10)
at dagger.internal.DoubleCheck.get(DoubleCheck.java:47)
at gui.MainWindow_Factory.get(MainWindow_Factory.java:62)
at gui.MainWindow_Factory.get(MainWindow_Factory.java:13)
at dagger.internal.DoubleCheck.get(DoubleCheck.java:47)
at config.dagger.DaggerMainComponent.createMainWindow(DaggerMainComponent.java:205)
at Main.main(Main.java:16)
Caused by: java.nio.charset.MalformedInputException: Input length = 1
at java.nio.charset.CoderResult.throwException(Unknown Source)
at sun.nio.cs.StreamDecoder.implRead(Unknown Source)
at sun.nio.cs.StreamDecoder.read(Unknown Source)
at java.io.InputStreamReader.read(Unknown Source)
at org.yaml.snakeyaml.reader.UnicodeReader.read(UnicodeReader.java:125)
at org.yaml.snakeyaml.reader.StreamReader.update(StreamReader.java:183)
... 33 more
While trying to get the lower (down) pane to display some info there , the following java error appears and in some places no info appears... ( It was tricky to find the way to display some info in lower pane , for those cases that it does not produce error) :
Exception in thread "AWT-EventQueue-1" java.lang.NullPointerException
at org.jfree.chart.ChartPanel.fireReleaseMouse(ChartPanel.java:3523)
at org.jfree.chart.ChartPanel.mouseReleased(ChartPanel.java:1974)
at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:290)
at java.awt.Component.processMouseEvent(Component.java:6539)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
at java.awt.Component.processEvent(Component.java:6304)
at java.awt.Container.processEvent(Container.java:2239)
at java.awt.Component.dispatchEventImpl(Component.java:4889)
at java.awt.Container.dispatchEventImpl(Container.java:2297)
at java.awt.Component.dispatchEvent(Component.java:4711)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4904)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4535)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4476)
at java.awt.Container.dispatchEventImpl(Container.java:2283)
at java.awt.Window.dispatchEventImpl(Window.java:2746)
at java.awt.Component.dispatchEvent(Component.java:4711)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:760)
at java.awt.EventQueue.access$500(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:709)
at java.awt.EventQueue$3.run(EventQueue.java:703)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:84)
at java.awt.EventQueue$4.run(EventQueue.java:733)
at java.awt.EventQueue$4.run(EventQueue.java:731)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:730)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
what could be ? my javs (JDK) version is : java version "1.8.0_231"
Может быть только у меня такой баг.
Может быть проблема в том, что у меня JRE, а не JDK.
The data reported is hard to quantify with regards to "work obtained". We end up running pgadmin to manually record other metrics such as commits, rollbacks, active connections, etc. pgadmin can not record data. So we need to manually record these metrics.
Other items like deadlocks and lock timeouts etc would also be useful. Note that delta metrics (i.e. counts per second) would be most useful as opposed to raw accumulated counts.
I am so unsure how best to display this extra data - an overlayed line graph seems appropriate? Or maybe a separate collected data stream with a separate graph using the same timeline horizontal access?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.