Author: Laurent Schneider

TIME_BUCKET group by time period

We all know how to sum up by year select to_char(trunc(hiredate,’Y’),’YYYY’) year, count(*) from scott.emp group by trunc(hiredate,’Y’) order by trunc(hiredate,’Y’) YEAR COUNT(*) —- ——– 1980 1 1981 10 1982 1 1987 2 This is quite easy. Same for day (DD), century (CC), quartal (Q), hour (HH24), month (MM) But how do you group by, […]

sqlnet.ora and ldap.ora parameters in jdbc thin url

Using the latest instant client, the Easy Connect Plus improvement let you parametrise your jdbc url more intensively   jdbc:oracle:thin:@ldaps://ldap.example.com/db01?WALLET_LOCATION=/db00/mywallet&AUTHENTICATE_BIND=true&AUTHENTICATE_BIND_METHOD=none&DIRECTORY_SERVER_TYPE=OID   EasyConnect Plus appeared in 19c, but was further improved in 21c and 23ai. See more JDBC Developer’s Guide https://docs.oracle.com/en/database/oracle/oracle-database/19/jjdbc/data-sources-and-URLs.html#GUID-44572C63-10D2-478A-BB2E-ACF6674C59CC

negative regexp

if you want to grep anything except foo, use grep -v or negative lookahead echo -e ‘foo\nbar\nboz’|grep -P ‘^(?!.*foo).*$’ bar boz it is just so beautiful ! e.g. get IP address except localhost in /etc/hosts grep -Po ‘^(?!127.0.0.1)[0-9.]+’ /etc/hosts 192.168.1.1 192.168.1.2 if you have no grep -P, use perl

XMLRoot desupport

XMLRoot has been deprecated since 12cR2 and desupported since 21c. Still, it is not really obvious to understand how to generate a prolog. Also, you couldn’t specify the encoding. Well, one could fake the version with double quote, but this is not recommended, there even was some dirty SQL injection in oldish versions. select xmlroot(xmlelement(x),version […]

SQL + DTD

How to select xml with DTD ? Imagine this XML code SQL> select xmltype( ‘<!DOCTYPE FOO SYSTEM “/public/test/foo.dtd”><FOO/>’, wellformed => 1) xml from dual; XML —————————————————– <!DOCTYPE FOO SYSTEM “/public/test/foo.dtd”><FOO/> Most validations are done with XSD and not DTD, so it is not that easy, even google probably lead you here 😉 Create the dtd […]

23c is out

but only for developers. You can get it from oracle.com as a RH8 rpm : https://www.google.ch/search?q=download+oracle+23c You need about 6Gb in /opt and there is a /etc/init.d/oracle-free-23c configure -i command that does create a database for you. Some goodies : select 1; select true; create table if not exists t(x number); arg 1 def xxx select […]

grant select on sysman view

Quite often you select from the sysman schema, let’s say select target_name from sysman.mgmt$target; To do so, you better be sys.. because SYS can see everything ! Let’s see what’s missing with a standard user connect  sys/***@oem01 as sysdba; create user user1 identified by ***; grant create session to user1; conn user1/***@oem01; select count(*) from […]

ODP standalone

Without Administrative privilege, how would you install ODP.NET? Note 784309.1 describes the required files if you have no Oracle client download XCOPY ODAC from Oracle .NET, Visual Studio, and VS Code ODAC Downloads for Oracle Database Copy the files Oracle.DataAccess.dll OraOps.dll orannzsbb.dll oraociei.dll oci.dll to your directory (ex: C:\ODAC) Add that directory to your PATH […]

R+ODBC

I just established a connection from R to Oracle / MSSQL using ODBC. First, I installed R sudo yum install R Then, ODBC sudo yum install unixODBC-devel freetds-libs I set up my mirror in .Rprofile options(repos=structure(c(CRAN=”http://cran.example.com/”))) I install ODBC Library in R R -s <<EOF install.packages(“odbc”) EOF I configure my odbc driver to Oracle Instant […]

connect to mssql with python/linux

done for a friend : install rpm’s sudo yum install -y freetds unixODBC unixODBC-devel freetds-libs python3-pyodbc create odbc.ini and odbcinst.ini for sybase go there Unix ODBC Sybase for oracle go there Unix ODBC Oracle for mssql ~/.odbc.ini : the Database definition [DB01] Driver = FreeTDS Description = DB01 Server = src01 Port = 1433 Database = DB01 […]

proxy user revisited

A new 10.2 feature I mentioned in su in sqlplus – Laurent Schneider is the ability to use a proxy user in a connection string. This was documented in What’s New in Oracle Call Interface? Proxy access for a single client can be set using various connect strings. Today I got one user complaining about […]

ODBC/OLEDB/ODP and Kerberos

Precondition : sqlplus can connect to the database server using a kerberos ticket. I wrote The long long route to Kerberos – Laurent Schneider in 2014, but most of the bugs in 11.2.0.2 / 12.1.0.2 are no longer interesting, so probably you should be fine to just read Configuring Kerberos Authentication (oracle.com) let’s see sqlplus […]

Log4J and OEM Part II

After part 1, where Oracle wrote in an official document there is no impact for your targets, Critical Patch Advisory April 2022 reveals multiple vulnerabilities, one of them is Log4J severity 9.8/10. 9.8 means it is kindergarden easy to compromise confidentiality, integrity and availability even without a login. In the meanwhile, per 30. April, Oracle […]

jdbc url with ldap ssl in 21c

the basic : you have tns resolution over ldap. To change from ldap to ldaps, you modify : jdbc:oracle:thin:@ldap://ldap.example.com:389/DB01,cn=OracleContext,dc=example,dc=com to jdbc:oracle:thin:@ldaps://ldap.example.com:636/DB01,cn=OracleContext,dc=example,dc=com now the advanced : Oracle Support mentions, there is no support for Mode 2 SSL (note 1664857.1) So one approach was to either not use ldaps, or to use level 1, which means no […]

Log4J and Oracle Enterprise Manager

Log4j issues allow a remote client to execute code without authentication. Software vendors spent the last two months thinking of the impact and the mitigations. The bad: If you have Enterprise Manager, you have multiple web services, like em itself (https://oms.example.com:7799/em), the weblogic console (https://oms.example.com:7102/console), the agent (https://dbsrv01.example.com:3872/emd/main/) and others. This makes you an easy […]

TNS resolution with LDAP and SSL

Long time ago, ldapsearch without password and without ssl was the way to go. But clear-text authentication (so called simple-bind) is a security leak. More and more, directory server vendors and administrators are closing the default non-ssl port and enforce authentication. And if you use ldap for TNS naming, things will break. Back in 2003, […]