ManualiOracle.it | ||
![]() |
| ||||||||||||||||||||||||||||||||||||||||||||||
|
If it is not specified, the commands must be executed connected as a database "superuser". About the solutions: - could be more than one. Here is one solution that often takes into account of the performance tuning - they could change because of the database version - it is not warranted to be error-free in all the database environments December - Postgres loading
Level (*) : 2 Topic (*) : Postgres You are connected in Postgres 12 and you have to load a file called numbers_list.txt and containing a lot of telephone numbers like these: 3123456789 3012345678 You have to load them in the C1 column on a table called T_2C like this: Column | Type | Collation | Nullable | Default --------+-----------------------+-----------+----------+--------- c1 | character varying(20) | | not null | c2 | character varying(20) | | not null | In every rows, the C2 column must contain the string "Offer 1". How can you do this loading?
November - Postgres upgrade
Level (*) : 2 Topic (*) : Postgres Your postgres db is in a Debian server and the db version is 12.4. You want to upgrade it to the version 12.9. Which steps you should do in order to do that upgrade?
October - Postgres and in Oracle catalogs
Level (*) : 2 Topic (*) : DBA/Progr/Postgres You have to find two queries (one in Oracle and one in Postgres) in order to get the owner and the name of the table with longer name where you are connected: - if you are in Oracle: in your schema - if you are in Postgres: in the "public" schema on the database where you are
September - Oracle constraints
Level (*) : 2 Topic (*) : DBA You are trying to DELETE a record from C_CLUB table but you get an error: SQL> delete c_club where id = 1; Error starting at line : 1 in command - delete c_club where id = 1 Error report - ORA-02292: integrity constraint (ADMIN.CLUB_HI_FK) violated - child record foundThen now you have to find 2 queries from the Oracle dictionary in order to get: 1. the child table having the CLUB_HI_FK constraint 2. the columns in C_CLUB and in the "child table" used by the CLUB_HI_FK constraint
August - Oracle index rebuild
Level (*) : 1 Topic (*) : DBA You are connected in a database (not PRODUCTION env) and in your schema all the indexes are not partitioned. Write a query reading a static data dictionary view in order to obtain the SQL commands to rebuild all your indexes bigger than 64 KB. For instance, launching that query you have to obtain a result like this: alter index PUBL_UQ rebuild; alter index T_VAL_UQ rebuild; alter index CALC_H_PK rebuild; alter index CLUB_IDX rebuild; Solution
To get these information, you should use the USER_SEGMENTS: SELECT 'alter index ' || segment_name || ' rebuild;' FROM user_Segments WHERE segment_type = 'INDEX' and bytes > 64*1024;
July - Oracle functions
Level (*) : 1 Topic (*) : Prog You have a table T1 with 99 rows created like this: CREATE TABLE t1 (c1 INT, c2 INT, CONSTRAINT t1_pk PRIMARY KEY (c1) ); INSERT INTO t1 SELECT ROWNUM, DBMS_RANDOM.VALUE (0,10000) FROM all_objects WHERE rownum<100;You have to find a query in order to get these information: - the number of total rows of T1 - sum of C2 values - average values of C2 (with one digit after the comma) Result example: COUNT SUM AVG _______ _________ _________ 99 420439 4246.9 Solution
To get these information, you should use this query: SELECT count(*) count, sum(c2) sum, round(avg(c2),1) avg FROM t1;
June - Oracle tablespaces
Level (*) : 1 Topic (*) : DBA You have to find a query in order to get the tablespace names occupied from the objects of your schema. For instance, you must have a result like this: SEGMENT_TYPE TABLESPACE_NAME __________________ ________________ INDEX TBL_IDX LOBINDEX TBL_IDX LOBSEGMENT TBL_DATA TABLE TBL_DATA TABLE PARTITION TBL_DATA Solution
To get these information, you can use the USER_SEGMENTS: SELECT distinct segment_type, tablespace_name FROM user_segments ORDER BY 1;
May - Oracle column data default
Level (*) : 2 Topic (*) : DBA You are connected to the db thru the user called ADMIN. You have to find a query in order to get the columns with a data default value. For instance, you have to receive a result like this: TABLE_NAME COLUMN_NAME DATA_DEFAULT __________ _____________ __________________________ CITIES ID "ADMIN"."SEQ_5"."NEXTVAL" OBJECTS ID "ADMIN"."SEQ_3"."NEXTVAL" EVENTS ID_EVE "ADMIN"."SEQ_4"."NEXTVAL"
April - Postgres psql error
Level (*) : 2 Topic (*) : Postgres You are connected on the db server. When you launch psql you get the following error/warning: psql:/var/lib/postgresql/.psqlrc:8: error: unterminated quoted Example: postgres@db_server:~$ psql Expanded display is used automatically. psql:/var/lib/postgresql/.psqlrc:8: error: unterminated quoted string psql (12.4 (Debian 12.4-1.pgdg90+1)) Type "help" for help. postgres=#Why? How can you solve it?
March - Find Tables info in Postgres and in Oracle
Level (*) : 1 Topic (*) : DBA/Progr/Postgres You have these tables in 2 different RDBMS: - T_PG in Postgres - T_ORA in Oracle For both RDBMS, you have to find: - their describe (column names and data types) - their number of rows Solution
Using Psql for Postgres and SQLcl for Oracle, an easy solution is: Describe: In Postgres, use the "\d" command: \d t_pg Column | Type | Collation | Nullable | Default --------+---------+-----------+----------+--------- id | integer | | not null | name | text | | | In Oracle, use the "desc" command: desc t_ora Name Null? Type _______ ___________ _______________ ID NOT NULL NUMBER(38) NAME VARCHAR2(10)Count of rows: In both RDBMS you can use the "count(*)" function: SELECT count(*) FROM t_ora; COUNT(*) ___________ 100
February - Oracle Segment types size
Level (*) : 2 Topic (*) : DBA You have to write a query on system views that shows: - the segment types in your schema - their total size - the percentage of their size compared to the total size. For instance: TYPE KB TOT PERCENT _____ _______ ________ _________ IND 4416 13184 33 LOB 1216 13184 9 TAB 7552 13184 57
January - Oracle primary key names
Level (*) : 2 Topic (*) : DBA/Progr You have to write a PL/SQL anonymous block in order to get all the primary key names in your schema and the names of their tables. For instance, you must see something like: The primary key of the TAB1 table is called TAB2_PK The primary key of the CITIES table is called PK_CITIES The primary key of the TAB_VAL table is called TAB_VAL_PK
(*) Level: 1: easy solution 2: medium solution 3: hard (or long) solution Topic: DBA: quiz usually suitable for Oracle DBAs Progr: quiz usually suitable for PL/SQL or SQL Programmers DBA/Progr: quiz suitable for Oracle DBAs and for Programmers Postgres: regarding the Postgresql database
|