我真的应该知道这一点,但有人会告诉我如何在Linux上更改默认数据库吗?
例如:
我有一个数据库test1上server1使用ORACLE_SID=test1.所以,连接到test1我可以使用:
sqlplus myuser/password
Run Code Online (Sandbox Code Playgroud)
连接到默认数据库, test1
我现在想将默认的sqlplus连接转到test2服务器上的数据库server2.
所以,我已经更新了tnsnames,以便旧test1条目现在指向test2@server2.我还为test2这一点添加了一个单独的条目到同一个地方.但是,默认连接似乎仍然存在test1@server1.
以下都工作得不错,去数据库test2上server2:
sqlplus myuser/password@test1
sqlplus myuser/password@test2
Run Code Online (Sandbox Code Playgroud)
但是默认连接sqlplus myuser/password是test1@server1.
有任何想法吗?
谢谢.
当我运行一个应该返回确切行的sql语句时,sqlplus打印列名称多次?为什么?
我有一个关于Windows批处理sqlplus的问题.我有SQLPLUS 10.2
我正在尝试通过windows script.cmd连接到数据库
script.cmd只启动: sqlplus test/Test@mydatabase @script.sql
sqlplus说,问题是当数据库不可用时
ERROR:
ORA-12541: TNS:no listener
Enter user-name :
Run Code Online (Sandbox Code Playgroud)
并等待输入..并阻止.cmd
如何在数据库不可用时立即停止脚本或仅为了避免等待用户提示而调整脚本?
谢谢
rollback;
Run Code Online (Sandbox Code Playgroud)
似乎没有撤消alter table更改.
背景:
我正在生成一些.sql脚本(基于解析的Hibernate脚本),这些脚本会破坏我的表格.导入完整的数据库进行测试最多需要30分钟(也会减慢我的机器速度),尽管我喜欢休息,但我更愿意用回滚等命令撤消所有内容,然后再试一次.
顺便说一下,这是Oracle 10g Express Edition 10.2.0.1.0版
这甚至可能吗?
我尝试设置线宽,但这不是我的意图,无论如何将每个列的宽度缩小到适合值的最小值?或自动子串每列,以便它们都适合屏幕?
谢谢.
我使用ORACLE 8.0。我知道如何在SQLPLUS中运行oracle SQL命令。
我进行搜索以找到诸如SQL Server Management Studio之类的IDE,但找不到它。
什么是ORACLE的最佳IDE?谢谢
更新:它在cmd中运行,当我从bash客户端运行cmd时也是如此。我仍然喜欢它在git bash中工作,但是我有一个解决方法。
我试图sqlplus /nolog在Windows上的git bash客户端中运行命令。但是,当我运行该命令时,它将启动一个会话,显示信息,就像我键入sqlplus --help然后退出一样。我可以远程进入我们的Linux服务器之一,并按预期在该服务器上运行该命令,但是我无法使其在本地工作。
我没有glogin.sql文件。
我需要做什么才能使sqlplus /nolog命令按预期运行?
user@computer ~/currentLocation
$ sqlplus /nolog
SQL*Plus: Release 12.1.0.2.0 Production on Thu Oct 26 09:19:45 2017
Copyright (c) 1982, 2014, Oracle. All rights reserved.
SQL*Plus: Release 12.1.0.2.0 Production
Copyright (c) 1982, 2014, Oracle. All rights reserved.
Use SQL*Plus to execute SQL, PL/SQL and SQL*Plus statements.
Usage 1: sqlplus -H | -V
-H Displays the SQL*Plus version and the
usage help.
-V Displays the SQL*Plus version.
Usage …Run Code Online (Sandbox Code Playgroud) 我正在尝试更新 Oracle 中的一个包,来自 SQL Server 这一直令人困惑。
我编写了一个批处理文件,它首先运行.spec文件,然后运行.body文件,但即使手动运行它也不起作用。
我使用这个语法:
sqlplus username/password@databasename @c:\temp\myfile.spec
sqlplus username/password@databasename @c:\temp\myfile.body
Run Code Online (Sandbox Code Playgroud)
当我回到 Sql Developer 时,我可以查看包中的存储过程,发现它们尚未更新。
为什么我的软件包没有更新?
在开发过程中,我发现数据库有大量活动连接:
SELECT username, COUNT(*) FROM v$session GROUP BY username;
Run Code Online (Sandbox Code Playgroud)
为了找到真正保持连接的人,我想获取 IP 地址列表。
在一般网络搜索和阅读官方文档期间,我构建查询:
SELECT username, seconds_in_wait, machine, port, terminal, program, module, service_name
FROM v$session
WHERE type = 'USER';
Run Code Online (Sandbox Code Playgroud)
其中machine最重要的部分是select. 但不幸的是,machine字段显示客户端操作系统已知的主机名。
互联网上充斥着使用UTL_INADDR.GET_HOST_ADDRESS 的建议,但这不适用于我的情况。首先是因为ORA-24247: 网络访问被访问控制列表 (ACL) 拒绝,其次是因为客户端操作系统主机名通常在/etc/hostname中定义,并且不可用于我们 Intranet 中的 DNS 服务器...
任何其他方式检索 Oracle DB 的打开会话的 IP(数据库实例在任何情况下都保存有关其套接字的信息...)。
更新
我在受信任的 Intranet 下,但网络层次结构未知。
我尝试查找哪些应用程序使用我的表(几个应用程序服务器,我不知道所有这些)。其中一些过度使用连接,需要修复。但首先应该确定它们...
请问这里出了什么问题?
RETVAL=`sqlplus -s user/pass@DB <<EOF
SET TRIMSPOOL ON PAGESIZE 0 COLSEP , FEEDBACK OFF VERIFY OFF HEADING OFF ECHO OFF
SELECT process_id, source, destination, type FROM table WHERE process_id IN ('123','456');
EXIT;
EOF`
if [ -z "$RETVAL" ]; then
echo "No rows returned from database"
exit 0
else
echo $RETVAL
fi
Run Code Online (Sandbox Code Playgroud)
输出是:
123,a c,2 456,a c,5
Run Code Online (Sandbox Code Playgroud)
并且应该是:
123, a, c, 2
456, a, c, 5
Run Code Online (Sandbox Code Playgroud)